`timescale 1ns/1ps `define STRINGIFY(x) `"x`" `include `STRINGIFY(`VSRC_CONSTS) module system ( input wire CLK100MHZ, input wire ck_rst, // Green LEDs inout wire led_0, inout wire led_1, inout wire led_2, inout wire led_3, // RGB LEDs, 3 pins each output wire led0_r, output wire led0_g, output wire led0_b, output wire led1_r, output wire led1_g, output wire led1_b, output wire led2_r, output wire led2_g, output wire led2_b, // Sliding switches, 3 used as GPIOs // sw_3 selects input to UART0 inout wire sw_0, inout wire sw_1, inout wire sw_2, input wire sw_3, // Buttons. First 3 used as GPIOs, the last is used as wakeup inout wire btn_0, inout wire btn_1, inout wire btn_2, inout wire btn_3, // Dedicated QSPI interface output wire qspi_cs, output wire qspi_sck, inout wire [3:0] qspi_dq, // UART0 (GPIO 16,17) output wire uart_rxd_out, input wire uart_txd_in, // UART1 (GPIO 24,25) (not present on 48-pin) inout wire ja_0, inout wire ja_1, // Arduino (aka chipkit) shield digital IO pins, 14 is not connected to the // chip, used for debug. inout wire [19:0] ck_io, // Dedicated SPI pins on 6 pin header standard on later arduino models // connected to SPI2 (on FPGA) inout wire ck_miso, inout wire ck_mosi, inout wire ck_ss, inout wire ck_sck, // JD (used for JTAG connection) inout wire jd_0, // TDO inout wire jd_1, // TRST_n inout wire jd_2, // TCK inout wire jd_4, // TDI inout wire jd_5, // TMS input wire jd_6 // SRST_n ); wire clk_out1; wire hfclk; wire mmcm_locked; wire reset_core; wire reset_bus; wire reset_periph; wire reset_intcon_n; wire reset_periph_n; // All wires connected to the chip top wire dut_clock; wire dut_reset; wire dut_io_pads_jtag_TCK_i_ival; wire dut_io_pads_jtag_TCK_o_oval; wire dut_io_pads_jtag_TCK_o_oe; wire dut_io_pads_jtag_TCK_o_ie; wire dut_io_pads_jtag_TCK_o_pue; wire dut_io_pads_jtag_TCK_o_ds; wire dut_io_pads_jtag_TMS_i_ival; wire dut_io_pads_jtag_TMS_o_oval; wire dut_io_pads_jtag_TMS_o_oe; wire dut_io_pads_jtag_TMS_o_ie; wire dut_io_pads_jtag_TMS_o_pue; wire dut_io_pads_jtag_TMS_o_ds; wire dut_io_pads_jtag_TDI_i_ival; wire dut_io_pads_jtag_TDI_o_oval; wire dut_io_pads_jtag_TDI_o_oe; wire dut_io_pads_jtag_TDI_o_ie; wire dut_io_pads_jtag_TDI_o_pue; wire dut_io_pads_jtag_TDI_o_ds; wire dut_io_pads_jtag_TDO_i_ival; wire dut_io_pads_jtag_TDO_o_oval; wire dut_io_pads_jtag_TDO_o_oe; wire dut_io_pads_jtag_TDO_o_ie; wire dut_io_pads_jtag_TDO_o_pue; wire dut_io_pads_jtag_TDO_o_ds; wire dut_io_pads_jtag_TRST_n_i_ival; wire dut_io_pads_jtag_TRST_n_o_oval; wire dut_io_pads_jtag_TRST_n_o_oe; wire dut_io_pads_jtag_TRST_n_o_ie; wire dut_io_pads_jtag_TRST_n_o_pue; wire dut_io_pads_jtag_TRST_n_o_ds; wire dut_io_pads_gpio_0_i_ival; wire dut_io_pads_gpio_0_o_oval; wire dut_io_pads_gpio_0_o_oe; wire dut_io_pads_gpio_0_o_ie; wire dut_io_pads_gpio_0_o_pue; wire dut_io_pads_gpio_0_o_ds; wire dut_io_pads_gpio_1_i_ival; wire dut_io_pads_gpio_1_o_oval; wire dut_io_pads_gpio_1_o_oe; wire dut_io_pads_gpio_1_o_ie; wire dut_io_pads_gpio_1_o_pue; wire dut_io_pads_gpio_1_o_ds; wire dut_io_pads_gpio_2_i_ival; wire dut_io_pads_gpio_2_o_oval; wire dut_io_pads_gpio_2_o_oe; wire dut_io_pads_gpio_2_o_ie; wire dut_io_pads_gpio_2_o_pue; wire dut_io_pads_gpio_2_o_ds; wire dut_io_pads_gpio_3_i_ival; wire dut_io_pads_gpio_3_o_oval; wire dut_io_pads_gpio_3_o_oe; wire dut_io_pads_gpio_3_o_ie; wire dut_io_pads_gpio_3_o_pue; wire dut_io_pads_gpio_3_o_ds; wire dut_io_pads_gpio_4_i_ival; wire dut_io_pads_gpio_4_o_oval; wire dut_io_pads_gpio_4_o_oe; wire dut_io_pads_gpio_4_o_ie; wire dut_io_pads_gpio_4_o_pue; wire dut_io_pads_gpio_4_o_ds; wire dut_io_pads_gpio_5_i_ival; wire dut_io_pads_gpio_5_o_oval; wire dut_io_pads_gpio_5_o_oe; wire dut_io_pads_gpio_5_o_ie; wire dut_io_pads_gpio_5_o_pue; wire dut_io_pads_gpio_5_o_ds; wire dut_io_pads_gpio_6_i_ival; wire dut_io_pads_gpio_6_o_oval; wire dut_io_pads_gpio_6_o_oe; wire dut_io_pads_gpio_6_o_ie; wire dut_io_pads_gpio_6_o_pue; wire dut_io_pads_gpio_6_o_ds; wire dut_io_pads_gpio_7_i_ival; wire dut_io_pads_gpio_7_o_oval; wire dut_io_pads_gpio_7_o_oe; wire dut_io_pads_gpio_7_o_ie; wire dut_io_pads_gpio_7_o_pue; wire dut_io_pads_gpio_7_o_ds; wire dut_io_pads_gpio_8_i_ival; wire dut_io_pads_gpio_8_o_oval; wire dut_io_pads_gpio_8_o_oe; wire dut_io_pads_gpio_8_o_ie; wire dut_io_pads_gpio_8_o_pue; wire dut_io_pads_gpio_8_o_ds; wire dut_io_pads_gpio_9_i_ival; wire dut_io_pads_gpio_9_o_oval; wire dut_io_pads_gpio_9_o_oe; wire dut_io_pads_gpio_9_o_ie; wire dut_io_pads_gpio_9_o_pue; wire dut_io_pads_gpio_9_o_ds; wire dut_io_pads_gpio_10_i_ival; wire dut_io_pads_gpio_10_o_oval; wire dut_io_pads_gpio_10_o_oe; wire dut_io_pads_gpio_10_o_ie; wire dut_io_pads_gpio_10_o_pue; wire dut_io_pads_gpio_10_o_ds; wire dut_io_pads_gpio_11_i_ival; wire dut_io_pads_gpio_11_o_oval; wire dut_io_pads_gpio_11_o_oe; wire dut_io_pads_gpio_11_o_ie; wire dut_io_pads_gpio_11_o_pue; wire dut_io_pads_gpio_11_o_ds; wire dut_io_pads_gpio_12_i_ival; wire dut_io_pads_gpio_12_o_oval; wire dut_io_pads_gpio_12_o_oe; wire dut_io_pads_gpio_12_o_ie; wire dut_io_pads_gpio_12_o_pue; wire dut_io_pads_gpio_12_o_ds; wire dut_io_pads_gpio_13_i_ival; wire dut_io_pads_gpio_13_o_oval; wire dut_io_pads_gpio_13_o_oe; wire dut_io_pads_gpio_13_o_ie; wire dut_io_pads_gpio_13_o_pue; wire dut_io_pads_gpio_13_o_ds; wire dut_io_pads_gpio_14_i_ival; wire dut_io_pads_gpio_14_o_oval; wire dut_io_pads_gpio_14_o_oe; wire dut_io_pads_gpio_14_o_ie; wire dut_io_pads_gpio_14_o_pue; wire dut_io_pads_gpio_14_o_ds; wire dut_io_pads_gpio_15_i_ival; wire dut_io_pads_gpio_15_o_oval; wire dut_io_pads_gpio_15_o_oe; wire dut_io_pads_gpio_15_o_ie; wire dut_io_pads_gpio_15_o_pue; wire dut_io_pads_gpio_15_o_ds; wire dut_io_pads_gpio_16_i_ival; wire dut_io_pads_gpio_16_o_oval; wire dut_io_pads_gpio_16_o_oe; wire dut_io_pads_gpio_16_o_ie; wire dut_io_pads_gpio_16_o_pue; wire dut_io_pads_gpio_16_o_ds; wire dut_io_pads_gpio_17_i_ival; wire dut_io_pads_gpio_17_o_oval; wire dut_io_pads_gpio_17_o_oe; wire dut_io_pads_gpio_17_o_ie; wire dut_io_pads_gpio_17_o_pue; wire dut_io_pads_gpio_17_o_ds; wire dut_io_pads_gpio_18_i_ival; wire dut_io_pads_gpio_18_o_oval; wire dut_io_pads_gpio_18_o_oe; wire dut_io_pads_gpio_18_o_ie; wire dut_io_pads_gpio_18_o_pue; wire dut_io_pads_gpio_18_o_ds; wire dut_io_pads_gpio_19_i_ival; wire dut_io_pads_gpio_19_o_oval; wire dut_io_pads_gpio_19_o_oe; wire dut_io_pads_gpio_19_o_ie; wire dut_io_pads_gpio_19_o_pue; wire dut_io_pads_gpio_19_o_ds; wire dut_io_pads_gpio_20_i_ival; wire dut_io_pads_gpio_20_o_oval; wire dut_io_pads_gpio_20_o_oe; wire dut_io_pads_gpio_20_o_ie; wire dut_io_pads_gpio_20_o_pue; wire dut_io_pads_gpio_20_o_ds; wire dut_io_pads_gpio_21_i_ival; wire dut_io_pads_gpio_21_o_oval; wire dut_io_pads_gpio_21_o_oe; wire dut_io_pads_gpio_21_o_ie; wire dut_io_pads_gpio_21_o_pue; wire dut_io_pads_gpio_21_o_ds; wire dut_io_pads_gpio_22_i_ival; wire dut_io_pads_gpio_22_o_oval; wire dut_io_pads_gpio_22_o_oe; wire dut_io_pads_gpio_22_o_ie; wire dut_io_pads_gpio_22_o_pue; wire dut_io_pads_gpio_22_o_ds; wire dut_io_pads_gpio_23_i_ival; wire dut_io_pads_gpio_23_o_oval; wire dut_io_pads_gpio_23_o_oe; wire dut_io_pads_gpio_23_o_ie; wire dut_io_pads_gpio_23_o_pue; wire dut_io_pads_gpio_23_o_ds; wire dut_io_pads_gpio_24_i_ival; wire dut_io_pads_gpio_24_o_oval; wire dut_io_pads_gpio_24_o_oe; wire dut_io_pads_gpio_24_o_ie; wire dut_io_pads_gpio_24_o_pue; wire dut_io_pads_gpio_24_o_ds; wire dut_io_pads_gpio_25_i_ival; wire dut_io_pads_gpio_25_o_oval; wire dut_io_pads_gpio_25_o_oe; wire dut_io_pads_gpio_25_o_ie; wire dut_io_pads_gpio_25_o_pue; wire dut_io_pads_gpio_25_o_ds; wire dut_io_pads_gpio_26_i_ival; wire dut_io_pads_gpio_26_o_oval; wire dut_io_pads_gpio_26_o_oe; wire dut_io_pads_gpio_26_o_ie; wire dut_io_pads_gpio_26_o_pue; wire dut_io_pads_gpio_26_o_ds; wire dut_io_pads_gpio_27_i_ival; wire dut_io_pads_gpio_27_o_oval; wire dut_io_pads_gpio_27_o_oe; wire dut_io_pads_gpio_27_o_ie; wire dut_io_pads_gpio_27_o_pue; wire dut_io_pads_gpio_27_o_ds; wire dut_io_pads_gpio_28_i_ival; wire dut_io_pads_gpio_28_o_oval; wire dut_io_pads_gpio_28_o_oe; wire dut_io_pads_gpio_28_o_ie; wire dut_io_pads_gpio_28_o_pue; wire dut_io_pads_gpio_28_o_ds; wire dut_io_pads_gpio_29_i_ival; wire dut_io_pads_gpio_29_o_oval; wire dut_io_pads_gpio_29_o_oe; wire dut_io_pads_gpio_29_o_ie; wire dut_io_pads_gpio_29_o_pue; wire dut_io_pads_gpio_29_o_ds; wire dut_io_pads_gpio_30_i_ival; wire dut_io_pads_gpio_30_o_oval; wire dut_io_pads_gpio_30_o_oe; wire dut_io_pads_gpio_30_o_ie; wire dut_io_pads_gpio_30_o_pue; wire dut_io_pads_gpio_30_o_ds; wire dut_io_pads_gpio_31_i_ival; wire dut_io_pads_gpio_31_o_oval; wire dut_io_pads_gpio_31_o_oe; wire dut_io_pads_gpio_31_o_ie; wire dut_io_pads_gpio_31_o_pue; wire dut_io_pads_gpio_31_o_ds; wire dut_io_pads_qspi_sck_i_ival; wire dut_io_pads_qspi_sck_o_oval; wire dut_io_pads_qspi_sck_o_oe; wire dut_io_pads_qspi_sck_o_ie; wire dut_io_pads_qspi_sck_o_pue; wire dut_io_pads_qspi_sck_o_ds; wire dut_io_pads_qspi_dq_0_i_ival; wire dut_io_pads_qspi_dq_0_o_oval; wire dut_io_pads_qspi_dq_0_o_oe; wire dut_io_pads_qspi_dq_0_o_ie; wire dut_io_pads_qspi_dq_0_o_pue; wire dut_io_pads_qspi_dq_0_o_ds; wire dut_io_pads_qspi_dq_1_i_ival; wire dut_io_pads_qspi_dq_1_o_oval; wire dut_io_pads_qspi_dq_1_o_oe; wire dut_io_pads_qspi_dq_1_o_ie; wire dut_io_pads_qspi_dq_1_o_pue; wire dut_io_pads_qspi_dq_1_o_ds; wire dut_io_pads_qspi_dq_2_i_ival; wire dut_io_pads_qspi_dq_2_o_oval; wire dut_io_pads_qspi_dq_2_o_oe; wire dut_io_pads_qspi_dq_2_o_ie; wire dut_io_pads_qspi_dq_2_o_pue; wire dut_io_pads_qspi_dq_2_o_ds; wire dut_io_pads_qspi_dq_3_i_ival; wire dut_io_pads_qspi_dq_3_o_oval; wire dut_io_pads_qspi_dq_3_o_oe; wire dut_io_pads_qspi_dq_3_o_ie; wire dut_io_pads_qspi_dq_3_o_pue; wire dut_io_pads_qspi_dq_3_o_ds; wire dut_io_pads_qspi_cs_0_i_ival; wire dut_io_pads_qspi_cs_0_o_oval; wire dut_io_pads_qspi_cs_0_o_oe; wire dut_io_pads_qspi_cs_0_o_ie; wire dut_io_pads_qspi_cs_0_o_pue; wire dut_io_pads_qspi_cs_0_o_ds; wire dut_io_pads_aon_erst_n_i_ival; wire dut_io_pads_aon_erst_n_o_oval; wire dut_io_pads_aon_erst_n_o_oe; wire dut_io_pads_aon_erst_n_o_ie; wire dut_io_pads_aon_erst_n_o_pue; wire dut_io_pads_aon_erst_n_o_ds; wire dut_io_pads_aon_lfextclk_i_ival; wire dut_io_pads_aon_lfextclk_o_oval; wire dut_io_pads_aon_lfextclk_o_oe; wire dut_io_pads_aon_lfextclk_o_ie; wire dut_io_pads_aon_lfextclk_o_pue; wire dut_io_pads_aon_lfextclk_o_ds; wire dut_io_pads_aon_pmu_dwakeup_n_i_ival; wire dut_io_pads_aon_pmu_dwakeup_n_o_oval; wire dut_io_pads_aon_pmu_dwakeup_n_o_oe; wire dut_io_pads_aon_pmu_dwakeup_n_o_ie; wire dut_io_pads_aon_pmu_dwakeup_n_o_pue; wire dut_io_pads_aon_pmu_dwakeup_n_o_ds; wire dut_io_pads_aon_pmu_vddpaden_i_ival; wire dut_io_pads_aon_pmu_vddpaden_o_oval; wire dut_io_pads_aon_pmu_vddpaden_o_oe; wire dut_io_pads_aon_pmu_vddpaden_o_ie; wire dut_io_pads_aon_pmu_vddpaden_o_pue; wire dut_io_pads_aon_pmu_vddpaden_o_ds; //================================================= // Clock & Reset wire SRST_n; // From FTDI Chip mmcm ip_mmcm ( .clk_in1(CLK100MHZ), .clk_out1(clk_out1), // 8.388 MHz = 32.768 kHz * 256 .clk_out2(hfclk), // 65 MHz .resetn(ck_rst), .locked(mmcm_locked) ); wire slowclk; clkdivider slowclkgen ( .clk(clk_out1), .reset(~mmcm_locked), .clk_out(slowclk) ); reset_sys ip_reset_sys ( .slowest_sync_clk(clk_out1), .ext_reset_in(ck_rst & SRST_n), // Active-low .aux_reset_in(1'b1), .mb_debug_sys_rst(1'b0), .dcm_locked(mmcm_locked), .mb_reset(reset_core), .bus_struct_reset(reset_bus), .peripheral_reset(reset_periph), .interconnect_aresetn(reset_intcon_n), .peripheral_aresetn(reset_periph_n) ); //================================================= // SPI Interface wire [3:0] qspi_ui_dq_o, qspi_ui_dq_oe; wire [3:0] qspi_ui_dq_i; PULLUP qspi_pullup[3:0] ( .O(qspi_dq) ); IOBUF qspi_iobuf[3:0] ( .IO(qspi_dq), .O(qspi_ui_dq_i), .I(qspi_ui_dq_o), .T(~qspi_ui_dq_oe) ); //================================================= // IOBUF instantiation for GPIOs wire gpio_0; wire gpio_1; wire gpio_2; wire gpio_3; wire gpio_4; wire gpio_5; wire gpio_6; wire gpio_7; wire gpio_8; wire gpio_9; wire gpio_10; wire gpio_11; wire gpio_12; wire gpio_13; wire gpio_14; wire gpio_15; wire gpio_16; wire gpio_17; wire gpio_18; wire gpio_19; wire gpio_20; wire gpio_21; wire gpio_22; wire gpio_23; wire gpio_24; wire gpio_25; wire gpio_26; wire gpio_27; wire gpio_28; wire gpio_29; wire gpio_30; wire gpio_31; wire iobuf_gpio_0_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_0 ( .O(iobuf_gpio_0_o), .IO(gpio_0), .I(dut_io_pads_gpio_0_o_oval), .T(~dut_io_pads_gpio_0_o_oe) ); assign dut_io_pads_gpio_0_i_ival = iobuf_gpio_0_o & dut_io_pads_gpio_0_o_ie; wire iobuf_gpio_1_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_1 ( .O(iobuf_gpio_1_o), .IO(gpio_1), .I(dut_io_pads_gpio_1_o_oval), .T(~dut_io_pads_gpio_1_o_oe) ); assign dut_io_pads_gpio_1_i_ival = iobuf_gpio_1_o & dut_io_pads_gpio_1_o_ie; wire iobuf_gpio_2_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_2 ( .O(iobuf_gpio_2_o), .IO(gpio_2), .I(dut_io_pads_gpio_2_o_oval), .T(~dut_io_pads_gpio_2_o_oe) ); assign dut_io_pads_gpio_2_i_ival = iobuf_gpio_2_o & dut_io_pads_gpio_2_o_ie; wire iobuf_gpio_3_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_3 ( .O(iobuf_gpio_3_o), .IO(gpio_3), .I(dut_io_pads_gpio_3_o_oval), .T(~dut_io_pads_gpio_3_o_oe) ); assign dut_io_pads_gpio_3_i_ival = iobuf_gpio_3_o & dut_io_pads_gpio_3_o_ie; wire iobuf_gpio_4_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_4 ( .O(iobuf_gpio_4_o), .IO(gpio_4), .I(dut_io_pads_gpio_4_o_oval), .T(~dut_io_pads_gpio_4_o_oe) ); assign dut_io_pads_gpio_4_i_ival = iobuf_gpio_4_o & dut_io_pads_gpio_4_o_ie; wire iobuf_gpio_5_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_5 ( .O(iobuf_gpio_5_o), .IO(gpio_5), .I(dut_io_pads_gpio_5_o_oval), .T(~dut_io_pads_gpio_5_o_oe) ); assign dut_io_pads_gpio_5_i_ival = iobuf_gpio_5_o & dut_io_pads_gpio_5_o_ie; assign dut_io_pads_gpio_6_i_ival = 1'b0; assign dut_io_pads_gpio_7_i_ival = 1'b0; assign dut_io_pads_gpio_8_i_ival = 1'b0; wire iobuf_gpio_9_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_9 ( .O(iobuf_gpio_9_o), .IO(gpio_9), .I(dut_io_pads_gpio_9_o_oval), .T(~dut_io_pads_gpio_9_o_oe) ); assign dut_io_pads_gpio_9_i_ival = iobuf_gpio_9_o & dut_io_pads_gpio_9_o_ie; wire iobuf_gpio_10_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_10 ( .O(iobuf_gpio_10_o), .IO(gpio_10), .I(dut_io_pads_gpio_10_o_oval), .T(~dut_io_pads_gpio_10_o_oe) ); assign dut_io_pads_gpio_10_i_ival = iobuf_gpio_10_o & dut_io_pads_gpio_10_o_ie; wire iobuf_gpio_11_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_11 ( .O(iobuf_gpio_11_o), .IO(gpio_11), .I(dut_io_pads_gpio_11_o_oval), .T(~dut_io_pads_gpio_11_o_oe) ); assign dut_io_pads_gpio_11_i_ival = iobuf_gpio_11_o & dut_io_pads_gpio_11_o_ie; wire iobuf_gpio_12_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_12 ( .O(iobuf_gpio_12_o), .IO(gpio_12), .I(dut_io_pads_gpio_12_o_oval), .T(~dut_io_pads_gpio_12_o_oe) ); assign dut_io_pads_gpio_12_i_ival = iobuf_gpio_12_o & dut_io_pads_gpio_12_o_ie; wire iobuf_gpio_13_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_13 ( .O(iobuf_gpio_13_o), .IO(gpio_13), .I(dut_io_pads_gpio_13_o_oval), .T(~dut_io_pads_gpio_13_o_oe) ); assign dut_io_pads_gpio_13_i_ival = iobuf_gpio_13_o & dut_io_pads_gpio_13_o_ie; wire iobuf_gpio_14_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_14 ( .O(iobuf_gpio_14_o), .IO(gpio_14), .I(dut_io_pads_gpio_14_o_oval), .T(~dut_io_pads_gpio_14_o_oe) ); assign dut_io_pads_gpio_14_i_ival = iobuf_gpio_14_o & dut_io_pads_gpio_14_o_ie; wire iobuf_gpio_15_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_15 ( .O(iobuf_gpio_15_o), .IO(gpio_15), .I(dut_io_pads_gpio_15_o_oval), .T(~dut_io_pads_gpio_15_o_oe) ); assign dut_io_pads_gpio_15_i_ival = iobuf_gpio_15_o & dut_io_pads_gpio_15_o_ie; wire iobuf_gpio_16_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_16 ( .O(iobuf_gpio_16_o), .IO(gpio_16), .I(dut_io_pads_gpio_16_o_oval), .T(~dut_io_pads_gpio_16_o_oe) ); // This GPIO input is shared between FTDI TX pin and Arduino shield pin using SW[3] // see below for details 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); wire iobuf_gpio_17_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_17 ( .O(iobuf_gpio_17_o), .IO(gpio_17), .I(dut_io_pads_gpio_17_o_oval), .T(~dut_io_pads_gpio_17_o_oe) ); assign dut_io_pads_gpio_17_i_ival = iobuf_gpio_17_o & dut_io_pads_gpio_17_o_ie; assign uart_rxd_out = (dut_io_pads_gpio_17_o_oval & dut_io_pads_gpio_17_o_oe); wire iobuf_gpio_18_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_18 ( .O(iobuf_gpio_18_o), .IO(gpio_18), .I(dut_io_pads_gpio_18_o_oval), .T(~dut_io_pads_gpio_18_o_oe) ); assign dut_io_pads_gpio_18_i_ival = iobuf_gpio_18_o & dut_io_pads_gpio_18_o_ie; wire iobuf_gpio_19_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_19 ( .O(iobuf_gpio_19_o), .IO(gpio_19), .I(dut_io_pads_gpio_19_o_oval), .T(~dut_io_pads_gpio_19_o_oe) ); assign dut_io_pads_gpio_19_i_ival = iobuf_gpio_19_o & dut_io_pads_gpio_19_o_ie; wire iobuf_gpio_20_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_20 ( .O(iobuf_gpio_20_o), .IO(gpio_20), .I(dut_io_pads_gpio_20_o_oval), .T(~dut_io_pads_gpio_20_o_oe) ); assign dut_io_pads_gpio_20_i_ival = iobuf_gpio_20_o & dut_io_pads_gpio_20_o_ie; wire iobuf_gpio_21_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_21 ( .O(iobuf_gpio_21_o), .IO(gpio_21), .I(dut_io_pads_gpio_21_o_oval), .T(~dut_io_pads_gpio_21_o_oe) ); assign dut_io_pads_gpio_21_i_ival = iobuf_gpio_21_o & dut_io_pads_gpio_21_o_ie; wire iobuf_gpio_22_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_22 ( .O(iobuf_gpio_22_o), .IO(gpio_22), .I(dut_io_pads_gpio_22_o_oval), .T(~dut_io_pads_gpio_22_o_oe) ); assign dut_io_pads_gpio_22_i_ival = iobuf_gpio_22_o & dut_io_pads_gpio_22_o_ie; wire iobuf_gpio_23_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_23 ( .O(iobuf_gpio_23_o), .IO(gpio_23), .I(dut_io_pads_gpio_23_o_oval), .T(~dut_io_pads_gpio_23_o_oe) ); assign dut_io_pads_gpio_23_i_ival = iobuf_gpio_23_o & dut_io_pads_gpio_23_o_ie; wire iobuf_gpio_24_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_24 ( .O(iobuf_gpio_24_o), .IO(gpio_24), .I(dut_io_pads_gpio_24_o_oval), .T(~dut_io_pads_gpio_24_o_oe) ); assign dut_io_pads_gpio_24_i_ival = iobuf_gpio_24_o & dut_io_pads_gpio_24_o_ie; wire iobuf_gpio_25_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_25 ( .O(iobuf_gpio_25_o), .IO(gpio_25), .I(dut_io_pads_gpio_25_o_oval), .T(~dut_io_pads_gpio_25_o_oe) ); assign dut_io_pads_gpio_25_i_ival = iobuf_gpio_25_o & dut_io_pads_gpio_25_o_ie; wire iobuf_gpio_26_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_26 ( .O(iobuf_gpio_26_o), .IO(gpio_26), .I(dut_io_pads_gpio_26_o_oval), .T(~dut_io_pads_gpio_26_o_oe) ); assign dut_io_pads_gpio_26_i_ival = iobuf_gpio_26_o & dut_io_pads_gpio_26_o_ie; wire iobuf_gpio_27_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_27 ( .O(iobuf_gpio_27_o), .IO(gpio_27), .I(dut_io_pads_gpio_27_o_oval), .T(~dut_io_pads_gpio_27_o_oe) ); assign dut_io_pads_gpio_27_i_ival = iobuf_gpio_27_o & dut_io_pads_gpio_27_o_ie; wire iobuf_gpio_28_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_28 ( .O(iobuf_gpio_28_o), .IO(gpio_28), .I(dut_io_pads_gpio_28_o_oval), .T(~dut_io_pads_gpio_28_o_oe) ); assign dut_io_pads_gpio_28_i_ival = iobuf_gpio_28_o & dut_io_pads_gpio_28_o_ie; wire iobuf_gpio_29_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_29 ( .O(iobuf_gpio_29_o), .IO(gpio_29), .I(dut_io_pads_gpio_29_o_oval), .T(~dut_io_pads_gpio_29_o_oe) ); assign dut_io_pads_gpio_29_i_ival = iobuf_gpio_29_o & dut_io_pads_gpio_29_o_ie; wire iobuf_gpio_30_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_30 ( .O(iobuf_gpio_30_o), .IO(gpio_30), .I(dut_io_pads_gpio_30_o_oval), .T(~dut_io_pads_gpio_30_o_oe) ); assign dut_io_pads_gpio_30_i_ival = iobuf_gpio_30_o & dut_io_pads_gpio_30_o_ie; wire iobuf_gpio_31_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_gpio_31 ( .O(iobuf_gpio_31_o), .IO(gpio_31), .I(dut_io_pads_gpio_31_o_oval), .T(~dut_io_pads_gpio_31_o_oe) ); assign dut_io_pads_gpio_31_i_ival = iobuf_gpio_31_o & dut_io_pads_gpio_31_o_ie; //================================================= // JTAG IOBUFs wire iobuf_jtag_TCK_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_jtag_TCK ( .O(iobuf_jtag_TCK_o), .IO(jd_2), .I(dut_io_pads_jtag_TCK_o_oval), .T(~dut_io_pads_jtag_TCK_o_oe) ); assign dut_io_pads_jtag_TCK_i_ival = iobuf_jtag_TCK_o & dut_io_pads_jtag_TCK_o_ie; PULLUP pullup_TCK (.O(jd_2)); wire iobuf_jtag_TMS_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_jtag_TMS ( .O(iobuf_jtag_TMS_o), .IO(jd_5), .I(dut_io_pads_jtag_TMS_o_oval), .T(~dut_io_pads_jtag_TMS_o_oe) ); assign dut_io_pads_jtag_TMS_i_ival = iobuf_jtag_TMS_o & dut_io_pads_jtag_TMS_o_ie; PULLUP pullup_TMS (.O(jd_5)); wire iobuf_jtag_TDI_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_jtag_TDI ( .O(iobuf_jtag_TDI_o), .IO(jd_4), .I(dut_io_pads_jtag_TDI_o_oval), .T(~dut_io_pads_jtag_TDI_o_oe) ); assign dut_io_pads_jtag_TDI_i_ival = iobuf_jtag_TDI_o & dut_io_pads_jtag_TDI_o_ie; PULLUP pullup_TDI (.O(jd_4)); wire iobuf_jtag_TDO_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_jtag_TDO ( .O(iobuf_jtag_TDO_o), .IO(jd_0), .I(dut_io_pads_jtag_TDO_o_oval), .T(~dut_io_pads_jtag_TDO_o_oe) ); assign dut_io_pads_jtag_TDO_i_ival = iobuf_jtag_TDO_o & dut_io_pads_jtag_TDO_o_ie; wire iobuf_jtag_TRST_n_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_jtag_TRST_n ( .O(iobuf_jtag_TRST_n_o), .IO(jd_1), .I(dut_io_pads_jtag_TRST_n_o_oval), .T(~dut_io_pads_jtag_TRST_n_o_oe) ); assign dut_io_pads_jtag_TRST_n_i_ival = iobuf_jtag_TRST_n_o & dut_io_pads_jtag_TRST_n_o_ie; PULLUP pullup_TRST_n(.O(jd_1)); // Mimic putting a pullup on this line (part of reset vote). assign SRST_n = jd_6; PULLUP pullup_SRST_n(.O(SRST_n)); //================================================= // Assignment of IOBUF "IO" pins to package pins // Pins IO0-IO13 // Shield header row 0: PD0-PD7 // FTDI UART TX/RX are not connected to ck_io[1,2] // the way they are on Arduino boards. We copy outgoing // data to both places, switch 3 (sw[3]) determines whether // input to UART comes from FTDI chip or gpio_16 (shield pin PD0) assign ck_io[0] = gpio_16; // UART0 RX assign ck_io[1] = gpio_17; // UART0 TX assign ck_io[2] = gpio_18; assign ck_io[3] = gpio_19; // PWM1(1) assign ck_io[4] = gpio_20; // PWM1(0) assign ck_io[5] = gpio_21; // PWM1(2) assign ck_io[6] = gpio_22; // PWM1(3) assign ck_io[7] = gpio_23; // Header row 1: PB0-PB5 assign ck_io[8] = gpio_0; // PWM0(0) assign ck_io[9] = gpio_1; // PWM0(1) assign ck_io[10] = gpio_2; // SPI1 CS(0) / PWM0(2) assign ck_io[11] = gpio_3; // SPI1 MOSI / PWM0(3) assign ck_io[12] = gpio_4; // SPI1 MISO assign ck_io[13] = gpio_5; // SPI1 SCK // Header row 3: A0-A5 (we don't support using them as analog inputs) // just treat them as regular digital GPIOs assign ck_io[14] = uart_txd_in; //gpio_9; // A0 = CS(1) assign ck_io[15] = gpio_9; // A1 = CS(2) assign ck_io[16] = gpio_10; // A2 = CS(3) / PWM2(0) assign ck_io[17] = gpio_11; // A3 = PWM2(1) assign ck_io[18] = gpio_12; // A4 = PWM2(2) / SDA assign ck_io[19] = gpio_13; // A5 = PWM2(3) / SCL // Mirror outputs of GPIOs with PWM peripherals to RGB LEDs on Arty // assign RGB LED0 R,G,B inputs = PWM0(1,2,3) when iof_1 is active assign led0_r = dut_io_pads_gpio_1_o_oval & dut_io_pads_gpio_1_o_oe; assign led0_g = dut_io_pads_gpio_2_o_oval & dut_io_pads_gpio_2_o_oe; assign led0_b = dut_io_pads_gpio_3_o_oval & dut_io_pads_gpio_2_o_oe; // Note that this is the one which is actually connected on the HiFive/Crazy88 // Board. Same with RGB LED1 R,G,B inputs = PWM1(1,2,3) when iof_1 is active assign led1_r = dut_io_pads_gpio_19_o_oval & dut_io_pads_gpio_19_o_oe; assign led1_g = dut_io_pads_gpio_21_o_oval & dut_io_pads_gpio_21_o_oe; assign led1_b = dut_io_pads_gpio_22_o_oval & dut_io_pads_gpio_22_o_oe; // and RGB LED2 R,G,B inputs = PWM2(1,2,3) when iof_1 is active assign led2_r = dut_io_pads_gpio_11_o_oval & dut_io_pads_gpio_11_o_oe; assign led2_g = dut_io_pads_gpio_12_o_oval & dut_io_pads_gpio_12_o_oe; assign led2_b = dut_io_pads_gpio_13_o_oval & dut_io_pads_gpio_13_o_oe; // Only 19 out of 20 shield pins connected to GPIO pads // Shield pin A5 (pin 14) left unconnected // The buttons are connected to some extra GPIO pads not connected on the // HiFive1 board assign btn_0 = gpio_15; assign btn_1 = gpio_30; assign btn_2 = gpio_31; // UART1 RX/TX pins are assigned to PMOD_D connector pins 0/1 assign ja_0 = gpio_25; // UART1 TX assign ja_1 = gpio_24; // UART1 RX // SPI2 pins mapped to 6 pin ICSP connector (standard on later arduinos) // These are connected to some extra GPIO pads not connected on the HiFive1 // board assign ck_ss = gpio_26; assign ck_mosi = gpio_27; assign ck_miso = gpio_28; assign ck_sck = gpio_29; // Use the LEDs for some more useful debugging things. assign led_0 = ck_rst; assign led_1 = SRST_n; assign led_2 = dut_io_pads_aon_pmu_dwakeup_n_i_ival; assign led_3 = gpio_14; E300ArtyDevKitTop dut ( .clock(hfclk), .reset(1'b1), .io_pads_jtag_TCK_i_ival(dut_io_pads_jtag_TCK_i_ival), .io_pads_jtag_TCK_o_oval(dut_io_pads_jtag_TCK_o_oval), .io_pads_jtag_TCK_o_oe(dut_io_pads_jtag_TCK_o_oe), .io_pads_jtag_TCK_o_ie(dut_io_pads_jtag_TCK_o_ie), .io_pads_jtag_TCK_o_pue(dut_io_pads_jtag_TCK_o_pue), .io_pads_jtag_TCK_o_ds(dut_io_pads_jtag_TCK_o_ds), .io_pads_jtag_TMS_i_ival(dut_io_pads_jtag_TMS_i_ival), .io_pads_jtag_TMS_o_oval(dut_io_pads_jtag_TMS_o_oval), .io_pads_jtag_TMS_o_oe(dut_io_pads_jtag_TMS_o_oe), .io_pads_jtag_TMS_o_ie(dut_io_pads_jtag_TMS_o_ie), .io_pads_jtag_TMS_o_pue(dut_io_pads_jtag_TMS_o_pue), .io_pads_jtag_TMS_o_ds(dut_io_pads_jtag_TMS_o_ds), .io_pads_jtag_TDI_i_ival(dut_io_pads_jtag_TDI_i_ival), .io_pads_jtag_TDI_o_oval(dut_io_pads_jtag_TDI_o_oval), .io_pads_jtag_TDI_o_oe(dut_io_pads_jtag_TDI_o_oe), .io_pads_jtag_TDI_o_ie(dut_io_pads_jtag_TDI_o_ie), .io_pads_jtag_TDI_o_pue(dut_io_pads_jtag_TDI_o_pue), .io_pads_jtag_TDI_o_ds(dut_io_pads_jtag_TDI_o_ds), .io_pads_jtag_TDO_i_ival(dut_io_pads_jtag_TDO_i_ival), .io_pads_jtag_TDO_o_oval(dut_io_pads_jtag_TDO_o_oval), .io_pads_jtag_TDO_o_oe(dut_io_pads_jtag_TDO_o_oe), .io_pads_jtag_TDO_o_ie(dut_io_pads_jtag_TDO_o_ie), .io_pads_jtag_TDO_o_pue(dut_io_pads_jtag_TDO_o_pue), .io_pads_jtag_TDO_o_ds(dut_io_pads_jtag_TDO_o_ds), .io_pads_jtag_TRST_n_i_ival(dut_io_pads_jtag_TRST_n_i_ival), .io_pads_jtag_TRST_n_o_oval(dut_io_pads_jtag_TRST_n_o_oval), .io_pads_jtag_TRST_n_o_oe(dut_io_pads_jtag_TRST_n_o_oe), .io_pads_jtag_TRST_n_o_ie(dut_io_pads_jtag_TRST_n_o_ie), .io_pads_jtag_TRST_n_o_pue(dut_io_pads_jtag_TRST_n_o_pue), .io_pads_jtag_TRST_n_o_ds(dut_io_pads_jtag_TRST_n_o_ds), .io_pads_gpio_0_i_ival(dut_io_pads_gpio_0_i_ival), .io_pads_gpio_0_o_oval(dut_io_pads_gpio_0_o_oval), .io_pads_gpio_0_o_oe(dut_io_pads_gpio_0_o_oe), .io_pads_gpio_0_o_ie(dut_io_pads_gpio_0_o_ie), .io_pads_gpio_0_o_pue(dut_io_pads_gpio_0_o_pue), .io_pads_gpio_0_o_ds(dut_io_pads_gpio_0_o_ds), .io_pads_gpio_1_i_ival(dut_io_pads_gpio_1_i_ival), .io_pads_gpio_1_o_oval(dut_io_pads_gpio_1_o_oval), .io_pads_gpio_1_o_oe(dut_io_pads_gpio_1_o_oe), .io_pads_gpio_1_o_ie(dut_io_pads_gpio_1_o_ie), .io_pads_gpio_1_o_pue(dut_io_pads_gpio_1_o_pue), .io_pads_gpio_1_o_ds(dut_io_pads_gpio_1_o_ds), .io_pads_gpio_2_i_ival(dut_io_pads_gpio_2_i_ival), .io_pads_gpio_2_o_oval(dut_io_pads_gpio_2_o_oval), .io_pads_gpio_2_o_oe(dut_io_pads_gpio_2_o_oe), .io_pads_gpio_2_o_ie(dut_io_pads_gpio_2_o_ie), .io_pads_gpio_2_o_pue(dut_io_pads_gpio_2_o_pue), .io_pads_gpio_2_o_ds(dut_io_pads_gpio_2_o_ds), .io_pads_gpio_3_i_ival(dut_io_pads_gpio_3_i_ival), .io_pads_gpio_3_o_oval(dut_io_pads_gpio_3_o_oval), .io_pads_gpio_3_o_oe(dut_io_pads_gpio_3_o_oe), .io_pads_gpio_3_o_ie(dut_io_pads_gpio_3_o_ie), .io_pads_gpio_3_o_pue(dut_io_pads_gpio_3_o_pue), .io_pads_gpio_3_o_ds(dut_io_pads_gpio_3_o_ds), .io_pads_gpio_4_i_ival(dut_io_pads_gpio_4_i_ival), .io_pads_gpio_4_o_oval(dut_io_pads_gpio_4_o_oval), .io_pads_gpio_4_o_oe(dut_io_pads_gpio_4_o_oe), .io_pads_gpio_4_o_ie(dut_io_pads_gpio_4_o_ie), .io_pads_gpio_4_o_pue(dut_io_pads_gpio_4_o_pue), .io_pads_gpio_4_o_ds(dut_io_pads_gpio_4_o_ds), .io_pads_gpio_5_i_ival(dut_io_pads_gpio_5_i_ival), .io_pads_gpio_5_o_oval(dut_io_pads_gpio_5_o_oval), .io_pads_gpio_5_o_oe(dut_io_pads_gpio_5_o_oe), .io_pads_gpio_5_o_ie(dut_io_pads_gpio_5_o_ie), .io_pads_gpio_5_o_pue(dut_io_pads_gpio_5_o_pue), .io_pads_gpio_5_o_ds(dut_io_pads_gpio_5_o_ds), .io_pads_gpio_6_i_ival(dut_io_pads_gpio_6_i_ival), .io_pads_gpio_6_o_oval(dut_io_pads_gpio_6_o_oval), .io_pads_gpio_6_o_oe(dut_io_pads_gpio_6_o_oe), .io_pads_gpio_6_o_ie(dut_io_pads_gpio_6_o_ie), .io_pads_gpio_6_o_pue(dut_io_pads_gpio_6_o_pue), .io_pads_gpio_6_o_ds(dut_io_pads_gpio_6_o_ds), .io_pads_gpio_7_i_ival(dut_io_pads_gpio_7_i_ival), .io_pads_gpio_7_o_oval(dut_io_pads_gpio_7_o_oval), .io_pads_gpio_7_o_oe(dut_io_pads_gpio_7_o_oe), .io_pads_gpio_7_o_ie(dut_io_pads_gpio_7_o_ie), .io_pads_gpio_7_o_pue(dut_io_pads_gpio_7_o_pue), .io_pads_gpio_7_o_ds(dut_io_pads_gpio_7_o_ds), .io_pads_gpio_8_i_ival(dut_io_pads_gpio_8_i_ival), .io_pads_gpio_8_o_oval(dut_io_pads_gpio_8_o_oval), .io_pads_gpio_8_o_oe(dut_io_pads_gpio_8_o_oe), .io_pads_gpio_8_o_ie(dut_io_pads_gpio_8_o_ie), .io_pads_gpio_8_o_pue(dut_io_pads_gpio_8_o_pue), .io_pads_gpio_8_o_ds(dut_io_pads_gpio_8_o_ds), .io_pads_gpio_9_i_ival(dut_io_pads_gpio_9_i_ival), .io_pads_gpio_9_o_oval(dut_io_pads_gpio_9_o_oval), .io_pads_gpio_9_o_oe(dut_io_pads_gpio_9_o_oe), .io_pads_gpio_9_o_ie(dut_io_pads_gpio_9_o_ie), .io_pads_gpio_9_o_pue(dut_io_pads_gpio_9_o_pue), .io_pads_gpio_9_o_ds(dut_io_pads_gpio_9_o_ds), .io_pads_gpio_10_i_ival(dut_io_pads_gpio_10_i_ival), .io_pads_gpio_10_o_oval(dut_io_pads_gpio_10_o_oval), .io_pads_gpio_10_o_oe(dut_io_pads_gpio_10_o_oe), .io_pads_gpio_10_o_ie(dut_io_pads_gpio_10_o_ie), .io_pads_gpio_10_o_pue(dut_io_pads_gpio_10_o_pue), .io_pads_gpio_10_o_ds(dut_io_pads_gpio_10_o_ds), .io_pads_gpio_11_i_ival(dut_io_pads_gpio_11_i_ival), .io_pads_gpio_11_o_oval(dut_io_pads_gpio_11_o_oval), .io_pads_gpio_11_o_oe(dut_io_pads_gpio_11_o_oe), .io_pads_gpio_11_o_ie(dut_io_pads_gpio_11_o_ie), .io_pads_gpio_11_o_pue(dut_io_pads_gpio_11_o_pue), .io_pads_gpio_11_o_ds(dut_io_pads_gpio_11_o_ds), .io_pads_gpio_12_i_ival(dut_io_pads_gpio_12_i_ival), .io_pads_gpio_12_o_oval(dut_io_pads_gpio_12_o_oval), .io_pads_gpio_12_o_oe(dut_io_pads_gpio_12_o_oe), .io_pads_gpio_12_o_ie(dut_io_pads_gpio_12_o_ie), .io_pads_gpio_12_o_pue(dut_io_pads_gpio_12_o_pue), .io_pads_gpio_12_o_ds(dut_io_pads_gpio_12_o_ds), .io_pads_gpio_13_i_ival(dut_io_pads_gpio_13_i_ival), .io_pads_gpio_13_o_oval(dut_io_pads_gpio_13_o_oval), .io_pads_gpio_13_o_oe(dut_io_pads_gpio_13_o_oe), .io_pads_gpio_13_o_ie(dut_io_pads_gpio_13_o_ie), .io_pads_gpio_13_o_pue(dut_io_pads_gpio_13_o_pue), .io_pads_gpio_13_o_ds(dut_io_pads_gpio_13_o_ds), .io_pads_gpio_14_i_ival(dut_io_pads_gpio_14_i_ival), .io_pads_gpio_14_o_oval(dut_io_pads_gpio_14_o_oval), .io_pads_gpio_14_o_oe(dut_io_pads_gpio_14_o_oe), .io_pads_gpio_14_o_ie(dut_io_pads_gpio_14_o_ie), .io_pads_gpio_14_o_pue(dut_io_pads_gpio_14_o_pue), .io_pads_gpio_14_o_ds(dut_io_pads_gpio_14_o_ds), .io_pads_gpio_15_i_ival(dut_io_pads_gpio_15_i_ival), .io_pads_gpio_15_o_oval(dut_io_pads_gpio_15_o_oval), .io_pads_gpio_15_o_oe(dut_io_pads_gpio_15_o_oe), .io_pads_gpio_15_o_ie(dut_io_pads_gpio_15_o_ie), .io_pads_gpio_15_o_pue(dut_io_pads_gpio_15_o_pue), .io_pads_gpio_15_o_ds(dut_io_pads_gpio_15_o_ds), .io_pads_gpio_16_i_ival(dut_io_pads_gpio_16_i_ival), .io_pads_gpio_16_o_oval(dut_io_pads_gpio_16_o_oval), .io_pads_gpio_16_o_oe(dut_io_pads_gpio_16_o_oe), .io_pads_gpio_16_o_ie(dut_io_pads_gpio_16_o_ie), .io_pads_gpio_16_o_pue(dut_io_pads_gpio_16_o_pue), .io_pads_gpio_16_o_ds(dut_io_pads_gpio_16_o_ds), .io_pads_gpio_17_i_ival(dut_io_pads_gpio_17_i_ival), .io_pads_gpio_17_o_oval(dut_io_pads_gpio_17_o_oval), .io_pads_gpio_17_o_oe(dut_io_pads_gpio_17_o_oe), .io_pads_gpio_17_o_ie(dut_io_pads_gpio_17_o_ie), .io_pads_gpio_17_o_pue(dut_io_pads_gpio_17_o_pue), .io_pads_gpio_17_o_ds(dut_io_pads_gpio_17_o_ds), .io_pads_gpio_18_i_ival(dut_io_pads_gpio_18_i_ival), .io_pads_gpio_18_o_oval(dut_io_pads_gpio_18_o_oval), .io_pads_gpio_18_o_oe(dut_io_pads_gpio_18_o_oe), .io_pads_gpio_18_o_ie(dut_io_pads_gpio_18_o_ie), .io_pads_gpio_18_o_pue(dut_io_pads_gpio_18_o_pue), .io_pads_gpio_18_o_ds(dut_io_pads_gpio_18_o_ds), .io_pads_gpio_19_i_ival(dut_io_pads_gpio_19_i_ival), .io_pads_gpio_19_o_oval(dut_io_pads_gpio_19_o_oval), .io_pads_gpio_19_o_oe(dut_io_pads_gpio_19_o_oe), .io_pads_gpio_19_o_ie(dut_io_pads_gpio_19_o_ie), .io_pads_gpio_19_o_pue(dut_io_pads_gpio_19_o_pue), .io_pads_gpio_19_o_ds(dut_io_pads_gpio_19_o_ds), .io_pads_gpio_20_i_ival(dut_io_pads_gpio_20_i_ival), .io_pads_gpio_20_o_oval(dut_io_pads_gpio_20_o_oval), .io_pads_gpio_20_o_oe(dut_io_pads_gpio_20_o_oe), .io_pads_gpio_20_o_ie(dut_io_pads_gpio_20_o_ie), .io_pads_gpio_20_o_pue(dut_io_pads_gpio_20_o_pue), .io_pads_gpio_20_o_ds(dut_io_pads_gpio_20_o_ds), .io_pads_gpio_21_i_ival(dut_io_pads_gpio_21_i_ival), .io_pads_gpio_21_o_oval(dut_io_pads_gpio_21_o_oval), .io_pads_gpio_21_o_oe(dut_io_pads_gpio_21_o_oe), .io_pads_gpio_21_o_ie(dut_io_pads_gpio_21_o_ie), .io_pads_gpio_21_o_pue(dut_io_pads_gpio_21_o_pue), .io_pads_gpio_21_o_ds(dut_io_pads_gpio_21_o_ds), .io_pads_gpio_22_i_ival(dut_io_pads_gpio_22_i_ival), .io_pads_gpio_22_o_oval(dut_io_pads_gpio_22_o_oval), .io_pads_gpio_22_o_oe(dut_io_pads_gpio_22_o_oe), .io_pads_gpio_22_o_ie(dut_io_pads_gpio_22_o_ie), .io_pads_gpio_22_o_pue(dut_io_pads_gpio_22_o_pue), .io_pads_gpio_22_o_ds(dut_io_pads_gpio_22_o_ds), .io_pads_gpio_23_i_ival(dut_io_pads_gpio_23_i_ival), .io_pads_gpio_23_o_oval(dut_io_pads_gpio_23_o_oval), .io_pads_gpio_23_o_oe(dut_io_pads_gpio_23_o_oe), .io_pads_gpio_23_o_ie(dut_io_pads_gpio_23_o_ie), .io_pads_gpio_23_o_pue(dut_io_pads_gpio_23_o_pue), .io_pads_gpio_23_o_ds(dut_io_pads_gpio_23_o_ds), .io_pads_gpio_24_i_ival(dut_io_pads_gpio_24_i_ival), .io_pads_gpio_24_o_oval(dut_io_pads_gpio_24_o_oval), .io_pads_gpio_24_o_oe(dut_io_pads_gpio_24_o_oe), .io_pads_gpio_24_o_ie(dut_io_pads_gpio_24_o_ie), .io_pads_gpio_24_o_pue(dut_io_pads_gpio_24_o_pue), .io_pads_gpio_24_o_ds(dut_io_pads_gpio_24_o_ds), .io_pads_gpio_25_i_ival(dut_io_pads_gpio_25_i_ival), .io_pads_gpio_25_o_oval(dut_io_pads_gpio_25_o_oval), .io_pads_gpio_25_o_oe(dut_io_pads_gpio_25_o_oe), .io_pads_gpio_25_o_ie(dut_io_pads_gpio_25_o_ie), .io_pads_gpio_25_o_pue(dut_io_pads_gpio_25_o_pue), .io_pads_gpio_25_o_ds(dut_io_pads_gpio_25_o_ds), .io_pads_gpio_26_i_ival(dut_io_pads_gpio_26_i_ival), .io_pads_gpio_26_o_oval(dut_io_pads_gpio_26_o_oval), .io_pads_gpio_26_o_oe(dut_io_pads_gpio_26_o_oe), .io_pads_gpio_26_o_ie(dut_io_pads_gpio_26_o_ie), .io_pads_gpio_26_o_pue(dut_io_pads_gpio_26_o_pue), .io_pads_gpio_26_o_ds(dut_io_pads_gpio_26_o_ds), .io_pads_gpio_27_i_ival(dut_io_pads_gpio_27_i_ival), .io_pads_gpio_27_o_oval(dut_io_pads_gpio_27_o_oval), .io_pads_gpio_27_o_oe(dut_io_pads_gpio_27_o_oe), .io_pads_gpio_27_o_ie(dut_io_pads_gpio_27_o_ie), .io_pads_gpio_27_o_pue(dut_io_pads_gpio_27_o_pue), .io_pads_gpio_27_o_ds(dut_io_pads_gpio_27_o_ds), .io_pads_gpio_28_i_ival(dut_io_pads_gpio_28_i_ival), .io_pads_gpio_28_o_oval(dut_io_pads_gpio_28_o_oval), .io_pads_gpio_28_o_oe(dut_io_pads_gpio_28_o_oe), .io_pads_gpio_28_o_ie(dut_io_pads_gpio_28_o_ie), .io_pads_gpio_28_o_pue(dut_io_pads_gpio_28_o_pue), .io_pads_gpio_28_o_ds(dut_io_pads_gpio_28_o_ds), .io_pads_gpio_29_i_ival(dut_io_pads_gpio_29_i_ival), .io_pads_gpio_29_o_oval(dut_io_pads_gpio_29_o_oval), .io_pads_gpio_29_o_oe(dut_io_pads_gpio_29_o_oe), .io_pads_gpio_29_o_ie(dut_io_pads_gpio_29_o_ie), .io_pads_gpio_29_o_pue(dut_io_pads_gpio_29_o_pue), .io_pads_gpio_29_o_ds(dut_io_pads_gpio_29_o_ds), .io_pads_gpio_30_i_ival(dut_io_pads_gpio_30_i_ival), .io_pads_gpio_30_o_oval(dut_io_pads_gpio_30_o_oval), .io_pads_gpio_30_o_oe(dut_io_pads_gpio_30_o_oe), .io_pads_gpio_30_o_ie(dut_io_pads_gpio_30_o_ie), .io_pads_gpio_30_o_pue(dut_io_pads_gpio_30_o_pue), .io_pads_gpio_30_o_ds(dut_io_pads_gpio_30_o_ds), .io_pads_gpio_31_i_ival(dut_io_pads_gpio_31_i_ival), .io_pads_gpio_31_o_oval(dut_io_pads_gpio_31_o_oval), .io_pads_gpio_31_o_oe(dut_io_pads_gpio_31_o_oe), .io_pads_gpio_31_o_ie(dut_io_pads_gpio_31_o_ie), .io_pads_gpio_31_o_pue(dut_io_pads_gpio_31_o_pue), .io_pads_gpio_31_o_ds(dut_io_pads_gpio_31_o_ds), .io_pads_qspi_sck_i_ival(dut_io_pads_qspi_sck_i_ival), .io_pads_qspi_sck_o_oval(dut_io_pads_qspi_sck_o_oval), .io_pads_qspi_sck_o_oe(dut_io_pads_qspi_sck_o_oe), .io_pads_qspi_sck_o_ie(dut_io_pads_qspi_sck_o_ie), .io_pads_qspi_sck_o_pue(dut_io_pads_qspi_sck_o_pue), .io_pads_qspi_sck_o_ds(dut_io_pads_qspi_sck_o_ds), .io_pads_qspi_dq_0_i_ival(dut_io_pads_qspi_dq_0_i_ival), .io_pads_qspi_dq_0_o_oval(dut_io_pads_qspi_dq_0_o_oval), .io_pads_qspi_dq_0_o_oe(dut_io_pads_qspi_dq_0_o_oe), .io_pads_qspi_dq_0_o_ie(dut_io_pads_qspi_dq_0_o_ie), .io_pads_qspi_dq_0_o_pue(dut_io_pads_qspi_dq_0_o_pue), .io_pads_qspi_dq_0_o_ds(dut_io_pads_qspi_dq_0_o_ds), .io_pads_qspi_dq_1_i_ival(dut_io_pads_qspi_dq_1_i_ival), .io_pads_qspi_dq_1_o_oval(dut_io_pads_qspi_dq_1_o_oval), .io_pads_qspi_dq_1_o_oe(dut_io_pads_qspi_dq_1_o_oe), .io_pads_qspi_dq_1_o_ie(dut_io_pads_qspi_dq_1_o_ie), .io_pads_qspi_dq_1_o_pue(dut_io_pads_qspi_dq_1_o_pue), .io_pads_qspi_dq_1_o_ds(dut_io_pads_qspi_dq_1_o_ds), .io_pads_qspi_dq_2_i_ival(dut_io_pads_qspi_dq_2_i_ival), .io_pads_qspi_dq_2_o_oval(dut_io_pads_qspi_dq_2_o_oval), .io_pads_qspi_dq_2_o_oe(dut_io_pads_qspi_dq_2_o_oe), .io_pads_qspi_dq_2_o_ie(dut_io_pads_qspi_dq_2_o_ie), .io_pads_qspi_dq_2_o_pue(dut_io_pads_qspi_dq_2_o_pue), .io_pads_qspi_dq_2_o_ds(dut_io_pads_qspi_dq_2_o_ds), .io_pads_qspi_dq_3_i_ival(dut_io_pads_qspi_dq_3_i_ival), .io_pads_qspi_dq_3_o_oval(dut_io_pads_qspi_dq_3_o_oval), .io_pads_qspi_dq_3_o_oe(dut_io_pads_qspi_dq_3_o_oe), .io_pads_qspi_dq_3_o_ie(dut_io_pads_qspi_dq_3_o_ie), .io_pads_qspi_dq_3_o_pue(dut_io_pads_qspi_dq_3_o_pue), .io_pads_qspi_dq_3_o_ds(dut_io_pads_qspi_dq_3_o_ds), .io_pads_qspi_cs_0_i_ival(dut_io_pads_qspi_cs_0_i_ival), .io_pads_qspi_cs_0_o_oval(dut_io_pads_qspi_cs_0_o_oval), .io_pads_qspi_cs_0_o_oe(dut_io_pads_qspi_cs_0_o_oe), .io_pads_qspi_cs_0_o_ie(dut_io_pads_qspi_cs_0_o_ie), .io_pads_qspi_cs_0_o_pue(dut_io_pads_qspi_cs_0_o_pue), .io_pads_qspi_cs_0_o_ds(dut_io_pads_qspi_cs_0_o_ds), .io_pads_aon_erst_n_i_ival(dut_io_pads_aon_erst_n_i_ival), .io_pads_aon_erst_n_o_oval(dut_io_pads_aon_erst_n_o_oval), .io_pads_aon_erst_n_o_oe(dut_io_pads_aon_erst_n_o_oe), .io_pads_aon_erst_n_o_ie(dut_io_pads_aon_erst_n_o_ie), .io_pads_aon_erst_n_o_pue(dut_io_pads_aon_erst_n_o_pue), .io_pads_aon_erst_n_o_ds(dut_io_pads_aon_erst_n_o_ds), .io_pads_aon_lfextclk_i_ival(dut_io_pads_aon_lfextclk_i_ival), .io_pads_aon_lfextclk_o_oval(dut_io_pads_aon_lfextclk_o_oval), .io_pads_aon_lfextclk_o_oe(dut_io_pads_aon_lfextclk_o_oe), .io_pads_aon_lfextclk_o_ie(dut_io_pads_aon_lfextclk_o_ie), .io_pads_aon_lfextclk_o_pue(dut_io_pads_aon_lfextclk_o_pue), .io_pads_aon_lfextclk_o_ds(dut_io_pads_aon_lfextclk_o_ds), .io_pads_aon_pmu_dwakeup_n_i_ival(dut_io_pads_aon_pmu_dwakeup_n_i_ival), .io_pads_aon_pmu_dwakeup_n_o_oval(dut_io_pads_aon_pmu_dwakeup_n_o_oval), .io_pads_aon_pmu_dwakeup_n_o_oe(dut_io_pads_aon_pmu_dwakeup_n_o_oe), .io_pads_aon_pmu_dwakeup_n_o_ie(dut_io_pads_aon_pmu_dwakeup_n_o_ie), .io_pads_aon_pmu_dwakeup_n_o_pue(dut_io_pads_aon_pmu_dwakeup_n_o_pue), .io_pads_aon_pmu_dwakeup_n_o_ds(dut_io_pads_aon_pmu_dwakeup_n_o_ds), .io_pads_aon_pmu_vddpaden_i_ival(dut_io_pads_aon_pmu_vddpaden_i_ival), .io_pads_aon_pmu_vddpaden_o_oval(dut_io_pads_aon_pmu_vddpaden_o_oval), .io_pads_aon_pmu_vddpaden_o_oe(dut_io_pads_aon_pmu_vddpaden_o_oe), .io_pads_aon_pmu_vddpaden_o_ie(dut_io_pads_aon_pmu_vddpaden_o_ie), .io_pads_aon_pmu_vddpaden_o_pue(dut_io_pads_aon_pmu_vddpaden_o_pue), .io_pads_aon_pmu_vddpaden_o_ds(dut_io_pads_aon_pmu_vddpaden_o_ds) ); // Assign reasonable values to otherwise unconnected inputs to chip top wire iobuf_dwakeup_o; IOBUF #( .DRIVE(12), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT"), .SLEW("SLOW") ) IOBUF_dwakeup_n ( .O(iobuf_dwakeup_o), .IO(btn_3), .I(~dut_io_pads_aon_pmu_dwakeup_n_o_oval), .T(~dut_io_pads_aon_pmu_dwakeup_n_o_oe) ); assign dut_io_pads_aon_pmu_dwakeup_n_i_ival = (~iobuf_dwakeup_o) & dut_io_pads_aon_pmu_dwakeup_n_o_ie; assign dut_io_pads_aon_erst_n_i_ival = ~reset_periph; assign dut_io_pads_aon_lfextclk_i_ival = slowclk; assign dut_io_pads_aon_pmu_vddpaden_i_ival = 1'b1; assign qspi_cs = dut_io_pads_qspi_cs_0_o_oval; assign qspi_ui_dq_o = { dut_io_pads_qspi_dq_3_o_oval, dut_io_pads_qspi_dq_2_o_oval, dut_io_pads_qspi_dq_1_o_oval, dut_io_pads_qspi_dq_0_o_oval }; assign qspi_ui_dq_oe = { dut_io_pads_qspi_dq_3_o_oe, dut_io_pads_qspi_dq_2_o_oe, dut_io_pads_qspi_dq_1_o_oe, dut_io_pads_qspi_dq_0_o_oe }; assign dut_io_pads_qspi_dq_0_i_ival = qspi_ui_dq_i[0]; assign dut_io_pads_qspi_dq_1_i_ival = qspi_ui_dq_i[1]; assign dut_io_pads_qspi_dq_2_i_ival = qspi_ui_dq_i[2]; assign dut_io_pads_qspi_dq_3_i_ival = qspi_ui_dq_i[3]; assign qspi_sck = dut_io_pads_qspi_sck_o_oval; endmodule // Divide clock by 256, used to generate 32.768 kHz clock for AON block module clkdivider ( input wire clk, input wire reset, output reg clk_out ); reg [7:0] counter; always @(posedge clk) begin if (reset) begin counter <= 8'd0; clk_out <= 1'b0; end else if (counter == 8'hff) begin counter <= 8'd0; clk_out <= ~clk_out; end else begin counter <= counter+1; end end endmodule