mirror of
https://github.com/corundum/corundum.git
synced 2025-01-16 08:12:53 +08:00
118 lines
7.6 KiB
Tcl
118 lines
7.6 KiB
Tcl
# Timing constraints for the Intel Stratix 10 DX FPGA development board
|
|
|
|
set_time_format -unit ns -decimal_places 3
|
|
|
|
# Clock constraints
|
|
create_clock -period 7.519 -name {clk_133m_ddr4_1} [ get_ports {clk_133m_ddr4_1_p} ]
|
|
create_clock -period 7.519 -name {clk_133m_ddr4_0} [ get_ports {clk_133m_ddr4_0_p} ]
|
|
create_clock -period 7.519 -name {clk_133m_dimm_1} [ get_ports {clk_133m_dimm_1_p} ]
|
|
create_clock -period 7.519 -name {clk_133m_dimm_0} [ get_ports {clk_133m_dimm_0_p} ]
|
|
|
|
create_clock -period 10.000 -name {clk2_100m_fpga_2i} [ get_ports {clk2_100m_fpga_2i_p} ]
|
|
create_clock -period 10.000 -name {clk2_100m_fpga_2j_0} [ get_ports {clk2_100m_fpga_2j_0_p} ]
|
|
create_clock -period 10.000 -name {clk2_100m_fpga_2j_1} [ get_ports {clk2_100m_fpga_2j_1_p} ]
|
|
create_clock -period 10.000 -name {clk_100m_fpga_3h} [ get_ports {clk_100m_fpga_3h_p} ]
|
|
create_clock -period 10.000 -name {clk_100m_fpga_3l_0} [ get_ports {clk_100m_fpga_3l_0_p} ]
|
|
create_clock -period 10.000 -name {clk_100m_fpga_3l_1} [ get_ports {clk_100m_fpga_3l_1_p} ]
|
|
|
|
create_clock -period 20.000 -name {clk2_fpga_50m} [ get_ports {clk2_fpga_50m} ]
|
|
|
|
create_clock -period 10.000 -name {clk_100m_pcie_0} [ get_ports {clk_100m_pcie_0_p} ]
|
|
create_clock -period 10.000 -name {clk_100m_pcie_1} [ get_ports {clk_100m_pcie_1_p} ]
|
|
|
|
create_clock -period 10.000 -name {clk_100m_upi0_0} [ get_ports {clk_100m_upi0_0_p} ]
|
|
create_clock -period 10.000 -name {clk_100m_upi0_1} [ get_ports {clk_100m_upi0_1_p} ]
|
|
|
|
create_clock -period 10.000 -name {clk_100m_upi1_0} [ get_ports {clk_100m_upi1_0_p} ]
|
|
create_clock -period 10.000 -name {clk_100m_upi1_1} [ get_ports {clk_100m_upi1_1_p} ]
|
|
|
|
create_clock -period 10.000 -name {clk_100m_upi2_0} [ get_ports {clk_100m_upi2_0_p} ]
|
|
create_clock -period 10.000 -name {clk_100m_upi2_1} [ get_ports {clk_100m_upi2_1_p} ]
|
|
|
|
create_clock -period 3.2 -name {clk_312p5m_qsfp0} [ get_ports {clk_312p5m_qsfp0_p} ]
|
|
create_clock -period 6.4 -name {clk_156p25m_qsfp0} [ get_ports {clk_156p25m_qsfp0_p} ]
|
|
create_clock -period 3.2 -name {clk_312p5m_qsfp1} [ get_ports {clk_312p5m_qsfp1_p} ]
|
|
create_clock -period 6.4 -name {clk_156p25m_qsfp1} [ get_ports {clk_156p25m_qsfp1_p} ]
|
|
create_clock -period 3.2 -name {clk_312p5m_qsfp2} [ get_ports {clk_312p5m_qsfp2_p} ]
|
|
|
|
derive_clock_uncertainty
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_133m_ddr4_1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_133m_ddr4_0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_133m_dimm_1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_133m_dimm_0} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk2_100m_fpga_2i} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk2_100m_fpga_2j_0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk2_100m_fpga_2j_1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_fpga_3h} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_fpga_3l_0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_fpga_3l_1} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk2_fpga_50m} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_pcie_0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_pcie_1} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_upi0_0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_upi0_1} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_upi1_0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_upi1_1} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_upi2_0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_100m_upi2_1} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_312p5m_qsfp0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_156p25m_qsfp0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_312p5m_qsfp1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_156p25m_qsfp1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_312p5m_qsfp2} ]
|
|
|
|
# JTAG constraints
|
|
create_clock -name {altera_reserved_tck} -period 40.800 {altera_reserved_tck}
|
|
|
|
set_clock_groups -asynchronous -group [get_clocks {altera_reserved_tck}]
|
|
|
|
# IO constraints
|
|
set_false_path -from "cpu_resetn"
|
|
set_false_path -to "user_led_g[*]"
|
|
|
|
set_false_path -from "pcie_rst_n"
|
|
|
|
|
|
source ../lib/eth/lib/axis/syn/quartus_pro/sync_reset.sdc
|
|
source ../lib/eth/lib/axis/syn/quartus_pro/axis_async_fifo.sdc
|
|
|
|
# clocking infrastructure
|
|
constrain_sync_reset_inst "sync_reset_100mhz_inst"
|
|
|
|
# MAC clocks
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp1_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|rx_clkout2|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp1_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|rx_clkout|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp1_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout2|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp1_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp1_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp1_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch2} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp1_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch3} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp2_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|rx_clkout2|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp2_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|rx_clkout|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp2_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout2|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp2_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp2_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp2_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch2} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {qsfp2_mac_inst|mac_inst|alt_ehipc3_0|alt_ehipc3_hard_inst|SL_NPHY.altera_xcvr_native_inst|alt_ehipc3_nphy_elane|tx_clkout|ch3} ]
|
|
|
|
# MAC resets
|
|
constrain_sync_reset_inst "qsfp1_mac_inst|mac_ch[0].mac_rst_reset_sync_inst"
|
|
constrain_sync_reset_inst "qsfp1_mac_inst|mac_ch[1].mac_rst_reset_sync_inst"
|
|
constrain_sync_reset_inst "qsfp1_mac_inst|mac_ch[2].mac_rst_reset_sync_inst"
|
|
constrain_sync_reset_inst "qsfp1_mac_inst|mac_ch[3].mac_rst_reset_sync_inst"
|
|
constrain_sync_reset_inst "qsfp2_mac_inst|mac_ch[0].mac_rst_reset_sync_inst"
|
|
constrain_sync_reset_inst "qsfp2_mac_inst|mac_ch[1].mac_rst_reset_sync_inst"
|
|
constrain_sync_reset_inst "qsfp2_mac_inst|mac_ch[2].mac_rst_reset_sync_inst"
|
|
constrain_sync_reset_inst "qsfp2_mac_inst|mac_ch[3].mac_rst_reset_sync_inst"
|
|
|
|
# async FIFOs
|
|
constrain_axis_async_fifo_inst "core_inst|max_rx_fifo"
|
|
constrain_axis_async_fifo_inst "core_inst|max_tx_fifo" |