source: ResearchApps/PHY/WARPLAB/WARPLab_v6p2/EDK_files_w3_2radio/system.ucf

Last change on this file was 1818, checked in by chunter, 12 years ago

WARP v3 EDK Files

File size: 39.7 KB
Line 
1#Debug header LOC constraints (manually entered)
2NET "debug_status<0>" LOC = "AG27" | IOSTANDARD = LVCMOS25; #pin 0
3NET "debug_status<1>" LOC = "AE26" | IOSTANDARD = LVCMOS25; #pin 1
4
5NET "debug_sw_gpio<0>" LOC = "AF26"  | IOSTANDARD = "LVCMOS25"; #pin 2
6NET "debug_sw_gpio<1>" LOC = "AD25"  | IOSTANDARD = "LVCMOS25"; #pin 3
7NET "debug_sw_gpio<2>" LOC = "V24"   | IOSTANDARD = "LVCMOS25"; #pin 4
8NET "debug_sw_gpio<3>" LOC = "AA23"  | IOSTANDARD = "LVCMOS25"; #pin 5
9NET "debug_sw_gpio<4>" LOC = "AH30"  | IOSTANDARD = "LVCMOS25"; #pin 6
10NET "debug_sw_gpio<5>" LOC = "AK31"  | IOSTANDARD = "LVCMOS25"; #pin 7
11
12#User IO
13Net USERIO_hexdisp_left_pin<0> LOC=AL33  |  IOSTANDARD = LVCMOS25;
14Net USERIO_hexdisp_left_pin<1> LOC=AK33  |  IOSTANDARD = LVCMOS25;
15Net USERIO_hexdisp_left_pin<2> LOC=AH32  |  IOSTANDARD = LVCMOS25;
16Net USERIO_hexdisp_left_pin<3> LOC=AF29  |  IOSTANDARD = LVCMOS25;
17Net USERIO_hexdisp_left_pin<4> LOC=AE29  |  IOSTANDARD = LVCMOS25;
18Net USERIO_hexdisp_left_pin<5> LOC=AK32  |  IOSTANDARD = LVCMOS25;
19Net USERIO_hexdisp_left_pin<6> LOC=AF30  |  IOSTANDARD = LVCMOS25;
20Net USERIO_hexdisp_right_pin<0> LOC=AE28  |  IOSTANDARD = LVCMOS25;
21Net USERIO_hexdisp_right_pin<1> LOC=AD26  |  IOSTANDARD = LVCMOS25;
22Net USERIO_hexdisp_right_pin<2> LOC=AC24  |  IOSTANDARD = LVCMOS25;
23Net USERIO_hexdisp_right_pin<3> LOC=AE23  |  IOSTANDARD = LVCMOS25;
24Net USERIO_hexdisp_right_pin<4> LOC=AC22  |  IOSTANDARD = LVCMOS25;
25Net USERIO_hexdisp_right_pin<5> LOC=AD27  |  IOSTANDARD = LVCMOS25;
26Net USERIO_hexdisp_right_pin<6> LOC=AB23  |  IOSTANDARD = LVCMOS25;
27Net USERIO_hexdisp_left_dp_pin LOC=AG30  |  IOSTANDARD = LVCMOS25;
28Net USERIO_hexdisp_right_dp_pin LOC=AC23  |  IOSTANDARD = LVCMOS25;
29Net USERIO_leds_red_pin<0> LOC=AN34  |  IOSTANDARD = LVCMOS25;
30Net USERIO_leds_red_pin<1> LOC=AM33  |  IOSTANDARD = LVCMOS25;
31Net USERIO_leds_red_pin<2> LOC=AN33  |  IOSTANDARD = LVCMOS25;
32Net USERIO_leds_red_pin<3> LOC=AP33  |  IOSTANDARD = LVCMOS25;
33Net USERIO_leds_green_pin<0> LOC=AD22  |  IOSTANDARD = LVCMOS25;
34Net USERIO_leds_green_pin<1> LOC=AE22  |  IOSTANDARD = LVCMOS25;
35Net USERIO_leds_green_pin<2> LOC=AM32  |  IOSTANDARD = LVCMOS25;
36Net USERIO_leds_green_pin<3> LOC=AN32  |  IOSTANDARD = LVCMOS25;
37Net USERIO_rfa_led_red_pin LOC=AL34  |  IOSTANDARD = LVCMOS25;
38Net USERIO_rfa_led_green_pin LOC=AK34  |  IOSTANDARD = LVCMOS25;
39Net USERIO_rfb_led_red_pin LOC=AJ34  |  IOSTANDARD = LVCMOS25;
40Net USERIO_rfb_led_green_pin LOC=AH34  |  IOSTANDARD = LVCMOS25;
41Net USERIO_dipsw_pin<0> LOC=AM22  |  IOSTANDARD = LVCMOS15;
42Net USERIO_dipsw_pin<1> LOC=AL23  |  IOSTANDARD = LVCMOS15;
43Net USERIO_dipsw_pin<2> LOC=AM23  |  IOSTANDARD = LVCMOS15;
44Net USERIO_dipsw_pin<3> LOC=AN23  |  IOSTANDARD = LVCMOS15;
45Net USERIO_pb_u_pin LOC=AM21  |  IOSTANDARD = LVCMOS15;
46Net USERIO_pb_m_pin LOC=AN22  |  IOSTANDARD = LVCMOS15;
47Net USERIO_pb_d_pin LOC=AP22  |  IOSTANDARD = LVCMOS15;
48
49#USB UART on WARP v3 rev 1.1
50Net UART_USB_TX_pin LOC = H9  |  IOSTANDARD=LVCMOS25; #FT230X RXD pin
51Net UART_USB_RX_pin LOC = J9  |  IOSTANDARD=LVCMOS25; #FT230X TXD pin
52
53#Debug pins 0, 1 for rev1.0 with off-board USB UART
54#Net UART_USB_RX_pin LOC = AG27  |  IOSTANDARD=LVCMOS25; #debughdr0, FT230X TXD pin
55#Net UART_USB_TX_pin LOC = AE26  |  IOSTANDARD=LVCMOS25; #debughdr1, FT230X RXD pin
56
57#IIC EEPROM
58Net IIC_EEPROM_iic_sda_pin LOC = AG23  |  IOSTANDARD=LVCMOS25;
59Net IIC_EEPROM_iic_scl_pin LOC = AF23  |  IOSTANDARD=LVCMOS25;
60
61#ETH A
62Net ETH_A_TemacPhy_RST_n_pin LOC=L9  |  IOSTANDARD = LVCMOS25  |  TIG;
63Net ETH_A_RGMII_TXD_0_pin<0> LOC=AF9  |  IOSTANDARD = LVCMOS25;
64Net ETH_A_RGMII_TXD_0_pin<1> LOC=AF10  |  IOSTANDARD = LVCMOS25;
65Net ETH_A_RGMII_TXD_0_pin<2> LOC=AD9  |  IOSTANDARD = LVCMOS25;
66Net ETH_A_RGMII_TXD_0_pin<3> LOC=AD10  |  IOSTANDARD = LVCMOS25;
67Net ETH_A_RGMII_TX_CTL_0_pin LOC=AG8  |  IOSTANDARD = LVCMOS25;
68Net ETH_A_RGMII_TXC_0_pin LOC=AE9  |  IOSTANDARD = LVCMOS25;
69Net ETH_A_RGMII_RXD_0_pin<0> LOC=AK9  |  IOSTANDARD = LVCMOS25;
70Net ETH_A_RGMII_RXD_0_pin<1> LOC=AJ9  |  IOSTANDARD = LVCMOS25;
71Net ETH_A_RGMII_RXD_0_pin<2> LOC=AH8  |  IOSTANDARD = LVCMOS25;
72Net ETH_A_RGMII_RXD_0_pin<3> LOC=AH9  |  IOSTANDARD = LVCMOS25;
73Net ETH_A_RGMII_RX_CTL_0_pin LOC=AL9  |  IOSTANDARD = LVCMOS25;
74Net ETH_A_RGMII_RXC_0_pin LOC=AC10  |  IOSTANDARD = LVCMOS25;
75Net ETH_A_MDC_0_pin LOC=AP9  |  IOSTANDARD = LVCMOS25;
76Net ETH_A_MDIO_0_pin LOC=AK8  |  IOSTANDARD = LVCMOS25;
77
78#ETH B
79Net ETH_B_RGMII_TXD_0_pin<0> LOC=M10  |  IOSTANDARD = LVCMOS25;
80Net ETH_B_RGMII_TXD_0_pin<1> LOC=B8  |  IOSTANDARD = LVCMOS25;
81Net ETH_B_RGMII_TXD_0_pin<2> LOC=AC9  |  IOSTANDARD = LVCMOS25;
82Net ETH_B_RGMII_TXD_0_pin<3> LOC=E9  |  IOSTANDARD = LVCMOS25;
83Net ETH_B_RGMII_TX_CTL_0_pin LOC=D10  |  IOSTANDARD = LVCMOS25;
84Net ETH_B_RGMII_TXC_0_pin LOC=AB10  |  IOSTANDARD = LVCMOS25;
85Net ETH_B_RGMII_RXD_0_pin<0> LOC=A9  |  IOSTANDARD = LVCMOS25;
86Net ETH_B_RGMII_RXD_0_pin<1> LOC=D9  |  IOSTANDARD = LVCMOS25;
87Net ETH_B_RGMII_RXD_0_pin<2> LOC=C9  |  IOSTANDARD = LVCMOS25;
88Net ETH_B_RGMII_RXD_0_pin<3> LOC=F10  |  IOSTANDARD = LVCMOS25;
89Net ETH_B_RGMII_RX_CTL_0_pin LOC=A8  |  IOSTANDARD = LVCMOS25;
90Net ETH_B_RGMII_RXC_0_pin LOC=L10  |  IOSTANDARD = LVCMOS25;
91Net ETH_B_MDC_0_pin LOC=AN9  |  IOSTANDARD = LVCMOS25;
92Net ETH_B_MDIO_0_pin LOC=AL8  |  IOSTANDARD = LVCMOS25;
93
94#DDR3 SO-DIMM
95Net DDR3_2GB_SODIMM_Clk_pin LOC=AC15  |  IOSTANDARD = DIFF_SSTL15;
96Net DDR3_2GB_SODIMM_Clk_n_pin LOC=AD15  |  IOSTANDARD = DIFF_SSTL15;
97Net DDR3_2GB_SODIMM_CE_pin LOC=AF18  |  IOSTANDARD = SSTL15;
98Net DDR3_2GB_SODIMM_CS_n_pin LOC=AL16  |  IOSTANDARD = SSTL15;
99Net DDR3_2GB_SODIMM_ODT_pin LOC=AP15  |  IOSTANDARD = SSTL15;
100Net DDR3_2GB_SODIMM_RAS_n_pin LOC=AM16  |  IOSTANDARD = SSTL15;
101Net DDR3_2GB_SODIMM_CAS_n_pin LOC=AJ17  |  IOSTANDARD = SSTL15;
102Net DDR3_2GB_SODIMM_WE_n_pin LOC=AF15  |  IOSTANDARD = SSTL15;
103Net DDR3_2GB_SODIMM_BankAddr_pin<0> LOC=AG15  |  IOSTANDARD = SSTL15;
104Net DDR3_2GB_SODIMM_BankAddr_pin<1> LOC=AP16  |  IOSTANDARD = SSTL15;
105Net DDR3_2GB_SODIMM_BankAddr_pin<2> LOC=AD17  |  IOSTANDARD = SSTL15;
106Net DDR3_2GB_SODIMM_Addr_pin<0> LOC=AM17  |  IOSTANDARD = SSTL15;
107Net DDR3_2GB_SODIMM_Addr_pin<1> LOC=AF16  |  IOSTANDARD = SSTL15;
108Net DDR3_2GB_SODIMM_Addr_pin<2> LOC=AN17  |  IOSTANDARD = SSTL15;
109Net DDR3_2GB_SODIMM_Addr_pin<3> LOC=AG17  |  IOSTANDARD = SSTL15;
110Net DDR3_2GB_SODIMM_Addr_pin<4> LOC=AK16  |  IOSTANDARD = SSTL15;
111Net DDR3_2GB_SODIMM_Addr_pin<5> LOC=AG16  |  IOSTANDARD = SSTL15;
112Net DDR3_2GB_SODIMM_Addr_pin<6> LOC=AK17  |  IOSTANDARD = SSTL15;
113Net DDR3_2GB_SODIMM_Addr_pin<7> LOC=AG18  |  IOSTANDARD = SSTL15;
114Net DDR3_2GB_SODIMM_Addr_pin<8> LOC=AE16  |  IOSTANDARD = SSTL15;
115Net DDR3_2GB_SODIMM_Addr_pin<9> LOC=AD16  |  IOSTANDARD = SSTL15;
116Net DDR3_2GB_SODIMM_Addr_pin<10> LOC=AH15  |  IOSTANDARD = SSTL15;
117Net DDR3_2GB_SODIMM_Addr_pin<11> LOC=AH18  |  IOSTANDARD = SSTL15;
118Net DDR3_2GB_SODIMM_Addr_pin<12> LOC=AE17  |  IOSTANDARD = SSTL15;
119Net DDR3_2GB_SODIMM_Addr_pin<13> LOC=AJ16  |  IOSTANDARD = SSTL15;
120Net DDR3_2GB_SODIMM_Addr_pin<14> LOC=AK18  |  IOSTANDARD = SSTL15;
121Net DDR3_2GB_SODIMM_DQ_pin<0> LOC=AK29  |  IOSTANDARD = SSTL15_T_DCI;
122Net DDR3_2GB_SODIMM_DQ_pin<1> LOC=AN30  |  IOSTANDARD = SSTL15_T_DCI;
123Net DDR3_2GB_SODIMM_DQ_pin<2> LOC=AL29  |  IOSTANDARD = SSTL15_T_DCI;
124Net DDR3_2GB_SODIMM_DQ_pin<3> LOC=AN29  |  IOSTANDARD = SSTL15_T_DCI;
125Net DDR3_2GB_SODIMM_DQ_pin<4> LOC=AP31  |  IOSTANDARD = SSTL15_T_DCI;
126Net DDR3_2GB_SODIMM_DQ_pin<5> LOC=AP30  |  IOSTANDARD = SSTL15_T_DCI;
127Net DDR3_2GB_SODIMM_DQ_pin<6> LOC=AH28  |  IOSTANDARD = SSTL15_T_DCI;
128Net DDR3_2GB_SODIMM_DQ_pin<7> LOC=AH27  |  IOSTANDARD = SSTL15_T_DCI;
129Net DDR3_2GB_SODIMM_DQ_pin<8> LOC=AK28  |  IOSTANDARD = SSTL15_T_DCI;
130Net DDR3_2GB_SODIMM_DQ_pin<9> LOC=AL28  |  IOSTANDARD = SSTL15_T_DCI;
131Net DDR3_2GB_SODIMM_DQ_pin<10> LOC=AJ27  |  IOSTANDARD = SSTL15_T_DCI;
132Net DDR3_2GB_SODIMM_DQ_pin<11> LOC=AH25  |  IOSTANDARD = SSTL15_T_DCI;
133Net DDR3_2GB_SODIMM_DQ_pin<12> LOC=AP29  |  IOSTANDARD = SSTL15_T_DCI;
134Net DDR3_2GB_SODIMM_DQ_pin<13> LOC=AM27  |  IOSTANDARD = SSTL15_T_DCI;
135Net DDR3_2GB_SODIMM_DQ_pin<14> LOC=AJ25  |  IOSTANDARD = SSTL15_T_DCI;
136Net DDR3_2GB_SODIMM_DQ_pin<15> LOC=AH24  |  IOSTANDARD = SSTL15_T_DCI;
137Net DDR3_2GB_SODIMM_DQ_pin<16> LOC=AJ24  |  IOSTANDARD = SSTL15_T_DCI;
138Net DDR3_2GB_SODIMM_DQ_pin<17> LOC=AK24  |  IOSTANDARD = SSTL15_T_DCI;
139Net DDR3_2GB_SODIMM_DQ_pin<18> LOC=AL24  |  IOSTANDARD = SSTL15_T_DCI;
140Net DDR3_2GB_SODIMM_DQ_pin<19> LOC=AK23  |  IOSTANDARD = SSTL15_T_DCI;
141Net DDR3_2GB_SODIMM_DQ_pin<20> LOC=AP27  |  IOSTANDARD = SSTL15_T_DCI;
142Net DDR3_2GB_SODIMM_DQ_pin<21> LOC=AM26  |  IOSTANDARD = SSTL15_T_DCI;
143Net DDR3_2GB_SODIMM_DQ_pin<22> LOC=AN25  |  IOSTANDARD = SSTL15_T_DCI;
144Net DDR3_2GB_SODIMM_DQ_pin<23> LOC=AN24  |  IOSTANDARD = SSTL15_T_DCI;
145Net DDR3_2GB_SODIMM_DQ_pin<24> LOC=AD21  |  IOSTANDARD = SSTL15_T_DCI;
146Net DDR3_2GB_SODIMM_DQ_pin<25> LOC=AE21  |  IOSTANDARD = SSTL15_T_DCI;
147Net DDR3_2GB_SODIMM_DQ_pin<26> LOC=AK22  |  IOSTANDARD = SSTL15_T_DCI;
148Net DDR3_2GB_SODIMM_DQ_pin<27> LOC=AL18  |  IOSTANDARD = SSTL15_T_DCI;
149Net DDR3_2GB_SODIMM_DQ_pin<28> LOC=AN19  |  IOSTANDARD = SSTL15_T_DCI;
150Net DDR3_2GB_SODIMM_DQ_pin<29> LOC=AP19  |  IOSTANDARD = SSTL15_T_DCI;
151Net DDR3_2GB_SODIMM_DQ_pin<30> LOC=AM18  |  IOSTANDARD = SSTL15_T_DCI;
152Net DDR3_2GB_SODIMM_DQ_pin<31> LOC=AN18  |  IOSTANDARD = SSTL15_T_DCI;
153Net DDR3_2GB_SODIMM_DM_pin<0> LOC=AM30  |  IOSTANDARD = SSTL15;
154Net DDR3_2GB_SODIMM_DM_pin<1> LOC=AL26  |  IOSTANDARD = SSTL15;
155Net DDR3_2GB_SODIMM_DM_pin<2> LOC=AP26  |  IOSTANDARD = SSTL15;
156Net DDR3_2GB_SODIMM_DM_pin<3> LOC=AJ22  |  IOSTANDARD = SSTL15;
157Net DDR3_2GB_SODIMM_Reset_n_pin LOC=AP17  |  IOSTANDARD = SSTL15;
158Net DDR3_2GB_SODIMM_DQS_pin<0> LOC=AG25  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
159Net DDR3_2GB_SODIMM_DQS_pin<1> LOC=AN28  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
160Net DDR3_2GB_SODIMM_DQS_pin<2> LOC=AM25  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
161Net DDR3_2GB_SODIMM_DQS_pin<3> LOC=AG22  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
162Net DDR3_2GB_SODIMM_DQS_n_pin<0> LOC=AG26  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
163Net DDR3_2GB_SODIMM_DQS_n_pin<1> LOC=AM28  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
164Net DDR3_2GB_SODIMM_DQS_n_pin<2> LOC=AL25  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
165Net DDR3_2GB_SODIMM_DQS_n_pin<3> LOC=AH22  |  IOSTANDARD = DIFF_SSTL15_T_DCI;
166
167#System clock (80MHz, from sampling clock buffer)
168NET samp_clk_n_pin LOC = V23 | IOSTANDARD = LVDS_25 | DIFF_TERM = TRUE;
169NET samp_clk_p_pin LOC = U23 | IOSTANDARD = LVDS_25 | DIFF_TERM = TRUE;
170Net samp_clk_p_pin TNM_NET = samp_clk_pin;
171TIMESPEC TS_samp_clk_pin = PERIOD samp_clk_pin 80000 kHz;
172
173#System clock (200MHz, from LVDS oscillator)
174Net osc200_p_pin LOC = A10  |  IOSTANDARD=LVDS_25  |  DIFF_TERM = TRUE;
175Net osc200_n_pin LOC = B10  |  IOSTANDARD=LVDS_25  |  DIFF_TERM = TRUE;
176Net osc200_p_pin TNM_NET = osc200_p_pin;
177TIMESPEC TS_osc200_p_pin = PERIOD osc200_p_pin 200000 kHz;
178
179#Processor reset (RESET button on board)
180Net rst_1_sys_rst_pin LOC = AH13  |  IOSTANDARD=LVCMOS15  |  TIG;
181Net rst_1_sys_rst_pin TIG;
182
183INST clock_generator_MPMC_Clocks/*/MMCM0_INST*/MMCM_ADV_inst LOC = MMCM_ADV_X0Y2;
184
185#######################################
186#MAX2829 transceivers and RF front end
187NET RFA_SPI_SCLK_pin LOC=T34 | IOSTANDARD=LVCMOS25;
188NET RFA_SPI_MOSI_pin LOC=T33 | IOSTANDARD=LVCMOS25;
189NET RFA_SPI_CSn_pin LOC=U32 | IOSTANDARD=LVCMOS25;
190NET RFA_SHDN_pin LOC=U27 | IOSTANDARD=LVCMOS25;
191NET RFA_TxEn_pin LOC=T31 | IOSTANDARD=LVCMOS25;
192NET RFA_RxEn_pin LOC=U33 | IOSTANDARD=LVCMOS25;
193NET RFA_RxHP_pin LOC=AG32 | IOSTANDARD=LVCMOS25;
194NET RFA_PAEn_24_pin LOC=U25 | IOSTANDARD=LVCMOS25;
195NET RFA_PAEn_5_pin LOC=U28 | IOSTANDARD=LVCMOS25;
196NET RFA_ANTSW_pin<0> LOC=U31 | IOSTANDARD=LVCMOS25;
197NET RFA_ANTSW_pin<1> LOC=U30 | IOSTANDARD=LVCMOS25;
198NET RFA_LD_pin LOC=U26 | IOSTANDARD=LVCMOS25;
199NET RFA_B_pin<0> LOC=AG33 | IOSTANDARD=LVCMOS25;
200NET RFA_B_pin<1> LOC=AF31 | IOSTANDARD=LVCMOS25;
201NET RFA_B_pin<2> LOC=AF33 | IOSTANDARD=LVCMOS25;
202NET RFA_B_pin<3> LOC=AG31 | IOSTANDARD=LVCMOS25;
203NET RFA_B_pin<4> LOC=AF34 | IOSTANDARD=LVCMOS25;
204NET RFA_B_pin<5> LOC=AE33 | IOSTANDARD=LVCMOS25;
205NET RFA_B_pin<6> LOC=AE34 | IOSTANDARD=LVCMOS25;
206
207NET RFB_SPI_SCLK_pin LOC=H34 | IOSTANDARD=LVCMOS25;
208NET RFB_SPI_MOSI_pin LOC=H33 | IOSTANDARD=LVCMOS25;
209NET RFB_SPI_CSn_pin LOC=J32 | IOSTANDARD=LVCMOS25;
210NET RFB_SHDN_pin LOC=J34 | IOSTANDARD=LVCMOS25;
211NET RFB_TxEn_pin LOC=H32 | IOSTANDARD=LVCMOS25;
212NET RFB_RxEn_pin LOC=J31 | IOSTANDARD=LVCMOS25;
213NET RFB_RxHP_pin LOC=R28 | IOSTANDARD=LVCMOS25;
214NET RFB_PAEn_24_pin LOC=T25 | IOSTANDARD=LVCMOS25;
215NET RFB_PAEn_5_pin LOC=T28 | IOSTANDARD=LVCMOS25;
216NET RFB_ANTSW_pin<0> LOC=T30 | IOSTANDARD=LVCMOS25;
217NET RFB_ANTSW_pin<1> LOC=T29 | IOSTANDARD=LVCMOS25;
218NET RFB_LD_pin LOC=K33 | IOSTANDARD=LVCMOS25;
219NET RFB_B_pin<0> LOC=P27 | IOSTANDARD=LVCMOS25;
220NET RFB_B_pin<1> LOC=R27 | IOSTANDARD=LVCMOS25;
221NET RFB_B_pin<2> LOC=R29 | IOSTANDARD=LVCMOS25;
222NET RFB_B_pin<3> LOC=R26 | IOSTANDARD=LVCMOS25;
223NET RFB_B_pin<4> LOC=R32 | IOSTANDARD=LVCMOS25;
224NET RFB_B_pin<5> LOC=T26 | IOSTANDARD=LVCMOS25;
225NET RFB_B_pin<6> LOC=R31 | IOSTANDARD=LVCMOS25;
226
227NET RFA_AD_spi_sclk_pin LOC = AB33 | IOSTANDARD = LVCMOS25;#
228NET RFA_AD_spi_sdio LOC = AC30 | IOSTANDARD = LVCMOS25;#
229NET RFA_AD_spi_cs_n_pin LOC = AB31 | IOSTANDARD = LVCMOS25;#
230NET RFA_AD_reset_n_pin LOC = AA34 | IOSTANDARD = LVCMOS25;#
231
232NET RFB_AD_spi_sclk_pin LOC = P32 | IOSTANDARD = LVCMOS25;#
233NET RFB_AD_spi_sdio LOC = P34 | IOSTANDARD = LVCMOS25;#
234NET RFB_AD_spi_cs_n_pin LOC = N32 | IOSTANDARD = LVCMOS25;#
235NET RFB_AD_reset_n_pin LOC = N34 | IOSTANDARD = LVCMOS25;#
236
237NET clk_rfref_spi_sclk_pin LOC = V25 | IOSTANDARD = LVCMOS25;#
238NET clk_rfref_spi_mosi_pin LOC = W25 | IOSTANDARD = LVCMOS25;#
239NET clk_rfref_spi_cs_n_pin LOC = W27 | IOSTANDARD = LVCMOS25;#
240NET clk_rfref_spi_miso_pin LOC = Y27 | IOSTANDARD = LVCMOS25;#
241NET clk_rfref_func_pin LOC = L26 | IOSTANDARD = LVCMOS25;
242
243NET clk_samp_spi_sclk_pin LOC = W32 | IOSTANDARD = LVCMOS25;#
244NET clk_samp_spi_mosi_pin LOC = Y29 | IOSTANDARD = LVCMOS25;#
245NET clk_samp_spi_cs_n_pin LOC = W31 | IOSTANDARD = LVCMOS25;#
246NET clk_samp_spi_miso_pin LOC = Y28 | IOSTANDARD = LVCMOS25;#
247NET clk_samp_func_pin LOC = R33 | IOSTANDARD = LVCMOS25;#
248
249#TRXCLK pins driven by AD9963's; assuming 80MHz worst case
250Net RFA_AD_TRXCLK TNM_NET = RFA_AD_TRXCLK;
251TIMESPEC TS_RFA_AD_TRXCLK = PERIOD RFA_AD_TRXCLK 80 MHz;
252
253Net RFB_AD_TRXCLK TNM_NET = RFB_AD_TRXCLK;
254TIMESPEC TS_RFB_AD_TRXCLK = PERIOD RFB_AD_TRXCLK 80 MHz;
255
256#RFA AD9963
257NET RFA_AD_TRXD<0> LOC = AC25 | IOSTANDARD = LVCMOS25;
258NET RFA_AD_TRXD<1> LOC = AB25 | IOSTANDARD = LVCMOS25;
259NET RFA_AD_TRXD<2> LOC = AB32 | IOSTANDARD = LVCMOS25;
260NET RFA_AD_TRXD<3> LOC = AC29 | IOSTANDARD = LVCMOS25;
261NET RFA_AD_TRXD<4> LOC = AD29 | IOSTANDARD = LVCMOS25;
262NET RFA_AD_TRXD<5> LOC = AC33 | IOSTANDARD = LVCMOS25;
263NET RFA_AD_TRXD<6> LOC = AD34 | IOSTANDARD = LVCMOS25;
264NET RFA_AD_TRXD<7> LOC = AC32 | IOSTANDARD = LVCMOS25;
265NET RFA_AD_TRXD<8> LOC = AD31 | IOSTANDARD = LVCMOS25;
266NET RFA_AD_TRXD<9> LOC = AD32 | IOSTANDARD = LVCMOS25;
267NET RFA_AD_TRXD<10> LOC = AE31 | IOSTANDARD = LVCMOS25;
268NET RFA_AD_TRXD<11> LOC = AE32 | IOSTANDARD = LVCMOS25;
269
270NET RFA_AD_TRXCLK LOC = AD30 | IOSTANDARD = LVCMOS25;
271NET RFA_AD_TRXIQ LOC = AC34 | IOSTANDARD = LVCMOS25;
272
273NET RFA_AD_TXCLK LOC = AA31 | IOSTANDARD = LVCMOS25;
274NET RFA_AD_TXIQ LOC = AA33 | IOSTANDARD = LVCMOS25;
275
276NET RFA_AD_TXD<0> LOC = AA25 | IOSTANDARD = LVCMOS25;
277NET RFA_AD_TXD<1> LOC = AB26 | IOSTANDARD = LVCMOS25;
278NET RFA_AD_TXD<2> LOC = Y26 | IOSTANDARD = LVCMOS25;
279NET RFA_AD_TXD<3> LOC = AA26 | IOSTANDARD = LVCMOS25;
280NET RFA_AD_TXD<4> LOC = AA28 | IOSTANDARD = LVCMOS25;
281NET RFA_AD_TXD<5> LOC = AA29 | IOSTANDARD = LVCMOS25;
282NET RFA_AD_TXD<6> LOC = AA30 | IOSTANDARD = LVCMOS25;
283NET RFA_AD_TXD<7> LOC = AB30 | IOSTANDARD = LVCMOS25;
284NET RFA_AD_TXD<8> LOC = AB28 | IOSTANDARD = LVCMOS25;
285NET RFA_AD_TXD<9> LOC = AB27 | IOSTANDARD = LVCMOS25;
286NET RFA_AD_TXD<10> LOC = AC28 | IOSTANDARD = LVCMOS25;
287NET RFA_AD_TXD<11> LOC = AC27 | IOSTANDARD = LVCMOS25;
288
289#RFB
290NET RFB_AD_TRXD<0> LOC = N25 | IOSTANDARD = LVCMOS25;
291NET RFB_AD_TRXD<1> LOC = M25 | IOSTANDARD = LVCMOS25;
292NET RFB_AD_TRXD<2> LOC = N28 | IOSTANDARD = LVCMOS25;
293NET RFB_AD_TRXD<3> LOC = N27 | IOSTANDARD = LVCMOS25;
294NET RFB_AD_TRXD<4> LOC = P29 | IOSTANDARD = LVCMOS25;
295NET RFB_AD_TRXD<5> LOC = M30 | IOSTANDARD = LVCMOS25;
296NET RFB_AD_TRXD<6> LOC = N30 | IOSTANDARD = LVCMOS25;
297NET RFB_AD_TRXD<7> LOC = N29 | IOSTANDARD = LVCMOS25;
298NET RFB_AD_TRXD<8> LOC = P26 | IOSTANDARD = LVCMOS25;
299NET RFB_AD_TRXD<9> LOC = P31 | IOSTANDARD = LVCMOS25;
300NET RFB_AD_TRXD<10> LOC = P25 | IOSTANDARD = LVCMOS25;
301NET RFB_AD_TRXD<11> LOC = P30 | IOSTANDARD = LVCMOS25;
302
303NET RFB_AD_TRXCLK LOC = N33 | IOSTANDARD = LVCMOS25;
304NET RFB_AD_TRXIQ LOC = M33 | IOSTANDARD = LVCMOS25;
305
306NET RFB_AD_TXCLK LOC = L28 | IOSTANDARD = LVCMOS25;
307NET RFB_AD_TXIQ LOC = L29 | IOSTANDARD = LVCMOS25;
308
309NET RFB_AD_TXD<0> LOC = K32 | IOSTANDARD = LVCMOS25;
310NET RFB_AD_TXD<1> LOC = M26 | IOSTANDARD = LVCMOS25;
311NET RFB_AD_TXD<2> LOC = M32 | IOSTANDARD = LVCMOS25;
312NET RFB_AD_TXD<3> LOC = K34 | IOSTANDARD = LVCMOS25;
313NET RFB_AD_TXD<4> LOC = M31 | IOSTANDARD = LVCMOS25;
314NET RFB_AD_TXD<5> LOC = L30 | IOSTANDARD = LVCMOS25;
315NET RFB_AD_TXD<6> LOC = L33 | IOSTANDARD = LVCMOS25;
316NET RFB_AD_TXD<7> LOC = L31 | IOSTANDARD = LVCMOS25;
317NET RFB_AD_TXD<8> LOC = M28 | IOSTANDARD = LVCMOS25;
318NET RFB_AD_TXD<9> LOC = L34 | IOSTANDARD = LVCMOS25;
319NET RFB_AD_TXD<10> LOC = M27 | IOSTANDARD = LVCMOS25;
320NET RFB_AD_TXD<11> LOC = K31 | IOSTANDARD = LVCMOS25;
321
322NET RF_RSSI_CLK LOC = B32 | IOSTANDARD = LVCMOS25;
323NET RF_RSSI_PD LOC = B34 | IOSTANDARD = LVCMOS25;
324NET RFB_RSSI_D<0> LOC = A33 | IOSTANDARD = LVCMOS25;
325NET RFB_RSSI_D<1> LOC = B33 | IOSTANDARD = LVCMOS25;
326NET RFB_RSSI_D<2> LOC = C33 | IOSTANDARD = LVCMOS25;
327NET RFB_RSSI_D<3> LOC = C34 | IOSTANDARD = LVCMOS25;
328NET RFB_RSSI_D<4> LOC = C32 | IOSTANDARD = LVCMOS25;
329NET RFB_RSSI_D<5> LOC = D31 | IOSTANDARD = LVCMOS25;
330NET RFB_RSSI_D<6> LOC = G30 | IOSTANDARD = LVCMOS25;
331NET RFB_RSSI_D<7> LOC = E31 | IOSTANDARD = LVCMOS25;
332NET RFB_RSSI_D<8> LOC = D32 | IOSTANDARD = LVCMOS25;
333NET RFB_RSSI_D<9> LOC = D34 | IOSTANDARD = LVCMOS25;
334NET RFA_RSSI_D<0> LOC = E32 | IOSTANDARD = LVCMOS25;
335NET RFA_RSSI_D<1> LOC = E33 | IOSTANDARD = LVCMOS25;
336NET RFA_RSSI_D<2> LOC = E34 | IOSTANDARD = LVCMOS25;
337NET RFA_RSSI_D<3> LOC = F30 | IOSTANDARD = LVCMOS25;
338NET RFA_RSSI_D<4> LOC = F31 | IOSTANDARD = LVCMOS25;
339NET RFA_RSSI_D<5> LOC = F34 | IOSTANDARD = LVCMOS25;
340NET RFA_RSSI_D<6> LOC = F33 | IOSTANDARD = LVCMOS25;
341NET RFA_RSSI_D<7> LOC = G31 | IOSTANDARD = LVCMOS25;
342NET RFA_RSSI_D<8> LOC = G33 | IOSTANDARD = LVCMOS25;
343NET RFA_RSSI_D<9> LOC = G32 | IOSTANDARD = LVCMOS25;
344
345
346###### ETH_A
347###### Hard_Ethernet_MAC
348# This is a RGMII system
349# GTX_CLK_0 = 125MHz
350# LlinkTemac0_CLK = plb_v46 clk = host clock = 100MHz from clock generator
351# Rx/Tx Client clocks are Rx/Tx PHY clocks so CORE Gen PHY clock constraints propagate to Rx/Tx client clock periods
352# Time domain crossing constraints (DATAPATHONLY) are set for maximum bus frequency
353# allowed by IP which is the maximum option in BSB. For lower bus frequency choice in BSB,
354# the constraints are over constrained. Relaxing them for your system may reduce build time.
355
356NET "*ETH_A*/hrst*" TIG;
357
358# Locate the Tri-Mode Ethernet MAC instance
359INST "*ETH_A*v6_emac" LOC = "TEMAC_X0Y0";
360
361###############################################################################
362# CLOCK CONSTRAINTS
363# The following constraints are required. If you choose to not use the example
364# design level of wrapper hierarchy, the net names should be translated to
365# match your design.
366###############################################################################
367
368# Ethernet GTX_CLK high quality 125 MHz reference clock
369NET "*/GTX_CLK_0" TNM_NET = "ref_gtx_clk";                                                 #name of signal connected to TEMAC GTX_CLK_0 input
370TIMEGRP "v6_emac_v1_3_clk_ref_gtx" = "ref_gtx_clk";
371TIMESPEC "TS_v6_emac_v1_3_clk_ref_gtx" = PERIOD "v6_emac_v1_3_clk_ref_gtx" 8 ns HIGH 50 %; #constant value based on constant 125 MHZ GTX clock
372
373# Ethernet RGMII PHY-side transmit clock
374# Changed NET Name - Input to bufg_tx_0
375#     ___________                                         
376#    |           |                 |\                     
377#    | Hard Core |--- tx_clk_0_o --| >---- Tx_Cl_Clk -----
378#    |___________|                 |/                     
379#                                 BUFG
380#
381NET "*ETH_A*/tx_cl_clk" TNM_NET = "A_phy_clk_tx";
382TIMEGRP "A_v6_emac_v1_3_clk_phy_tx" = "A_phy_clk_tx";
383TIMESPEC "TS_A_v6_emac_v1_3_clk_phy_tx" = PERIOD "A_v6_emac_v1_3_clk_phy_tx" 8 ns HIGH 50 %;
384
385# Ethernet RGMII PHY-side receive clock
386# Changed NET Name
387#  RGMII_RXC_0 is the name of the clock net at the TEMAC Port
388#     It is the input to the IODELAY
389#        RxClientClk_0 is the name of the BUFG output clock net
390#
391#                     _________      BUFR
392#                    |         |      |\
393#  ---RGMII_RXC_0----| IODELAY |------| >----RxClientClk_0------------
394#                    |_________|      |/
395#
396NET "ETH_A_RGMII_RXC_0_pin" TNM_NET = "A_phy_clk_rx";
397TIMEGRP "A_v6_emac_v1_3_clk_phy_rx" = "A_phy_clk_rx";
398TIMESPEC "TS_A_v6_emac_v1_3_clk_phy_rx" = PERIOD "A_v6_emac_v1_3_clk_phy_rx" 7.5 ns HIGH 50 %;
399
400# IDELAYCTRL 200 MHz reference clock
401NET "clk_200*MHz*" TNM_NET  = "clk_ref_clk";                                              #name of signal connected to TEMAC REFCLK input   
402TIMEGRP "ref_clk" = "clk_ref_clk";                                                                                                           
403TIMESPEC "TS_ref_clk" = PERIOD "ref_clk" 5 ns HIGH 50 %;                                  #constant value based on constant 200 MHZ ref clock
404
405# Constrain the DCR interface clock to an example frequency of 100 MHz
406# Changed NET Name
407# NET "DCREMACCLK" TNM_NET = "host_clock";
408#NET "*ETH_A*/SPLB_CLK" TNM_NET = "host_clock";
409#TIMEGRP "A_clk_host" = "A_host_clock";
410#TIMESPEC "TS_A_clk_host" = PERIOD "A_clk_host" 10 ns HIGH 50 %;
411
412###############################################################################
413# PHYSICAL INTERFACE CONSTRAINTS
414# The following constraints are necessary for proper operation, and are tuned
415# for this example design. They should be modified to suit your design.
416###############################################################################
417
418# RGMII physical interface constraints
419# -----------------------------------------------------------------------------
420
421# Set the IDELAY and ODELAY values, tuned for this example design.
422# These values should be modified to suit your design.
423# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_ctl_delay" IDELAY_VALUE = 13;
424# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d0_delay"  IDELAY_VALUE = 13;
425# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d1_delay"  IDELAY_VALUE = 13;
426# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d2_delay"  IDELAY_VALUE = 13;
427# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d3_delay"  IDELAY_VALUE = 13;
428
429INST "*ETH_A*rgmii?rgmii_rx_ctl_delay" IDELAY_VALUE = 13;
430INST "*ETH_A*rgmii?rgmii_rx_d0_delay"  IDELAY_VALUE = 13;
431INST "*ETH_A*rgmii?rgmii_rx_d1_delay"  IDELAY_VALUE = 13;
432INST "*ETH_A*rgmii?rgmii_rx_d2_delay"  IDELAY_VALUE = 13;
433INST "*ETH_A*rgmii?rgmii_rx_d3_delay"  IDELAY_VALUE = 13;
434
435INST "*ETH_A*rgmii_rxc0_delay"          IDELAY_VALUE = 0;
436INST "*ETH_A*rgmii_rxc0_delay"          SIGNAL_PATTERN = CLOCK;
437 
438INST "*ETH_A*rgmii?rgmii_tx_clk_delay" ODELAY_VALUE = 6;
439INST "*ETH_A*rgmii?rgmii_tx_clk_delay" SIGNAL_PATTERN = CLOCK;
440
441# Group all IODELAY-related blocks to use a single IDELAYCTRL
442
443# Change - added TNMs for trace length variations
444INST "ETH_A_RGMII_RXD_0_pin[0]" TNM = "A_rgmii_rx_d0";
445INST "ETH_A_RGMII_RXD_0_pin[1]" TNM = "A_rgmii_rx_d1";
446INST "ETH_A_RGMII_RXD_0_pin[2]" TNM = "A_rgmii_rx_d2";
447INST "ETH_A_RGMII_RXD_0_pin[3]" TNM = "A_rgmii_rx_d3";
448INST "ETH_A_RGMII_RX_CTL_0_pin" TNM = "A_rgmii_rx_ctrl";
449
450# Spec: 1.2ns setup time, 1.2ns hold time
451# The internal PHY delays were not used to derive the OFFSET constraints                                                                 
452# Changed NET Name
453#  This signal trace is longer than the clock trace, and arrives at the FPGA pin 64 ps after the clock
454#  Therefore the offset in constraint must have less setup time than nominal
455TIMEGRP "A_rgmii_rx_d0" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" RISING;
456TIMEGRP "A_rgmii_rx_d0" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" FALLING;
457
458#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 376 ps before the clock
459#  Therefore the offset in constraint must have more setup time than nominal
460TIMEGRP "A_rgmii_rx_d1" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" RISING;
461TIMEGRP "A_rgmii_rx_d1" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" FALLING;
462
463#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 372 ps before the clock
464#  Therefore the offset in constraint must have more setup time than nominal
465TIMEGRP "A_rgmii_rx_d2" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" RISING;
466TIMEGRP "A_rgmii_rx_d2" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" FALLING;
467
468#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 115 ps before the clock
469#  Therefore the offset in constraint must have more setup time than nominal
470TIMEGRP "A_rgmii_rx_d3" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" RISING;
471TIMEGRP "A_rgmii_rx_d3" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" FALLING;
472
473#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 292 ps before the clock
474#  Therefore the offset in constraint must have more setup time than nominal
475TIMEGRP "A_rgmii_rx_ctrl" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" RISING;
476TIMEGRP "A_rgmii_rx_ctrl" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC_0_pin" FALLING;
477
478
479NET "*ETH_A*/LlinkTemac0_CLK" TNM_NET = "A_LLCLK0"; #name of signal connected to TEMAC LlinkTemac0_CLK input
480NET "*ETH_A*/SPLB_Clk" TNM_NET = "A_PLBCLK"; #name of signal connected to TEMAC SPLB_Clk input
481NET "*ETH_A*/REFCLK" TNM_NET = "A_REFCLK"; #name of signal connected to TEMAC REFCLK input
482
483TIMESPEC "TS_A_LL_CLK0_2_RX_CLIENT_CLK0"  = FROM A_LLCLK0 TO A_phy_clk_rx 8000 ps DATAPATHONLY; #constant value based on Ethernet clock                 
484TIMESPEC "TS_A_LL_CLK0_2_TX_CLIENT_CLK0"  = FROM A_LLCLK0 TO A_phy_clk_tx 8000 ps DATAPATHONLY; #constant value based on Ethernet clock             
485TIMESPEC "TS_A_RX_CLIENT_CLK0_2_LL_CLK0"  = FROM A_phy_clk_rx TO A_LLCLK0 8000 ps DATAPATHONLY; #varies based on period of LocalLink clock           
486TIMESPEC "TS_A_TX_CLIENT_CLK0_2_LL_CLK0"  = FROM A_phy_clk_tx TO A_LLCLK0 8000 ps DATAPATHONLY; #varies based on period of LocalLink clock           
487
488TIMESPEC "TS_A_REF_CLK_2_PLB_CLIENT_CLK"  = FROM A_REFCLK TO A_PLBCLK 8000 ps DATAPATHONLY; #varies based on period of PLB clock                       
489TIMESPEC "TS_A_PLB_CLIENT_CLK_2_REF_CLK"  = FROM A_PLBCLK TO A_REFCLK 5000 ps DATAPATHONLY; #constant value based on constant 200 MHZ ref clock         
490
491TIMESPEC "TS_A_REF_CLK_2_TX_CLIENT_CLK0"  = FROM A_REFCLK TO A_phy_clk_tx 8000 ps DATAPATHONLY; #constant value based on Ethernet clock                       
492TIMESPEC "TS_A_TX_CLIENT_CLK0_2_REF_CLK"  = FROM A_phy_clk_tx TO A_REFCLK 5000 ps DATAPATHONLY; #constant value based on constant 200 MHZ ref clock           
493
494TIMESPEC "TS_A_REF_CLK_2_RX_CLIENT_CLK0"  = FROM A_REFCLK TO A_phy_clk_rx 8000 ps DATAPATHONLY; #constant value based on Ethernet clock               
495TIMESPEC "TS_A_RX_CLIENT_CLK0_2_REF_CLK"  = FROM A_phy_clk_rx TO A_REFCLK 5000 ps DATAPATHONLY; #constant value based on constant 200 MHZ ref clock   
496
497
498
499###### ETH_B
500###### Hard_Ethernet_MAC
501# This is a RGMII system
502# GTX_CLK_0 = 125MHz
503# LlinkTemac0_CLK = plb_v46 clk = host clock = 100MHz from clock generator
504# Rx/Tx Client clocks are Rx/Tx PHY clocks so CORE Gen PHY clock constraints propagate to Rx/Tx client clock periods
505# Time domain crossing constraints (DATAPATHONLY) are set for maximum bus frequency
506# allowed by IP which is the maximum option in BSB. For lower bus frequency choice in BSB,
507# the constraints are over constrained. Relaxing them for your system may reduce build time.
508
509NET "*ETH_B*/hrst*" TIG;
510
511# Locate the Tri-Mode Ethernet MAC instance
512INST "*ETH_B*v6_emac" LOC = "TEMAC_X0Y1";
513
514###############################################################################
515# CLOCK CONSTRAINTS
516# The following constraints are required. If you choose to not use the example
517# design level of wrapper hierarchy, the net names should be translated to
518# match your design.
519###############################################################################
520
521# Ethernet RGMII PHY-side transmit clock
522# Changed NET Name - Input to bufg_tx_0
523#     ___________                                         
524#    |           |                 |\                     
525#    | Hard Core |--- tx_clk_0_o --| >---- Tx_Cl_Clk -----
526#    |___________|                 |/                     
527#                                 BUFG
528#
529NET "*ETH_B*/tx_cl_clk" TNM_NET = "B_phy_clk_tx";
530TIMEGRP "B_v6_emac_v1_3_clk_phy_tx" = "B_phy_clk_tx";
531TIMESPEC "TS_B_v6_emac_v1_3_clk_phy_tx" = PERIOD "B_v6_emac_v1_3_clk_phy_tx" 8 ns HIGH 50 %;
532
533# Ethernet RGMII PHY-side receive clock
534# Changed NET Name
535#  RGMII_RXC_0 is the name of the clock net at the TEMAC Port
536#     It is the input to the IODELAY
537#        RxClientClk_0 is the name of the BUFG output clock net
538#
539#                     _________      BUFR
540#                    |         |      |\
541#  ---RGMII_RXC_0----| IODELAY |------| >----RxClientClk_0------------
542#                    |_________|      |/
543#
544NET "ETH_B_RGMII_RXC_0_pin" TNM_NET = "B_phy_clk_rx";
545TIMEGRP "B_v6_emac_v1_3_clk_phy_rx" = "B_phy_clk_rx";
546TIMESPEC "TS_B_v6_emac_v1_3_clk_phy_rx" = PERIOD "B_v6_emac_v1_3_clk_phy_rx" 7.5 ns HIGH 50 %;
547
548# Constrain the DCR interface clock to an example frequency of 100 MHz
549# Changed NET Name
550# NET "DCREMACCLK" TNM_NET = "host_clock";
551NET "*ETH_B*/SPLB_CLK" TNM_NET = "host_clock";
552TIMEGRP "B_clk_host" = "B_host_clock";
553TIMESPEC "TS_B_clk_host" = PERIOD "B_clk_host" 10 ns HIGH 50 %;
554
555###############################################################################
556# PHYSICAL INTERFACE CONSTRAINTS
557# The following constraints are necessary for proper operation, and are tuned
558# for this example design. They should be modified to suit your design.
559###############################################################################
560
561# RGMII physical interface constraints
562# -----------------------------------------------------------------------------
563
564# Set the IDELAY and ODELAY values, tuned for this example design.
565# These values should be modified to suit your design.
566# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_ctl_delay" IDELAY_VALUE = 13;
567# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d0_delay"  IDELAY_VALUE = 13;
568# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d1_delay"  IDELAY_VALUE = 13;
569# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d2_delay"  IDELAY_VALUE = 13;
570# original assuming equal trace lengths  INST "*rgmii?rgmii_rx_d3_delay"  IDELAY_VALUE = 13;
571
572INST "*ETH_B*rgmii?rgmii_rx_ctl_delay" IDELAY_VALUE = 13;
573INST "*ETH_B*rgmii?rgmii_rx_d0_delay"  IDELAY_VALUE = 13;
574INST "*ETH_B*rgmii?rgmii_rx_d1_delay"  IDELAY_VALUE = 13;
575INST "*ETH_B*rgmii?rgmii_rx_d2_delay"  IDELAY_VALUE = 13;
576INST "*ETH_B*rgmii?rgmii_rx_d3_delay"  IDELAY_VALUE = 13;
577
578INST "*ETH_B*rgmii_rxc0_delay"          IDELAY_VALUE = 0;
579INST "*ETH_B*rgmii_rxc0_delay"          SIGNAL_PATTERN = CLOCK;
580 
581INST "*ETH_B*rgmii?rgmii_tx_clk_delay" ODELAY_VALUE = 6;
582INST "*ETH_B*rgmii?rgmii_tx_clk_delay" SIGNAL_PATTERN = CLOCK;
583
584# Group all IODELAY-related blocks to use a single IDELAYCTRL
585
586# Change - added TNMs for trace length variations
587INST "ETH_B_RGMII_RXD_0_pin[0]" TNM = "B_rgmii_rx_d0";
588INST "ETH_B_RGMII_RXD_0_pin[1]" TNM = "B_rgmii_rx_d1";
589INST "ETH_B_RGMII_RXD_0_pin[2]" TNM = "B_rgmii_rx_d2";
590INST "ETH_B_RGMII_RXD_0_pin[3]" TNM = "B_rgmii_rx_d3";
591INST "ETH_B_RGMII_RX_CTL_0_pin" TNM = "B_rgmii_rx_ctrl";
592
593# Spec: 1.2ns setup time, 1.2ns hold time
594# The internal PHY delays were not used to derive the OFFSET constraints                                                                 
595# Changed NET Name
596#  This signal trace is longer than the clock trace, and arrives at the FPGA pin 64 ps after the clock
597#  Therefore the offset in constraint must have less setup time than nominal
598TIMEGRP "B_rgmii_rx_d0" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" RISING;
599TIMEGRP "B_rgmii_rx_d0" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" FALLING;
600
601#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 376 ps before the clock
602#  Therefore the offset in constraint must have more setup time than nominal
603TIMEGRP "B_rgmii_rx_d1" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" RISING;
604TIMEGRP "B_rgmii_rx_d1" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" FALLING;
605
606#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 372 ps before the clock
607#  Therefore the offset in constraint must have more setup time than nominal
608TIMEGRP "B_rgmii_rx_d2" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" RISING;
609TIMEGRP "B_rgmii_rx_d2" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" FALLING;
610
611#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 115 ps before the clock
612#  Therefore the offset in constraint must have more setup time than nominal
613TIMEGRP "B_rgmii_rx_d3" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" RISING;
614TIMEGRP "B_rgmii_rx_d3" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" FALLING;
615
616#  This signal trace is shorter than the clock trace, and arrives at the FPGA pin 292 ps before the clock
617#  Therefore the offset in constraint must have more setup time than nominal
618TIMEGRP "B_rgmii_rx_ctrl" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" RISING;
619TIMEGRP "B_rgmii_rx_ctrl" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC_0_pin" FALLING;
620
621
622NET "*ETH_B*/LlinkTemac0_CLK" TNM_NET = "B_LLCLK0"; #name of signal connected to TEMAC LlinkTemac0_CLK input
623NET "*ETH_B*/SPLB_Clk" TNM_NET = "B_PLBCLK"; #name of signal connected to TEMAC SPLB_Clk input
624
625TIMESPEC "TS_B_LL_CLK0_2_RX_CLIENT_CLK0"  = FROM B_LLCLK0 TO B_phy_clk_rx 8000 ps DATAPATHONLY; #constant value based on Ethernet clock                 
626TIMESPEC "TS_B_LL_CLK0_2_TX_CLIENT_CLK0"  = FROM B_LLCLK0 TO B_phy_clk_tx 8000 ps DATAPATHONLY; #constant value based on Ethernet clock             
627TIMESPEC "TS_B_RX_CLIENT_CLK0_2_LL_CLK0"  = FROM B_phy_clk_rx TO B_LLCLK0 8000 ps DATAPATHONLY; #varies based on period of LocalLink clock           
628TIMESPEC "TS_B_TX_CLIENT_CLK0_2_LL_CLK0"  = FROM B_phy_clk_tx TO B_LLCLK0 8000 ps DATAPATHONLY; #varies based on period of LocalLink clock       
629
630###### DDR3_2GB_SODIMM
631#2012-Apr-2:
632# -Started with old UCF snippet from early FPGA pinout testing
633# -Updated LOC constraints to match MIG 13.4 design which met timing for 2GB SO-DIMM (-1 @ 400MHz, -2 @ 533MHz)
634
635###### DDR3_SDRAM
636
637# Constrain BUFR clocks used to synchronize data from IOB to fabric logic
638# Note that ISE cannot infer this from other PERIOD constraints because
639# of the use of OSERDES blocks in the BUFR clock generation path
640NET "*/mpmc_core_0/gen_v6_ddr3_phy.mpmc_phy_if_0/clk_rsync[?]" TNM_NET = TNM_clk_rsync;
641TIMESPEC "TS_clk_rsync" = PERIOD "TNM_clk_rsync" 5000 ps;       # This is over-constraint for 200MHz, user can relax it to match mpmc_clk0
642 
643# Paths between DQ/DQS ISERDES.Q outputs and CLB flops clocked by falling
644# edge of BUFR will by design only be used if DYNCLKDIVSEL is asserted for
645# that particular flop. Mark this path as being a full-cycle, rather than
646# a half cycle path for timing purposes. NOTE: This constraint forces full-
647# cycle timing to be applied globally for all rising->falling edge paths
648# in all resynchronizaton clock domains. If the user had modified the logic
649# in the resync clock domain such that other rising->falling edge paths
650# exist, then constraint below should be modified to utilize pattern
651# matching to specific affect only the DQ/DQS ISERDES.Q outputs
652TIMEGRP "TG_clk_rsync_rise" = RISING  "TNM_clk_rsync";
653TIMEGRP "TG_clk_rsync_fall" = FALLING "TNM_clk_rsync";
654TIMESPEC "TS_clk_rsync_rise_to_fall" =    FROM "TG_clk_rsync_rise" TO "TG_clk_rsync_fall" 5000 ps;    # This is over-constraint for 200MHz, user can relax it to match mpmc_clk0
655 
656# Signal to select between controller and physical layer signals. Four divided by two clock
657# cycles (4 memory clock cycles) are provided by design for the signal to settle down.
658# Used only by the phy modules.
659INST "*/mpmc_core_0/gen_v6_ddr3_phy.mpmc_phy_if_0/u_phy_init/u_ff_phy_init_data_sel" TNM = "TNM_PHY_INIT_SEL";
660TIMESPEC "TS_MC_PHY_INIT_SEL" = FROM "TNM_PHY_INIT_SEL" TO FFS = 10000 ps;                         # This is over-constraint, user can relax it to match 4 memory clock cycles
661
662#Internal Vref
663CONFIG INTERNAL_VREF_BANK22=0.75;
664CONFIG INTERNAL_VREF_BANK23=0.75;
665CONFIG INTERNAL_VREF_BANK33=0.75;
666
667#DCI Cascading
668CONFIG DCI_CASCADE = "23 22";
669
670#BUFR IOBs (must be unconnected in FPGA and PCB)
671CONFIG PROHIBIT = AH17,AP20;
672
673#BUFIO IOBs (must be unconnected in FPGA and PCB)
674CONFIG PROHIBIT = AC13,AD12,AF19,AF20,AH23,AK27,AN27,AP11;
675
676######################################################################################
677##Place RSYNC OSERDES and IODELAY:                                                  ##
678######################################################################################
679
680#MPMC as of EDK 13.4 only supports 32-bit memories
681##Site: AH17 -- Bank 32
682#INST "*/u_phy_read/u_phy_rdclk_gen/gen_loop_col1.u_oserdes_rsync" LOC = "OLOGIC_X2Y23";
683#INST "*/u_phy_read/u_phy_rdclk_gen/gen_loop_col1.u_odelay_rsync" LOC = "IODELAY_X2Y23";
684#INST "*/u_phy_read/u_phy_rdclk_gen/gen_loop_col1.u_bufr_rsync" LOC = "BUFR_X2Y1";
685
686##Site: AP20 -- Bank 22
687INST "*/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_oserdes_rsync" LOC = "OLOGIC_X1Y21";
688INST "*/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_odelay_rsync" LOC = "IODELAY_X1Y21";
689INST "*/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_bufr_rsync" LOC = "BUFR_X1Y1";
690
691
692######################################################################################
693##Place CPT OSERDES and IODELAY:                                                    ##
694######################################################################################
695
696##Site: AH23 -- Bank 23
697INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[0].u_oserdes_cpt" LOC = "OLOGIC_X1Y57";
698INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[0].u_odelay_cpt" LOC = "IODELAY_X1Y57";
699
700##Site: AK27 -- Bank 23
701INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[1].u_oserdes_cpt" LOC = "OLOGIC_X1Y59";
702INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[1].u_odelay_cpt" LOC = "IODELAY_X1Y59";
703
704##Site: AN27 -- Bank 23
705INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[2].u_oserdes_cpt" LOC = "OLOGIC_X1Y61";
706INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[2].u_odelay_cpt" LOC = "IODELAY_X1Y61";
707
708##Site: AF19 -- Bank 22
709INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[3].u_oserdes_cpt" LOC = "OLOGIC_X1Y23";
710INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[3].u_odelay_cpt" LOC = "IODELAY_X1Y23";
711
712#MPMC as of EDK 13.4 only supports 32-bit memories
713##Site: AF20 -- Bank 22
714#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[4].u_oserdes_cpt" LOC = "OLOGIC_X1Y17";
715#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[4].u_odelay_cpt" LOC = "IODELAY_X1Y17";
716
717##Site: AP11 -- Bank 33
718#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[5].u_oserdes_cpt" LOC = "OLOGIC_X2Y57";
719#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[5].u_odelay_cpt" LOC = "IODELAY_X2Y57";
720
721##Site: AC13 -- Bank 33
722#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[6].u_oserdes_cpt" LOC = "OLOGIC_X2Y61";
723#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[6].u_odelay_cpt" LOC = "IODELAY_X2Y61";
724
725##Site: AD12 -- Bank 33
726#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[7].u_oserdes_cpt" LOC = "OLOGIC_X2Y59";
727#INST "*/u_phy_read/u_phy_rdclk_gen/gen_ck_cpt[7].u_odelay_cpt" LOC = "IODELAY_X2Y59";
728
729
Note: See TracBrowser for help on using the repository browser.