|
| 1 | +# XDC constraints for the AMD KR260 board |
| 2 | +# part: XCK26-SFVC784-2LV-C/I |
| 3 | + |
| 4 | +# General configuration |
| 5 | +set_property BITSTREAM.GENERAL.COMPRESS true [current_design] |
| 6 | + |
| 7 | +# System clocks |
| 8 | +# 125 MHz |
| 9 | +# |
| 10 | +# The 125 MHz clock signal is a standard reference clock frequency used |
| 11 | +# in many Ethernet PHYs. This clock signal is used as a timing reference |
| 12 | +# for the PHY's internal circuitry, including the serializer/deserializer |
| 13 | +# (SERDES) components that convert digital data to analog signals for |
| 14 | +# transmission over the physical medium and vice versa. The SERDES components |
| 15 | +# require a precise clock signal to ensure accurate timing of the transmitted |
| 16 | +# and received data. |
| 17 | +# |
| 18 | +# NOTE: the GTH transceivers need a free-running clock. |
| 19 | +# |
| 20 | + |
| 21 | +# # Option 1: use the 125 MHz clock from the U87 chip |
| 22 | +# # GTR pins, connected to the PS, cannot use directly |
| 23 | +# set_property -dict {LOC C47 IOSTANDARD LVDS_25} [get_ports clk_125mhz_p] |
| 24 | +# set_property -dict {LOC C48 IOSTANDARD LVDS_25} [get_ports clk_125mhz_n] |
| 25 | +# create_clock -period 8.000 -name clk_125mhz [get_ports clk_125mhz_p] |
| 26 | + |
| 27 | +# # Option 2: use the 156.25 MHz MGT reference clock |
| 28 | +# # GTH pins, connected to the PL, however: |
| 29 | +# # |
| 30 | +# # The MGT (Multi-Gigabit Transceiver) reference clock inputs and GTH (Gigabit Transceiver) |
| 31 | +# # pins are designed for different types of clock signals, and connecting them together can |
| 32 | +# # result in damage to the circuitry or a non-functioning design. |
| 33 | +# # |
| 34 | +# # Connecting the MGT reference clock inputs to GTH pins can result in damage to the |
| 35 | +# # circuitry or a non-functioning design because the MGT reference clock signal has different |
| 36 | +# # voltage and timing requirements than the GTH system clock. The MGT reference clock signal |
| 37 | +# # requires a dedicated input buffer, such as the IBUFDS_GTE2 or IBUFDS_GTH, to properly |
| 38 | +# # receive the clock signal and perform the necessary signal conditioning before it can be |
| 39 | +# # used by the MGT transceiver. The GTH pins, on the other hand, require a specific input |
| 40 | +# # buffer, such as the IBUFDS_GTE2 or IBUFDS_GTH, to properly receive the system clock signal |
| 41 | +# # and perform the necessary signal conditioning before it can be used for data transfer. |
| 42 | +# # |
| 43 | +# set_property -dict {LOC Y6 IOSTANDARD LVDS_25} [get_ports clk_125mhz_p] ;# GTH_REFCLK0_C2M_P via U90, SOM240_2 C3 |
| 44 | +# set_property -dict {LOC Y5 IOSTANDARD LVDS_25} [get_ports clk_125mhz_n] ;# GTH_REFCLK0_C2M_N via U90, SOM240_2 C4 |
| 45 | +# create_clock -period 6.400 -name clk_125mhz [get_ports clk_125mhz_p] |
| 46 | + |
| 47 | +# Option 3: use the 25 MHz clock outputs to the PL from U91 |
| 48 | +# and feed that into a PLL to convert it to 125 MHz |
| 49 | +set_property -dict {LOC C3 IOSTANDARD LVCMOS18} [get_ports clk_25mhz_ref] ;# HPA_CLK0P_CLK, HPA_CLK0_P, via U91, SOM240_1 A6 |
| 50 | +create_clock -period 40.000 -name clk_25mhz [get_ports clk_25mhz_ref] |
| 51 | + |
| 52 | +# LEDs |
| 53 | +set_property -dict {LOC F8 IOSTANDARD LVCMOS18 SLEW SLOW DRIVE 8} [get_ports {led[0]}] ;# HPA14P, HPA14_P, som240_1_d13, VCCO - som240_1_d1 |
| 54 | +set_property -dict {LOC E8 IOSTANDARD LVCMOS18 SLEW SLOW DRIVE 8} [get_ports {led[1]}] ;# HPA14N, HPA14_N, som240_1_d14, VCCO - som240_1_d1 |
| 55 | + |
| 56 | +set_false_path -to [get_ports {led[*]}] |
| 57 | +set_output_delay 0 [get_ports {led[*]}] |
| 58 | + |
| 59 | +# # Reset button |
| 60 | +# # PS_POR_L, note schematics hints C15 is PS_POR_B (Power-on Reset) signal |
| 61 | +# # whereas the "Kria SOM Carrier Card Design Guide" says C15 is PS_POR_L. |
| 62 | +# # |
| 63 | +# # Signal is pulled up to 1.8V through a 4.70 KΩ resistor on the SOM, LVCMOS18 |
| 64 | +# # |
| 65 | +# # NOTE: Connected to the PS, not accessible to the PL |
| 66 | +# # |
| 67 | +# # see https://docs.xilinx.com/r/en-US/ug1091-carrier-card-design/Sideband-Signals |
| 68 | +# set_property -dict {LOC P16 IOSTANDARD LVCMOS18} [get_ports reset] ;# som240_1_c15, PS_POR_B, PS_POR_L |
| 69 | +# |
| 70 | +# set_false_path -from [get_ports {reset}] |
| 71 | +# set_input_delay 0 [get_ports {reset}] |
| 72 | + |
| 73 | +# No push buttons in KR260 |
| 74 | +# FWEN is used for other features |
| 75 | +# |
| 76 | +# set_property -dict {LOC AG15 IOSTANDARD LVCMOS33} [get_ports btnu] |
| 77 | +# set_property -dict {LOC AF15 IOSTANDARD LVCMOS33} [get_ports btnl] |
| 78 | +# set_property -dict {LOC AE15 IOSTANDARD LVCMOS33} [get_ports btnd] |
| 79 | +# set_property -dict {LOC AE14 IOSTANDARD LVCMOS33} [get_ports btnr] |
| 80 | +# set_property -dict {LOC AG13 IOSTANDARD LVCMOS33} [get_ports btnc] |
| 81 | +# |
| 82 | +# set_false_path -from [get_ports {btnu btnl btnd btnr btnc}] |
| 83 | +# set_input_delay 0 [get_ports {btnu btnl btnd btnr btnc}] |
| 84 | + |
| 85 | +# No DIP switches in KR260 |
| 86 | +# |
| 87 | +# set_property -dict {LOC AN14 IOSTANDARD LVCMOS33} [get_ports {sw[0]}] |
| 88 | +# |
| 89 | +# set_false_path -from [get_ports {sw[*]}] |
| 90 | +# set_input_delay 0 [get_ports {sw[*]}] |
| 91 | + |
| 92 | +# No PL-Side UART available from default banks |
| 93 | +# |
| 94 | +# set_property -dict {LOC F13 IOSTANDARD LVCMOS33 SLEW SLOW DRIVE 8} [get_ports uart_txd] |
| 95 | +# set_property -dict {LOC E13 IOSTANDARD LVCMOS33} [get_ports uart_rxd] |
| 96 | +# set_property -dict {LOC D12 IOSTANDARD LVCMOS33} [get_ports uart_rts] |
| 97 | +# set_property -dict {LOC E12 IOSTANDARD LVCMOS33 SLEW SLOW DRIVE 8} [get_ports uart_cts] |
| 98 | +# |
| 99 | +# set_false_path -to [get_ports {uart_txd uart_cts}] |
| 100 | +# set_output_delay 0 [get_ports {uart_txd uart_cts}] |
| 101 | +# set_false_path -from [get_ports {uart_rxd uart_rts}] |
| 102 | +# set_input_delay 0 [get_ports {uart_rxd uart_rts}] |
| 103 | + |
| 104 | +# No PL-I2C interfaces |
| 105 | +#set_property -dict {LOC J10 IOSTANDARD LVCMOS33 SLEW SLOW DRIVE 8} [get_ports i2c0_scl] |
| 106 | +#set_property -dict {LOC J11 IOSTANDARD LVCMOS33 SLEW SLOW DRIVE 8} [get_ports i2c0_sda] |
| 107 | +#set_property -dict {LOC K20 IOSTANDARD LVCMOS33 SLEW SLOW DRIVE 8} [get_ports i2c1_scl] |
| 108 | +#set_property -dict {LOC L20 IOSTANDARD LVCMOS33 SLEW SLOW DRIVE 8} [get_ports i2c1_sda] |
| 109 | + |
| 110 | +#set_false_path -to [get_ports {i2c1_sda i2c1_scl}] |
| 111 | +#set_output_delay 0 [get_ports {i2c1_sda i2c1_scl}] |
| 112 | +#set_false_path -from [get_ports {i2c1_sda i2c1_scl}] |
| 113 | +#set_input_delay 0 [get_ports {i2c1_sda i2c1_scl}] |
| 114 | + |
| 115 | +# SFP+ Interface |
| 116 | +set_property -dict {LOC T2 } [get_ports sfp0_rx_p] ;# GTH_DP2_C2M_P, som240_2_b1 |
| 117 | +set_property -dict {LOC T1 } [get_ports sfp0_rx_n] ;# GTH_DP2_C2M_N, som240_2_b2 |
| 118 | +set_property -dict {LOC R4 } [get_ports sfp0_tx_p] ;# GTH_DP2_M2C_P, som240_2_b5 |
| 119 | +set_property -dict {LOC R3 } [get_ports sfp0_tx_n] ;# GTH_DP2_M2C_N, som240_2_b6 |
| 120 | + |
| 121 | +set_property -dict {LOC Y6 } [get_ports sfp_mgt_refclk_0_p] ;# GTH_REFCLK0_C2M_P via U90, SOM240_2 C3 |
| 122 | +set_property -dict {LOC Y5 } [get_ports sfp_mgt_refclk_0_n] ;# GTH_REFCLK0_C2M_N via U90, SOM240_2 C4 |
| 123 | +set_property -dict {LOC Y10 IOSTANDARD LVCMOS18 SLEW SLOW DRIVE 8 } [get_ports sfp0_tx_disable_b] ;# HDB19, SOM240_2_A47 |
| 124 | + |
| 125 | +# 156.25 MHz MGT reference clock |
| 126 | +create_clock -period 6.400 -name sfp_mgt_refclk_0 [get_ports sfp_mgt_refclk_0_p] |
| 127 | + |
| 128 | +set_false_path -to [get_ports {sfp0_tx_disable_b}] |
| 129 | +set_output_delay 0 [get_ports {sfp0_tx_disable_b}] |
0 commit comments