691b049a959df8a867fefb27aa2639edbb933a02
[mw/milkymist.git] / boards / milkymist-one / synthesis / common.ucf
1 # ==== Clock input ====\r
2 NET "clk50" LOC = AB11 | IOSTANDARD = LVCMOS33;\r
3 \r
4 NET "clk50" TNM_NET = "GRPclk50";\r
5 TIMESPEC "TSclk50" = PERIOD "GRPclk50" 20 ns HIGH 50%;\r
6 \r
7 # ==== Flash ====\r
8 NET "flash_adr(0)" LOC = L22;\r
9 NET "flash_adr(1)" LOC = L20;\r
10 NET "flash_adr(2)" LOC = K22;\r
11 NET "flash_adr(3)" LOC = K21;\r
12 NET "flash_adr(4)" LOC = J19;\r
13 NET "flash_adr(5)" LOC = H20;\r
14 NET "flash_adr(6)" LOC = F22;\r
15 NET "flash_adr(7)" LOC = F21;\r
16 NET "flash_adr(8)" LOC = K17;\r
17 NET "flash_adr(9)" LOC = J17;\r
18 NET "flash_adr(10)" LOC = E22;\r
19 NET "flash_adr(11)" LOC = E20;\r
20 NET "flash_adr(12)" LOC = H18;\r
21 NET "flash_adr(13)" LOC = H19;\r
22 NET "flash_adr(14)" LOC = F20;\r
23 NET "flash_adr(15)" LOC = G19;\r
24 NET "flash_adr(16)" LOC = C22;\r
25 NET "flash_adr(17)" LOC = C20;\r
26 NET "flash_adr(18)" LOC = D22;\r
27 NET "flash_adr(19)" LOC = D21;\r
28 NET "flash_adr(20)" LOC = F19;\r
29 NET "flash_adr(21)" LOC = F18;\r
30 NET "flash_adr(22)" LOC = D20;\r
31 NET "flash_adr(23)" LOC = D19;\r
32 NET "flash_d(0)" LOC = AA20;\r
33 NET "flash_d(1)" LOC = U14;\r
34 NET "flash_d(2)" LOC = U13;\r
35 NET "flash_d(3)" LOC = AA6;\r
36 NET "flash_d(4)" LOC = AB6;\r
37 NET "flash_d(5)" LOC = W4;\r
38 NET "flash_d(6)" LOC = Y4;\r
39 NET "flash_d(7)" LOC = Y7;\r
40 NET "flash_d(8)" LOC = AA2;\r
41 NET "flash_d(9)" LOC = AB2;\r
42 NET "flash_d(10)" LOC = V15;\r
43 NET "flash_d(11)" LOC = AA18;\r
44 NET "flash_d(12)" LOC = AB18;\r
45 NET "flash_d(13)" LOC = Y13;\r
46 NET "flash_d(14)" LOC = AA12;\r
47 NET "flash_d(15)" LOC = AB12;\r
48 \r
49 NET "flash_adr(*)" IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
50 NET "flash_d(*)" IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 | PULLDOWN;\r
51 \r
52 NET "flash_ce_n" LOC = M21 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
53 NET "flash_oe_n" LOC = M22 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
54 NET "flash_we_n" LOC = N20 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
55 NET "flash_rst_n" LOC = P22 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
56 NET "flash_sts" LOC = R20 | IOSTANDARD = LVCMOS33 | PULLUP;\r
57 \r
58 # ==== UART ====\r
59 NET "uart_rx" LOC = K18 | IOSTANDARD = LVCMOS33 | PULLUP;\r
60 NET "uart_tx" LOC = L17 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
61 \r
62 # ==== Pushbuttons ====\r
63 NET "btn1" LOC = AB4 | IOSTANDARD = LVCMOS33;\r
64 NET "btn2" LOC = AA4 | IOSTANDARD = LVCMOS33;\r
65 NET "btn3" LOC = AB5 | IOSTANDARD = LVCMOS33;\r
66 \r
67 # ==== LEDs ====\r
68 NET "led1" LOC = B16 | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO | DRIVE = 24;\r
69 NET "led2" LOC = A16 | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO | DRIVE = 24;\r
70 \r
71 # ==== DDR SDRAM ====\r
72 NET "sdram_adr(0)" LOC = B1;\r
73 NET "sdram_adr(1)" LOC = B2;\r
74 NET "sdram_adr(2)" LOC = H8;\r
75 NET "sdram_adr(3)" LOC = J7;\r
76 NET "sdram_adr(4)" LOC = E4;\r
77 NET "sdram_adr(5)" LOC = D5;\r
78 NET "sdram_adr(6)" LOC = K7;\r
79 NET "sdram_adr(7)" LOC = F5;\r
80 NET "sdram_adr(8)" LOC = G6;\r
81 NET "sdram_adr(9)" LOC = C1;\r
82 NET "sdram_adr(10)" LOC = C3;\r
83 NET "sdram_adr(11)" LOC = D1;\r
84 NET "sdram_adr(12)" LOC = D2;\r
85 \r
86 NET "sdram_ba(0)" LOC = A2;\r
87 NET "sdram_ba(1)" LOC = E6;\r
88 \r
89 NET "sdram_adr(*)" IOSTANDARD = SSTL2_I;\r
90 NET "sdram_ba(*)" IOSTANDARD = SSTL2_I;\r
91 \r
92 NET "sdram_cas_n" LOC = C4 | IOSTANDARD = SSTL2_I;\r
93 NET "sdram_cke" LOC = G7 | IOSTANDARD = SSTL2_I;\r
94 NET "sdram_cs_n" LOC = F7 | IOSTANDARD = SSTL2_I;\r
95 NET "sdram_ras_n" LOC = E5 | IOSTANDARD = SSTL2_I;\r
96 NET "sdram_we_n" LOC = D3 | IOSTANDARD = SSTL2_I;\r
97 \r
98 NET "sdram_clk_p" LOC = M3 | IOSTANDARD = SSTL2_I;\r
99 NET "sdram_clk_n" LOC = L4 | IOSTANDARD = SSTL2_I;\r
100 \r
101 NET "sdram_dm(0)" LOC = E1;\r
102 NET "sdram_dm(1)" LOC = E3;\r
103 NET "sdram_dm(2)" LOC = F3;\r
104 NET "sdram_dm(3)" LOC = G4;\r
105 \r
106 NET "sdram_dqs(0)" LOC = F1;\r
107 NET "sdram_dqs(1)" LOC = F2;\r
108 NET "sdram_dqs(2)" LOC = H5;\r
109 NET "sdram_dqs(3)" LOC = H6;\r
110 \r
111 NET "sdram_dq(0)" LOC = Y2;\r
112 NET "sdram_dq(1)" LOC = W3;\r
113 NET "sdram_dq(2)" LOC = W1;\r
114 NET "sdram_dq(3)" LOC = P8;\r
115 NET "sdram_dq(4)" LOC = P7;\r
116 NET "sdram_dq(5)" LOC = P6;\r
117 NET "sdram_dq(6)" LOC = P5;\r
118 NET "sdram_dq(7)" LOC = T4;\r
119 NET "sdram_dq(8)" LOC = T3;\r
120 NET "sdram_dq(9)" LOC = U4;\r
121 NET "sdram_dq(10)" LOC = V3;\r
122 NET "sdram_dq(11)" LOC = N6;\r
123 NET "sdram_dq(12)" LOC = N7;\r
124 NET "sdram_dq(13)" LOC = M7;\r
125 NET "sdram_dq(14)" LOC = M8;\r
126 NET "sdram_dq(15)" LOC = R4;\r
127 NET "sdram_dq(16)" LOC = P4;\r
128 NET "sdram_dq(17)" LOC = M6;\r
129 NET "sdram_dq(18)" LOC = L6;\r
130 NET "sdram_dq(19)" LOC = P3;\r
131 NET "sdram_dq(20)" LOC = N4;\r
132 NET "sdram_dq(21)" LOC = M5;\r
133 NET "sdram_dq(22)" LOC = V2;\r
134 NET "sdram_dq(23)" LOC = V1;\r
135 NET "sdram_dq(24)" LOC = U3;\r
136 NET "sdram_dq(25)" LOC = U1;\r
137 NET "sdram_dq(26)" LOC = T2;\r
138 NET "sdram_dq(27)" LOC = T1;\r
139 NET "sdram_dq(28)" LOC = R3;\r
140 NET "sdram_dq(29)" LOC = R1;\r
141 NET "sdram_dq(30)" LOC = P2;\r
142 NET "sdram_dq(31)" LOC = P1;\r
143 \r
144 NET "sdram_dqs(*)" IOSTANDARD = SSTL2_I;\r
145 NET "sdram_dm(*)" IOSTANDARD = SSTL2_I;\r
146 NET "sdram_dq(*)" IOSTANDARD = SSTL2_I;\r
147 \r
148 # ==== VGA ====\r
149 NET "vga_b(0)" LOC = D11;\r
150 NET "vga_b(1)" LOC = C12;\r
151 NET "vga_b(2)" LOC = B12;\r
152 NET "vga_b(3)" LOC = A12;\r
153 NET "vga_b(4)" LOC = C13;\r
154 NET "vga_b(5)" LOC = A13;\r
155 NET "vga_b(6)" LOC = D14;\r
156 NET "vga_b(7)" LOC = C14;\r
157 NET "vga_g(0)" LOC = C8;\r
158 NET "vga_g(1)" LOC = C9;\r
159 NET "vga_g(2)" LOC = A9;\r
160 NET "vga_g(3)" LOC = D7;\r
161 NET "vga_g(4)" LOC = D8;\r
162 NET "vga_g(5)" LOC = D10;\r
163 NET "vga_g(6)" LOC = C10;\r
164 NET "vga_g(7)" LOC = B10;\r
165 NET "vga_r(0)" LOC = C6;\r
166 NET "vga_r(1)" LOC = B6;\r
167 NET "vga_r(2)" LOC = A6;\r
168 NET "vga_r(3)" LOC = C7;\r
169 NET "vga_r(4)" LOC = A7;\r
170 NET "vga_r(5)" LOC = B8;\r
171 NET "vga_r(6)" LOC = A8;\r
172 NET "vga_r(7)" LOC = D9;\r
173 \r
174 NET "vga_r(*)" IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
175 NET "vga_g(*)" IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
176 NET "vga_b(*)" IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
177 \r
178 NET "vga_hsync_n" LOC = A14 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
179 NET "vga_vsync_n" LOC = C15 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
180 NET "vga_clk" LOC = A11 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
181 NET "vga_psave_n" LOC = B14 | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;\r
182 \r
183 NET "vga_sda" LOC = A15 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
184 NET "vga_sdc" LOC = D15 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
185 \r
186 # ==== Memory card ====\r
187 NET "mc_d(0)" LOC = A18;\r
188 NET "mc_d(1)" LOC = E16;\r
189 NET "mc_d(2)" LOC = C17;\r
190 NET "mc_d(3)" LOC = A17;\r
191 NET "mc_cmd" LOC = B18 | IOSTANDARD = LVCMOS33 | PULLUP;\r
192 NET "mc_clk" LOC = A10 | IOSTANDARD = LVCMOS33;\r
193 NET "mc_d(*)" IOSTANDARD = LVCMOS33 | PULLUP;\r
194 \r
195 # ==== AC97 ====\r
196 NET "ac97_clk" LOC = C11 | IOSTANDARD = LVCMOS33;\r
197 NET "ac97_sin" LOC = C5 | IOSTANDARD = LVCMOS33;\r
198 NET "ac97_sout" LOC = A4 | IOSTANDARD = LVCMOS33;\r
199 NET "ac97_sync" LOC = A5 | IOSTANDARD = LVCMOS33;\r
200 NET "ac97_rst_n" LOC = D6 | IOSTANDARD = LVCMOS33;\r
201 \r
202 NET "ac97_clk" TNM_NET = "GRPac97_clk";\r
203 TIMESPEC "TSac97_clk" = PERIOD "GRPac97_clk" 80 HIGH 50%;\r
204 \r
205 # ==== USB ====\r
206 NET "usba_spd" LOC = Y5 | IOSTANDARD = LVCMOS33;\r
207 NET "usba_oe_n" LOC = Y6 | IOSTANDARD = LVCMOS33;\r
208 NET "usba_rcv" LOC = V5 | IOSTANDARD = LVCMOS33;\r
209 NET "usba_vp" LOC = U6 | IOSTANDARD = LVCMOS33;\r
210 NET "usba_vm" LOC = R7 | IOSTANDARD = LVCMOS33;\r
211 \r
212 NET "usbb_spd" LOC = T7 | IOSTANDARD = LVCMOS33;\r
213 NET "usbb_oe_n" LOC = R8 | IOSTANDARD = LVCMOS33;\r
214 NET "usbb_rcv" LOC = R9 | IOSTANDARD = LVCMOS33;\r
215 NET "usbb_vp" LOC = AB3 | IOSTANDARD = LVCMOS33;\r
216 NET "usbb_vm" LOC = Y3 | IOSTANDARD = LVCMOS33;\r
217 \r
218 # ==== Ethernet ====\r
219 NET "phy_irq_n" LOC = L19 | IOSTANDARD = LVCMOS33;\r
220 NET "phy_rst_n" LOC = R22 | IOSTANDARD = LVCMOS33;\r
221 NET "phy_mii_clk" LOC = J20 | IOSTANDARD = LVCMOS33;\r
222 NET "phy_mii_data" LOC = J22 | IOSTANDARD = LVCMOS33;\r
223 \r
224 NET "phy_dv" LOC = V21 | IOSTANDARD = LVCMOS33;\r
225 NET "phy_rx_clk" LOC = H22 | IOSTANDARD = LVCMOS33;\r
226 NET "phy_rx_er" LOC = V22 | IOSTANDARD = LVCMOS33;\r
227 NET "phy_rx_data(0)" LOC = U22;\r
228 NET "phy_rx_data(1)" LOC = U20;\r
229 NET "phy_rx_data(2)" LOC = T22;\r
230 NET "phy_rx_data(3)" LOC = T21;\r
231 NET "phy_rx_data(*)" IOSTANDARD = LVCMOS33;\r
232 \r
233 NET "phy_tx_en" LOC = N19 | IOSTANDARD = LVCMOS33;\r
234 NET "phy_tx_clk" LOC = H21 | IOSTANDARD = LVCMOS33;\r
235 NET "phy_tx_er" LOC = M19 | IOSTANDARD = LVCMOS33;\r
236 NET "phy_tx_data(0)" LOC = M16;\r
237 NET "phy_tx_data(1)" LOC = L15;\r
238 NET "phy_tx_data(2)" LOC = P19;\r
239 NET "phy_tx_data(3)" LOC = P20;\r
240 NET "phy_tx_data(*)" IOSTANDARD = LVCMOS33;\r
241 \r
242 NET "phy_col" LOC = W20 | IOSTANDARD = LVCMOS33;\r
243 NET "phy_crs" LOC = W22 | IOSTANDARD = LVCMOS33;\r
244 \r
245 NET "phy_clk" LOC = M20 | IOSTANDARD = LVCMOS33;\r
246 \r
247 # Timing\r
248 NET "phy_rx_clk" TNM_NET = "GRPphy_rx_clk";\r
249 NET "phy_tx_clk" TNM_NET = "GRPphy_tx_clk";\r
250 TIMESPEC "TSphy_tx_clk" = FROM "GRPphy_tx_clk" TO "PADS" 10 ns;\r
251 TIMESPEC "TSphy_rx_clk" = FROM "PADS" TO "GRPphy_rx_clk" 6 ns;\r
252 \r
253 NET "phy_tx_clk" MAXSKEW = 1.0 ns;\r
254 NET "phy_rx_clk" MAXSKEW = 1.0 ns;\r
255 NET "phy_rx_clk" PERIOD = 40 ns HIGH 14 ns;\r
256 NET "phy_tx_clk" PERIOD = 40 ns HIGH 14 ns;\r
257 \r
258 NET "phy_rx_data(0)" IOBDELAY = NONE;\r
259 NET "phy_rx_data(1)" IOBDELAY = NONE;\r
260 NET "phy_rx_data(2)" IOBDELAY = NONE;\r
261 NET "phy_rx_data(3)" IOBDELAY = NONE;\r
262 \r
263 NET "phy_dv" IOBDELAY = NONE;\r
264 NET "phy_rx_er" IOBDELAY = NONE;\r
265 NET "phy_crs" IOBDELAY = NONE;\r
266 NET "phy_col" IOBDELAY = NONE;\r
267 \r
268 # ==== Video input ====\r
269 NET "videoin_p(0)" LOC = Y18;\r
270 NET "videoin_p(1)" LOC = T16;\r
271 NET "videoin_p(2)" LOC = T15;\r
272 NET "videoin_p(3)" LOC = U17;\r
273 NET "videoin_p(4)" LOC = U16;\r
274 NET "videoin_p(5)" LOC = V19;\r
275 NET "videoin_p(6)" LOC = V18;\r
276 NET "videoin_p(7)" LOC = R16;\r
277 NET "videoin_p(*)" IOSTANDARD = LVCMOS33;\r
278 \r
279 NET "videoin_hs" LOC = V17 | IOSTANDARD = LVCMOS33;\r
280 NET "videoin_vs" LOC = Y17 | IOSTANDARD = LVCMOS33;\r
281 NET "videoin_field" LOC = AB14 | IOSTANDARD = LVCMOS33;\r
282 NET "videoin_llc" LOC = Y11 | IOSTANDARD = LVCMOS33;\r
283 \r
284 NET "videoin_irq_n" LOC = R15 | IOSTANDARD = LVCMOS33;\r
285 NET "videoin_rst_n" LOC = W17 | IOSTANDARD = LVCMOS33;\r
286 NET "videoin_sda" LOC = AB17 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | PULLUP;\r
287 NET "videoin_sdc" LOC = AA14 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
288 \r
289 # ==== MIDI ====\r
290 NET "midi_tx" LOC = AA21 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
291 NET "midi_rx" LOC = AB21 | IOSTANDARD = LVCMOS33;\r
292 \r
293 # ==== DMX ====\r
294 NET "dmxa_r" LOC = AB20 | IOSTANDARD = LVCMOS33;\r
295 NET "dmxa_de" LOC = T18 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
296 NET "dmxa_d" LOC = T17 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
297 \r
298 NET "dmxb_r" LOC = Y19 | IOSTANDARD = LVCMOS33;\r
299 NET "dmxb_de" LOC = AB19 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
300 NET "dmxb_d" LOC = W18 | IOSTANDARD = LVCMOS33 | SLEW = SLOW;\r
301 \r
302 # ==== IR ====\r
303 NET "ir_rx" LOC = C16 | IOSTANDARD = LVCMOS33;\r
304 \r
305 # ==== Expansion connector ====\r
306 NET "exp(0)" LOC = A20;\r
307 NET "exp(1)" LOC = F16;\r
308 NET "exp(2)" LOC = A21;\r
309 NET "exp(3)" LOC = F17;\r
310 NET "exp(4)" LOC = B21;\r
311 NET "exp(5)" LOC = H16;\r
312 NET "exp(6)" LOC = B22;\r
313 NET "exp(7)" LOC = H17;\r
314 NET "exp(8)" LOC = G16;\r
315 NET "exp(9)" LOC = J16;\r
316 NET "exp(10)" LOC = G17;\r
317 NET "exp(11)" LOC = K16;\r
318 \r
319 NET "exp(*)" IOSTANDARD = LVCMOS33;\r
320 \r
321 # avoid floating signals\r
322 NET "exp(*)" PULLDOWN;\r
323 \r
324 # ==== Timing fixes ====\r
325 NET "sys_clk" TNM_NET = "GRPsys";\r
326 NET "vga/vga_iclk" TNM_NET = "GRPvga";\r
327 TIMESPEC "TSvga_async1" = FROM "GRPsys" TO "GRPvga" TIG;\r
328 TIMESPEC "TSvga_async2" = FROM "GRPvga" TO "GRPsys" TIG;\r
329 \r
330 TIMESPEC "TSac97_async1" = FROM "GRPsys" TO "GRPac97_clk" TIG;\r
331 TIMESPEC "TSac97_async2" = FROM "GRPac97_clk" TO "GRPsys" TIG;\r