mirror of
https://github.com/corundum/corundum.git
synced 2025-01-16 08:12:53 +08:00
103 lines
6.6 KiB
Tcl
103 lines
6.6 KiB
Tcl
# Timing constraints for the Intel Stratix 10 MX FPGA development board
|
|
|
|
set_time_format -unit ns -decimal_places 3
|
|
|
|
# Clock constraints
|
|
create_clock -period 20.000 -name {clk_sys_50m} [ get_ports {clk_sys_50m_p} ]
|
|
create_clock -period 10.000 -name {clk_sys_100m} [ get_ports {clk_sys_100m_p} ]
|
|
create_clock -period 10.000 -name {clk_core_bak} [ get_ports {clk_core_bak_p} ]
|
|
create_clock -period 10.000 -name {clk_uib0} [ get_ports {clk_uib0_p} ]
|
|
create_clock -period 10.000 -name {clk_uib1} [ get_ports {clk_uib1_p} ]
|
|
create_clock -period 10.000 -name {clk_esram0} [ get_ports {clk_esram0_p} ]
|
|
create_clock -period 10.000 -name {clk_esram1} [ get_ports {clk_esram1_p} ]
|
|
create_clock -period 7.500 -name {clk_ddr4_comp} [ get_ports {clk_ddr4_comp_p} ]
|
|
create_clock -period 7.500 -name {clk_ddr4_dimm} [ get_ports {clk_ddr4_dimm_p} ]
|
|
|
|
create_clock -period 10.000 -name {refclk_pcie_ep} [ get_ports {refclk_pcie_ep_p} ]
|
|
create_clock -period 10.000 -name {refclk_pcie_ep_edge} [ get_ports {refclk_pcie_ep_edge_p} ]
|
|
create_clock -period 10.000 -name {refclk_pcie_ep1} [ get_ports {refclk_pcie_ep1_p} ]
|
|
create_clock -period 10.000 -name {refclk_pcie_rp} [ get_ports {refclk_pcie_rp_p} ]
|
|
|
|
create_clock -period 1.551 -name {refclk_qsfp0} [ get_ports {refclk_qsfp0_p} ]
|
|
create_clock -period 1.551 -name {refclk_qsfp1} [ get_ports {refclk_qsfp1_p} ]
|
|
|
|
derive_clock_uncertainty
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_sys_50m} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_sys_100m} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_core_bak} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_uib0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_uib1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_esram0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_esram1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_ddr4_comp} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {clk_ddr4_dimm} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {refclk_pcie_ep} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {refclk_pcie_ep_edge} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {refclk_pcie_ep1} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {refclk_pcie_rp} ]
|
|
|
|
set_clock_groups -asynchronous -group [ get_clocks {refclk_qsfp0} ]
|
|
set_clock_groups -asynchronous -group [ get_clocks {refclk_qsfp1} ]
|
|
|
|
# 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[*]"
|
|
|
|
set_false_path -from "s10_pcie_perstn0"
|
|
set_false_path -from "s10_pcie_perstn1"
|
|
|
|
# source ../lib/eth/syn/quartus_pro/eth_mac_fifo.sdc
|
|
# 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"
|
|
|
|
# # PHY clocks
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_1|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_1|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_2|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_2|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_3|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_3|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_4|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_4|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_1|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_1|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_2|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_2|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_3|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_3|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_4|eth_xcvr_inst|tx_clkout|ch0} ]
|
|
# set_clock_groups -asynchronous -group [ get_clocks {qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_4|eth_xcvr_inst|rx_clkout|ch0} ]
|
|
|
|
# # PHY resets
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_1|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_1|phy_rx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_2|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_2|phy_rx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_3|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_3|phy_rx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_4|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp0_eth_xcvr_phy_quad|eth_xcvr_phy_4|phy_rx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_1|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_1|phy_rx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_2|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_2|phy_rx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_3|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_3|phy_rx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_4|phy_tx_rst_reset_sync_inst"
|
|
# constrain_sync_reset_inst "qsfp1_eth_xcvr_phy_quad|eth_xcvr_phy_4|phy_rx_rst_reset_sync_inst"
|
|
|
|
# # 10G MAC
|
|
# constrain_eth_mac_fifo_inst "core_inst|eth_mac_10g_fifo_inst"
|
|
# constrain_axis_async_fifo_inst "core_inst|eth_mac_10g_fifo_inst|rx_fifo|fifo_inst"
|
|
# constrain_axis_async_fifo_inst "core_inst|eth_mac_10g_fifo_inst|tx_fifo|fifo_inst"
|