Add variable to control what program gets flashed to FPGA.
[freedom-sifive.git] / fpga / e300artydevkit / src / system.v
1 `timescale 1ns/1ps
2
3 module system
4 (
5 input wire CLK100MHZ,
6 input wire ck_rst,
7
8 // Green LEDs
9 inout wire led_0,
10 inout wire led_1,
11 inout wire led_2,
12 inout wire led_3,
13
14 // RGB LEDs, 3 pins each
15 output wire led0_r,
16 output wire led0_g,
17 output wire led0_b,
18 output wire led1_r,
19 output wire led1_g,
20 output wire led1_b,
21 output wire led2_r,
22 output wire led2_g,
23 output wire led2_b,
24
25 // Sliding switches, 3 used as GPIOs
26 // sw_3 selects input to UART0
27 inout wire sw_0,
28 inout wire sw_1,
29 inout wire sw_2,
30 input wire sw_3,
31
32 // Buttons. First 3 used as GPIOs, the last is used as wakeup
33 inout wire btn_0,
34 inout wire btn_1,
35 inout wire btn_2,
36 inout wire btn_3,
37
38 // Dedicated QSPI interface
39 output wire qspi_cs,
40 output wire qspi_sck,
41 inout wire [3:0] qspi_dq,
42
43 // UART0 (GPIO 16,17)
44 output wire uart_rxd_out,
45 input wire uart_txd_in,
46
47 // UART1 (GPIO 24,25) (not present on 48-pin)
48 inout wire ja_0,
49 inout wire ja_1,
50
51 // Arduino (aka chipkit) shield digital IO pins, 14 is not connected to the
52 // chip, used for debug.
53 inout wire [19:0] ck_io,
54
55 // Dedicated SPI pins on 6 pin header standard on later arduino models
56 // connected to SPI2 (on FPGA)
57 inout wire ck_miso,
58 inout wire ck_mosi,
59 inout wire ck_ss,
60 inout wire ck_sck,
61
62 // JD (used for JTAG connection)
63 inout wire jd_0, // TDO
64 inout wire jd_1, // TRST_n
65 inout wire jd_2, // TCK
66 inout wire jd_4, // TDI
67 inout wire jd_5, // TMS
68 input wire jd_6 // SRST_n
69 );
70
71 wire clk_out1;
72 wire hfclk;
73 wire mmcm_locked;
74
75 wire reset_core;
76 wire reset_bus;
77 wire reset_periph;
78 wire reset_intcon_n;
79 wire reset_periph_n;
80
81 // All wires connected to the chip top
82 wire dut_clock;
83 wire dut_reset;
84 wire dut_io_pads_jtag_TCK_i_ival;
85 wire dut_io_pads_jtag_TCK_o_oval;
86 wire dut_io_pads_jtag_TCK_o_oe;
87 wire dut_io_pads_jtag_TCK_o_ie;
88 wire dut_io_pads_jtag_TCK_o_pue;
89 wire dut_io_pads_jtag_TCK_o_ds;
90 wire dut_io_pads_jtag_TMS_i_ival;
91 wire dut_io_pads_jtag_TMS_o_oval;
92 wire dut_io_pads_jtag_TMS_o_oe;
93 wire dut_io_pads_jtag_TMS_o_ie;
94 wire dut_io_pads_jtag_TMS_o_pue;
95 wire dut_io_pads_jtag_TMS_o_ds;
96 wire dut_io_pads_jtag_TDI_i_ival;
97 wire dut_io_pads_jtag_TDI_o_oval;
98 wire dut_io_pads_jtag_TDI_o_oe;
99 wire dut_io_pads_jtag_TDI_o_ie;
100 wire dut_io_pads_jtag_TDI_o_pue;
101 wire dut_io_pads_jtag_TDI_o_ds;
102 wire dut_io_pads_jtag_TDO_i_ival;
103 wire dut_io_pads_jtag_TDO_o_oval;
104 wire dut_io_pads_jtag_TDO_o_oe;
105 wire dut_io_pads_jtag_TDO_o_ie;
106 wire dut_io_pads_jtag_TDO_o_pue;
107 wire dut_io_pads_jtag_TDO_o_ds;
108 wire dut_io_pads_jtag_TRST_n_i_ival;
109 wire dut_io_pads_jtag_TRST_n_o_oval;
110 wire dut_io_pads_jtag_TRST_n_o_oe;
111 wire dut_io_pads_jtag_TRST_n_o_ie;
112 wire dut_io_pads_jtag_TRST_n_o_pue;
113 wire dut_io_pads_jtag_TRST_n_o_ds;
114 wire dut_io_pads_gpio_0_i_ival;
115 wire dut_io_pads_gpio_0_o_oval;
116 wire dut_io_pads_gpio_0_o_oe;
117 wire dut_io_pads_gpio_0_o_ie;
118 wire dut_io_pads_gpio_0_o_pue;
119 wire dut_io_pads_gpio_0_o_ds;
120 wire dut_io_pads_gpio_1_i_ival;
121 wire dut_io_pads_gpio_1_o_oval;
122 wire dut_io_pads_gpio_1_o_oe;
123 wire dut_io_pads_gpio_1_o_ie;
124 wire dut_io_pads_gpio_1_o_pue;
125 wire dut_io_pads_gpio_1_o_ds;
126 wire dut_io_pads_gpio_2_i_ival;
127 wire dut_io_pads_gpio_2_o_oval;
128 wire dut_io_pads_gpio_2_o_oe;
129 wire dut_io_pads_gpio_2_o_ie;
130 wire dut_io_pads_gpio_2_o_pue;
131 wire dut_io_pads_gpio_2_o_ds;
132 wire dut_io_pads_gpio_3_i_ival;
133 wire dut_io_pads_gpio_3_o_oval;
134 wire dut_io_pads_gpio_3_o_oe;
135 wire dut_io_pads_gpio_3_o_ie;
136 wire dut_io_pads_gpio_3_o_pue;
137 wire dut_io_pads_gpio_3_o_ds;
138 wire dut_io_pads_gpio_4_i_ival;
139 wire dut_io_pads_gpio_4_o_oval;
140 wire dut_io_pads_gpio_4_o_oe;
141 wire dut_io_pads_gpio_4_o_ie;
142 wire dut_io_pads_gpio_4_o_pue;
143 wire dut_io_pads_gpio_4_o_ds;
144 wire dut_io_pads_gpio_5_i_ival;
145 wire dut_io_pads_gpio_5_o_oval;
146 wire dut_io_pads_gpio_5_o_oe;
147 wire dut_io_pads_gpio_5_o_ie;
148 wire dut_io_pads_gpio_5_o_pue;
149 wire dut_io_pads_gpio_5_o_ds;
150 wire dut_io_pads_gpio_6_i_ival;
151 wire dut_io_pads_gpio_6_o_oval;
152 wire dut_io_pads_gpio_6_o_oe;
153 wire dut_io_pads_gpio_6_o_ie;
154 wire dut_io_pads_gpio_6_o_pue;
155 wire dut_io_pads_gpio_6_o_ds;
156 wire dut_io_pads_gpio_7_i_ival;
157 wire dut_io_pads_gpio_7_o_oval;
158 wire dut_io_pads_gpio_7_o_oe;
159 wire dut_io_pads_gpio_7_o_ie;
160 wire dut_io_pads_gpio_7_o_pue;
161 wire dut_io_pads_gpio_7_o_ds;
162 wire dut_io_pads_gpio_8_i_ival;
163 wire dut_io_pads_gpio_8_o_oval;
164 wire dut_io_pads_gpio_8_o_oe;
165 wire dut_io_pads_gpio_8_o_ie;
166 wire dut_io_pads_gpio_8_o_pue;
167 wire dut_io_pads_gpio_8_o_ds;
168 wire dut_io_pads_gpio_9_i_ival;
169 wire dut_io_pads_gpio_9_o_oval;
170 wire dut_io_pads_gpio_9_o_oe;
171 wire dut_io_pads_gpio_9_o_ie;
172 wire dut_io_pads_gpio_9_o_pue;
173 wire dut_io_pads_gpio_9_o_ds;
174 wire dut_io_pads_gpio_10_i_ival;
175 wire dut_io_pads_gpio_10_o_oval;
176 wire dut_io_pads_gpio_10_o_oe;
177 wire dut_io_pads_gpio_10_o_ie;
178 wire dut_io_pads_gpio_10_o_pue;
179 wire dut_io_pads_gpio_10_o_ds;
180 wire dut_io_pads_gpio_11_i_ival;
181 wire dut_io_pads_gpio_11_o_oval;
182 wire dut_io_pads_gpio_11_o_oe;
183 wire dut_io_pads_gpio_11_o_ie;
184 wire dut_io_pads_gpio_11_o_pue;
185 wire dut_io_pads_gpio_11_o_ds;
186 wire dut_io_pads_gpio_12_i_ival;
187 wire dut_io_pads_gpio_12_o_oval;
188 wire dut_io_pads_gpio_12_o_oe;
189 wire dut_io_pads_gpio_12_o_ie;
190 wire dut_io_pads_gpio_12_o_pue;
191 wire dut_io_pads_gpio_12_o_ds;
192 wire dut_io_pads_gpio_13_i_ival;
193 wire dut_io_pads_gpio_13_o_oval;
194 wire dut_io_pads_gpio_13_o_oe;
195 wire dut_io_pads_gpio_13_o_ie;
196 wire dut_io_pads_gpio_13_o_pue;
197 wire dut_io_pads_gpio_13_o_ds;
198 wire dut_io_pads_gpio_14_i_ival;
199 wire dut_io_pads_gpio_14_o_oval;
200 wire dut_io_pads_gpio_14_o_oe;
201 wire dut_io_pads_gpio_14_o_ie;
202 wire dut_io_pads_gpio_14_o_pue;
203 wire dut_io_pads_gpio_14_o_ds;
204 wire dut_io_pads_gpio_15_i_ival;
205 wire dut_io_pads_gpio_15_o_oval;
206 wire dut_io_pads_gpio_15_o_oe;
207 wire dut_io_pads_gpio_15_o_ie;
208 wire dut_io_pads_gpio_15_o_pue;
209 wire dut_io_pads_gpio_15_o_ds;
210 wire dut_io_pads_gpio_16_i_ival;
211 wire dut_io_pads_gpio_16_o_oval;
212 wire dut_io_pads_gpio_16_o_oe;
213 wire dut_io_pads_gpio_16_o_ie;
214 wire dut_io_pads_gpio_16_o_pue;
215 wire dut_io_pads_gpio_16_o_ds;
216 wire dut_io_pads_gpio_17_i_ival;
217 wire dut_io_pads_gpio_17_o_oval;
218 wire dut_io_pads_gpio_17_o_oe;
219 wire dut_io_pads_gpio_17_o_ie;
220 wire dut_io_pads_gpio_17_o_pue;
221 wire dut_io_pads_gpio_17_o_ds;
222 wire dut_io_pads_gpio_18_i_ival;
223 wire dut_io_pads_gpio_18_o_oval;
224 wire dut_io_pads_gpio_18_o_oe;
225 wire dut_io_pads_gpio_18_o_ie;
226 wire dut_io_pads_gpio_18_o_pue;
227 wire dut_io_pads_gpio_18_o_ds;
228 wire dut_io_pads_gpio_19_i_ival;
229 wire dut_io_pads_gpio_19_o_oval;
230 wire dut_io_pads_gpio_19_o_oe;
231 wire dut_io_pads_gpio_19_o_ie;
232 wire dut_io_pads_gpio_19_o_pue;
233 wire dut_io_pads_gpio_19_o_ds;
234 wire dut_io_pads_gpio_20_i_ival;
235 wire dut_io_pads_gpio_20_o_oval;
236 wire dut_io_pads_gpio_20_o_oe;
237 wire dut_io_pads_gpio_20_o_ie;
238 wire dut_io_pads_gpio_20_o_pue;
239 wire dut_io_pads_gpio_20_o_ds;
240 wire dut_io_pads_gpio_21_i_ival;
241 wire dut_io_pads_gpio_21_o_oval;
242 wire dut_io_pads_gpio_21_o_oe;
243 wire dut_io_pads_gpio_21_o_ie;
244 wire dut_io_pads_gpio_21_o_pue;
245 wire dut_io_pads_gpio_21_o_ds;
246 wire dut_io_pads_gpio_22_i_ival;
247 wire dut_io_pads_gpio_22_o_oval;
248 wire dut_io_pads_gpio_22_o_oe;
249 wire dut_io_pads_gpio_22_o_ie;
250 wire dut_io_pads_gpio_22_o_pue;
251 wire dut_io_pads_gpio_22_o_ds;
252 wire dut_io_pads_gpio_23_i_ival;
253 wire dut_io_pads_gpio_23_o_oval;
254 wire dut_io_pads_gpio_23_o_oe;
255 wire dut_io_pads_gpio_23_o_ie;
256 wire dut_io_pads_gpio_23_o_pue;
257 wire dut_io_pads_gpio_23_o_ds;
258 wire dut_io_pads_gpio_24_i_ival;
259 wire dut_io_pads_gpio_24_o_oval;
260 wire dut_io_pads_gpio_24_o_oe;
261 wire dut_io_pads_gpio_24_o_ie;
262 wire dut_io_pads_gpio_24_o_pue;
263 wire dut_io_pads_gpio_24_o_ds;
264 wire dut_io_pads_gpio_25_i_ival;
265 wire dut_io_pads_gpio_25_o_oval;
266 wire dut_io_pads_gpio_25_o_oe;
267 wire dut_io_pads_gpio_25_o_ie;
268 wire dut_io_pads_gpio_25_o_pue;
269 wire dut_io_pads_gpio_25_o_ds;
270 wire dut_io_pads_gpio_26_i_ival;
271 wire dut_io_pads_gpio_26_o_oval;
272 wire dut_io_pads_gpio_26_o_oe;
273 wire dut_io_pads_gpio_26_o_ie;
274 wire dut_io_pads_gpio_26_o_pue;
275 wire dut_io_pads_gpio_26_o_ds;
276 wire dut_io_pads_gpio_27_i_ival;
277 wire dut_io_pads_gpio_27_o_oval;
278 wire dut_io_pads_gpio_27_o_oe;
279 wire dut_io_pads_gpio_27_o_ie;
280 wire dut_io_pads_gpio_27_o_pue;
281 wire dut_io_pads_gpio_27_o_ds;
282 wire dut_io_pads_gpio_28_i_ival;
283 wire dut_io_pads_gpio_28_o_oval;
284 wire dut_io_pads_gpio_28_o_oe;
285 wire dut_io_pads_gpio_28_o_ie;
286 wire dut_io_pads_gpio_28_o_pue;
287 wire dut_io_pads_gpio_28_o_ds;
288 wire dut_io_pads_gpio_29_i_ival;
289 wire dut_io_pads_gpio_29_o_oval;
290 wire dut_io_pads_gpio_29_o_oe;
291 wire dut_io_pads_gpio_29_o_ie;
292 wire dut_io_pads_gpio_29_o_pue;
293 wire dut_io_pads_gpio_29_o_ds;
294 wire dut_io_pads_gpio_30_i_ival;
295 wire dut_io_pads_gpio_30_o_oval;
296 wire dut_io_pads_gpio_30_o_oe;
297 wire dut_io_pads_gpio_30_o_ie;
298 wire dut_io_pads_gpio_30_o_pue;
299 wire dut_io_pads_gpio_30_o_ds;
300 wire dut_io_pads_gpio_31_i_ival;
301 wire dut_io_pads_gpio_31_o_oval;
302 wire dut_io_pads_gpio_31_o_oe;
303 wire dut_io_pads_gpio_31_o_ie;
304 wire dut_io_pads_gpio_31_o_pue;
305 wire dut_io_pads_gpio_31_o_ds;
306 wire dut_io_pads_qspi_sck_i_ival;
307 wire dut_io_pads_qspi_sck_o_oval;
308 wire dut_io_pads_qspi_sck_o_oe;
309 wire dut_io_pads_qspi_sck_o_ie;
310 wire dut_io_pads_qspi_sck_o_pue;
311 wire dut_io_pads_qspi_sck_o_ds;
312 wire dut_io_pads_qspi_dq_0_i_ival;
313 wire dut_io_pads_qspi_dq_0_o_oval;
314 wire dut_io_pads_qspi_dq_0_o_oe;
315 wire dut_io_pads_qspi_dq_0_o_ie;
316 wire dut_io_pads_qspi_dq_0_o_pue;
317 wire dut_io_pads_qspi_dq_0_o_ds;
318 wire dut_io_pads_qspi_dq_1_i_ival;
319 wire dut_io_pads_qspi_dq_1_o_oval;
320 wire dut_io_pads_qspi_dq_1_o_oe;
321 wire dut_io_pads_qspi_dq_1_o_ie;
322 wire dut_io_pads_qspi_dq_1_o_pue;
323 wire dut_io_pads_qspi_dq_1_o_ds;
324 wire dut_io_pads_qspi_dq_2_i_ival;
325 wire dut_io_pads_qspi_dq_2_o_oval;
326 wire dut_io_pads_qspi_dq_2_o_oe;
327 wire dut_io_pads_qspi_dq_2_o_ie;
328 wire dut_io_pads_qspi_dq_2_o_pue;
329 wire dut_io_pads_qspi_dq_2_o_ds;
330 wire dut_io_pads_qspi_dq_3_i_ival;
331 wire dut_io_pads_qspi_dq_3_o_oval;
332 wire dut_io_pads_qspi_dq_3_o_oe;
333 wire dut_io_pads_qspi_dq_3_o_ie;
334 wire dut_io_pads_qspi_dq_3_o_pue;
335 wire dut_io_pads_qspi_dq_3_o_ds;
336 wire dut_io_pads_qspi_cs_0_i_ival;
337 wire dut_io_pads_qspi_cs_0_o_oval;
338 wire dut_io_pads_qspi_cs_0_o_oe;
339 wire dut_io_pads_qspi_cs_0_o_ie;
340 wire dut_io_pads_qspi_cs_0_o_pue;
341 wire dut_io_pads_qspi_cs_0_o_ds;
342 wire dut_io_pads_aon_erst_n_i_ival;
343 wire dut_io_pads_aon_erst_n_o_oval;
344 wire dut_io_pads_aon_erst_n_o_oe;
345 wire dut_io_pads_aon_erst_n_o_ie;
346 wire dut_io_pads_aon_erst_n_o_pue;
347 wire dut_io_pads_aon_erst_n_o_ds;
348 wire dut_io_pads_aon_lfextclk_i_ival;
349 wire dut_io_pads_aon_lfextclk_o_oval;
350 wire dut_io_pads_aon_lfextclk_o_oe;
351 wire dut_io_pads_aon_lfextclk_o_ie;
352 wire dut_io_pads_aon_lfextclk_o_pue;
353 wire dut_io_pads_aon_lfextclk_o_ds;
354 wire dut_io_pads_aon_pmu_dwakeup_n_i_ival;
355 wire dut_io_pads_aon_pmu_dwakeup_n_o_oval;
356 wire dut_io_pads_aon_pmu_dwakeup_n_o_oe;
357 wire dut_io_pads_aon_pmu_dwakeup_n_o_ie;
358 wire dut_io_pads_aon_pmu_dwakeup_n_o_pue;
359 wire dut_io_pads_aon_pmu_dwakeup_n_o_ds;
360 wire dut_io_pads_aon_pmu_vddpaden_i_ival;
361 wire dut_io_pads_aon_pmu_vddpaden_o_oval;
362 wire dut_io_pads_aon_pmu_vddpaden_o_oe;
363 wire dut_io_pads_aon_pmu_vddpaden_o_ie;
364 wire dut_io_pads_aon_pmu_vddpaden_o_pue;
365 wire dut_io_pads_aon_pmu_vddpaden_o_ds;
366
367 //=================================================
368 // Clock & Reset
369
370 wire SRST_n; // From FTDI Chip
371
372 mmcm ip_mmcm
373 (
374 .clk_in1(CLK100MHZ),
375 .clk_out1(clk_out1), // 8.388 MHz = 32.768 kHz * 256
376 .clk_out2(hfclk), // 65 MHz
377 .resetn(ck_rst),
378 .locked(mmcm_locked)
379 );
380
381 wire slowclk;
382 clkdivider slowclkgen
383 (
384 .clk(clk_out1),
385 .reset(~mmcm_locked),
386 .clk_out(slowclk)
387 );
388
389 reset_sys ip_reset_sys
390 (
391 .slowest_sync_clk(clk_out1),
392 .ext_reset_in(ck_rst & SRST_n), // Active-low
393 .aux_reset_in(1'b1),
394 .mb_debug_sys_rst(1'b0),
395 .dcm_locked(mmcm_locked),
396 .mb_reset(reset_core),
397 .bus_struct_reset(reset_bus),
398 .peripheral_reset(reset_periph),
399 .interconnect_aresetn(reset_intcon_n),
400 .peripheral_aresetn(reset_periph_n)
401 );
402
403 //=================================================
404 // SPI Interface
405
406 wire [3:0] qspi_ui_dq_o, qspi_ui_dq_oe;
407 wire [3:0] qspi_ui_dq_i;
408
409 PULLUP qspi_pullup[3:0]
410 (
411 .O(qspi_dq)
412 );
413
414 IOBUF qspi_iobuf[3:0]
415 (
416 .IO(qspi_dq),
417 .O(qspi_ui_dq_i),
418 .I(qspi_ui_dq_o),
419 .T(~qspi_ui_dq_oe)
420 );
421
422 //=================================================
423 // IOBUF instantiation for GPIOs
424
425 wire gpio_0;
426 wire gpio_1;
427 wire gpio_2;
428 wire gpio_3;
429 wire gpio_4;
430 wire gpio_5;
431 wire gpio_6;
432 wire gpio_7;
433 wire gpio_8;
434 wire gpio_9;
435 wire gpio_10;
436 wire gpio_11;
437 wire gpio_12;
438 wire gpio_13;
439 wire gpio_14;
440 wire gpio_15;
441 wire gpio_16;
442 wire gpio_17;
443 wire gpio_18;
444 wire gpio_19;
445 wire gpio_20;
446 wire gpio_21;
447 wire gpio_22;
448 wire gpio_23;
449 wire gpio_24;
450 wire gpio_25;
451 wire gpio_26;
452 wire gpio_27;
453 wire gpio_28;
454 wire gpio_29;
455 wire gpio_30;
456 wire gpio_31;
457
458 wire iobuf_gpio_0_o;
459 IOBUF
460 #(
461 .DRIVE(12),
462 .IBUF_LOW_PWR("TRUE"),
463 .IOSTANDARD("DEFAULT"),
464 .SLEW("SLOW")
465 )
466 IOBUF_gpio_0
467 (
468 .O(iobuf_gpio_0_o),
469 .IO(gpio_0),
470 .I(dut_io_pads_gpio_0_o_oval),
471 .T(~dut_io_pads_gpio_0_o_oe)
472 );
473 assign dut_io_pads_gpio_0_i_ival = iobuf_gpio_0_o & dut_io_pads_gpio_0_o_ie;
474
475 wire iobuf_gpio_1_o;
476 IOBUF
477 #(
478 .DRIVE(12),
479 .IBUF_LOW_PWR("TRUE"),
480 .IOSTANDARD("DEFAULT"),
481 .SLEW("SLOW")
482 )
483 IOBUF_gpio_1
484 (
485 .O(iobuf_gpio_1_o),
486 .IO(gpio_1),
487 .I(dut_io_pads_gpio_1_o_oval),
488 .T(~dut_io_pads_gpio_1_o_oe)
489 );
490 assign dut_io_pads_gpio_1_i_ival = iobuf_gpio_1_o & dut_io_pads_gpio_1_o_ie;
491
492 wire iobuf_gpio_2_o;
493 IOBUF
494 #(
495 .DRIVE(12),
496 .IBUF_LOW_PWR("TRUE"),
497 .IOSTANDARD("DEFAULT"),
498 .SLEW("SLOW")
499 )
500 IOBUF_gpio_2
501 (
502 .O(iobuf_gpio_2_o),
503 .IO(gpio_2),
504 .I(dut_io_pads_gpio_2_o_oval),
505 .T(~dut_io_pads_gpio_2_o_oe)
506 );
507 assign dut_io_pads_gpio_2_i_ival = iobuf_gpio_2_o & dut_io_pads_gpio_2_o_ie;
508
509 wire iobuf_gpio_3_o;
510 IOBUF
511 #(
512 .DRIVE(12),
513 .IBUF_LOW_PWR("TRUE"),
514 .IOSTANDARD("DEFAULT"),
515 .SLEW("SLOW")
516 )
517 IOBUF_gpio_3
518 (
519 .O(iobuf_gpio_3_o),
520 .IO(gpio_3),
521 .I(dut_io_pads_gpio_3_o_oval),
522 .T(~dut_io_pads_gpio_3_o_oe)
523 );
524 assign dut_io_pads_gpio_3_i_ival = iobuf_gpio_3_o & dut_io_pads_gpio_3_o_ie;
525
526 wire iobuf_gpio_4_o;
527 IOBUF
528 #(
529 .DRIVE(12),
530 .IBUF_LOW_PWR("TRUE"),
531 .IOSTANDARD("DEFAULT"),
532 .SLEW("SLOW")
533 )
534 IOBUF_gpio_4
535 (
536 .O(iobuf_gpio_4_o),
537 .IO(gpio_4),
538 .I(dut_io_pads_gpio_4_o_oval),
539 .T(~dut_io_pads_gpio_4_o_oe)
540 );
541 assign dut_io_pads_gpio_4_i_ival = iobuf_gpio_4_o & dut_io_pads_gpio_4_o_ie;
542
543 wire iobuf_gpio_5_o;
544 IOBUF
545 #(
546 .DRIVE(12),
547 .IBUF_LOW_PWR("TRUE"),
548 .IOSTANDARD("DEFAULT"),
549 .SLEW("SLOW")
550 )
551 IOBUF_gpio_5
552 (
553 .O(iobuf_gpio_5_o),
554 .IO(gpio_5),
555 .I(dut_io_pads_gpio_5_o_oval),
556 .T(~dut_io_pads_gpio_5_o_oe)
557 );
558 assign dut_io_pads_gpio_5_i_ival = iobuf_gpio_5_o & dut_io_pads_gpio_5_o_ie;
559
560 assign dut_io_pads_gpio_6_i_ival = 1'b0;
561
562 assign dut_io_pads_gpio_7_i_ival = 1'b0;
563
564 assign dut_io_pads_gpio_8_i_ival = 1'b0;
565
566 wire iobuf_gpio_9_o;
567 IOBUF
568 #(
569 .DRIVE(12),
570 .IBUF_LOW_PWR("TRUE"),
571 .IOSTANDARD("DEFAULT"),
572 .SLEW("SLOW")
573 )
574 IOBUF_gpio_9
575 (
576 .O(iobuf_gpio_9_o),
577 .IO(gpio_9),
578 .I(dut_io_pads_gpio_9_o_oval),
579 .T(~dut_io_pads_gpio_9_o_oe)
580 );
581 assign dut_io_pads_gpio_9_i_ival = iobuf_gpio_9_o & dut_io_pads_gpio_9_o_ie;
582
583 wire iobuf_gpio_10_o;
584 IOBUF
585 #(
586 .DRIVE(12),
587 .IBUF_LOW_PWR("TRUE"),
588 .IOSTANDARD("DEFAULT"),
589 .SLEW("SLOW")
590 )
591 IOBUF_gpio_10
592 (
593 .O(iobuf_gpio_10_o),
594 .IO(gpio_10),
595 .I(dut_io_pads_gpio_10_o_oval),
596 .T(~dut_io_pads_gpio_10_o_oe)
597 );
598 assign dut_io_pads_gpio_10_i_ival = iobuf_gpio_10_o & dut_io_pads_gpio_10_o_ie;
599
600 wire iobuf_gpio_11_o;
601 IOBUF
602 #(
603 .DRIVE(12),
604 .IBUF_LOW_PWR("TRUE"),
605 .IOSTANDARD("DEFAULT"),
606 .SLEW("SLOW")
607 )
608 IOBUF_gpio_11
609 (
610 .O(iobuf_gpio_11_o),
611 .IO(gpio_11),
612 .I(dut_io_pads_gpio_11_o_oval),
613 .T(~dut_io_pads_gpio_11_o_oe)
614 );
615 assign dut_io_pads_gpio_11_i_ival = iobuf_gpio_11_o & dut_io_pads_gpio_11_o_ie;
616
617 wire iobuf_gpio_12_o;
618 IOBUF
619 #(
620 .DRIVE(12),
621 .IBUF_LOW_PWR("TRUE"),
622 .IOSTANDARD("DEFAULT"),
623 .SLEW("SLOW")
624 )
625 IOBUF_gpio_12
626 (
627 .O(iobuf_gpio_12_o),
628 .IO(gpio_12),
629 .I(dut_io_pads_gpio_12_o_oval),
630 .T(~dut_io_pads_gpio_12_o_oe)
631 );
632 assign dut_io_pads_gpio_12_i_ival = iobuf_gpio_12_o & dut_io_pads_gpio_12_o_ie;
633
634 wire iobuf_gpio_13_o;
635 IOBUF
636 #(
637 .DRIVE(12),
638 .IBUF_LOW_PWR("TRUE"),
639 .IOSTANDARD("DEFAULT"),
640 .SLEW("SLOW")
641 )
642 IOBUF_gpio_13
643 (
644 .O(iobuf_gpio_13_o),
645 .IO(gpio_13),
646 .I(dut_io_pads_gpio_13_o_oval),
647 .T(~dut_io_pads_gpio_13_o_oe)
648 );
649 assign dut_io_pads_gpio_13_i_ival = iobuf_gpio_13_o & dut_io_pads_gpio_13_o_ie;
650
651 wire iobuf_gpio_14_o;
652 IOBUF
653 #(
654 .DRIVE(12),
655 .IBUF_LOW_PWR("TRUE"),
656 .IOSTANDARD("DEFAULT"),
657 .SLEW("SLOW")
658 )
659 IOBUF_gpio_14
660 (
661 .O(iobuf_gpio_14_o),
662 .IO(gpio_14),
663 .I(dut_io_pads_gpio_14_o_oval),
664 .T(~dut_io_pads_gpio_14_o_oe)
665 );
666 assign dut_io_pads_gpio_14_i_ival = iobuf_gpio_14_o & dut_io_pads_gpio_14_o_ie;
667
668 wire iobuf_gpio_15_o;
669 IOBUF
670 #(
671 .DRIVE(12),
672 .IBUF_LOW_PWR("TRUE"),
673 .IOSTANDARD("DEFAULT"),
674 .SLEW("SLOW")
675 )
676 IOBUF_gpio_15
677 (
678 .O(iobuf_gpio_15_o),
679 .IO(gpio_15),
680 .I(dut_io_pads_gpio_15_o_oval),
681 .T(~dut_io_pads_gpio_15_o_oe)
682 );
683 assign dut_io_pads_gpio_15_i_ival = iobuf_gpio_15_o & dut_io_pads_gpio_15_o_ie;
684
685 wire iobuf_gpio_16_o;
686 IOBUF
687 #(
688 .DRIVE(12),
689 .IBUF_LOW_PWR("TRUE"),
690 .IOSTANDARD("DEFAULT"),
691 .SLEW("SLOW")
692 )
693 IOBUF_gpio_16
694 (
695 .O(iobuf_gpio_16_o),
696 .IO(gpio_16),
697 .I(dut_io_pads_gpio_16_o_oval),
698 .T(~dut_io_pads_gpio_16_o_oe)
699 );
700 // This GPIO input is shared between FTDI TX pin and Arduino shield pin using SW[3]
701 // see below for details
702 assign dut_io_pads_gpio_16_i_ival = sw_3 ? (iobuf_gpio_16_o & dut_io_pads_gpio_16_o_ie) : (uart_txd_in & dut_io_pads_gpio_16_o_ie);
703
704 wire iobuf_gpio_17_o;
705 IOBUF
706 #(
707 .DRIVE(12),
708 .IBUF_LOW_PWR("TRUE"),
709 .IOSTANDARD("DEFAULT"),
710 .SLEW("SLOW")
711 )
712 IOBUF_gpio_17
713 (
714 .O(iobuf_gpio_17_o),
715 .IO(gpio_17),
716 .I(dut_io_pads_gpio_17_o_oval),
717 .T(~dut_io_pads_gpio_17_o_oe)
718 );
719 assign dut_io_pads_gpio_17_i_ival = iobuf_gpio_17_o & dut_io_pads_gpio_17_o_ie;
720 assign uart_rxd_out = (dut_io_pads_gpio_17_o_oval & dut_io_pads_gpio_17_o_oe);
721
722 wire iobuf_gpio_18_o;
723 IOBUF
724 #(
725 .DRIVE(12),
726 .IBUF_LOW_PWR("TRUE"),
727 .IOSTANDARD("DEFAULT"),
728 .SLEW("SLOW")
729 )
730 IOBUF_gpio_18
731 (
732 .O(iobuf_gpio_18_o),
733 .IO(gpio_18),
734 .I(dut_io_pads_gpio_18_o_oval),
735 .T(~dut_io_pads_gpio_18_o_oe)
736 );
737 assign dut_io_pads_gpio_18_i_ival = iobuf_gpio_18_o & dut_io_pads_gpio_18_o_ie;
738
739 wire iobuf_gpio_19_o;
740 IOBUF
741 #(
742 .DRIVE(12),
743 .IBUF_LOW_PWR("TRUE"),
744 .IOSTANDARD("DEFAULT"),
745 .SLEW("SLOW")
746 )
747 IOBUF_gpio_19
748 (
749 .O(iobuf_gpio_19_o),
750 .IO(gpio_19),
751 .I(dut_io_pads_gpio_19_o_oval),
752 .T(~dut_io_pads_gpio_19_o_oe)
753 );
754 assign dut_io_pads_gpio_19_i_ival = iobuf_gpio_19_o & dut_io_pads_gpio_19_o_ie;
755
756 wire iobuf_gpio_20_o;
757 IOBUF
758 #(
759 .DRIVE(12),
760 .IBUF_LOW_PWR("TRUE"),
761 .IOSTANDARD("DEFAULT"),
762 .SLEW("SLOW")
763 )
764 IOBUF_gpio_20
765 (
766 .O(iobuf_gpio_20_o),
767 .IO(gpio_20),
768 .I(dut_io_pads_gpio_20_o_oval),
769 .T(~dut_io_pads_gpio_20_o_oe)
770 );
771 assign dut_io_pads_gpio_20_i_ival = iobuf_gpio_20_o & dut_io_pads_gpio_20_o_ie;
772
773 wire iobuf_gpio_21_o;
774 IOBUF
775 #(
776 .DRIVE(12),
777 .IBUF_LOW_PWR("TRUE"),
778 .IOSTANDARD("DEFAULT"),
779 .SLEW("SLOW")
780 )
781 IOBUF_gpio_21
782 (
783 .O(iobuf_gpio_21_o),
784 .IO(gpio_21),
785 .I(dut_io_pads_gpio_21_o_oval),
786 .T(~dut_io_pads_gpio_21_o_oe)
787 );
788 assign dut_io_pads_gpio_21_i_ival = iobuf_gpio_21_o & dut_io_pads_gpio_21_o_ie;
789
790 wire iobuf_gpio_22_o;
791 IOBUF
792 #(
793 .DRIVE(12),
794 .IBUF_LOW_PWR("TRUE"),
795 .IOSTANDARD("DEFAULT"),
796 .SLEW("SLOW")
797 )
798 IOBUF_gpio_22
799 (
800 .O(iobuf_gpio_22_o),
801 .IO(gpio_22),
802 .I(dut_io_pads_gpio_22_o_oval),
803 .T(~dut_io_pads_gpio_22_o_oe)
804 );
805 assign dut_io_pads_gpio_22_i_ival = iobuf_gpio_22_o & dut_io_pads_gpio_22_o_ie;
806
807 wire iobuf_gpio_23_o;
808 IOBUF
809 #(
810 .DRIVE(12),
811 .IBUF_LOW_PWR("TRUE"),
812 .IOSTANDARD("DEFAULT"),
813 .SLEW("SLOW")
814 )
815 IOBUF_gpio_23
816 (
817 .O(iobuf_gpio_23_o),
818 .IO(gpio_23),
819 .I(dut_io_pads_gpio_23_o_oval),
820 .T(~dut_io_pads_gpio_23_o_oe)
821 );
822 assign dut_io_pads_gpio_23_i_ival = iobuf_gpio_23_o & dut_io_pads_gpio_23_o_ie;
823
824 wire iobuf_gpio_24_o;
825 IOBUF
826 #(
827 .DRIVE(12),
828 .IBUF_LOW_PWR("TRUE"),
829 .IOSTANDARD("DEFAULT"),
830 .SLEW("SLOW")
831 )
832 IOBUF_gpio_24
833 (
834 .O(iobuf_gpio_24_o),
835 .IO(gpio_24),
836 .I(dut_io_pads_gpio_24_o_oval),
837 .T(~dut_io_pads_gpio_24_o_oe)
838 );
839 assign dut_io_pads_gpio_24_i_ival = iobuf_gpio_24_o & dut_io_pads_gpio_24_o_ie;
840
841 wire iobuf_gpio_25_o;
842 IOBUF
843 #(
844 .DRIVE(12),
845 .IBUF_LOW_PWR("TRUE"),
846 .IOSTANDARD("DEFAULT"),
847 .SLEW("SLOW")
848 )
849 IOBUF_gpio_25
850 (
851 .O(iobuf_gpio_25_o),
852 .IO(gpio_25),
853 .I(dut_io_pads_gpio_25_o_oval),
854 .T(~dut_io_pads_gpio_25_o_oe)
855 );
856 assign dut_io_pads_gpio_25_i_ival = iobuf_gpio_25_o & dut_io_pads_gpio_25_o_ie;
857
858 wire iobuf_gpio_26_o;
859 IOBUF
860 #(
861 .DRIVE(12),
862 .IBUF_LOW_PWR("TRUE"),
863 .IOSTANDARD("DEFAULT"),
864 .SLEW("SLOW")
865 )
866 IOBUF_gpio_26
867 (
868 .O(iobuf_gpio_26_o),
869 .IO(gpio_26),
870 .I(dut_io_pads_gpio_26_o_oval),
871 .T(~dut_io_pads_gpio_26_o_oe)
872 );
873 assign dut_io_pads_gpio_26_i_ival = iobuf_gpio_26_o & dut_io_pads_gpio_26_o_ie;
874
875 wire iobuf_gpio_27_o;
876 IOBUF
877 #(
878 .DRIVE(12),
879 .IBUF_LOW_PWR("TRUE"),
880 .IOSTANDARD("DEFAULT"),
881 .SLEW("SLOW")
882 )
883 IOBUF_gpio_27
884 (
885 .O(iobuf_gpio_27_o),
886 .IO(gpio_27),
887 .I(dut_io_pads_gpio_27_o_oval),
888 .T(~dut_io_pads_gpio_27_o_oe)
889 );
890 assign dut_io_pads_gpio_27_i_ival = iobuf_gpio_27_o & dut_io_pads_gpio_27_o_ie;
891
892 wire iobuf_gpio_28_o;
893 IOBUF
894 #(
895 .DRIVE(12),
896 .IBUF_LOW_PWR("TRUE"),
897 .IOSTANDARD("DEFAULT"),
898 .SLEW("SLOW")
899 )
900 IOBUF_gpio_28
901 (
902 .O(iobuf_gpio_28_o),
903 .IO(gpio_28),
904 .I(dut_io_pads_gpio_28_o_oval),
905 .T(~dut_io_pads_gpio_28_o_oe)
906 );
907 assign dut_io_pads_gpio_28_i_ival = iobuf_gpio_28_o & dut_io_pads_gpio_28_o_ie;
908
909 wire iobuf_gpio_29_o;
910 IOBUF
911 #(
912 .DRIVE(12),
913 .IBUF_LOW_PWR("TRUE"),
914 .IOSTANDARD("DEFAULT"),
915 .SLEW("SLOW")
916 )
917 IOBUF_gpio_29
918 (
919 .O(iobuf_gpio_29_o),
920 .IO(gpio_29),
921 .I(dut_io_pads_gpio_29_o_oval),
922 .T(~dut_io_pads_gpio_29_o_oe)
923 );
924 assign dut_io_pads_gpio_29_i_ival = iobuf_gpio_29_o & dut_io_pads_gpio_29_o_ie;
925
926 wire iobuf_gpio_30_o;
927 IOBUF
928 #(
929 .DRIVE(12),
930 .IBUF_LOW_PWR("TRUE"),
931 .IOSTANDARD("DEFAULT"),
932 .SLEW("SLOW")
933 )
934 IOBUF_gpio_30
935 (
936 .O(iobuf_gpio_30_o),
937 .IO(gpio_30),
938 .I(dut_io_pads_gpio_30_o_oval),
939 .T(~dut_io_pads_gpio_30_o_oe)
940 );
941 assign dut_io_pads_gpio_30_i_ival = iobuf_gpio_30_o & dut_io_pads_gpio_30_o_ie;
942
943 wire iobuf_gpio_31_o;
944 IOBUF
945 #(
946 .DRIVE(12),
947 .IBUF_LOW_PWR("TRUE"),
948 .IOSTANDARD("DEFAULT"),
949 .SLEW("SLOW")
950 )
951 IOBUF_gpio_31
952 (
953 .O(iobuf_gpio_31_o),
954 .IO(gpio_31),
955 .I(dut_io_pads_gpio_31_o_oval),
956 .T(~dut_io_pads_gpio_31_o_oe)
957 );
958 assign dut_io_pads_gpio_31_i_ival = iobuf_gpio_31_o & dut_io_pads_gpio_31_o_ie;
959
960 //=================================================
961 // JTAG IOBUFs
962
963 wire iobuf_jtag_TCK_o;
964 IOBUF
965 #(
966 .DRIVE(12),
967 .IBUF_LOW_PWR("TRUE"),
968 .IOSTANDARD("DEFAULT"),
969 .SLEW("SLOW")
970 )
971 IOBUF_jtag_TCK
972 (
973 .O(iobuf_jtag_TCK_o),
974 .IO(jd_2),
975 .I(dut_io_pads_jtag_TCK_o_oval),
976 .T(~dut_io_pads_jtag_TCK_o_oe)
977 );
978 assign dut_io_pads_jtag_TCK_i_ival = iobuf_jtag_TCK_o & dut_io_pads_jtag_TCK_o_ie;
979 PULLUP pullup_TCK (.O(jd_2));
980
981 wire iobuf_jtag_TMS_o;
982 IOBUF
983 #(
984 .DRIVE(12),
985 .IBUF_LOW_PWR("TRUE"),
986 .IOSTANDARD("DEFAULT"),
987 .SLEW("SLOW")
988 )
989 IOBUF_jtag_TMS
990 (
991 .O(iobuf_jtag_TMS_o),
992 .IO(jd_5),
993 .I(dut_io_pads_jtag_TMS_o_oval),
994 .T(~dut_io_pads_jtag_TMS_o_oe)
995 );
996 assign dut_io_pads_jtag_TMS_i_ival = iobuf_jtag_TMS_o & dut_io_pads_jtag_TMS_o_ie;
997 PULLUP pullup_TMS (.O(jd_5));
998
999 wire iobuf_jtag_TDI_o;
1000 IOBUF
1001 #(
1002 .DRIVE(12),
1003 .IBUF_LOW_PWR("TRUE"),
1004 .IOSTANDARD("DEFAULT"),
1005 .SLEW("SLOW")
1006 )
1007 IOBUF_jtag_TDI
1008 (
1009 .O(iobuf_jtag_TDI_o),
1010 .IO(jd_4),
1011 .I(dut_io_pads_jtag_TDI_o_oval),
1012 .T(~dut_io_pads_jtag_TDI_o_oe)
1013 );
1014 assign dut_io_pads_jtag_TDI_i_ival = iobuf_jtag_TDI_o & dut_io_pads_jtag_TDI_o_ie;
1015 PULLUP pullup_TDI (.O(jd_4));
1016
1017 wire iobuf_jtag_TDO_o;
1018 IOBUF
1019 #(
1020 .DRIVE(12),
1021 .IBUF_LOW_PWR("TRUE"),
1022 .IOSTANDARD("DEFAULT"),
1023 .SLEW("SLOW")
1024 )
1025 IOBUF_jtag_TDO
1026 (
1027 .O(iobuf_jtag_TDO_o),
1028 .IO(jd_0),
1029 .I(dut_io_pads_jtag_TDO_o_oval),
1030 .T(~dut_io_pads_jtag_TDO_o_oe)
1031 );
1032 assign dut_io_pads_jtag_TDO_i_ival = iobuf_jtag_TDO_o & dut_io_pads_jtag_TDO_o_ie;
1033
1034 wire iobuf_jtag_TRST_n_o;
1035 IOBUF
1036 #(
1037 .DRIVE(12),
1038 .IBUF_LOW_PWR("TRUE"),
1039 .IOSTANDARD("DEFAULT"),
1040 .SLEW("SLOW")
1041 )
1042 IOBUF_jtag_TRST_n
1043 (
1044 .O(iobuf_jtag_TRST_n_o),
1045 .IO(jd_1),
1046 .I(dut_io_pads_jtag_TRST_n_o_oval),
1047 .T(~dut_io_pads_jtag_TRST_n_o_oe)
1048 );
1049 assign dut_io_pads_jtag_TRST_n_i_ival = iobuf_jtag_TRST_n_o & dut_io_pads_jtag_TRST_n_o_ie;
1050 PULLUP pullup_TRST_n(.O(jd_1));
1051
1052 // Mimic putting a pullup on this line (part of reset vote).
1053 assign SRST_n = jd_6;
1054 PULLUP pullup_SRST_n(.O(SRST_n));
1055
1056 //=================================================
1057 // Assignment of IOBUF "IO" pins to package pins
1058
1059 // Pins IO0-IO13
1060 // Shield header row 0: PD0-PD7
1061
1062 // FTDI UART TX/RX are not connected to ck_io[1,2]
1063 // the way they are on Arduino boards. We copy outgoing
1064 // data to both places, switch 3 (sw[3]) determines whether
1065 // input to UART comes from FTDI chip or gpio_16 (shield pin PD0)
1066
1067 assign ck_io[0] = gpio_16; // UART0 RX
1068 assign ck_io[1] = gpio_17; // UART0 TX
1069 assign ck_io[2] = gpio_18;
1070 assign ck_io[3] = gpio_19; // PWM1(1)
1071 assign ck_io[4] = gpio_20; // PWM1(0)
1072 assign ck_io[5] = gpio_21; // PWM1(2)
1073 assign ck_io[6] = gpio_22; // PWM1(3)
1074 assign ck_io[7] = gpio_23;
1075 // Header row 1: PB0-PB5
1076 assign ck_io[8] = gpio_0; // PWM0(0)
1077 assign ck_io[9] = gpio_1; // PWM0(1)
1078 assign ck_io[10] = gpio_2; // SPI1 CS(0) / PWM0(2)
1079 assign ck_io[11] = gpio_3; // SPI1 MOSI / PWM0(3)
1080 assign ck_io[12] = gpio_4; // SPI1 MISO
1081 assign ck_io[13] = gpio_5; // SPI1 SCK
1082
1083 // Header row 3: A0-A5 (we don't support using them as analog inputs)
1084 // just treat them as regular digital GPIOs
1085 assign ck_io[14] = uart_txd_in; //gpio_9; // A0 = <unconnected> CS(1)
1086 assign ck_io[15] = gpio_9; // A1 = CS(2)
1087 assign ck_io[16] = gpio_10; // A2 = CS(3) / PWM2(0)
1088 assign ck_io[17] = gpio_11; // A3 = PWM2(1)
1089 assign ck_io[18] = gpio_12; // A4 = PWM2(2) / SDA
1090 assign ck_io[19] = gpio_13; // A5 = PWM2(3) / SCL
1091
1092 // Mirror outputs of GPIOs with PWM peripherals to RGB LEDs on Arty
1093 // assign RGB LED0 R,G,B inputs = PWM0(1,2,3) when iof_1 is active
1094 assign led0_r = dut_io_pads_gpio_1_o_oval & dut_io_pads_gpio_1_o_oe;
1095 assign led0_g = dut_io_pads_gpio_2_o_oval & dut_io_pads_gpio_2_o_oe;
1096 assign led0_b = dut_io_pads_gpio_3_o_oval & dut_io_pads_gpio_2_o_oe;
1097 // Note that this is the one which is actually connected on the HiFive/Crazy88
1098 // Board. Same with RGB LED1 R,G,B inputs = PWM1(1,2,3) when iof_1 is active
1099 assign led1_r = dut_io_pads_gpio_19_o_oval & dut_io_pads_gpio_19_o_oe;
1100 assign led1_g = dut_io_pads_gpio_21_o_oval & dut_io_pads_gpio_21_o_oe;
1101 assign led1_b = dut_io_pads_gpio_22_o_oval & dut_io_pads_gpio_22_o_oe;
1102 // and RGB LED2 R,G,B inputs = PWM2(1,2,3) when iof_1 is active
1103 assign led2_r = dut_io_pads_gpio_11_o_oval & dut_io_pads_gpio_11_o_oe;
1104 assign led2_g = dut_io_pads_gpio_12_o_oval & dut_io_pads_gpio_12_o_oe;
1105 assign led2_b = dut_io_pads_gpio_13_o_oval & dut_io_pads_gpio_13_o_oe;
1106
1107 // Only 19 out of 20 shield pins connected to GPIO pads
1108 // Shield pin A5 (pin 14) left unconnected
1109 // The buttons are connected to some extra GPIO pads not connected on the
1110 // HiFive1 board
1111
1112 assign btn_0 = gpio_15;
1113 assign btn_1 = gpio_30;
1114 assign btn_2 = gpio_31;
1115
1116 // UART1 RX/TX pins are assigned to PMOD_D connector pins 0/1
1117 assign ja_0 = gpio_25; // UART1 TX
1118 assign ja_1 = gpio_24; // UART1 RX
1119
1120 // SPI2 pins mapped to 6 pin ICSP connector (standard on later arduinos)
1121 // These are connected to some extra GPIO pads not connected on the HiFive1
1122 // board
1123 assign ck_ss = gpio_26;
1124 assign ck_mosi = gpio_27;
1125 assign ck_miso = gpio_28;
1126 assign ck_sck = gpio_29;
1127
1128 // Use the LEDs for some more useful debugging things.
1129 assign led_0 = ck_rst;
1130 assign led_1 = SRST_n;
1131 assign led_2 = dut_io_pads_aon_pmu_dwakeup_n_i_ival;
1132 assign led_3 = gpio_14;
1133
1134 E300ArtyDevKitTop dut
1135 (
1136 .clock(hfclk),
1137 .reset(1'b1),
1138 .io_pads_jtag_TCK_i_ival(dut_io_pads_jtag_TCK_i_ival),
1139 .io_pads_jtag_TCK_o_oval(dut_io_pads_jtag_TCK_o_oval),
1140 .io_pads_jtag_TCK_o_oe(dut_io_pads_jtag_TCK_o_oe),
1141 .io_pads_jtag_TCK_o_ie(dut_io_pads_jtag_TCK_o_ie),
1142 .io_pads_jtag_TCK_o_pue(dut_io_pads_jtag_TCK_o_pue),
1143 .io_pads_jtag_TCK_o_ds(dut_io_pads_jtag_TCK_o_ds),
1144 .io_pads_jtag_TMS_i_ival(dut_io_pads_jtag_TMS_i_ival),
1145 .io_pads_jtag_TMS_o_oval(dut_io_pads_jtag_TMS_o_oval),
1146 .io_pads_jtag_TMS_o_oe(dut_io_pads_jtag_TMS_o_oe),
1147 .io_pads_jtag_TMS_o_ie(dut_io_pads_jtag_TMS_o_ie),
1148 .io_pads_jtag_TMS_o_pue(dut_io_pads_jtag_TMS_o_pue),
1149 .io_pads_jtag_TMS_o_ds(dut_io_pads_jtag_TMS_o_ds),
1150 .io_pads_jtag_TDI_i_ival(dut_io_pads_jtag_TDI_i_ival),
1151 .io_pads_jtag_TDI_o_oval(dut_io_pads_jtag_TDI_o_oval),
1152 .io_pads_jtag_TDI_o_oe(dut_io_pads_jtag_TDI_o_oe),
1153 .io_pads_jtag_TDI_o_ie(dut_io_pads_jtag_TDI_o_ie),
1154 .io_pads_jtag_TDI_o_pue(dut_io_pads_jtag_TDI_o_pue),
1155 .io_pads_jtag_TDI_o_ds(dut_io_pads_jtag_TDI_o_ds),
1156 .io_pads_jtag_TDO_i_ival(dut_io_pads_jtag_TDO_i_ival),
1157 .io_pads_jtag_TDO_o_oval(dut_io_pads_jtag_TDO_o_oval),
1158 .io_pads_jtag_TDO_o_oe(dut_io_pads_jtag_TDO_o_oe),
1159 .io_pads_jtag_TDO_o_ie(dut_io_pads_jtag_TDO_o_ie),
1160 .io_pads_jtag_TDO_o_pue(dut_io_pads_jtag_TDO_o_pue),
1161 .io_pads_jtag_TDO_o_ds(dut_io_pads_jtag_TDO_o_ds),
1162 .io_pads_jtag_TRST_n_i_ival(dut_io_pads_jtag_TRST_n_i_ival),
1163 .io_pads_jtag_TRST_n_o_oval(dut_io_pads_jtag_TRST_n_o_oval),
1164 .io_pads_jtag_TRST_n_o_oe(dut_io_pads_jtag_TRST_n_o_oe),
1165 .io_pads_jtag_TRST_n_o_ie(dut_io_pads_jtag_TRST_n_o_ie),
1166 .io_pads_jtag_TRST_n_o_pue(dut_io_pads_jtag_TRST_n_o_pue),
1167 .io_pads_jtag_TRST_n_o_ds(dut_io_pads_jtag_TRST_n_o_ds),
1168 .io_pads_gpio_0_i_ival(dut_io_pads_gpio_0_i_ival),
1169 .io_pads_gpio_0_o_oval(dut_io_pads_gpio_0_o_oval),
1170 .io_pads_gpio_0_o_oe(dut_io_pads_gpio_0_o_oe),
1171 .io_pads_gpio_0_o_ie(dut_io_pads_gpio_0_o_ie),
1172 .io_pads_gpio_0_o_pue(dut_io_pads_gpio_0_o_pue),
1173 .io_pads_gpio_0_o_ds(dut_io_pads_gpio_0_o_ds),
1174 .io_pads_gpio_1_i_ival(dut_io_pads_gpio_1_i_ival),
1175 .io_pads_gpio_1_o_oval(dut_io_pads_gpio_1_o_oval),
1176 .io_pads_gpio_1_o_oe(dut_io_pads_gpio_1_o_oe),
1177 .io_pads_gpio_1_o_ie(dut_io_pads_gpio_1_o_ie),
1178 .io_pads_gpio_1_o_pue(dut_io_pads_gpio_1_o_pue),
1179 .io_pads_gpio_1_o_ds(dut_io_pads_gpio_1_o_ds),
1180 .io_pads_gpio_2_i_ival(dut_io_pads_gpio_2_i_ival),
1181 .io_pads_gpio_2_o_oval(dut_io_pads_gpio_2_o_oval),
1182 .io_pads_gpio_2_o_oe(dut_io_pads_gpio_2_o_oe),
1183 .io_pads_gpio_2_o_ie(dut_io_pads_gpio_2_o_ie),
1184 .io_pads_gpio_2_o_pue(dut_io_pads_gpio_2_o_pue),
1185 .io_pads_gpio_2_o_ds(dut_io_pads_gpio_2_o_ds),
1186 .io_pads_gpio_3_i_ival(dut_io_pads_gpio_3_i_ival),
1187 .io_pads_gpio_3_o_oval(dut_io_pads_gpio_3_o_oval),
1188 .io_pads_gpio_3_o_oe(dut_io_pads_gpio_3_o_oe),
1189 .io_pads_gpio_3_o_ie(dut_io_pads_gpio_3_o_ie),
1190 .io_pads_gpio_3_o_pue(dut_io_pads_gpio_3_o_pue),
1191 .io_pads_gpio_3_o_ds(dut_io_pads_gpio_3_o_ds),
1192 .io_pads_gpio_4_i_ival(dut_io_pads_gpio_4_i_ival),
1193 .io_pads_gpio_4_o_oval(dut_io_pads_gpio_4_o_oval),
1194 .io_pads_gpio_4_o_oe(dut_io_pads_gpio_4_o_oe),
1195 .io_pads_gpio_4_o_ie(dut_io_pads_gpio_4_o_ie),
1196 .io_pads_gpio_4_o_pue(dut_io_pads_gpio_4_o_pue),
1197 .io_pads_gpio_4_o_ds(dut_io_pads_gpio_4_o_ds),
1198 .io_pads_gpio_5_i_ival(dut_io_pads_gpio_5_i_ival),
1199 .io_pads_gpio_5_o_oval(dut_io_pads_gpio_5_o_oval),
1200 .io_pads_gpio_5_o_oe(dut_io_pads_gpio_5_o_oe),
1201 .io_pads_gpio_5_o_ie(dut_io_pads_gpio_5_o_ie),
1202 .io_pads_gpio_5_o_pue(dut_io_pads_gpio_5_o_pue),
1203 .io_pads_gpio_5_o_ds(dut_io_pads_gpio_5_o_ds),
1204 .io_pads_gpio_6_i_ival(dut_io_pads_gpio_6_i_ival),
1205 .io_pads_gpio_6_o_oval(dut_io_pads_gpio_6_o_oval),
1206 .io_pads_gpio_6_o_oe(dut_io_pads_gpio_6_o_oe),
1207 .io_pads_gpio_6_o_ie(dut_io_pads_gpio_6_o_ie),
1208 .io_pads_gpio_6_o_pue(dut_io_pads_gpio_6_o_pue),
1209 .io_pads_gpio_6_o_ds(dut_io_pads_gpio_6_o_ds),
1210 .io_pads_gpio_7_i_ival(dut_io_pads_gpio_7_i_ival),
1211 .io_pads_gpio_7_o_oval(dut_io_pads_gpio_7_o_oval),
1212 .io_pads_gpio_7_o_oe(dut_io_pads_gpio_7_o_oe),
1213 .io_pads_gpio_7_o_ie(dut_io_pads_gpio_7_o_ie),
1214 .io_pads_gpio_7_o_pue(dut_io_pads_gpio_7_o_pue),
1215 .io_pads_gpio_7_o_ds(dut_io_pads_gpio_7_o_ds),
1216 .io_pads_gpio_8_i_ival(dut_io_pads_gpio_8_i_ival),
1217 .io_pads_gpio_8_o_oval(dut_io_pads_gpio_8_o_oval),
1218 .io_pads_gpio_8_o_oe(dut_io_pads_gpio_8_o_oe),
1219 .io_pads_gpio_8_o_ie(dut_io_pads_gpio_8_o_ie),
1220 .io_pads_gpio_8_o_pue(dut_io_pads_gpio_8_o_pue),
1221 .io_pads_gpio_8_o_ds(dut_io_pads_gpio_8_o_ds),
1222 .io_pads_gpio_9_i_ival(dut_io_pads_gpio_9_i_ival),
1223 .io_pads_gpio_9_o_oval(dut_io_pads_gpio_9_o_oval),
1224 .io_pads_gpio_9_o_oe(dut_io_pads_gpio_9_o_oe),
1225 .io_pads_gpio_9_o_ie(dut_io_pads_gpio_9_o_ie),
1226 .io_pads_gpio_9_o_pue(dut_io_pads_gpio_9_o_pue),
1227 .io_pads_gpio_9_o_ds(dut_io_pads_gpio_9_o_ds),
1228 .io_pads_gpio_10_i_ival(dut_io_pads_gpio_10_i_ival),
1229 .io_pads_gpio_10_o_oval(dut_io_pads_gpio_10_o_oval),
1230 .io_pads_gpio_10_o_oe(dut_io_pads_gpio_10_o_oe),
1231 .io_pads_gpio_10_o_ie(dut_io_pads_gpio_10_o_ie),
1232 .io_pads_gpio_10_o_pue(dut_io_pads_gpio_10_o_pue),
1233 .io_pads_gpio_10_o_ds(dut_io_pads_gpio_10_o_ds),
1234 .io_pads_gpio_11_i_ival(dut_io_pads_gpio_11_i_ival),
1235 .io_pads_gpio_11_o_oval(dut_io_pads_gpio_11_o_oval),
1236 .io_pads_gpio_11_o_oe(dut_io_pads_gpio_11_o_oe),
1237 .io_pads_gpio_11_o_ie(dut_io_pads_gpio_11_o_ie),
1238 .io_pads_gpio_11_o_pue(dut_io_pads_gpio_11_o_pue),
1239 .io_pads_gpio_11_o_ds(dut_io_pads_gpio_11_o_ds),
1240 .io_pads_gpio_12_i_ival(dut_io_pads_gpio_12_i_ival),
1241 .io_pads_gpio_12_o_oval(dut_io_pads_gpio_12_o_oval),
1242 .io_pads_gpio_12_o_oe(dut_io_pads_gpio_12_o_oe),
1243 .io_pads_gpio_12_o_ie(dut_io_pads_gpio_12_o_ie),
1244 .io_pads_gpio_12_o_pue(dut_io_pads_gpio_12_o_pue),
1245 .io_pads_gpio_12_o_ds(dut_io_pads_gpio_12_o_ds),
1246 .io_pads_gpio_13_i_ival(dut_io_pads_gpio_13_i_ival),
1247 .io_pads_gpio_13_o_oval(dut_io_pads_gpio_13_o_oval),
1248 .io_pads_gpio_13_o_oe(dut_io_pads_gpio_13_o_oe),
1249 .io_pads_gpio_13_o_ie(dut_io_pads_gpio_13_o_ie),
1250 .io_pads_gpio_13_o_pue(dut_io_pads_gpio_13_o_pue),
1251 .io_pads_gpio_13_o_ds(dut_io_pads_gpio_13_o_ds),
1252 .io_pads_gpio_14_i_ival(dut_io_pads_gpio_14_i_ival),
1253 .io_pads_gpio_14_o_oval(dut_io_pads_gpio_14_o_oval),
1254 .io_pads_gpio_14_o_oe(dut_io_pads_gpio_14_o_oe),
1255 .io_pads_gpio_14_o_ie(dut_io_pads_gpio_14_o_ie),
1256 .io_pads_gpio_14_o_pue(dut_io_pads_gpio_14_o_pue),
1257 .io_pads_gpio_14_o_ds(dut_io_pads_gpio_14_o_ds),
1258 .io_pads_gpio_15_i_ival(dut_io_pads_gpio_15_i_ival),
1259 .io_pads_gpio_15_o_oval(dut_io_pads_gpio_15_o_oval),
1260 .io_pads_gpio_15_o_oe(dut_io_pads_gpio_15_o_oe),
1261 .io_pads_gpio_15_o_ie(dut_io_pads_gpio_15_o_ie),
1262 .io_pads_gpio_15_o_pue(dut_io_pads_gpio_15_o_pue),
1263 .io_pads_gpio_15_o_ds(dut_io_pads_gpio_15_o_ds),
1264 .io_pads_gpio_16_i_ival(dut_io_pads_gpio_16_i_ival),
1265 .io_pads_gpio_16_o_oval(dut_io_pads_gpio_16_o_oval),
1266 .io_pads_gpio_16_o_oe(dut_io_pads_gpio_16_o_oe),
1267 .io_pads_gpio_16_o_ie(dut_io_pads_gpio_16_o_ie),
1268 .io_pads_gpio_16_o_pue(dut_io_pads_gpio_16_o_pue),
1269 .io_pads_gpio_16_o_ds(dut_io_pads_gpio_16_o_ds),
1270 .io_pads_gpio_17_i_ival(dut_io_pads_gpio_17_i_ival),
1271 .io_pads_gpio_17_o_oval(dut_io_pads_gpio_17_o_oval),
1272 .io_pads_gpio_17_o_oe(dut_io_pads_gpio_17_o_oe),
1273 .io_pads_gpio_17_o_ie(dut_io_pads_gpio_17_o_ie),
1274 .io_pads_gpio_17_o_pue(dut_io_pads_gpio_17_o_pue),
1275 .io_pads_gpio_17_o_ds(dut_io_pads_gpio_17_o_ds),
1276 .io_pads_gpio_18_i_ival(dut_io_pads_gpio_18_i_ival),
1277 .io_pads_gpio_18_o_oval(dut_io_pads_gpio_18_o_oval),
1278 .io_pads_gpio_18_o_oe(dut_io_pads_gpio_18_o_oe),
1279 .io_pads_gpio_18_o_ie(dut_io_pads_gpio_18_o_ie),
1280 .io_pads_gpio_18_o_pue(dut_io_pads_gpio_18_o_pue),
1281 .io_pads_gpio_18_o_ds(dut_io_pads_gpio_18_o_ds),
1282 .io_pads_gpio_19_i_ival(dut_io_pads_gpio_19_i_ival),
1283 .io_pads_gpio_19_o_oval(dut_io_pads_gpio_19_o_oval),
1284 .io_pads_gpio_19_o_oe(dut_io_pads_gpio_19_o_oe),
1285 .io_pads_gpio_19_o_ie(dut_io_pads_gpio_19_o_ie),
1286 .io_pads_gpio_19_o_pue(dut_io_pads_gpio_19_o_pue),
1287 .io_pads_gpio_19_o_ds(dut_io_pads_gpio_19_o_ds),
1288 .io_pads_gpio_20_i_ival(dut_io_pads_gpio_20_i_ival),
1289 .io_pads_gpio_20_o_oval(dut_io_pads_gpio_20_o_oval),
1290 .io_pads_gpio_20_o_oe(dut_io_pads_gpio_20_o_oe),
1291 .io_pads_gpio_20_o_ie(dut_io_pads_gpio_20_o_ie),
1292 .io_pads_gpio_20_o_pue(dut_io_pads_gpio_20_o_pue),
1293 .io_pads_gpio_20_o_ds(dut_io_pads_gpio_20_o_ds),
1294 .io_pads_gpio_21_i_ival(dut_io_pads_gpio_21_i_ival),
1295 .io_pads_gpio_21_o_oval(dut_io_pads_gpio_21_o_oval),
1296 .io_pads_gpio_21_o_oe(dut_io_pads_gpio_21_o_oe),
1297 .io_pads_gpio_21_o_ie(dut_io_pads_gpio_21_o_ie),
1298 .io_pads_gpio_21_o_pue(dut_io_pads_gpio_21_o_pue),
1299 .io_pads_gpio_21_o_ds(dut_io_pads_gpio_21_o_ds),
1300 .io_pads_gpio_22_i_ival(dut_io_pads_gpio_22_i_ival),
1301 .io_pads_gpio_22_o_oval(dut_io_pads_gpio_22_o_oval),
1302 .io_pads_gpio_22_o_oe(dut_io_pads_gpio_22_o_oe),
1303 .io_pads_gpio_22_o_ie(dut_io_pads_gpio_22_o_ie),
1304 .io_pads_gpio_22_o_pue(dut_io_pads_gpio_22_o_pue),
1305 .io_pads_gpio_22_o_ds(dut_io_pads_gpio_22_o_ds),
1306 .io_pads_gpio_23_i_ival(dut_io_pads_gpio_23_i_ival),
1307 .io_pads_gpio_23_o_oval(dut_io_pads_gpio_23_o_oval),
1308 .io_pads_gpio_23_o_oe(dut_io_pads_gpio_23_o_oe),
1309 .io_pads_gpio_23_o_ie(dut_io_pads_gpio_23_o_ie),
1310 .io_pads_gpio_23_o_pue(dut_io_pads_gpio_23_o_pue),
1311 .io_pads_gpio_23_o_ds(dut_io_pads_gpio_23_o_ds),
1312 .io_pads_gpio_24_i_ival(dut_io_pads_gpio_24_i_ival),
1313 .io_pads_gpio_24_o_oval(dut_io_pads_gpio_24_o_oval),
1314 .io_pads_gpio_24_o_oe(dut_io_pads_gpio_24_o_oe),
1315 .io_pads_gpio_24_o_ie(dut_io_pads_gpio_24_o_ie),
1316 .io_pads_gpio_24_o_pue(dut_io_pads_gpio_24_o_pue),
1317 .io_pads_gpio_24_o_ds(dut_io_pads_gpio_24_o_ds),
1318 .io_pads_gpio_25_i_ival(dut_io_pads_gpio_25_i_ival),
1319 .io_pads_gpio_25_o_oval(dut_io_pads_gpio_25_o_oval),
1320 .io_pads_gpio_25_o_oe(dut_io_pads_gpio_25_o_oe),
1321 .io_pads_gpio_25_o_ie(dut_io_pads_gpio_25_o_ie),
1322 .io_pads_gpio_25_o_pue(dut_io_pads_gpio_25_o_pue),
1323 .io_pads_gpio_25_o_ds(dut_io_pads_gpio_25_o_ds),
1324 .io_pads_gpio_26_i_ival(dut_io_pads_gpio_26_i_ival),
1325 .io_pads_gpio_26_o_oval(dut_io_pads_gpio_26_o_oval),
1326 .io_pads_gpio_26_o_oe(dut_io_pads_gpio_26_o_oe),
1327 .io_pads_gpio_26_o_ie(dut_io_pads_gpio_26_o_ie),
1328 .io_pads_gpio_26_o_pue(dut_io_pads_gpio_26_o_pue),
1329 .io_pads_gpio_26_o_ds(dut_io_pads_gpio_26_o_ds),
1330 .io_pads_gpio_27_i_ival(dut_io_pads_gpio_27_i_ival),
1331 .io_pads_gpio_27_o_oval(dut_io_pads_gpio_27_o_oval),
1332 .io_pads_gpio_27_o_oe(dut_io_pads_gpio_27_o_oe),
1333 .io_pads_gpio_27_o_ie(dut_io_pads_gpio_27_o_ie),
1334 .io_pads_gpio_27_o_pue(dut_io_pads_gpio_27_o_pue),
1335 .io_pads_gpio_27_o_ds(dut_io_pads_gpio_27_o_ds),
1336 .io_pads_gpio_28_i_ival(dut_io_pads_gpio_28_i_ival),
1337 .io_pads_gpio_28_o_oval(dut_io_pads_gpio_28_o_oval),
1338 .io_pads_gpio_28_o_oe(dut_io_pads_gpio_28_o_oe),
1339 .io_pads_gpio_28_o_ie(dut_io_pads_gpio_28_o_ie),
1340 .io_pads_gpio_28_o_pue(dut_io_pads_gpio_28_o_pue),
1341 .io_pads_gpio_28_o_ds(dut_io_pads_gpio_28_o_ds),
1342 .io_pads_gpio_29_i_ival(dut_io_pads_gpio_29_i_ival),
1343 .io_pads_gpio_29_o_oval(dut_io_pads_gpio_29_o_oval),
1344 .io_pads_gpio_29_o_oe(dut_io_pads_gpio_29_o_oe),
1345 .io_pads_gpio_29_o_ie(dut_io_pads_gpio_29_o_ie),
1346 .io_pads_gpio_29_o_pue(dut_io_pads_gpio_29_o_pue),
1347 .io_pads_gpio_29_o_ds(dut_io_pads_gpio_29_o_ds),
1348 .io_pads_gpio_30_i_ival(dut_io_pads_gpio_30_i_ival),
1349 .io_pads_gpio_30_o_oval(dut_io_pads_gpio_30_o_oval),
1350 .io_pads_gpio_30_o_oe(dut_io_pads_gpio_30_o_oe),
1351 .io_pads_gpio_30_o_ie(dut_io_pads_gpio_30_o_ie),
1352 .io_pads_gpio_30_o_pue(dut_io_pads_gpio_30_o_pue),
1353 .io_pads_gpio_30_o_ds(dut_io_pads_gpio_30_o_ds),
1354 .io_pads_gpio_31_i_ival(dut_io_pads_gpio_31_i_ival),
1355 .io_pads_gpio_31_o_oval(dut_io_pads_gpio_31_o_oval),
1356 .io_pads_gpio_31_o_oe(dut_io_pads_gpio_31_o_oe),
1357 .io_pads_gpio_31_o_ie(dut_io_pads_gpio_31_o_ie),
1358 .io_pads_gpio_31_o_pue(dut_io_pads_gpio_31_o_pue),
1359 .io_pads_gpio_31_o_ds(dut_io_pads_gpio_31_o_ds),
1360 .io_pads_qspi_sck_i_ival(dut_io_pads_qspi_sck_i_ival),
1361 .io_pads_qspi_sck_o_oval(dut_io_pads_qspi_sck_o_oval),
1362 .io_pads_qspi_sck_o_oe(dut_io_pads_qspi_sck_o_oe),
1363 .io_pads_qspi_sck_o_ie(dut_io_pads_qspi_sck_o_ie),
1364 .io_pads_qspi_sck_o_pue(dut_io_pads_qspi_sck_o_pue),
1365 .io_pads_qspi_sck_o_ds(dut_io_pads_qspi_sck_o_ds),
1366 .io_pads_qspi_dq_0_i_ival(dut_io_pads_qspi_dq_0_i_ival),
1367 .io_pads_qspi_dq_0_o_oval(dut_io_pads_qspi_dq_0_o_oval),
1368 .io_pads_qspi_dq_0_o_oe(dut_io_pads_qspi_dq_0_o_oe),
1369 .io_pads_qspi_dq_0_o_ie(dut_io_pads_qspi_dq_0_o_ie),
1370 .io_pads_qspi_dq_0_o_pue(dut_io_pads_qspi_dq_0_o_pue),
1371 .io_pads_qspi_dq_0_o_ds(dut_io_pads_qspi_dq_0_o_ds),
1372 .io_pads_qspi_dq_1_i_ival(dut_io_pads_qspi_dq_1_i_ival),
1373 .io_pads_qspi_dq_1_o_oval(dut_io_pads_qspi_dq_1_o_oval),
1374 .io_pads_qspi_dq_1_o_oe(dut_io_pads_qspi_dq_1_o_oe),
1375 .io_pads_qspi_dq_1_o_ie(dut_io_pads_qspi_dq_1_o_ie),
1376 .io_pads_qspi_dq_1_o_pue(dut_io_pads_qspi_dq_1_o_pue),
1377 .io_pads_qspi_dq_1_o_ds(dut_io_pads_qspi_dq_1_o_ds),
1378 .io_pads_qspi_dq_2_i_ival(dut_io_pads_qspi_dq_2_i_ival),
1379 .io_pads_qspi_dq_2_o_oval(dut_io_pads_qspi_dq_2_o_oval),
1380 .io_pads_qspi_dq_2_o_oe(dut_io_pads_qspi_dq_2_o_oe),
1381 .io_pads_qspi_dq_2_o_ie(dut_io_pads_qspi_dq_2_o_ie),
1382 .io_pads_qspi_dq_2_o_pue(dut_io_pads_qspi_dq_2_o_pue),
1383 .io_pads_qspi_dq_2_o_ds(dut_io_pads_qspi_dq_2_o_ds),
1384 .io_pads_qspi_dq_3_i_ival(dut_io_pads_qspi_dq_3_i_ival),
1385 .io_pads_qspi_dq_3_o_oval(dut_io_pads_qspi_dq_3_o_oval),
1386 .io_pads_qspi_dq_3_o_oe(dut_io_pads_qspi_dq_3_o_oe),
1387 .io_pads_qspi_dq_3_o_ie(dut_io_pads_qspi_dq_3_o_ie),
1388 .io_pads_qspi_dq_3_o_pue(dut_io_pads_qspi_dq_3_o_pue),
1389 .io_pads_qspi_dq_3_o_ds(dut_io_pads_qspi_dq_3_o_ds),
1390 .io_pads_qspi_cs_0_i_ival(dut_io_pads_qspi_cs_0_i_ival),
1391 .io_pads_qspi_cs_0_o_oval(dut_io_pads_qspi_cs_0_o_oval),
1392 .io_pads_qspi_cs_0_o_oe(dut_io_pads_qspi_cs_0_o_oe),
1393 .io_pads_qspi_cs_0_o_ie(dut_io_pads_qspi_cs_0_o_ie),
1394 .io_pads_qspi_cs_0_o_pue(dut_io_pads_qspi_cs_0_o_pue),
1395 .io_pads_qspi_cs_0_o_ds(dut_io_pads_qspi_cs_0_o_ds),
1396 .io_pads_aon_erst_n_i_ival(dut_io_pads_aon_erst_n_i_ival),
1397 .io_pads_aon_erst_n_o_oval(dut_io_pads_aon_erst_n_o_oval),
1398 .io_pads_aon_erst_n_o_oe(dut_io_pads_aon_erst_n_o_oe),
1399 .io_pads_aon_erst_n_o_ie(dut_io_pads_aon_erst_n_o_ie),
1400 .io_pads_aon_erst_n_o_pue(dut_io_pads_aon_erst_n_o_pue),
1401 .io_pads_aon_erst_n_o_ds(dut_io_pads_aon_erst_n_o_ds),
1402 .io_pads_aon_lfextclk_i_ival(dut_io_pads_aon_lfextclk_i_ival),
1403 .io_pads_aon_lfextclk_o_oval(dut_io_pads_aon_lfextclk_o_oval),
1404 .io_pads_aon_lfextclk_o_oe(dut_io_pads_aon_lfextclk_o_oe),
1405 .io_pads_aon_lfextclk_o_ie(dut_io_pads_aon_lfextclk_o_ie),
1406 .io_pads_aon_lfextclk_o_pue(dut_io_pads_aon_lfextclk_o_pue),
1407 .io_pads_aon_lfextclk_o_ds(dut_io_pads_aon_lfextclk_o_ds),
1408 .io_pads_aon_pmu_dwakeup_n_i_ival(dut_io_pads_aon_pmu_dwakeup_n_i_ival),
1409 .io_pads_aon_pmu_dwakeup_n_o_oval(dut_io_pads_aon_pmu_dwakeup_n_o_oval),
1410 .io_pads_aon_pmu_dwakeup_n_o_oe(dut_io_pads_aon_pmu_dwakeup_n_o_oe),
1411 .io_pads_aon_pmu_dwakeup_n_o_ie(dut_io_pads_aon_pmu_dwakeup_n_o_ie),
1412 .io_pads_aon_pmu_dwakeup_n_o_pue(dut_io_pads_aon_pmu_dwakeup_n_o_pue),
1413 .io_pads_aon_pmu_dwakeup_n_o_ds(dut_io_pads_aon_pmu_dwakeup_n_o_ds),
1414 .io_pads_aon_pmu_vddpaden_i_ival(dut_io_pads_aon_pmu_vddpaden_i_ival),
1415 .io_pads_aon_pmu_vddpaden_o_oval(dut_io_pads_aon_pmu_vddpaden_o_oval),
1416 .io_pads_aon_pmu_vddpaden_o_oe(dut_io_pads_aon_pmu_vddpaden_o_oe),
1417 .io_pads_aon_pmu_vddpaden_o_ie(dut_io_pads_aon_pmu_vddpaden_o_ie),
1418 .io_pads_aon_pmu_vddpaden_o_pue(dut_io_pads_aon_pmu_vddpaden_o_pue),
1419 .io_pads_aon_pmu_vddpaden_o_ds(dut_io_pads_aon_pmu_vddpaden_o_ds)
1420 );
1421
1422 // Assign reasonable values to otherwise unconnected inputs to chip top
1423
1424 wire iobuf_dwakeup_o;
1425 IOBUF
1426 #(
1427 .DRIVE(12),
1428 .IBUF_LOW_PWR("TRUE"),
1429 .IOSTANDARD("DEFAULT"),
1430 .SLEW("SLOW")
1431 )
1432 IOBUF_dwakeup_n
1433 (
1434 .O(iobuf_dwakeup_o),
1435 .IO(btn_3),
1436 .I(~dut_io_pads_aon_pmu_dwakeup_n_o_oval),
1437 .T(~dut_io_pads_aon_pmu_dwakeup_n_o_oe)
1438 );
1439 assign dut_io_pads_aon_pmu_dwakeup_n_i_ival = (~iobuf_dwakeup_o) & dut_io_pads_aon_pmu_dwakeup_n_o_ie;
1440
1441 assign dut_io_pads_aon_erst_n_i_ival = ~reset_periph;
1442 assign dut_io_pads_aon_lfextclk_i_ival = slowclk;
1443
1444 assign dut_io_pads_aon_pmu_vddpaden_i_ival = 1'b1;
1445
1446 assign qspi_cs = dut_io_pads_qspi_cs_0_o_oval;
1447 assign qspi_ui_dq_o = {
1448 dut_io_pads_qspi_dq_3_o_oval,
1449 dut_io_pads_qspi_dq_2_o_oval,
1450 dut_io_pads_qspi_dq_1_o_oval,
1451 dut_io_pads_qspi_dq_0_o_oval
1452 };
1453 assign qspi_ui_dq_oe = {
1454 dut_io_pads_qspi_dq_3_o_oe,
1455 dut_io_pads_qspi_dq_2_o_oe,
1456 dut_io_pads_qspi_dq_1_o_oe,
1457 dut_io_pads_qspi_dq_0_o_oe
1458 };
1459 assign dut_io_pads_qspi_dq_0_i_ival = qspi_ui_dq_i[0];
1460 assign dut_io_pads_qspi_dq_1_i_ival = qspi_ui_dq_i[1];
1461 assign dut_io_pads_qspi_dq_2_i_ival = qspi_ui_dq_i[2];
1462 assign dut_io_pads_qspi_dq_3_i_ival = qspi_ui_dq_i[3];
1463 assign qspi_sck = dut_io_pads_qspi_sck_o_oval;
1464 endmodule
1465
1466 // Divide clock by 256, used to generate 32.768 kHz clock for AON block
1467 module clkdivider
1468 (
1469 input wire clk,
1470 input wire reset,
1471 output reg clk_out
1472 );
1473
1474 reg [7:0] counter;
1475
1476 always @(posedge clk)
1477 begin
1478 if (reset)
1479 begin
1480 counter <= 8'd0;
1481 clk_out <= 1'b0;
1482 end
1483 else if (counter == 8'hff)
1484 begin
1485 counter <= 8'd0;
1486 clk_out <= ~clk_out;
1487 end
1488 else
1489 begin
1490 counter <= counter+1;
1491 end
1492 end
1493 endmodule