# SPDX-License-Identifier: MIT
#
# Copyright (c) 2014-2026 FPGA Ninja, LLC
#
# Authors:
# - Alex Forencich
#

# XDC constraints for the BittWare XUSP3S board
# part: xcvu095-ffvb2104-2-e

# 100 MHz DDR4 SODIMM 1 clock from Si5338 A ch 0
set_property -dict {LOC AV18 IOSTANDARD DIFF_SSTL12_DCI ODT RTT_48} [get_ports clk_ddr_sodimm1_p]
set_property -dict {LOC AW18 IOSTANDARD DIFF_SSTL12_DCI ODT RTT_48} [get_ports clk_ddr_sodimm1_n]
create_clock -period 10.000 -name clk_ddr_sodimm1 [get_ports clk_ddr_sodimm1_p]

# DDR4 SODIMM 1
set_property -dict {LOC AT18 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[0]}]
set_property -dict {LOC AU17 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[1]}]
set_property -dict {LOC AP18 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[2]}]
set_property -dict {LOC AR18 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[3]}]
set_property -dict {LOC AP20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[4]}]
set_property -dict {LOC AR20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[5]}]
set_property -dict {LOC AU21 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[6]}]
set_property -dict {LOC AN18 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[7]}]
set_property -dict {LOC AN17 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[8]}]
set_property -dict {LOC AN19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[9]}]
set_property -dict {LOC AP19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[10]}]
set_property -dict {LOC AM16 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[11]}]
set_property -dict {LOC AN16 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[12]}]
set_property -dict {LOC AL19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[13]}]
set_property -dict {LOC AM19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[14]}]
set_property -dict {LOC AL20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[15]}]
set_property -dict {LOC AM20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_adr[16]}]
set_property -dict {LOC AT19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_ba[0]}]
set_property -dict {LOC AU19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_ba[1]}]
set_property -dict {LOC AT20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_bg[0]}]
set_property -dict {LOC AU20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_bg[1]}]
set_property -dict {LOC AR17 IOSTANDARD DIFF_SSTL12_DCI } [get_ports {ddr4_sodimm1_ck_t[0]}]
set_property -dict {LOC AT17 IOSTANDARD DIFF_SSTL12_DCI } [get_ports {ddr4_sodimm1_ck_c[0]}]
set_property -dict {LOC AM17 IOSTANDARD DIFF_SSTL12_DCI } [get_ports {ddr4_sodimm1_ck_t[1]}]
set_property -dict {LOC AL17 IOSTANDARD DIFF_SSTL12_DCI } [get_ports {ddr4_sodimm1_ck_c[1]}]
set_property -dict {LOC AY20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_cke[0]}]
set_property -dict {LOC AV21 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_cke[1]}]
set_property -dict {LOC BA18 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_cs_n[0]}]
set_property -dict {LOC AW20 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_cs_n[1]}]
set_property -dict {LOC AP16 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_cs_n[2]}]
set_property -dict {LOC AY17 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_cs_n[3]}]
set_property -dict {LOC AV17 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_act_n}]
set_property -dict {LOC AW21 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_odt[0]}]
set_property -dict {LOC AV19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_odt[1]}]
set_property -dict {LOC AW19 IOSTANDARD SSTL12_DCI      } [get_ports {ddr4_sodimm1_par}]
set_property -dict {LOC BA17 IOSTANDARD LVCMOS12 DRIVE 8} [get_ports {ddr4_sodimm1_reset_n}]
set_property -dict {LOC AY18 IOSTANDARD LVCMOS12        } [get_ports {ddr4_sodimm1_alert_n}]

set_property -dict {LOC AM14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[0]}]
set_property -dict {LOC AL14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[1]}]
set_property -dict {LOC AM15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[2]}]
set_property -dict {LOC AL15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[3]}]
set_property -dict {LOC AN13 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[4]}]
set_property -dict {LOC AN14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[5]}]
set_property -dict {LOC AP14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[6]}]
set_property -dict {LOC AP15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[7]}]
set_property -dict {LOC AV16 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[8]}]
set_property -dict {LOC AU16 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[9]}]
set_property -dict {LOC AU15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[10]}]
set_property -dict {LOC AT15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[11]}]
set_property -dict {LOC AV13 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[12]}]
set_property -dict {LOC AU13 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[13]}]
set_property -dict {LOC AW15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[14]}]
set_property -dict {LOC AW16 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[15]}]
set_property -dict {LOC BA13 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[16]}]
set_property -dict {LOC AY13 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[17]}]
set_property -dict {LOC BA14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[18]}]
set_property -dict {LOC BA15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[19]}]
set_property -dict {LOC AY15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[20]}]
set_property -dict {LOC AY16 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[21]}]
set_property -dict {LOC AY11 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[22]}]
set_property -dict {LOC AY12 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[23]}]
set_property -dict {LOC BC13 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[24]}]
set_property -dict {LOC BC14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[25]}]
set_property -dict {LOC BD14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[26]}]
set_property -dict {LOC BD15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[27]}]
set_property -dict {LOC BE16 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[28]}]
set_property -dict {LOC BD16 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[29]}]
set_property -dict {LOC BF15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[30]}]
set_property -dict {LOC BE15 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[31]}]
set_property -dict {LOC AL28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[32]}]
set_property -dict {LOC AL27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[33]}]
set_property -dict {LOC AN27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[34]}]
set_property -dict {LOC AM27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[35]}]
set_property -dict {LOC AM25 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[36]}]
set_property -dict {LOC AL25 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[37]}]
set_property -dict {LOC AP28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[38]}]
set_property -dict {LOC AN28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[39]}]
set_property -dict {LOC AT28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[40]}]
set_property -dict {LOC AR28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[41]}]
set_property -dict {LOC AT27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[42]}]
set_property -dict {LOC AR27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[43]}]
set_property -dict {LOC AU27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[44]}]
set_property -dict {LOC AU26 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[45]}]
set_property -dict {LOC AV28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[46]}]
set_property -dict {LOC AV27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[47]}]
set_property -dict {LOC AY28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[48]}]
set_property -dict {LOC AW28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[49]}]
set_property -dict {LOC AY27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[50]}]
set_property -dict {LOC AY26 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[51]}]
set_property -dict {LOC BA28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[52]}]
set_property -dict {LOC BA27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[53]}]
set_property -dict {LOC BB27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[54]}]
set_property -dict {LOC BB26 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[55]}]
set_property -dict {LOC BC27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[56]}]
set_property -dict {LOC BC26 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[57]}]
set_property -dict {LOC BF25 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[58]}]
set_property -dict {LOC BE25 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[59]}]
set_property -dict {LOC BE28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[60]}]
set_property -dict {LOC BD28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[61]}]
set_property -dict {LOC BF27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[62]}]
set_property -dict {LOC BE27 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[63]}]
set_property -dict {LOC BC18 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[64]}]
set_property -dict {LOC BB19 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[65]}]
set_property -dict {LOC BC17 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[66]}]
set_property -dict {LOC BB17 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[67]}]
set_property -dict {LOC BE18 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[68]}]
set_property -dict {LOC BD18 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[69]}]
set_property -dict {LOC BF18 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[70]}]
set_property -dict {LOC BF19 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dq[71]}]
set_property -dict {LOC AP13 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[0]}]
set_property -dict {LOC AR13 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[0]}]
set_property -dict {LOC AU14 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[1]}]
set_property -dict {LOC AV14 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[1]}]
set_property -dict {LOC BB15 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[2]}]
set_property -dict {LOC BB14 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[2]}]
set_property -dict {LOC BD13 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[3]}]
set_property -dict {LOC BE13 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[3]}]
set_property -dict {LOC AM26 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[4]}]
set_property -dict {LOC AN26 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[4]}]
set_property -dict {LOC AR25 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[5]}]
set_property -dict {LOC AT25 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[5]}]
set_property -dict {LOC AW25 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[6]}]
set_property -dict {LOC AY25 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[6]}]
set_property -dict {LOC BD26 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[7]}]
set_property -dict {LOC BE26 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[7]}]
set_property -dict {LOC BC19 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_t[8]}]
set_property -dict {LOC BD19 IOSTANDARD DIFF_POD12_DCI  } [get_ports {ddr4_sodimm1_dqs_c[8]}]
set_property -dict {LOC AR16 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[0]}]
set_property -dict {LOC AW14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[1]}]
set_property -dict {LOC BA12 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[2]}]
set_property -dict {LOC BF14 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[3]}]
set_property -dict {LOC AP25 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[4]}]
set_property -dict {LOC AV26 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[5]}]
set_property -dict {LOC BA25 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[6]}]
set_property -dict {LOC BF28 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[7]}]
set_property -dict {LOC BE17 IOSTANDARD POD12_DCI       } [get_ports {ddr4_sodimm1_dm_dbi_n[8]}]
