1 |
2 |
peteralieb |
# The 4vfx60ff672-10 part is chosen for this example design.
|
2 |
|
|
# This value should be modified to match your device.
|
3 |
|
|
CONFIG PART = 4vfx12ff668-10;
|
4 |
|
|
|
5 |
|
|
NET "*tx_gmii_mii_clk_in_0_i" TNM_NET = "clk_phy_tx_clk0";
|
6 |
|
|
TIMESPEC "TS_phy_tx_clk0" = PERIOD "clk_phy_tx_clk0" 7400 ps HIGH 50 %;
|
7 |
|
|
|
8 |
|
|
NET "*tx_client_clk_in_0_i" TNM_NET = "clk_client_tx_clk0";
|
9 |
|
|
TIMESPEC "TS_client_tx_clk0" = PERIOD "clk_client_tx_clk0" 7200 ps HIGH 50 %;
|
10 |
|
|
|
11 |
|
|
NET "*rx_client_clk_in_0_i" TNM_NET = "clk_client_rx_clk0";
|
12 |
|
|
TIMESPEC "TS_client_rx_clk0" = PERIOD "clk_client_rx_clk0" 7200 ps HIGH 50 %;
|
13 |
|
|
|
14 |
|
|
NET "*mii_rx_clk_0_i" TNM_NET = "clk_phy_rx_clk0";
|
15 |
|
|
TIMESPEC "TS_phy_rx_clk0" = PERIOD "clk_phy_rx_clk0" 7200 ps HIGH 50 %;
|
16 |
|
|
|
17 |
|
|
NET "*host_clk_i" TNM_NET = "host_clock";
|
18 |
|
|
TIMEGRP "clk_host" = "host_clock";
|
19 |
|
|
TIMESPEC "TS_clk_host" = PERIOD "clk_host" 10000 ps HIGH 50 %;
|
20 |
|
|
|
21 |
|
|
# Locate EMAC instance for timing closure
|
22 |
|
|
INST "*v4_emac" LOC = "EMAC_X0Y0";
|
23 |
|
|
|
24 |
|
|
|
25 |
|
|
#################### EMAC 0 MII Constraints ########################
|
26 |
|
|
INST "*mii0?RXD_TO_MAC*" IOB = true;
|
27 |
|
|
INST "*mii0?RX_DV_TO_MAC" IOB = true;
|
28 |
|
|
INST "*mii0?RX_ER_TO_MAC" IOB = true;
|
29 |
|
|
|
30 |
|
|
INST "mii_txd_0>" IOSTANDARD = LVTTL;
|
31 |
|
|
INST "mii_tx_en_0" IOSTANDARD = LVTTL;
|
32 |
|
|
INST "mii_tx_er_0" IOSTANDARD = LVTTL;
|
33 |
|
|
|
34 |
|
|
INST "mii_rxd_0>" IOSTANDARD = LVTTL;
|
35 |
|
|
INST "mii_rx_dv_0" IOSTANDARD = LVTTL;
|
36 |
|
|
INST "mii_rx_er_0" IOSTANDARD = LVTTL;
|
37 |
|
|
|
38 |
|
|
INST "mii_tx_clk_0" IOSTANDARD = LVTTL;
|
39 |
|
|
INST "mii_rx_clk_0" IOSTANDARD = LVTTL;
|
40 |
|
|
|
41 |
|
|
INST "mii_col_0" IOSTANDARD = LVTTL;
|
42 |
|
|
INST "mii_crs_0" IOSTANDARD = LVTTL;
|
43 |
|
|
|
44 |
|
|
INST "reset" IOSTANDARD = LVTTL;
|
45 |
|
|
INST "phy_reset_0" IOSTANDARD = LVTTL;
|
46 |
|
|
INST "hostclk" IOSTANDARD = LVTTL;
|
47 |
|
|
|
48 |
|
|
INST "mii_txd_0>" TNM = "sig_mii_tx_0";
|
49 |
|
|
INST "mii_tx_en_0" TNM = "sig_mii_tx_0";
|
50 |
|
|
INST "mii_tx_er_0" TNM = "sig_mii_tx_0";
|
51 |
|
|
|
52 |
|
|
INST "mii_rxd_0>" TNM = "sig_mii_rx_0";
|
53 |
|
|
INST "mii_rx_dv_0" TNM = "sig_mii_rx_0";
|
54 |
|
|
INST "mii_rx_er_0" TNM = "sig_mii_rx_0";
|
55 |
|
|
|
56 |
|
|
# using recommended budget from the clause 22
|
57 |
|
|
TIMEGRP "sig_mii_rx_0" OFFSET = IN 10 ns VALID 20 ns BEFORE "mii_rx_clk_0";
|
58 |
|
|
TIMEGRP "sig_mii_tx_0" OFFSET = OUT 15 ns AFTER "mii_tx_clk_0";
|
59 |
|
|
|
60 |
|
|
|
61 |
|
|
# Remove the following constraints if example design FIFOs are not used
|
62 |
|
|
# These constraints cover any clock domain crossing for metastability.
|
63 |
|
|
# Tx client FIFO:
|
64 |
|
|
INST "*client_side_FIFO_emac0?tx_fifo_i?wr_col_window_pipe_0" TNM = "tx_metastable";
|
65 |
|
|
INST "*client_side_FIFO_emac0?tx_fifo_i?wr_retran_frame_tog" TNM = "tx_metastable";
|
66 |
|
|
INST "*client_side_FIFO_emac0?tx_fifo_i?wr_col_window_pipe_1" TNM = "tx_stable";
|
67 |
|
|
INST "*client_side_FIFO_emac0?tx_fifo_i?wr_retran_frame_sync" TNM = "tx_stable";
|
68 |
|
|
|
69 |
|
|
INST "*tx_fifo_i?wr_tran_frame_tog" TNM = "tx_metastable";
|
70 |
|
|
INST "*tx_fifo_i?frame_in_fifo_sync" TNM = "tx_metastable";
|
71 |
|
|
INST "*tx_fifo_i?wr_txfer_tog" TNM = "tx_metastable";
|
72 |
|
|
INST "*tx_fifo_i?wr_rd_addr*" TNM = "tx_metastable";
|
73 |
|
|
|
74 |
|
|
INST "*tx_fifo_i?wr_tran_frame_sync" TNM = "tx_stable";
|
75 |
|
|
INST "*tx_fifo_i?frame_in_fifo" TNM = "tx_stable";
|
76 |
|
|
INST "*tx_fifo_i?wr_txfer_tog_sync" TNM = "tx_stable";
|
77 |
|
|
INST "*tx_fifo_i?wr_addr_diff*" TNM = "tx_stable";
|
78 |
|
|
|
79 |
|
|
TIMESPEC "TS_tx_meta_protect" = FROM "tx_metastable" TO "tx_stable" 5 ns;
|
80 |
|
|
|
81 |
|
|
# Rx client FIFO:
|
82 |
|
|
|
83 |
|
|
INST "*rx_fifo_i?rd_store_frame_tog" TNM = "rx_metastable";
|
84 |
|
|
INST "*rx_fifo_i?wr_rd_addr_gray_sync*" TNM = "rx_metastable";
|
85 |
|
|
|
86 |
|
|
INST "*rx_fifo_i?rd_store_frame_sync" TNM = "rx_stable";
|
87 |
|
|
INST "*rx_fifo_i?wr_rd_addr_gray*" TNM = "rx_stable";
|
88 |
|
|
|
89 |
|
|
TIMESPEC "TS_rx_meta_protect" = FROM "rx_metastable" TO "rx_stable" 5 ns;
|
90 |
|
|
|
91 |
|
|
|
92 |
|
|
# Location Constraints
|
93 |
|
|
# Receiver signals
|
94 |
|
|
INST "MII_RX_CLK_0" LOC = "B15";
|
95 |
|
|
#INST "MII_RXD_0<7>" LOC = "A3";
|
96 |
|
|
#INST "MII_RXD_0<6>" LOC = "B3";
|
97 |
|
|
#INST "MII_RXD_0<5>" LOC = "A4";
|
98 |
|
|
#INST "MII_RXD_0<4>" LOC = "B4";
|
99 |
|
|
INST "MII_RXD_0<3>" LOC = "C4";
|
100 |
|
|
INST "MII_RXD_0<2>" LOC = "D4";
|
101 |
|
|
INST "MII_RXD_0<1>" LOC = "E1";
|
102 |
|
|
INST "MII_RXD_0<0>" LOC = "F1";
|
103 |
|
|
INST "MII_RX_DV_0" LOC = "A9";
|
104 |
|
|
INST "MII_RX_ER_0" LOC = "B9";
|
105 |
|
|
|
106 |
|
|
# Transmitter signals
|
107 |
|
|
#INST "MII_TXD_0<7>" LOC = "G3";
|
108 |
|
|
#INST "MII_TXD_0<6>" LOC = "H6";
|
109 |
|
|
#INST "MII_TXD_0<5>" LOC = "H5";
|
110 |
|
|
#INST "MII_TXD_0<4>" LOC = "G2";
|
111 |
|
|
INST "MII_TXD_0<3>" LOC = "G1";
|
112 |
|
|
INST "MII_TXD_0<2>" LOC = "H3";
|
113 |
|
|
INST "MII_TXD_0<1>" LOC = "H2";
|
114 |
|
|
INST "MII_TXD_0<0>" LOC = "H1";
|
115 |
|
|
INST "MII_TX_EN_0" LOC = "F4";
|
116 |
|
|
INST "MII_TX_ER_0" LOC = "F3";
|
117 |
|
|
INST "MII_TX_CLK_0" LOC = "C15";
|
118 |
|
|
|
119 |
|
|
# Other Phy signals
|
120 |
|
|
INST "MII_COL_0" LOC = "E3";
|
121 |
|
|
INST "MII_CRS_0" LOC = "D5";
|
122 |
|
|
INST "PHY_RESET_0" LOC = "D10";
|
123 |
|
|
#INST "SPEED_VECTOR_IN_0<0>" LOC = "";
|
124 |
|
|
#INST "SPEED_VECTOR_IN_0<1>" LOC = "";
|
125 |
|
|
|
126 |
|
|
# Other
|
127 |
|
|
INST "HOSTCLK" LOC = "AE14";
|
128 |
|
|
INST "RESET" LOC = "D6";
|