|
| 1 | +# The main clocks are all autogenerated by the Xilinx IP |
| 2 | +# mmcm_clkout0 is the clock output of the DDR3 memory interface / 4. |
| 3 | +# This clock is not used by wally or the AHB Bus. However it is used by the AXI BUS on the DD3 IP. |
| 4 | + |
| 5 | +create_generated_clock -name SPISDCClock -source [get_pins mmcm/clk_out3] -multiply_by 1 -divide_by 1 [get_pins wallypipelinedsoc/uncoregen.uncore/sdc.sdc/SPICLK] |
| 6 | + |
| 7 | +##### clock ##### |
| 8 | +set_property LOC F22 [get_ports default_50mhz_clk] |
| 9 | +set_property IOSTANDARD LVCMOS33 [get_ports default_50mhz_clk] |
| 10 | + |
| 11 | +# Clocks and Resets (adjust to match board) |
| 12 | +set_property IOSTANDARD LVCMOS33 [get_ports default_200mhz_clk] |
| 13 | +set_property IOSTANDARD LVCMOS33 [get_ports resetn] |
| 14 | +set_property IOSTANDARD LVCMOS33 [get_ports south_reset] |
| 15 | + |
| 16 | +# Clock constraints |
| 17 | +create_clock -period 20.000 -name clk_50m [get_ports default_50mhz_clk] |
| 18 | +create_clock -period 5.000 -name sys_clk [get_ports sys_clk_i] |
| 19 | +create_clock -period 5.000 -name idelay_refclk [get_ports clk_ref_i] |
| 20 | +#create_clock -period 5.000 -name mig_clk_200m [get_ports sys_clk_i] |
| 21 | + |
| 22 | +set_property CLOCK_BUFFER_TYPE BUFG [get_nets wallypipelinedsoc/clk_out3_mmcm] |
| 23 | + |
| 24 | +# *** don't love this hack. RT: Don't understand why the recomemded input clock is causing a clock routing issue. |
| 25 | +set_property CLOCK_DEDICATED_ROUTE BACKBONE [get_nets default_50mhz_clk] |
| 26 | + |
| 27 | +##### RVVI Ethernet (not working yet) #### |
| 28 | +set_property IOSTANDARD LVCMOS33 [get_ports {phy_txd[*] phy_tx_en}] |
| 29 | +set_property PACKAGE_PIN C16 [get_ports {phy_txd[0]}]; |
| 30 | +set_property PACKAGE_PIN U24 [get_ports {phy_txd[1]}]; |
| 31 | +set_property PACKAGE_PIN A20 [get_ports {phy_txd[2]}]; |
| 32 | +set_property PACKAGE_PIN B20 [get_ports {phy_txd[3]}]; |
| 33 | +set_property PACKAGE_PIN F20 [get_ports {phy_tx_en}] |
| 34 | + |
| 35 | + |
| 36 | +##### GPI #### |
| 37 | +set_property -dict { PACKAGE_PIN E18 IOSTANDARD LVCMOS33 PULLUP true } [get_ports { GPI[0] }] ; # GPIO4 on JP3 |
| 38 | +set_property -dict { PACKAGE_PIN D21 IOSTANDARD LVCMOS33 PULLUP true } [get_ports { GPI[1] }] ; # GPIO5 on JP3 |
| 39 | +set_property -dict { PACKAGE_PIN D10 IOSTANDARD LVCMOS33 } [get_ports { GPI[2] }]; # JP3 GPIO6 |
| 40 | +set_property -dict { PACKAGE_PIN B12 IOSTANDARD LVCMOS33 } [get_ports { GPI[3] }]; # JP3 GPIO7 |
| 41 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -min -add_delay 0.000 [get_ports {GPI[*]}] |
| 42 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -max -add_delay 0.000 [get_ports {GPI[*]}] |
| 43 | +set_max_delay -from [get_ports {GPI[*]}] 20.000 |
| 44 | + |
| 45 | + |
| 46 | +##### GPO #### |
| 47 | +# User LEDs |
| 48 | +set_property -dict { PACKAGE_PIN R26 IOSTANDARD LVCMOS33 } [get_ports { GPO[0] }] ; # LED2 |
| 49 | +set_property -dict { PACKAGE_PIN P26 IOSTANDARD LVCMOS33 } [get_ports { GPO[1] }] ; # LED3 |
| 50 | +set_property -dict { PACKAGE_PIN N26 IOSTANDARD LVCMOS33 } [get_ports { GPO[2] }] ; # LED4 |
| 51 | +# RPI connector pins |
| 52 | +set_property -dict { PACKAGE_PIN C12 IOSTANDARD LVCMOS33 } [get_ports { GPO[3] }]; |
| 53 | +set_property -dict { PACKAGE_PIN B11 IOSTANDARD LVCMOS33 } [get_ports { GPO[4] }]; |
| 54 | +set_max_delay -to [get_ports {GPO[*]}] 20.000 |
| 55 | +set_output_delay -clock [get_clocks clk_out3_mmcm] -min -add_delay 0.000 [get_ports {GPO[*]}] |
| 56 | +set_output_delay -clock [get_clocks clk_out3_mmcm] -max -add_delay 0.000 [get_ports {GPO[*]}] |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +##### UART ##### |
| 61 | +# JP5 is on bank #14 (3.3V) |
| 62 | +set_property -dict { PACKAGE_PIN AE22 IOSTANDARD LVCMOS33 } [get_ports { UARTSout }]; #JP5, pin 7 (TX) |
| 63 | +set_property -dict { PACKAGE_PIN AF22 IOSTANDARD LVCMOS33 } [get_ports { UARTSin }]; #JP5, pin 8 (RX) |
| 64 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -min -add_delay 0.000 [get_ports UARTSin] |
| 65 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -max -add_delay 0.000 [get_ports UARTSin] |
| 66 | +set_output_delay -clock [get_clocks clk_out3_mmcm] -min -add_delay 0.000 [get_ports UARTSout] |
| 67 | +set_output_delay -clock [get_clocks clk_out3_mmcm] -max -add_delay 0.000 [get_ports UARTSout] |
| 68 | + |
| 69 | + |
| 70 | +##### reset ##### |
| 71 | +#************** reset is inverted |
| 72 | +set_property -dict { PACKAGE_PIN V26 IOSTANDARD LVCMOS33 } [get_ports { south_reset }]; # SW2 on the board |
| 73 | +set_property -dict { PACKAGE_PIN U26 IOSTANDARD LVCMOS33 } [get_ports { resetn }]; # SW3 on the board |
| 74 | + |
| 75 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -min -add_delay 2.000 [get_ports resetn] |
| 76 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -max -add_delay 2.000 [get_ports resetn] |
| 77 | +set_max_delay -from [get_ports resetn] 20.000 |
| 78 | +set_false_path -from [get_ports resetn] |
| 79 | + |
| 80 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -min -add_delay 2.000 [get_ports south_reset] |
| 81 | +set_input_delay -clock [get_clocks clk_out3_mmcm] -max -add_delay 2.000 [get_ports south_reset] |
| 82 | +set_max_delay -from [get_ports south_reset] 20.000 |
| 83 | +set_false_path -from [get_ports south_reset] |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | +##### SD Card I/O ##### |
| 88 | +########################################################################################### |
| 89 | +# Digilent micro SD card PMOD (or equivalent) connected to J13 |
| 90 | +########################################################################################### |
| 91 | +# pin selection |
| 92 | +set_property PACKAGE_PIN A24 [get_ports SDCCS] |
| 93 | +set_property PACKAGE_PIN B26 [get_ports SDCCmd] |
| 94 | +set_property PACKAGE_PIN D26 [get_ports SDCIn] |
| 95 | +set_property PACKAGE_PIN F25 [get_ports SDCCLK] |
| 96 | +set_property PACKAGE_PIN C26 [get_ports SDCCD] |
| 97 | +# NC |
| 98 | +set_property PACKAGE_PIN E26 [get_ports SDCWP] |
| 99 | +set_property PULLTYPE PULLUP [get_ports {SDCCS SDCIn SDCCD SDCWP SDCCmd}] |
| 100 | +set_property IOSTANDARD LVCMOS33 [get_ports {SDCCS SDCCmd SDCIn SDCCLK SDCCD SDCWP}] |
| 101 | + |
| 102 | +set_output_delay -clock [get_clocks SPISDCClock] -min -add_delay 2.500 [get_ports {SDCCS}] |
| 103 | +set_output_delay -clock [get_clocks SPISDCClock] -max -add_delay 10.000 [get_ports {SDCCS}] |
| 104 | +set_input_delay -clock [get_clocks SPISDCClock] -min -add_delay 2.500 [get_ports {SDCIn}] |
| 105 | +set_input_delay -clock [get_clocks SPISDCClock] -max -add_delay 10.000 [get_ports {SDCIn}] |
| 106 | +set_output_delay -clock [get_clocks SPISDCClock] -min -add_delay 2.000 [get_ports {SDCCmd}] |
| 107 | +set_output_delay -clock [get_clocks SPISDCClock] -max -add_delay 6.000 [get_ports {SDCCmd}] |
| 108 | + |
| 109 | + |
| 110 | +### ddr3 #### |
| 111 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[0]}] |
| 112 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[1]}] |
| 113 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[2]}] |
| 114 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[3]}] |
| 115 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[4]}] |
| 116 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[5]}] |
| 117 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[6]}] |
| 118 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[7]}] |
| 119 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[8]}] |
| 120 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[9]}] |
| 121 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[10]}] |
| 122 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[11]}] |
| 123 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[12]}] |
| 124 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[13]}] |
| 125 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[14]}] |
| 126 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[15]}] |
| 127 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[15]}] |
| 128 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[16]}] |
| 129 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[17]}] |
| 130 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[18]}] |
| 131 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[19]}] |
| 132 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[20]}] |
| 133 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[21]}] |
| 134 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[22]}] |
| 135 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[23]}] |
| 136 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[24]}] |
| 137 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[25]}] |
| 138 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[26]}] |
| 139 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[27]}] |
| 140 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[28]}] |
| 141 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[29]}] |
| 142 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[30]}] |
| 143 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[31]}] |
| 144 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[0]}] |
| 145 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[1]}] |
| 146 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[2]}] |
| 147 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[3]}] |
| 148 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[14]}] |
| 149 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[13]}] |
| 150 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[12]}] |
| 151 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[11]}] |
| 152 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[10]}] |
| 153 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[9]}] |
| 154 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[8]}] |
| 155 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[7]}] |
| 156 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[6]}] |
| 157 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[5]}] |
| 158 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[4]}] |
| 159 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[3]}] |
| 160 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[2]}] |
| 161 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[1]}] |
| 162 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[0]}] |
| 163 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[2]}] |
| 164 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[1]}] |
| 165 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[0]}] |
| 166 | +set_property IOSTANDARD DIFF_SSTL15_DCI [get_ports ddr3_ck_p[0]] |
| 167 | +set_property IOSTANDARD DIFF_SSTL15_DCI [get_ports ddr3_ck_n[0]] |
| 168 | +set_property IOSTANDARD SSTL15 [get_ports ddr3_ras_n] |
| 169 | +set_property IOSTANDARD SSTL15 [get_ports ddr3_cas_n] |
| 170 | +set_property IOSTANDARD SSTL15 [get_ports ddr3_we_n] |
| 171 | +set_property IOSTANDARD SSTL15 [get_ports ddr3_reset_n] |
| 172 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cke[0]}] |
| 173 | +set_property IOSTANDARD SSTL15 [get_ports {ddr3_odt[0]}] |
| 174 | +# DDR3 CS not driven in this board |
| 175 | +set_property IOSTANDARD SSTL15 [get_ports ddr3_cs_n*] |
| 176 | +set_property LOC AC12 [get_ports ddr3_cs_n*] |
| 177 | + |
| 178 | +set_property INTERNAL_VREF 0.75 [get_iobanks 34] |
| 179 | +set_property INTERNAL_VREF 0.90 [get_iobanks 33] |
| 180 | + |
| 181 | +set_property PACKAGE_PIN AF5 [get_ports ddr3_addr[0]] |
| 182 | +set_property PACKAGE_PIN AF2 [get_ports ddr3_addr[1]] |
| 183 | +set_property PACKAGE_PIN AD6 [get_ports ddr3_addr[2]] |
| 184 | +set_property PACKAGE_PIN AC6 [get_ports ddr3_addr[3]] |
| 185 | +set_property PACKAGE_PIN AD4 [get_ports ddr3_addr[4]] |
| 186 | +set_property PACKAGE_PIN AB6 [get_ports ddr3_addr[5]] |
| 187 | +set_property PACKAGE_PIN AE2 [get_ports ddr3_addr[6]] |
| 188 | +set_property PACKAGE_PIN Y5 [get_ports ddr3_addr[7]] |
| 189 | +set_property PACKAGE_PIN AA4 [get_ports ddr3_addr[8]] |
| 190 | +set_property PACKAGE_PIN AE6 [get_ports ddr3_addr[9]] |
| 191 | +set_property PACKAGE_PIN AE3 [get_ports ddr3_addr[10]] |
| 192 | +set_property PACKAGE_PIN AD5 [get_ports ddr3_addr[11]] |
| 193 | +set_property PACKAGE_PIN AB4 [get_ports ddr3_addr[12]] |
| 194 | +set_property PACKAGE_PIN Y6 [get_ports ddr3_addr[13]] |
| 195 | + |
| 196 | +set_property PACKAGE_PIN AD3 [get_ports ddr3_ba[0]] |
| 197 | +set_property PACKAGE_PIN AE1 [get_ports ddr3_ba[1]] |
| 198 | +set_property PACKAGE_PIN AE5 [get_ports ddr3_ba[2]] |
| 199 | + |
| 200 | +set_property PACKAGE_PIN AC4 [get_ports ddr3_cas_n] |
| 201 | + |
| 202 | +set_property PACKAGE_PIN AB5 [get_ports ddr3_ck_n[0]] |
| 203 | +set_property PACKAGE_PIN AA5 [get_ports ddr3_ck_p[0]] |
| 204 | +set_property PACKAGE_PIN AD1 [get_ports ddr3_cke[0]] |
| 205 | +set_property PACKAGE_PIN V1 [get_ports ddr3_dm[0]] |
| 206 | +set_property PACKAGE_PIN V3 [get_ports ddr3_dm[1]] |
| 207 | +set_property PACKAGE_PIN W1 [get_ports ddr3_dq[0]] |
| 208 | +set_property PACKAGE_PIN V2 [get_ports ddr3_dq[1]] |
| 209 | +set_property PACKAGE_PIN Y1 [get_ports ddr3_dq[2]] |
| 210 | +set_property PACKAGE_PIN Y3 [get_ports ddr3_dq[3]] |
| 211 | +set_property PACKAGE_PIN AC2 [get_ports ddr3_dq[4]] |
| 212 | +set_property PACKAGE_PIN Y2 [get_ports ddr3_dq[5]] |
| 213 | +set_property PACKAGE_PIN AB2 [get_ports ddr3_dq[6]] |
| 214 | +set_property PACKAGE_PIN AA3 [get_ports ddr3_dq[7]] |
| 215 | +set_property PACKAGE_PIN U1 [get_ports ddr3_dq[8]] |
| 216 | +set_property PACKAGE_PIN V4 [get_ports ddr3_dq[9]] |
| 217 | +set_property PACKAGE_PIN U6 [get_ports ddr3_dq[10]] |
| 218 | +set_property PACKAGE_PIN W3 [get_ports ddr3_dq[11]] |
| 219 | +set_property PACKAGE_PIN V6 [get_ports ddr3_dq[12]] |
| 220 | +set_property PACKAGE_PIN U2 [get_ports ddr3_dq[13]] |
| 221 | +set_property PACKAGE_PIN U7 [get_ports ddr3_dq[14]] |
| 222 | +set_property PACKAGE_PIN U5 [get_ports ddr3_dq[15]] |
| 223 | + |
| 224 | +set_property PACKAGE_PIN AF3 [get_ports ddr3_odt[0]] |
| 225 | +set_property PACKAGE_PIN AC3 [get_ports ddr3_ras_n] |
| 226 | +set_property W4 [get_ports ddr3_reset_n] |
| 227 | +set_property PACKAGE_PIN AF4 [get_ports ddr3_we_n] |
| 228 | + |
| 229 | +reset_property IOSTANDARD [get_ports {ddr3_dqs_*[*]}] |
| 230 | +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[*]}] |
| 231 | +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[*]}] |
| 232 | +set_property DIFF_TERM TRUE [get_ports {ddr3_dqs_p[*]}] |
| 233 | +set_property DIFF_TERM TRUE [get_ports {ddr3_dqs_n[*]}] |
| 234 | +set_property DIFF_PAIR ddr3_dqs_p[0] [get_ports {ddr3_dqs_n[0]}] |
| 235 | +set_property DIFF_PAIR ddr3_dqs_p[1] [get_ports {ddr3_dqs_n[1]}] |
| 236 | +set_property SLEW FAST [get_ports {ddr3_dqs_p[*] ddr3_dqs_n[*]}] |
| 237 | +set_property PACKAGE_PIN AC1 [get_ports {ddr3_dqs_n[0]}] |
| 238 | +set_property PACKAGE_PIN W5 [get_ports {ddr3_dqs_n[1]}] |
| 239 | +set_property PACKAGE_PIN AB1 [get_ports {ddr3_dqs_p[0]}] |
| 240 | +set_property PACKAGE_PIN W6 [get_ports {ddr3_dqs_p[1]}] |
| 241 | + |
| 242 | + |
| 243 | +set_max_delay -datapath_only -from [get_pins xlnx_ddr3_c0/u_xlnx_ddr3_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_calib_top/init_calib_complete_reg/C] -to [get_pins xlnx_proc_sys_reset_0/U0/EXT_LPF/lpf_int_reg/D] 20.000 |
0 commit comments