source: ResearchApps/PHY/WARPLAB/WARPLab7/XPS_Reference/w3_4RF/data/system.ucf

Last change on this file was 4711, checked in by welsh, 9 years ago

Updating UCF file for CM-PLL rev 1.1

File size: 46.9 KB
RevLine 
[4648]1# ##############################################################################
2# WARPLab Reference Design
3# XPS Constraint Specification (system.ucf)
4# Copyright 2013 Mango Communications
5# Distributed under the WARP license  (http://warpproject.org/license)
6# WARPLab version:  7.6.0
7# Family:           virtex6
8# Device:           xc6vlx240t
9# Package:          ff1156
10# Speed Grade:      -1
11# ##############################################################################
[4342]12
[4648]13
14# ###################################################################
15# Debug Header Ports
16# ###################################################################
17
18NET "DEBUGHDR<0>"                 LOC = "AG27" | IOSTANDARD = "LVCMOS25";                # pin 0
19NET "DEBUGHDR<1>"                 LOC = "AE26" | IOSTANDARD = "LVCMOS25";                # pin 1
20NET "debug_sw_gpio<0>"            LOC = "AF26" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 2
21NET "debug_sw_gpio<1>"            LOC = "AD25" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 3
22
[4342]23# NOTE:  As of WARPLab 7.5.0, pins 4 - 7 are used as duplicate trigger_out[3:0] ports.  To change
24#     them back to software GPIO pins, please uncomment the following lines and comment out the
25#     first set of trigger_out pins.
26#
[4648]27# NET "debug_sw_gpio<2>"            LOC = "V24"  | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 4
28# NET "debug_sw_gpio<3>"            LOC = "AA23" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 5
29# NET "debug_sw_gpio<4>"            LOC = "AH30" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 6
30# NET "debug_sw_gpio<5>"            LOC = "AK31" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 7
[4342]31
[4648]32NET "trigger_1_out<0>"            LOC = "V24"  | IOSTANDARD = "LVCMOS25";                # pin 4
33NET "trigger_1_out<1>"            LOC = "AA23" | IOSTANDARD = "LVCMOS25";                # pin 5
34NET "trigger_1_out<2>"            LOC = "AH30" | IOSTANDARD = "LVCMOS25";                # pin 6
35NET "trigger_1_out<3>"            LOC = "AK31" | IOSTANDARD = "LVCMOS25";                # pin 7
[4342]36
[4648]37NET "trigger_0_out<0>"            LOC = "AG28" | IOSTANDARD = "LVCMOS25";                # pin 8
38NET "trigger_0_out<1>"            LOC = "AE27" | IOSTANDARD = "LVCMOS25";                # pin 9
39NET "trigger_0_out<2>"            LOC = "AF28" | IOSTANDARD = "LVCMOS25";                # pin 10
40NET "trigger_0_out<3>"            LOC = "AJ29" | IOSTANDARD = "LVCMOS25";                # pin 11
[1918]41
[4648]42NET "trigger_in<0>"               LOC = "AH29" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 12
43NET "trigger_in<1>"               LOC = "AL30" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 13
44NET "trigger_in<2>"               LOC = "AM31" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 14
45NET "trigger_in<3>"               LOC = "AP32" | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # pin 15
46
47
48# ###################################################################
49# Clock & Reset Ports / Definitions
50# ###################################################################
51
52# System clock (80MHz, from sampling clock buffer)
53NET "samp_clk_n"                  LOC = "V23"  | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
54NET "samp_clk_p"                  LOC = "U23"  | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
55
56NET "samp_clk_p"                  TNM_NET = "samp_clk";
57TIMESPEC "TS_samp_clk" = PERIOD "samp_clk" 80000 kHz;
58
59
60# System clock (200MHz, from LVDS oscillator)
61NET "osc200_p"                    LOC = "A10"  | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
62NET "osc200_n"                    LOC = "B10"  | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
63
64NET "osc200_p"                    TNM_NET = "osc200_p";
65TIMESPEC "TS_osc200_p" = PERIOD "osc200_p" 200000 kHz;
66
67# System reset
68NET "RESET"                       LOC = "AH13" | IOSTANDARD = "LVCMOS15" | TIG;
69
70
71# ###################################################################
72# Clock Module Header Ports
73# ###################################################################
74
[4711]75# Trigger in/out via CM-PLL daisy chain headers - CM-PLL rev 1.1
[4648]76NET "cm_pll_hdr_in_d<0>"          LOC = "V28"  | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # CLKHDR_CTRL3  in W3 schematics
77NET "cm_pll_hdr_in_d<1>"          LOC = "V27"  | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # CLKHDR_CTRL2  in W3 schematics
78NET "cm_pll_hdr_in_d<2>"          LOC = "V33"  | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # CLKHDR_CTRL1  in W3 schematics
79NET "cm_pll_hdr_in_d<3>"          LOC = "V34"  | IOSTANDARD = "LVCMOS25" | PULLDOWN;     # CLKHDR_CTRL0  in W3 schematics
[4342]80
[4711]81NET "cm_pll_hdr_out_d<0>"         LOC = "V32"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL4  in W3 schematics
[4648]82NET "cm_pll_hdr_out_d<1>"         LOC = "W34"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL5  in W3 schematics
[4711]83NET "cm_pll_hdr_out_d<2>"         LOC = "W30"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL6  in W3 schematics
[4648]84NET "cm_pll_hdr_out_d<3>"         LOC = "W29"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL7  in W3 schematics
[4342]85
[4648]86# SIP switch on clock module
87NET "cm_switch<0>"                LOC = "V30"  | IOSTANDARD = "LVCMOS25" | PULLUP;       # CLKHDR_CTRL12 in W3 schematics
88NET "cm_switch<1>"                LOC = "R34"  | IOSTANDARD = "LVCMOS25" | PULLUP;       # CLKHDR_CTRL13 in W3 schematics
89NET "cm_switch<2>"                LOC = "W26"  | IOSTANDARD = "LVCMOS25" | PULLUP;       # CLKHDR_CTRL14 in W3 schematics
[1918]90
[4648]91# SPI on clock module
92NET "cm_spi_sclk"                 LOC = "Y34"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL8  in W3 schematics (CM hdr p25)
93NET "cm_spi_mosi"                 LOC = "Y31"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL10 in W3 schematics (CM hdr p29)
94NET "cm_spi_miso"                 LOC = "Y33"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL9  in W3 schematics (CM hdr p27)
95NET "cm_spi_cs_n"                 LOC = "Y32"  | IOSTANDARD = "LVCMOS25";                # CLKHDR_CTRL11 in W3 schematics (CM hdr p31)
96NET "cm_pll_status"               LOC = "V29"  | IOSTANDARD = "LVCMOS25" | PULLUP;       # CLKHDR_CTRL15 in W3 schematics (CM hdr p14)
[1918]97
[4648]98# FPGA CC pins connected to clock module header
99#     NOTE:  CM-PLL drives these with copy of selected PLL reference clock
100#     NOTE:  Constrained to 200MHz (overkill, but easy to meet given the simple logic)
101NET "pll_refclk_p"                LOC = "AD24" | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
102NET "pll_refclk_n"                LOC = "AE24" | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
[4342]103
[4648]104NET "pll_refclk_p"                TNM_NET = "pll_refclk";
105TIMESPEC "TS_pll_refclk" = PERIOD "pll_refclk" 200000 kHz;
[1918]106
107
[4648]108# ###################################################################
109# User IO Ports
110# ###################################################################
[1918]111
[4648]112NET "userio_dipsw<0>"             LOC = "AM22" | IOSTANDARD = "LVCMOS15";
113NET "userio_dipsw<1>"             LOC = "AL23" | IOSTANDARD = "LVCMOS15";
114NET "userio_dipsw<2>"             LOC = "AM23" | IOSTANDARD = "LVCMOS15";
115NET "userio_dipsw<3>"             LOC = "AN23" | IOSTANDARD = "LVCMOS15";
[1918]116
[4648]117NET "userio_leds_red<0>"          LOC = "AN34" | IOSTANDARD = "LVCMOS25";
118NET "userio_leds_red<1>"          LOC = "AM33" | IOSTANDARD = "LVCMOS25";
119NET "userio_leds_red<2>"          LOC = "AN33" | IOSTANDARD = "LVCMOS25";
120NET "userio_leds_red<3>"          LOC = "AP33" | IOSTANDARD = "LVCMOS25";
[1918]121
[4648]122NET "userio_leds_green<0>"        LOC = "AD22" | IOSTANDARD = "LVCMOS25";
123NET "userio_leds_green<1>"        LOC = "AE22" | IOSTANDARD = "LVCMOS25";
124NET "userio_leds_green<2>"        LOC = "AM32" | IOSTANDARD = "LVCMOS25";
125NET "userio_leds_green<3>"        LOC = "AN32" | IOSTANDARD = "LVCMOS25";
[1918]126
[4648]127NET "userio_pb_u"                 LOC = "AM21" | IOSTANDARD = "LVCMOS15";
128NET "userio_pb_m"                 LOC = "AN22" | IOSTANDARD = "LVCMOS15";
129NET "userio_pb_d"                 LOC = "AP22" | IOSTANDARD = "LVCMOS15";
[1918]130
[4648]131NET "userio_hexdisp_left<0>"      LOC = "AL33" | IOSTANDARD = "LVCMOS25";
132NET "userio_hexdisp_left<1>"      LOC = "AK33" | IOSTANDARD = "LVCMOS25";
133NET "userio_hexdisp_left<2>"      LOC = "AH32" | IOSTANDARD = "LVCMOS25";
134NET "userio_hexdisp_left<3>"      LOC = "AF29" | IOSTANDARD = "LVCMOS25";
135NET "userio_hexdisp_left<4>"      LOC = "AE29" | IOSTANDARD = "LVCMOS25";
136NET "userio_hexdisp_left<5>"      LOC = "AK32" | IOSTANDARD = "LVCMOS25";
137NET "userio_hexdisp_left<6>"      LOC = "AF30" | IOSTANDARD = "LVCMOS25";
138NET "userio_hexdisp_left_dp"      LOC = "AG30" | IOSTANDARD = "LVCMOS25";
[1918]139
[4648]140NET "userio_hexdisp_right<0>"     LOC = "AE28" | IOSTANDARD = "LVCMOS25";
141NET "userio_hexdisp_right<1>"     LOC = "AD26" | IOSTANDARD = "LVCMOS25";
142NET "userio_hexdisp_right<2>"     LOC = "AC24" | IOSTANDARD = "LVCMOS25";
143NET "userio_hexdisp_right<3>"     LOC = "AE23" | IOSTANDARD = "LVCMOS25";
144NET "userio_hexdisp_right<4>"     LOC = "AC22" | IOSTANDARD = "LVCMOS25";
145NET "userio_hexdisp_right<5>"     LOC = "AD27" | IOSTANDARD = "LVCMOS25";
146NET "userio_hexdisp_right<6>"     LOC = "AB23" | IOSTANDARD = "LVCMOS25";
147NET "userio_hexdisp_right_dp"     LOC = "AC23" | IOSTANDARD = "LVCMOS25";
[1918]148
[4648]149NET "userio_rfa_led_red"          LOC = "AL34" | IOSTANDARD = "LVCMOS25";
150NET "userio_rfa_led_green"        LOC = "AK34" | IOSTANDARD = "LVCMOS25";
151NET "userio_rfb_led_red"          LOC = "AJ34" | IOSTANDARD = "LVCMOS25";
152NET "userio_rfb_led_green"        LOC = "AH34" | IOSTANDARD = "LVCMOS25";
[1918]153
154
[4648]155# ###################################################################
156# UART Ports
157# ###################################################################
[4342]158
[4648]159NET "usb_uart_sin"                LOC = "J9"   | IOSTANDARD = "LVCMOS25";
160NET "usb_uart_sout"               LOC = "H9"   | IOSTANDARD = "LVCMOS25";
[1918]161
162
[4648]163# ###################################################################
164# SPI Ports
165# ###################################################################
166
167# RF reference clock SPI
168NET "clk_rfref_spi_sclk"          LOC = "V25"  | IOSTANDARD = "LVCMOS25";
169NET "clk_rfref_spi_mosi"          LOC = "W25"  | IOSTANDARD = "LVCMOS25";
170NET "clk_rfref_spi_cs_n"          LOC = "W27"  | IOSTANDARD = "LVCMOS25";
171NET "clk_rfref_spi_miso"          LOC = "Y27"  | IOSTANDARD = "LVCMOS25";
172NET "clk_rfref_func"              LOC = "L26"  | IOSTANDARD = "LVCMOS25";
173
174# Sample clock SPI
175NET "clk_samp_spi_sclk"           LOC = "W32"  | IOSTANDARD = "LVCMOS25";
176NET "clk_samp_spi_mosi"           LOC = "Y29"  | IOSTANDARD = "LVCMOS25";
177NET "clk_samp_spi_cs_n"           LOC = "W31"  | IOSTANDARD = "LVCMOS25";
178NET "clk_samp_spi_miso"           LOC = "Y28"  | IOSTANDARD = "LVCMOS25";
179NET "clk_samp_func"               LOC = "R33"  | IOSTANDARD = "LVCMOS25";
180
181
182# ###################################################################
183# I2C (IIC) Ports
184# ###################################################################
185
186# IIC EEPROM
187NET "IIC_EEPROM_iic_sda"          LOC = "AG23" | IOSTANDARD = "LVCMOS25";
188NET "IIC_EEPROM_iic_scl"          LOC = "AF23" | IOSTANDARD = "LVCMOS25";
189
190
191# ###################################################################
192# Ethernet Ports / Definitions
193# ###################################################################
194
195# Ethernet A Ports
196#   NOTE: Ports are for 88e1121R (pg 9 of W3 schematics)
197NET "ETH_A_PD"                    LOC = "K9"   | IOSTANDARD = "LVCMOS25" | TIG;
198NET "ETH_A_RGMII_TXD<0>"          LOC = "AF9"  | IOSTANDARD = "LVCMOS25";
199NET "ETH_A_RGMII_TXD<1>"          LOC = "AF10" | IOSTANDARD = "LVCMOS25";
200NET "ETH_A_RGMII_TXD<2>"          LOC = "AD9"  | IOSTANDARD = "LVCMOS25";
201NET "ETH_A_RGMII_TXD<3>"          LOC = "AD10" | IOSTANDARD = "LVCMOS25";
202NET "ETH_A_RGMII_TX_CTL"          LOC = "AG8"  | IOSTANDARD = "LVCMOS25";
203NET "ETH_A_RGMII_TXC"             LOC = "AE9"  | IOSTANDARD = "LVCMOS25";
204NET "ETH_A_RGMII_RXD<0>"          LOC = "AK9"  | IOSTANDARD = "LVCMOS25";
205NET "ETH_A_RGMII_RXD<1>"          LOC = "AJ9"  | IOSTANDARD = "LVCMOS25";
206NET "ETH_A_RGMII_RXD<2>"          LOC = "AH8"  | IOSTANDARD = "LVCMOS25";
207NET "ETH_A_RGMII_RXD<3>"          LOC = "AH9"  | IOSTANDARD = "LVCMOS25";
208NET "ETH_A_RGMII_RX_CTL"          LOC = "AL9"  | IOSTANDARD = "LVCMOS25";
209NET "ETH_A_RGMII_RXC"             LOC = "AC10" | IOSTANDARD = "LVCMOS25";
210NET "ETH_A_MDC"                   LOC = "AK8"  | IOSTANDARD = "LVCMOS25";
211NET "ETH_A_MDIO"                  LOC = "AP9"  | IOSTANDARD = "LVCMOS25" | PULLUP;
212
213# Ethernet B Ports
214NET "ETH_B_PD"                    LOC = "E8"   | IOSTANDARD = "LVCMOS25" | TIG;
215NET "ETH_B_RGMII_TXD<0>"          LOC = "M10"  | IOSTANDARD = "LVCMOS25";
216NET "ETH_B_RGMII_TXD<1>"          LOC = "B8"   | IOSTANDARD = "LVCMOS25";
217NET "ETH_B_RGMII_TXD<2>"          LOC = "AC9"  | IOSTANDARD = "LVCMOS25";
218NET "ETH_B_RGMII_TXD<3>"          LOC = "E9"   | IOSTANDARD = "LVCMOS25";
219NET "ETH_B_RGMII_TX_CTL"          LOC = "D10"  | IOSTANDARD = "LVCMOS25";
220NET "ETH_B_RGMII_TXC"             LOC = "AB10" | IOSTANDARD = "LVCMOS25";
221NET "ETH_B_RGMII_RXD<0>"          LOC = "A9"   | IOSTANDARD = "LVCMOS25";
222NET "ETH_B_RGMII_RXD<1>"          LOC = "D9"   | IOSTANDARD = "LVCMOS25";
223NET "ETH_B_RGMII_RXD<2>"          LOC = "C9"   | IOSTANDARD = "LVCMOS25";
224NET "ETH_B_RGMII_RXD<3>"          LOC = "F10"  | IOSTANDARD = "LVCMOS25";
225NET "ETH_B_RGMII_RX_CTL"          LOC = "A8"   | IOSTANDARD = "LVCMOS25";
226NET "ETH_B_RGMII_RXC"             LOC = "L10"  | IOSTANDARD = "LVCMOS25";
227NET "ETH_B_MDC"                   LOC = "AN9"  | IOSTANDARD = "LVCMOS25";
228NET "ETH_B_MDIO"                  LOC = "AL8"  | IOSTANDARD = "LVCMOS25" | PULLUP;
229
230# Common Ethernet Ports
231#   NOTE:  88e1121R has a single reset port for both PHYs, so let Ethernet A do it
232NET "ETH_A_PHY_RST_N"             LOC = "L9"   | IOSTANDARD = "LVCMOS25" | TIG;
233NET "ETH_COMA"                    LOC = "C8"   | IOSTANDARD = "LVCMOS25" | TIG;
[1918]234 
235
[4648]236# ###############################################
237# Ethernet A Timing
238# ###############################################
[1918]239
[4648]240INST "*ETH_A*gmii_interface*rxdata_bus[0].delay_rgmii_rxd"           IDELAY_VALUE = 13;
241INST "*ETH_A*gmii_interface*rxdata_bus[1].delay_rgmii_rxd"           IDELAY_VALUE = 13;
242INST "*ETH_A*gmii_interface*rxdata_bus[2].delay_rgmii_rxd"           IDELAY_VALUE = 13;
243INST "*ETH_A*gmii_interface*rxdata_bus[3].delay_rgmii_rxd"           IDELAY_VALUE = 13;
[2080]244
[4648]245INST "*ETH_A*gmii_interface*delay_rgmii_rx_ctl"                      IDELAY_VALUE = 13;
[1918]246
[4648]247INST "*ETH_A*gmii_interface*delay_rgmii_tx_clk"                      ODELAY_VALUE = 6;
248INST "*ETH_A*gmii_interface*delay_rgmii_tx_clk"                      SIGNAL_PATTERN = CLOCK;
[1918]249
250# Group all IODELAY-related blocks to use a single IDELAYCTRL
[4648]251INST "ETH_A*dlyctrl"                                                 IODELAY_GROUP = ETH_rgmii_iodelay;
252INST "*ETH_A*gmii_interface*delay_rgmii_rx_ctl"                      IODELAY_GROUP = ETH_rgmii_iodelay;
253INST "*ETH_A*gmii_interface*rxdata_bus[?].delay_rgmii_rxd"           IODELAY_GROUP = ETH_rgmii_iodelay;
254INST "*ETH_A*gmii_interface*delay_rgmii_tx_clk"                      IODELAY_GROUP = ETH_rgmii_iodelay;
[1918]255
[4648]256# Specified Timings: 1.2ns setup time, 1.2ns hold time
257#     The internal PHY delays were not used to derive the OFFSET constraints
258#     This signal trace is longer than the clock trace, and arrives at the FPGA pin 64 ps after the clock
259#     Therefore the offset in constraint must have less setup time than nominal
[1918]260NET "ETH_A_RGMII_RXD[0]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" RISING;
261NET "ETH_A_RGMII_RXD[0]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" FALLING;
262
[4648]263#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 376 ps before the clock
264#     Therefore the offset in constraint must have more setup time than nominal
[1918]265NET "ETH_A_RGMII_RXD[1]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" RISING;
266NET "ETH_A_RGMII_RXD[1]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" FALLING;
267
[4648]268#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 372 ps before the clock
269#     Therefore the offset in constraint must have more setup time than nominal
[1918]270NET "ETH_A_RGMII_RXD[2]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" RISING;
271NET "ETH_A_RGMII_RXD[2]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" FALLING;
272
[4648]273#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 115 ps before the clock
274#     Therefore the offset in constraint must have more setup time than nominal
[1918]275NET "ETH_A_RGMII_RXD[3]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" RISING;
276NET "ETH_A_RGMII_RXD[3]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" FALLING;
277
[4648]278#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 292 ps before the clock
279#     Therefore the offset in constraint must have more setup time than nominal
[1918]280NET "ETH_A_RGMII_RX_CTL" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" RISING;
281NET "ETH_A_RGMII_RX_CTL" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_A_RGMII_RXC" FALLING;
282
283
[4648]284# ###############################################
285# Ethernet B Timing
286# ###############################################
[1918]287
[4648]288INST "*ETH_B*gmii_interface*rxdata_bus[0].delay_rgmii_rxd"           IDELAY_VALUE = 13;
289INST "*ETH_B*gmii_interface*rxdata_bus[1].delay_rgmii_rxd"           IDELAY_VALUE = 13;
290INST "*ETH_B*gmii_interface*rxdata_bus[2].delay_rgmii_rxd"           IDELAY_VALUE = 13;
291INST "*ETH_B*gmii_interface*rxdata_bus[3].delay_rgmii_rxd"           IDELAY_VALUE = 13;
[1918]292
[4648]293INST "*ETH_B*gmii_interface*delay_rgmii_rx_ctl"                      IDELAY_VALUE = 13;
294
295INST "*ETH_B*gmii_interface*delay_rgmii_tx_clk"                      ODELAY_VALUE = 6;
296INST "*ETH_B*gmii_interface*delay_rgmii_tx_clk"                      SIGNAL_PATTERN = CLOCK;
297
[1918]298# Group all IODELAY-related blocks to use a single IDELAYCTRL
[4648]299# INST "ETH_B*dlyctrl"                                                 IODELAY_GROUP = ETH_rgmii_iodelay;
300INST "*ETH_B*gmii_interface*delay_rgmii_rx_ctl"                      IODELAY_GROUP = ETH_rgmii_iodelay;
301INST "*ETH_B*gmii_interface*rxdata_bus[?].delay_rgmii_rxd"           IODELAY_GROUP = ETH_rgmii_iodelay;
302INST "*ETH_B*gmii_interface*delay_rgmii_tx_clk"                      IODELAY_GROUP = ETH_rgmii_iodelay;
[1918]303
[4648]304# Specified Timings: 1.2ns setup time, 1.2ns hold time
305#     The internal PHY delays were not used to derive the OFFSET constraints
306#     This signal trace is longer than the clock trace, and arrives at the FPGA pin 64 ps after the clock
307#     Therefore the offset in constraint must have less setup time than nominal
[1918]308NET "ETH_B_RGMII_RXD[0]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" RISING;
309NET "ETH_B_RGMII_RXD[0]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" FALLING;
310
[4648]311#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 376 ps before the clock
312#     Therefore the offset in constraint must have more setup time than nominal
[1918]313NET "ETH_B_RGMII_RXD[1]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" RISING;
314NET "ETH_B_RGMII_RXD[1]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" FALLING;
315
[4648]316#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 372 ps before the clock
317#     Therefore the offset in constraint must have more setup time than nominal
[1918]318NET "ETH_B_RGMII_RXD[2]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" RISING;
319NET "ETH_B_RGMII_RXD[2]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" FALLING;
320
[4648]321#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 115 ps before the clock
322#     Therefore the offset in constraint must have more setup time than nominal
[1918]323NET "ETH_B_RGMII_RXD[3]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" RISING;
324NET "ETH_B_RGMII_RXD[3]" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" FALLING;
325
[4648]326#     This signal trace is shorter than the clock trace, and arrives at the FPGA pin 292 ps before the clock
327#     Therefore the offset in constraint must have more setup time than nominal
[1918]328NET "ETH_B_RGMII_RX_CTL" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" RISING;
329NET "ETH_B_RGMII_RX_CTL" OFFSET = IN 1.2 ns VALID 2.4 ns BEFORE "ETH_B_RGMII_RXC" FALLING;
330
331
[4648]332# ###################################################################
333# FPGA DNA Ports
334# ###################################################################
[1918]335
[4648]336NET "*fpga_dna*"                  TIG;
[1918]337
338
[4648]339# ###################################################################
340# DDR Ports
341# ###################################################################
[1918]342
[4648]343# NOTE: DDR3 SO-DIMM constraints are not specified here!
344#       These are pulled automatically from the MIG project during implementation
[1918]345
[4648]346# However, due to a bug in XPS, we need to add this constraint to LOC the IOB
347NET "ddr_parity"                  LOC = "AL31" | IOSTANDARD = "LVCMOS25" | TIG;          # Stray PAD MIG insists on including
[1918]348
349
[4648]350# ###################################################################
351# RFA Ports
352# ###################################################################
[1918]353
[4648]354# AD9963 SPI
355NET "RFA_AD_spi_sclk"             LOC = "AB33" | IOSTANDARD = "LVCMOS25";
356NET "RFA_AD_spi_sdio"             LOC = "AC30" | IOSTANDARD = "LVCMOS25";
357NET "RFA_AD_spi_cs_n"             LOC = "AB31" | IOSTANDARD = "LVCMOS25";
358NET "RFA_AD_reset_n"              LOC = "AA34" | IOSTANDARD = "LVCMOS25";
[1918]359
[4648]360# AD9963
361NET "RFA_AD_TRXD<0>"              LOC = "AC25" | IOSTANDARD = "LVCMOS25";
362NET "RFA_AD_TRXD<1>"              LOC = "AB25" | IOSTANDARD = "LVCMOS25";
363NET "RFA_AD_TRXD<2>"              LOC = "AB32" | IOSTANDARD = "LVCMOS25";
364NET "RFA_AD_TRXD<3>"              LOC = "AC29" | IOSTANDARD = "LVCMOS25";
365NET "RFA_AD_TRXD<4>"              LOC = "AD29" | IOSTANDARD = "LVCMOS25";
366NET "RFA_AD_TRXD<5>"              LOC = "AC33" | IOSTANDARD = "LVCMOS25";
367NET "RFA_AD_TRXD<6>"              LOC = "AD34" | IOSTANDARD = "LVCMOS25";
368NET "RFA_AD_TRXD<7>"              LOC = "AC32" | IOSTANDARD = "LVCMOS25";
369NET "RFA_AD_TRXD<8>"              LOC = "AD31" | IOSTANDARD = "LVCMOS25";
370NET "RFA_AD_TRXD<9>"              LOC = "AD32" | IOSTANDARD = "LVCMOS25";
371NET "RFA_AD_TRXD<10>"             LOC = "AE31" | IOSTANDARD = "LVCMOS25";
372NET "RFA_AD_TRXD<11>"             LOC = "AE32" | IOSTANDARD = "LVCMOS25";
[1918]373
[4648]374NET "RFA_AD_TRXCLK"               LOC = "AD30" | IOSTANDARD = "LVCMOS25";
375NET "RFA_AD_TRXIQ"                LOC = "AC34" | IOSTANDARD = "LVCMOS25";
[1918]376
[4648]377NET "RFA_AD_TXCLK"                LOC = "AA31" | IOSTANDARD = "LVCMOS25";
378NET "RFA_AD_TXIQ"                 LOC = "AA33" | IOSTANDARD = "LVCMOS25";
[1918]379
[4648]380NET "RFA_AD_TXD<0>"               LOC = "AA25" | IOSTANDARD = "LVCMOS25";
381NET "RFA_AD_TXD<1>"               LOC = "AB26" | IOSTANDARD = "LVCMOS25";
382NET "RFA_AD_TXD<2>"               LOC = "Y26"  | IOSTANDARD = "LVCMOS25";
383NET "RFA_AD_TXD<3>"               LOC = "AA26" | IOSTANDARD = "LVCMOS25";
384NET "RFA_AD_TXD<4>"               LOC = "AA28" | IOSTANDARD = "LVCMOS25";
385NET "RFA_AD_TXD<5>"               LOC = "AA29" | IOSTANDARD = "LVCMOS25";
386NET "RFA_AD_TXD<6>"               LOC = "AA30" | IOSTANDARD = "LVCMOS25";
387NET "RFA_AD_TXD<7>"               LOC = "AB30" | IOSTANDARD = "LVCMOS25";
388NET "RFA_AD_TXD<8>"               LOC = "AB28" | IOSTANDARD = "LVCMOS25";
389NET "RFA_AD_TXD<9>"               LOC = "AB27" | IOSTANDARD = "LVCMOS25";
390NET "RFA_AD_TXD<10>"              LOC = "AC28" | IOSTANDARD = "LVCMOS25";
391NET "RFA_AD_TXD<11>"              LOC = "AC27" | IOSTANDARD = "LVCMOS25";
[1918]392
[2382]393
[4648]394# TRXCLK pins driven by AD9963's; assuming 80MHz worst case
395NET "RFA_AD_TRXCLK"               TNM_NET = "RFA_AD_TRXCLK";
396TIMESPEC "TS_RFA_AD_TRXCLK" = PERIOD "RFA_AD_TRXCLK" 80 MHz;
397
398
399# Define relationship of TRXD and TRXCLK, based on AD9963 specs
400#     Using worst-case output delay from AD9963 datasheet table 23
401#     TRXCLK leads TRXD transition by t_OD2; ad_bridge uses IDELAY to shift this to mid valid window
402#     VALID window below assumes DDR interleaved I/Q at 40MSps rate (12.5nsec / half sample)
403INST "RFA_AD_TRXD<*>"             TNM = "RFA_AD_TRXD_group";
404
405NET "RFA_AD_TRXCLK"               TNM_NET = "RFA_AD_TRXCLK";
[2382]406TIMEGRP "RFA_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFA_AD_TRXCLK" RISING;
407TIMEGRP "RFA_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFA_AD_TRXCLK" FALLING;
408
[4648]409
410# MAX2829 transceivers and RF front end
411NET "RFA_SPI_SCLK"                LOC = "T34"  | IOSTANDARD = "LVCMOS25";
412NET "RFA_SPI_MOSI"                LOC = "T33"  | IOSTANDARD = "LVCMOS25";
413NET "RFA_SPI_CSn"                 LOC = "U32"  | IOSTANDARD = "LVCMOS25";
414
415NET "RFA_SHDN"                    LOC = "U27"  | IOSTANDARD = "LVCMOS25";
416NET "RFA_TxEn"                    LOC = "T31"  | IOSTANDARD = "LVCMOS25";
417NET "RFA_RxEn"                    LOC = "U33"  | IOSTANDARD = "LVCMOS25";
418NET "RFA_RxHP"                    LOC = "AG32" | IOSTANDARD = "LVCMOS25";
419NET "RFA_PAEn_24"                 LOC = "U25"  | IOSTANDARD = "LVCMOS25";
420NET "RFA_PAEn_5"                  LOC = "U28"  | IOSTANDARD = "LVCMOS25";
421NET "RFA_ANTSW<0>"                LOC = "U31"  | IOSTANDARD = "LVCMOS25";
422NET "RFA_ANTSW<1>"                LOC = "U30"  | IOSTANDARD = "LVCMOS25";
423NET "RFA_LD"                      LOC = "U26"  | IOSTANDARD = "LVCMOS25";
424
425NET "RFA_B<0>"                    LOC = "AG33" | IOSTANDARD = "LVCMOS25";
426NET "RFA_B<1>"                    LOC = "AF31" | IOSTANDARD = "LVCMOS25";
427NET "RFA_B<2>"                    LOC = "AF33" | IOSTANDARD = "LVCMOS25";
428NET "RFA_B<3>"                    LOC = "AG31" | IOSTANDARD = "LVCMOS25";
429NET "RFA_B<4>"                    LOC = "AF34" | IOSTANDARD = "LVCMOS25";
430NET "RFA_B<5>"                    LOC = "AE33" | IOSTANDARD = "LVCMOS25";
431NET "RFA_B<6>"                    LOC = "AE34" | IOSTANDARD = "LVCMOS25";
432
433
434# ###################################################################
435# RFB Ports
436# ###################################################################
437
438# AD9963 SPI
439NET "RFB_AD_spi_sclk"             LOC = "P32"  | IOSTANDARD = "LVCMOS25";
440NET "RFB_AD_spi_sdio"             LOC = "P34"  | IOSTANDARD = "LVCMOS25";
441NET "RFB_AD_spi_cs_n"             LOC = "N32"  | IOSTANDARD = "LVCMOS25";
442NET "RFB_AD_reset_n"              LOC = "N34"  | IOSTANDARD = "LVCMOS25";
443
444# AD9963
445NET "RFB_AD_TRXD<0>"              LOC = "N25"  | IOSTANDARD = "LVCMOS25";
446NET "RFB_AD_TRXD<1>"              LOC = "M25"  | IOSTANDARD = "LVCMOS25";
447NET "RFB_AD_TRXD<2>"              LOC = "N28"  | IOSTANDARD = "LVCMOS25";
448NET "RFB_AD_TRXD<3>"              LOC = "N27"  | IOSTANDARD = "LVCMOS25";
449NET "RFB_AD_TRXD<4>"              LOC = "P29"  | IOSTANDARD = "LVCMOS25";
450NET "RFB_AD_TRXD<5>"              LOC = "M30"  | IOSTANDARD = "LVCMOS25";
451NET "RFB_AD_TRXD<6>"              LOC = "N30"  | IOSTANDARD = "LVCMOS25";
452NET "RFB_AD_TRXD<7>"              LOC = "N29"  | IOSTANDARD = "LVCMOS25";
453NET "RFB_AD_TRXD<8>"              LOC = "P26"  | IOSTANDARD = "LVCMOS25";
454NET "RFB_AD_TRXD<9>"              LOC = "P31"  | IOSTANDARD = "LVCMOS25";
455NET "RFB_AD_TRXD<10>"             LOC = "P25"  | IOSTANDARD = "LVCMOS25";
456NET "RFB_AD_TRXD<11>"             LOC = "P30"  | IOSTANDARD = "LVCMOS25";
457
458NET "RFB_AD_TRXCLK"               LOC = "N33"  | IOSTANDARD = "LVCMOS25";
459NET "RFB_AD_TRXIQ"                LOC = "M33"  | IOSTANDARD = "LVCMOS25";
460
461NET "RFB_AD_TXCLK"                LOC = "L28"  | IOSTANDARD = "LVCMOS25";
462NET "RFB_AD_TXIQ"                 LOC = "L29"  | IOSTANDARD = "LVCMOS25";
463
464NET "RFB_AD_TXD<0>"               LOC = "K32"  | IOSTANDARD = "LVCMOS25";
465NET "RFB_AD_TXD<1>"               LOC = "M26"  | IOSTANDARD = "LVCMOS25";
466NET "RFB_AD_TXD<2>"               LOC = "M32"  | IOSTANDARD = "LVCMOS25";
467NET "RFB_AD_TXD<3>"               LOC = "K34"  | IOSTANDARD = "LVCMOS25";
468NET "RFB_AD_TXD<4>"               LOC = "M31"  | IOSTANDARD = "LVCMOS25";
469NET "RFB_AD_TXD<5>"               LOC = "L30"  | IOSTANDARD = "LVCMOS25";
470NET "RFB_AD_TXD<6>"               LOC = "L33"  | IOSTANDARD = "LVCMOS25";
471NET "RFB_AD_TXD<7>"               LOC = "L31"  | IOSTANDARD = "LVCMOS25";
472NET "RFB_AD_TXD<8>"               LOC = "M28"  | IOSTANDARD = "LVCMOS25";
473NET "RFB_AD_TXD<9>"               LOC = "L34"  | IOSTANDARD = "LVCMOS25";
474NET "RFB_AD_TXD<10>"              LOC = "M27"  | IOSTANDARD = "LVCMOS25";
475NET "RFB_AD_TXD<11>"              LOC = "K31"  | IOSTANDARD = "LVCMOS25";
476
477
478# TRXCLK pins driven by AD9963's; assuming 80MHz worst case
479NET "RFB_AD_TRXCLK"               TNM_NET = "RFB_AD_TRXCLK";
480TIMESPEC "TS_RFB_AD_TRXCLK" = PERIOD "RFB_AD_TRXCLK" 80 MHz;
481
482
483# Define relationship of TRXD and TRXCLK, based on AD9963 specs
484#     Using worst-case output delay from AD9963 datasheet table 23
485#     TRXCLK leads TRXD transition by t_OD2; ad_bridge uses IDELAY to shift this to mid valid window
486#     VALID window below assumes DDR interleaved I/Q at 40MSps rate (12.5nsec / half sample)
487INST "RFB_AD_TRXD<*>"             TNM = "RFB_AD_TRXD_group";
488
489NET "RFB_AD_TRXCLK"               TNM_NET = "RFB_AD_TRXCLK";
[2382]490TIMEGRP "RFB_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFB_AD_TRXCLK" RISING;
491TIMEGRP "RFB_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFB_AD_TRXCLK" FALLING;
492
[4342]493
[4648]494# MAX2829 transceivers and RF front end
495NET "RFB_SPI_SCLK"                LOC = "H34"  | IOSTANDARD = "LVCMOS25";
496NET "RFB_SPI_MOSI"                LOC = "H33"  | IOSTANDARD = "LVCMOS25";
497NET "RFB_SPI_CSn"                 LOC = "J32"  | IOSTANDARD = "LVCMOS25";
[4342]498
[4648]499NET "RFB_SHDN"                    LOC = "J34"  | IOSTANDARD = "LVCMOS25";
500NET "RFB_TxEn"                    LOC = "H32"  | IOSTANDARD = "LVCMOS25";
501NET "RFB_RxEn"                    LOC = "J31"  | IOSTANDARD = "LVCMOS25";
502NET "RFB_RxHP"                    LOC = "R28"  | IOSTANDARD = "LVCMOS25";
503NET "RFB_PAEn_24"                 LOC = "T25"  | IOSTANDARD = "LVCMOS25";
504NET "RFB_PAEn_5"                  LOC = "T28"  | IOSTANDARD = "LVCMOS25";
505NET "RFB_ANTSW<0>"                LOC = "T30"  | IOSTANDARD = "LVCMOS25";
506NET "RFB_ANTSW<1>"                LOC = "T29"  | IOSTANDARD = "LVCMOS25";
507NET "RFB_LD"                      LOC = "K33"  | IOSTANDARD = "LVCMOS25";
[1918]508
[4648]509NET "RFB_B<0>"                    LOC = "P27"  | IOSTANDARD = "LVCMOS25";
510NET "RFB_B<1>"                    LOC = "R27"  | IOSTANDARD = "LVCMOS25";
511NET "RFB_B<2>"                    LOC = "R29"  | IOSTANDARD = "LVCMOS25";
512NET "RFB_B<3>"                    LOC = "R26"  | IOSTANDARD = "LVCMOS25";
513NET "RFB_B<4>"                    LOC = "R32"  | IOSTANDARD = "LVCMOS25";
514NET "RFB_B<5>"                    LOC = "T26"  | IOSTANDARD = "LVCMOS25";
515NET "RFB_B<6>"                    LOC = "R31"  | IOSTANDARD = "LVCMOS25";
[1918]516
[1955]517
[4648]518# ###################################################################
519# RFA / RFB RSSI Ports
520# ###################################################################
[1955]521
[4648]522NET "RF_RSSI_CLK"                 LOC = "B32"  | IOSTANDARD = "LVCMOS25";
523NET "RF_RSSI_PD"                  LOC = "B34"  | IOSTANDARD = "LVCMOS25";
[1955]524
[4648]525NET "RFA_RSSI_D<0>"               LOC = "E32"  | IOSTANDARD = "LVCMOS25";
526NET "RFA_RSSI_D<1>"               LOC = "E33"  | IOSTANDARD = "LVCMOS25";
527NET "RFA_RSSI_D<2>"               LOC = "E34"  | IOSTANDARD = "LVCMOS25";
528NET "RFA_RSSI_D<3>"               LOC = "F30"  | IOSTANDARD = "LVCMOS25";
529NET "RFA_RSSI_D<4>"               LOC = "F31"  | IOSTANDARD = "LVCMOS25";
530NET "RFA_RSSI_D<5>"               LOC = "F34"  | IOSTANDARD = "LVCMOS25";
531NET "RFA_RSSI_D<6>"               LOC = "F33"  | IOSTANDARD = "LVCMOS25";
532NET "RFA_RSSI_D<7>"               LOC = "G31"  | IOSTANDARD = "LVCMOS25";
533NET "RFA_RSSI_D<8>"               LOC = "G33"  | IOSTANDARD = "LVCMOS25";
534NET "RFA_RSSI_D<9>"               LOC = "G32"  | IOSTANDARD = "LVCMOS25";
[1955]535
[4648]536NET "RFB_RSSI_D<0>"               LOC = "A33"  | IOSTANDARD = "LVCMOS25";
537NET "RFB_RSSI_D<1>"               LOC = "B33"  | IOSTANDARD = "LVCMOS25";
538NET "RFB_RSSI_D<2>"               LOC = "C33"  | IOSTANDARD = "LVCMOS25";
539NET "RFB_RSSI_D<3>"               LOC = "C34"  | IOSTANDARD = "LVCMOS25";
540NET "RFB_RSSI_D<4>"               LOC = "C32"  | IOSTANDARD = "LVCMOS25";
541NET "RFB_RSSI_D<5>"               LOC = "D31"  | IOSTANDARD = "LVCMOS25";
542NET "RFB_RSSI_D<6>"               LOC = "G30"  | IOSTANDARD = "LVCMOS25";
543NET "RFB_RSSI_D<7>"               LOC = "E31"  | IOSTANDARD = "LVCMOS25";
544NET "RFB_RSSI_D<8>"               LOC = "D32"  | IOSTANDARD = "LVCMOS25";
545NET "RFB_RSSI_D<9>"               LOC = "D34"  | IOSTANDARD = "LVCMOS25";
[1955]546
547
[4648]548# ###################################################################
549# FMC User IO Ports
550# ###################################################################
[1955]551
[4648]552# User LEDs
553NET "RFC_LED_G"                   LOC = "L19"  | IOSTANDARD = "LVCMOS25";
554NET "RFC_LED_R"                   LOC = "L18"  | IOSTANDARD = "LVCMOS25";
[1955]555
[4648]556NET "RFD_LED_G"                   LOC = "D16"  | IOSTANDARD = "LVCMOS25";
557NET "RFD_LED_R"                   LOC = "A15"  | IOSTANDARD = "LVCMOS25";
[1955]558
559
[4648]560# ###################################################################
561# FMC I2C Ports
562# ###################################################################
[1955]563
[4648]564# FMC module I2C EEPROM
565NET "FMC_IIC_EEPROM_scl"          LOC = "F23"  | IOSTANDARD = "LVCMOS25";
566NET "FMC_IIC_EEPROM_sda"          LOC = "F24"  | IOSTANDARD = "LVCMOS25";
[1955]567
568
[4648]569# ###################################################################
570# RFC Ports (FMC-RF-2X245 RF Interface)
571# ###################################################################
[1955]572
[4648]573# AD9963 SPI
574NET "RFC_AD_spi_sclk"             LOC = "B25"  | IOSTANDARD = "LVCMOS25";
575NET "RFC_AD_spi_sdio"             LOC = "D26"  | IOSTANDARD = "LVCMOS25" | PULLDOWN;
576NET "RFC_AD_spi_cs_n"             LOC = "D27"  | IOSTANDARD = "LVCMOS25";
577NET "RFC_AD_reset_n"              LOC = "B27"  | IOSTANDARD = "LVCMOS25";
[1955]578
[4648]579# AD9963
580NET "RFC_AD_TRXD<0>"              LOC = "C29"  | IOSTANDARD = "LVCMOS25";
581NET "RFC_AD_TRXD<1>"              LOC = "C24"  | IOSTANDARD = "LVCMOS25";
582NET "RFC_AD_TRXD<2>"              LOC = "C22"  | IOSTANDARD = "LVCMOS25";
583NET "RFC_AD_TRXD<3>"              LOC = "G27"  | IOSTANDARD = "LVCMOS25";
584NET "RFC_AD_TRXD<4>"              LOC = "G28"  | IOSTANDARD = "LVCMOS25";
585NET "RFC_AD_TRXD<5>"              LOC = "D22"  | IOSTANDARD = "LVCMOS25";
586NET "RFC_AD_TRXD<6>"              LOC = "G26"  | IOSTANDARD = "LVCMOS25";
587NET "RFC_AD_TRXD<7>"              LOC = "A25"  | IOSTANDARD = "LVCMOS25";
588NET "RFC_AD_TRXD<8>"              LOC = "A26"  | IOSTANDARD = "LVCMOS25";
589NET "RFC_AD_TRXD<9>"              LOC = "H27"  | IOSTANDARD = "LVCMOS25";
590NET "RFC_AD_TRXD<10>"             LOC = "E27"  | IOSTANDARD = "LVCMOS25";
591NET "RFC_AD_TRXD<11>"             LOC = "B26"  | IOSTANDARD = "LVCMOS25";
[1955]592
[4648]593NET "RFC_AD_TRXCLK"               LOC = "C28"  | IOSTANDARD = "LVCMOS25";
594NET "RFC_AD_TRXIQ"                LOC = "D29"  | IOSTANDARD = "LVCMOS25";
[1955]595
[4648]596NET "RFC_AD_TXCLK"                LOC = "C27"  | IOSTANDARD = "LVCMOS25";
597NET "RFC_AD_TXIQ"                 LOC = "C30"  | IOSTANDARD = "LVCMOS25";
[1955]598
[4648]599NET "RFC_AD_TXD<0>"               LOC = "F26"  | IOSTANDARD = "LVCMOS25";
600NET "RFC_AD_TXD<1>"               LOC = "K21"  | IOSTANDARD = "LVCMOS25";
601NET "RFC_AD_TXD<2>"               LOC = "E24"  | IOSTANDARD = "LVCMOS25";
602NET "RFC_AD_TXD<3>"               LOC = "G25"  | IOSTANDARD = "LVCMOS25";
603NET "RFC_AD_TXD<4>"               LOC = "F25"  | IOSTANDARD = "LVCMOS25";
604NET "RFC_AD_TXD<5>"               LOC = "E26"  | IOSTANDARD = "LVCMOS25";
605NET "RFC_AD_TXD<6>"               LOC = "A19"  | IOSTANDARD = "LVCMOS25";
606NET "RFC_AD_TXD<7>"               LOC = "D24"  | IOSTANDARD = "LVCMOS25";
607NET "RFC_AD_TXD<8>"               LOC = "A18"  | IOSTANDARD = "LVCMOS25";
608NET "RFC_AD_TXD<9>"               LOC = "L21"  | IOSTANDARD = "LVCMOS25";
609NET "RFC_AD_TXD<10>"              LOC = "L20"  | IOSTANDARD = "LVCMOS25";
610NET "RFC_AD_TXD<11>"              LOC = "D30"  | IOSTANDARD = "LVCMOS25";
[1955]611
612
[4648]613# TRXCLK pins driven by AD9963's; assuming 80MHz worst case
614NET "RFC_AD_TRXCLK"               TNM_NET = "RFC_AD_TRXCLK";
615TIMESPEC "TS_RFC_AD_TRXCLK" = PERIOD "RFC_AD_TRXCLK" 80 MHz;
[1955]616
617
[4648]618# Define relationship of TRXD and TRXCLK, based on AD9963 specs
619#     Using worst-case output delay from AD9963 datasheet table 23
620#     TRXCLK leads TRXD transition by t_OD2; ad_bridge uses IDELAY to shift this to mid valid window
621#     VALID window below assumes DDR interleaved I/Q at 40MSps rate (12.5nsec / half sample)
622INST "RFC_AD_TRXD<*>"             TNM = "RFC_AD_TRXD_group";
[1955]623
[4648]624NET "RFC_AD_TRXCLK"               TNM_NET = "RFC_AD_TRXCLK";
[2382]625TIMEGRP "RFC_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFC_AD_TRXCLK" RISING;
626TIMEGRP "RFC_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFC_AD_TRXCLK" FALLING;
627
[4648]628
629# MAX2829 transceivers and RF front end
630NET "RFC_SPI_SCLK"                LOC = "A29"  | IOSTANDARD = "LVCMOS25";
631NET "RFC_SPI_CSn"                 LOC = "B18"  | IOSTANDARD = "LVCMOS25";
632NET "RFC_SPI_MOSI"                LOC = "J22"  | IOSTANDARD = "LVCMOS25";
633
634NET "RFC_SHDN"                    LOC = "K22"  | IOSTANDARD = "LVCMOS25";
635NET "RFC_TXEN"                    LOC = "C18"  | IOSTANDARD = "LVCMOS25";
636NET "RFC_RXEN"                    LOC = "H22"  | IOSTANDARD = "LVCMOS25";
637NET "RFC_RXHP"                    LOC = "B28"  | IOSTANDARD = "LVCMOS25";
638NET "RFC_PAEn_24"                 LOC = "D14"  | IOSTANDARD = "LVCMOS25";
639NET "RFC_PAEn_5"                  LOC = "M12"  | IOSTANDARD = "LVCMOS25";
640NET "RFC_AntSw<0>"                LOC = "M11"  | IOSTANDARD = "LVCMOS25";
641NET "RFC_AntSw<1>"                LOC = "A13"  | IOSTANDARD = "LVCMOS25";
642NET "RFC_LD"                      LOC = "A28"  | IOSTANDARD = "LVCMOS25";
643
644NET "RFC_B<0>"                    LOC = "B30"  | IOSTANDARD = "LVCMOS25";
645NET "RFC_B<1>"                    LOC = "F28"  | IOSTANDARD = "LVCMOS25";
646NET "RFC_B<2>"                    LOC = "B31"  | IOSTANDARD = "LVCMOS25";
647NET "RFC_B<3>"                    LOC = "E28"  | IOSTANDARD = "LVCMOS25";
648NET "RFC_B<4>"                    LOC = "D25"  | IOSTANDARD = "LVCMOS25";
649NET "RFC_B<5>"                    LOC = "A30"  | IOSTANDARD = "LVCMOS25";
650NET "RFC_B<6>"                    LOC = "A31"  | IOSTANDARD = "LVCMOS25";
651
652
653# ###################################################################
654# RFD Ports (FMC-RF-2X245 RF Interface)
655# ###################################################################
656
657# AD9963 SPI
658NET "RFD_AD_spi_sclk"             LOC = "K17"  | IOSTANDARD = "LVCMOS25";
659NET "RFD_AD_spi_sdio"             LOC = "B17"  | IOSTANDARD = "LVCMOS25" | PULLDOWN;
660NET "RFD_AD_spi_cs_n"             LOC = "D15"  | IOSTANDARD = "LVCMOS25";
661NET "RFD_AD_reset_n"              LOC = "G15"  | IOSTANDARD = "LVCMOS25";
662
663# AD9963
664NET "RFD_AD_TRXD<0>"              LOC = "J16"  | IOSTANDARD = "LVCMOS25";
665NET "RFD_AD_TRXD<1>"              LOC = "H17"  | IOSTANDARD = "LVCMOS25";
666NET "RFD_AD_TRXD<2>"              LOC = "J17"  | IOSTANDARD = "LVCMOS25";
667NET "RFD_AD_TRXD<3>"              LOC = "L16"  | IOSTANDARD = "LVCMOS25";
668NET "RFD_AD_TRXD<4>"              LOC = "G18"  | IOSTANDARD = "LVCMOS25";
669NET "RFD_AD_TRXD<5>"              LOC = "M18"  | IOSTANDARD = "LVCMOS25";
670NET "RFD_AD_TRXD<6>"              LOC = "H18"  | IOSTANDARD = "LVCMOS25";
671NET "RFD_AD_TRXD<7>"              LOC = "M17"  | IOSTANDARD = "LVCMOS25";
672NET "RFD_AD_TRXD<8>"              LOC = "D17"  | IOSTANDARD = "LVCMOS25";
673NET "RFD_AD_TRXD<9>"              LOC = "J19"  | IOSTANDARD = "LVCMOS25";
674NET "RFD_AD_TRXD<10>"             LOC = "K19"  | IOSTANDARD = "LVCMOS25";
675NET "RFD_AD_TRXD<11>"             LOC = "E18"  | IOSTANDARD = "LVCMOS25";
676
677NET "RFD_AD_TRXCLK"               LOC = "L15"  | IOSTANDARD = "LVCMOS25";
678NET "RFD_AD_TRXIQ"                LOC = "K18"  | IOSTANDARD = "LVCMOS25";
679
680NET "RFD_AD_TXCLK"                LOC = "C17"  | IOSTANDARD = "LVCMOS25";
681NET "RFD_AD_TXIQ"                 LOC = "E17"  | IOSTANDARD = "LVCMOS25";
682
683NET "RFD_AD_TXD<0>"               LOC = "B16"  | IOSTANDARD = "LVCMOS25";
684NET "RFD_AD_TXD<1>"               LOC = "J15"  | IOSTANDARD = "LVCMOS25";
685NET "RFD_AD_TXD<2>"               LOC = "A16"  | IOSTANDARD = "LVCMOS25";
686NET "RFD_AD_TXD<3>"               LOC = "H15"  | IOSTANDARD = "LVCMOS25";
687NET "RFD_AD_TXD<4>"               LOC = "M15"  | IOSTANDARD = "LVCMOS25";
688NET "RFD_AD_TXD<5>"               LOC = "F15"  | IOSTANDARD = "LVCMOS25";
689NET "RFD_AD_TXD<6>"               LOC = "C15"  | IOSTANDARD = "LVCMOS25";
690NET "RFD_AD_TXD<7>"               LOC = "M16"  | IOSTANDARD = "LVCMOS25";
691NET "RFD_AD_TXD<8>"               LOC = "B15"  | IOSTANDARD = "LVCMOS25";
692NET "RFD_AD_TXD<9>"               LOC = "G16"  | IOSTANDARD = "LVCMOS25";
693NET "RFD_AD_TXD<10>"              LOC = "F18"  | IOSTANDARD = "LVCMOS25";
694NET "RFD_AD_TXD<11>"              LOC = "F16"  | IOSTANDARD = "LVCMOS25";
695
696
697# TRXCLK pins driven by AD9963's; assuming 80MHz worst case
698NET "RFD_AD_TRXCLK"               TNM_NET = "RFD_AD_TRXCLK";
699TIMESPEC "TS_RFD_AD_TRXCLK" = PERIOD "RFD_AD_TRXCLK" 80 MHz;
700
701
702# Define relationship of TRXD and TRXCLK, based on AD9963 specs
703#     Using worst-case output delay from AD9963 datasheet table 23
704#     TRXCLK leads TRXD transition by t_OD2; ad_bridge uses IDELAY to shift this to mid valid window
705#     VALID window below assumes DDR interleaved I/Q at 40MSps rate (12.5nsec / half sample)
706INST "RFD_AD_TRXD<*>"             TNM = "RFD_AD_TRXD_group";
707
708NET "RFD_AD_TRXCLK"               TNM_NET = "RFD_AD_TRXCLK";
[2382]709TIMEGRP "RFD_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFD_AD_TRXCLK" RISING;
710TIMEGRP "RFD_AD_TRXD_group" OFFSET = IN 0.7 ns VALID 10 ns BEFORE "RFD_AD_TRXCLK" FALLING;
711
[4648]712
713# MAX2829 transceivers and RF front end
714NET "RFD_SPI_SCLK"                LOC = "G10"  | IOSTANDARD = "LVCMOS25";
715NET "RFD_SPI_CSn"                 LOC = "K13"  | IOSTANDARD = "LVCMOS25";
716NET "RFD_SPI_MOSI"                LOC = "F11"  | IOSTANDARD = "LVCMOS25";
717
718NET "RFD_SHDN"                    LOC = "K11"  | IOSTANDARD = "LVCMOS25";
719NET "RFD_TXEN"                    LOC = "H10"  | IOSTANDARD = "LVCMOS25";
720NET "RFD_RXEN"                    LOC = "K12"  | IOSTANDARD = "LVCMOS25";
721NET "RFD_RXHP"                    LOC = "L13"  | IOSTANDARD = "LVCMOS25";
722NET "RFD_PAEn_24"                 LOC = "A14"  | IOSTANDARD = "LVCMOS25";
723NET "RFD_PAEn_5"                  LOC = "B13"  | IOSTANDARD = "LVCMOS25";
724NET "RFD_AntSw<0>"                LOC = "C14"  | IOSTANDARD = "LVCMOS25";
725NET "RFD_AntSw<1>"                LOC = "B12"  | IOSTANDARD = "LVCMOS25";
726NET "RFD_LD"                      LOC = "L11"  | IOSTANDARD = "LVCMOS25";
727
728NET "RFD_B<0>"                    LOC = "H12"  | IOSTANDARD = "LVCMOS25";
729NET "RFD_B<1>"                    LOC = "H13"  | IOSTANDARD = "LVCMOS25";
730NET "RFD_B<2>"                    LOC = "M13"  | IOSTANDARD = "LVCMOS25";
731NET "RFD_B<3>"                    LOC = "G12"  | IOSTANDARD = "LVCMOS25";
732NET "RFD_B<4>"                    LOC = "F14"  | IOSTANDARD = "LVCMOS25";
733NET "RFD_B<5>"                    LOC = "H14"  | IOSTANDARD = "LVCMOS25";
734NET "RFD_B<6>"                    LOC = "J12"  | IOSTANDARD = "LVCMOS25";
735
736
737# ###################################################################
738# RFC / RFD RSSI Ports
739# ###################################################################
740
741NET "FMC_RF_RSSI_CLK"             LOC = "G13"  | IOSTANDARD = "LVCMOS25";
742NET "FMC_RF_RSSI_PD"              LOC = "A21"  | IOSTANDARD = "LVCMOS25";
743
744NET "RFC_RSSI_D<0>"               LOC = "D21"  | IOSTANDARD = "LVCMOS25";
745NET "RFC_RSSI_D<1>"               LOC = "E19"  | IOSTANDARD = "LVCMOS25";
746NET "RFC_RSSI_D<2>"               LOC = "G20"  | IOSTANDARD = "LVCMOS25";
747NET "RFC_RSSI_D<3>"               LOC = "E22"  | IOSTANDARD = "LVCMOS25";
748NET "RFC_RSSI_D<4>"               LOC = "E23"  | IOSTANDARD = "LVCMOS25";
749NET "RFC_RSSI_D<5>"               LOC = "F21"  | IOSTANDARD = "LVCMOS25";
750NET "RFC_RSSI_D<6>"               LOC = "B20"  | IOSTANDARD = "LVCMOS25";
751NET "RFC_RSSI_D<7>"               LOC = "B23"  | IOSTANDARD = "LVCMOS25";
752NET "RFC_RSSI_D<8>"               LOC = "C19"  | IOSTANDARD = "LVCMOS25";
753NET "RFC_RSSI_D<9>"               LOC = "C23"  | IOSTANDARD = "LVCMOS25";
754
755NET "RFD_RSSI_D<0>"               LOC = "D19"  | IOSTANDARD = "LVCMOS25";
756NET "RFD_RSSI_D<1>"               LOC = "E21"  | IOSTANDARD = "LVCMOS25";
757NET "RFD_RSSI_D<2>"               LOC = "A23"  | IOSTANDARD = "LVCMOS25";
758NET "RFD_RSSI_D<3>"               LOC = "A24"  | IOSTANDARD = "LVCMOS25";
759NET "RFD_RSSI_D<4>"               LOC = "F19"  | IOSTANDARD = "LVCMOS25";
760NET "RFD_RSSI_D<5>"               LOC = "H19"  | IOSTANDARD = "LVCMOS25";
761NET "RFD_RSSI_D<6>"               LOC = "F20"  | IOSTANDARD = "LVCMOS25";
762NET "RFD_RSSI_D<7>"               LOC = "H20"  | IOSTANDARD = "LVCMOS25";
763NET "RFD_RSSI_D<8>"               LOC = "C20"  | IOSTANDARD = "LVCMOS25";
764NET "RFD_RSSI_D<9>"               LOC = "J20"  | IOSTANDARD = "LVCMOS25";
765
766
767# ###################################################################
768# Floor planning Information
769# ###################################################################
770
771INST "microblaze_0_ilmb"          AREA_GROUP = "MB_Subsystem";
772INST "microblaze_0_dlmb"          AREA_GROUP = "MB_Subsystem";
773INST "microblaze_0"               AREA_GROUP = "MB_Subsystem";
774INST "microblaze_0_i_bram_ctrl"   AREA_GROUP = "MB_Subsystem";
775INST "microblaze_0_d_bram_ctrl"   AREA_GROUP = "MB_Subsystem";
776INST "microblaze_0_bram_block"    AREA_GROUP = "MB_Subsystem";
[4691]777AREA_GROUP "MB_Subsystem"         RANGE      = SLICE_X84Y140:SLICE_X147Y198;
[4648]778
779INST "rfa_iq_rx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_AB";
780INST "rfa_iq_rx_buffer"           AREA_GROUP = "IQ_Buffers_AB";
781INST "rfa_iq_tx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_AB";
782INST "rfa_iq_tx_buffer"           AREA_GROUP = "IQ_Buffers_AB";
783INST "rfb_iq_rx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_AB";
784INST "rfb_iq_rx_buffer"           AREA_GROUP = "IQ_Buffers_AB";
785INST "rfb_iq_tx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_AB";
786INST "rfb_iq_tx_buffer"           AREA_GROUP = "IQ_Buffers_AB";
787
788INST "rfc_iq_rx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_CD";
789INST "rfc_iq_rx_buffer"           AREA_GROUP = "IQ_Buffers_CD";
790INST "rfc_iq_tx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_CD";
791INST "rfc_iq_tx_buffer"           AREA_GROUP = "IQ_Buffers_CD";
792INST "rfd_iq_rx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_CD";
793INST "rfd_iq_rx_buffer"           AREA_GROUP = "IQ_Buffers_CD";
794INST "rfd_iq_tx_buffer_ctrl"      AREA_GROUP = "IQ_Buffers_CD";
795INST "rfd_iq_tx_buffer"           AREA_GROUP = "IQ_Buffers_CD";
796
797INST "axi_interconnect_buffers"   AREA_GROUP = "IQ_Buffers_Interconnect";
798
799INST "axi_interconnect_core"      AREA_GROUP = "Interconnect_core";
800
801INST "axi_interconnect_dma"       AREA_GROUP = "ETH_Subsystem";
802INST "ETH_A_MAC"                  AREA_GROUP = "ETH_Subsystem";
803INST "ETH_A_DMA"                  AREA_GROUP = "ETH_Subsystem";
804INST "ETH_B_MAC"                  AREA_GROUP = "ETH_Subsystem";
805INST "ETH_B_DMA"                  AREA_GROUP = "ETH_Subsystem";
806
807INST "axi_cdma_0"                 AREA_GROUP = "CDMA";
808
809INST "warplab_buffers"            AREA_GROUP = "WL_BUFFERS";
810
811INST "warplab_agc"                AREA_GROUP = "WL_AGC";
812
813INST "warplab_trigger_proc"       AREA_GROUP = "WL_TRIGGER_PROC";
814
815INST "w3_clock_controller_0"      AREA_GROUP = "CLK_CONTROLLER";
816AREA_GROUP "CLK_CONTROLLER"       RANGE      = RAMB36_X0Y17:RAMB36_X3Y23;
817
818INST "DDR3_SODIMM"                AREA_GROUP = "DDR3_SODIMM";
819AREA_GROUP "DDR3_SODIMM"          RANGE      = SLICE_X62Y40:SLICE_X93Y80, SLICE_X0Y0:SLICE_X143Y39;
820
Note: See TracBrowser for help on using the repository browser.