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