HITDAQ/FPGA_firmware/rgmii_sdc/rgmii_clocks.sdc
2024-10-11 14:49:54 +02:00

91 lines
2.6 KiB
Tcl

#
# This file is intended to be sourced from a top.sdc
# It contains references to TCL variables that are defined in the top.sdc
#
post_message -type info "Reading file: \'rgmii_clocks.sdc\'"
# Set the periods of the clocks used in the design
set PERIOD_125 8.0
set PERIOD_25 [expr 8.0 * 5]
set PERIOD_2p5 [expr 8.0 * 50]
# Create the erx_clk on the port
create_clock \
-name enet_rx_clk \
-period $PERIOD_125 \
[get_ports {enet_rx_clk}]
# Create the external virtual PHY clock
create_clock \
-name virtual_phy_clk \
-period $PERIOD_125 \
# Define the clocks that can appear on the output of the TX clock mux
# Create the 125MHz mux output
create_generated_clock \
-name tx_clk_125 \
-source [get_pins "$enet_pll_125"] \
[get_pins {tx_clk_to_the_tse_mac|combout}]
# Create the 25MHz mux output
create_generated_clock \
-name tx_clk_25 \
-source [get_pins "$enet_pll_25"] \
-add \
[get_pins {tx_clk_to_the_tse_mac|combout}]
# Create the 2.5MHz mux output
create_generated_clock \
-name tx_clk_2p5 \
-source [get_pins "$enet_pll_2p5"] \
-add \
[get_pins {tx_clk_to_the_tse_mac|combout}]
# All of the mux outputs are exclusive
set_clock_groups \
-exclusive \
-group [get_clocks {tx_clk_125}] \
-group [get_clocks {tx_clk_25}] \
-group [get_clocks {tx_clk_2p5}]
# Create the 125Mhz etx_clk output
create_generated_clock \
-name enet_gtx_clk_125 \
-source [get_pins {tx_clk_to_the_tse_mac|combout}] \
-master_clock {tx_clk_125} \
[get_ports {enet_gtx_clk}]
# Create the 25Mhz etx_clk output
create_generated_clock \
-name enet_gtx_clk_25 \
-source [get_pins {tx_clk_to_the_tse_mac|combout}] \
-master_clock {tx_clk_25} \
-add \
[get_ports {enet_gtx_clk}]
# Create the 2p5Mhz etx_clk output
create_generated_clock \
-name enet_gtx_clk_2p5 \
-source [get_pins {tx_clk_to_the_tse_mac|combout}] \
-master_clock {tx_clk_2p5} \
-add \
[get_ports {enet_gtx_clk}]
# Cut all the unrelated clock transfers to the external clocks
set_clock_groups -exclusive \
-group [get_clocks {tx_clk_125}] \
-group [get_clocks {enet_gtx_clk_25 enet_gtx_clk_2p5}]
set_clock_groups -exclusive \
-group [get_clocks {tx_clk_25}] \
-group [get_clocks {enet_gtx_clk_125 enet_gtx_clk_2p5}]
set_clock_groups -exclusive \
-group [get_clocks {tx_clk_2p5}] \
-group [get_clocks {enet_gtx_clk_125 enet_gtx_clk_25}]
# This path does not need to be constrained
set_false_path -to [get_ports {enet_gtx_clk}]