Update
diff --git a/verilog/dv/BrqRV_EB1/BrqRV_EB1.c b/verilog/dv/BrqRV_EB1/BrqRV_EB1.c
index 2422d93..6f575d0 100644
--- a/verilog/dv/BrqRV_EB1/BrqRV_EB1.c
+++ b/verilog/dv/BrqRV_EB1/BrqRV_EB1.c
@@ -3,11 +3,11 @@
void main()
{
- // reg_mprj_io_0 = GPIO_MODE_USER_STD_OUTPUT;
- // reg_mprj_io_1 = GPIO_MODE_USER_STD_OUTPUT;
- // reg_mprj_io_2 = GPIO_MODE_USER_STD_OUTPUT;
- // reg_mprj_io_3 = GPIO_MODE_USER_STD_OUTPUT;
- // reg_mprj_io_4 = GPIO_MODE_USER_STD_OUTPUT;
+ //reg_mprj_io_0 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+ //reg_mprj_io_1 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+ //reg_mprj_io_2 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+ //reg_mprj_io_3 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+ //reg_mprj_io_4 = GPIO_MODE_USER_STD_OUTPUT;
reg_mprj_io_5 = GPIO_MODE_USER_STD_INPUT_NOPULL;
// reg_mprj_io_6 = GPIO_MODE_USER_STD_OUTPUT;
// reg_mprj_io_7 = GPIO_MODE_USER_STD_OUTPUT;
diff --git a/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v b/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v
index 725a32d..900ef3b 100644
--- a/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v
+++ b/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v
@@ -83,13 +83,13 @@
wait(mprj_io_0 == 28'd13);*/
// Observe Output pins [35:8] for multliplication_table
- /*wait(mprj_io_0 == 28'd5);
+ wait(mprj_io_0 == 28'd5);
wait(mprj_io_0 == 28'd10);
wait(mprj_io_0 == 28'd15);
wait(mprj_io_0 == 28'd20);
wait(mprj_io_0 == 28'd25);
wait(mprj_io_0 == 28'd30);
- */
+
// Observe Output pins [35:8] for mean & Determinant
//wait(mprj_io_0 == 28'd5);
@@ -100,30 +100,31 @@
//wait(mprj_io_0 == 28'd4889874);
// Observe Output pins [35:8] for Queue
- //wait(mprj_io_0 == 28'd5);
- //wait(mprj_io_0 == 28'd6);
- //wait(mprj_io_0 == 28'd7);
+ // wait(mprj_io_0 == 28'd5);
+ // wait(mprj_io_0 == 28'd6);
+ // wait(mprj_io_0 == 28'd7);
// Observe Output pins [35:8] for perfect square
//wait(mprj_io_0 == 28'd5);
// Observe Output pins [35:8] for counter / ascending / reverse
- wait(mprj_io_0 == 28'd15);
- wait(mprj_io_0 == 28'd14);
- wait(mprj_io_0 == 28'd13);
- wait(mprj_io_0 == 28'd12);
- wait(mprj_io_0 == 28'd11);
- wait(mprj_io_0 == 28'd10);
- wait(mprj_io_0 == 28'd9);
- wait(mprj_io_0 == 28'd8);
- wait(mprj_io_0 == 28'd7);
- wait(mprj_io_0 == 28'd6);
- wait(mprj_io_0 == 28'd5);
- wait(mprj_io_0 == 28'd4);
- wait(mprj_io_0 == 28'd3);
- wait(mprj_io_0 == 28'd2);
+ /* wait(mprj_io_0 == 28'd0);
wait(mprj_io_0 == 28'd1);
- wait(mprj_io_0 == 28'd0);
+ wait(mprj_io_0 == 28'd2);
+ wait(mprj_io_0 == 28'd3);
+ wait(mprj_io_0 == 28'd4);
+ wait(mprj_io_0 == 28'd5);
+ wait(mprj_io_0 == 28'd6);
+ wait(mprj_io_0 == 28'd7);
+ wait(mprj_io_0 == 28'd8);
+ wait(mprj_io_0 == 28'd9);
+ wait(mprj_io_0 == 28'd10);
+ wait(mprj_io_0 == 28'd11);
+ */
+ //wait(mprj_io_0 == 28'd3);
+ //wait(mprj_io_0 == 28'd2);
+ //wait(mprj_io_0 == 28'd1);
+ //wait(mprj_io_0 == 28'd0);
$display("MPRJ-IO state = %d ", mprj_io[35:8]);
`ifdef GL
@@ -169,6 +170,7 @@
wire flash_io1;
wire r_Rx_Serial;
assign mprj_io[5] = r_Rx_Serial;
+ assign mprj_io[3:0] = 4'h0;
wire VDD3V3 = power1;
wire VDD1V8 = power2;
diff --git a/verilog/rtl/uprj_netlists.v b/verilog/rtl/uprj_netlists.v
index 432879e..3483216 100644
--- a/verilog/rtl/uprj_netlists.v
+++ b/verilog/rtl/uprj_netlists.v
@@ -22,10 +22,13 @@
// Assume default net type to be wire because GL netlists don't have the wire definitions
`default_nettype wire
`include "gl/user_project_wrapper.v"
- `include "gl/user_proj_example.v"
+ //`include "gl/user_proj_example.v"
+ `include "powered_netlist.v"
+ `include "BrqRV_EB1/sky130_sram_1kbyte_1rw1r_32x256_8.v"
`else
`include "user_project_wrapper.v"
- `include "user_proj_example.v"
- `include "BrqRV_EB1/BrqRV_EB1.v"
+ `include "powered_netlist.v"
+ //`include "user_proj_example.v"
+ //`include "BrqRV_EB1/BrqRV_EB1.v"
`include "BrqRV_EB1/sky130_sram_1kbyte_1rw1r_32x256_8.v"
`endif
diff --git a/verilog/rtl/user_proj_example.v b/verilog/rtl/user_proj_example.v
index 0bab84b..5ed2484 100644
--- a/verilog/rtl/user_proj_example.v
+++ b/verilog/rtl/user_proj_example.v
@@ -70,7 +70,17 @@
input [`MPRJ_IO_PADS-1:0] io_in,
output [`MPRJ_IO_PADS-1:0] io_out,
output [`MPRJ_IO_PADS-1:0] io_oeb,
-
+
+
+ // Analog (direct connection to GPIO pad---use with caution)
+ // Note that analog I/O is not available on the 7 lowest-numbered
+ // GPIO pads, and so the analog_io indexing is offset from the
+ // GPIO indexing by 7 (also upper 2 GPIOs do not have analog_io).
+ inout [`MPRJ_IO_PADS-10:0] analog_io,
+
+ // Independent clock (on independent integer divider)
+ input user_clock2,
+
// IRQ
output [2:0] irq
);
@@ -90,6 +100,7 @@
wire [63:0] lsu_axi_wdata;
wire [7:0] lsu_axi_wstrb;
reg lsu_axi_bvalid;
+ reg [2:0] lsu_axi_bid;
// WB MI A
@@ -101,11 +112,14 @@
assign io_out[35:8] = (| lsu_axi_wstrb[3:0]) ? lsu_axi_wdata[27:0] : (| lsu_axi_wstrb[7:4]) ? lsu_axi_wdata[59:32] : {28{1'b0}};
assign io_oeb[35:8] = {28{~lsu_axi_wvalid}};
- assign io_oeb[7:0] = {8{~rst}};
- assign io_oeb[37:36] = {2{~rst}};
+ assign io_oeb[3:0] = 4'hf;
+ assign io_oeb[4] = 1'b0;
+ assign io_oeb[6:5] = 2'b01;
+ assign io_oeb[7] = 1'b0;
always @(posedge wb_clk_i) begin
lsu_axi_bvalid = (lsu_axi_wvalid) ? 1'b1 : 1'b0;
+ lsu_axi_bid = (| lsu_axi_wstrb[3:0]) ? 3'b000 : (| lsu_axi_wstrb[7:4]) ? 3'b001 : 3'b000;
end
// IRQ
assign irq = 3'b000; // Unused
@@ -115,7 +129,6 @@
// Assuming LA probes [65:64] are for controlling the count clk & reset
assign clk = (~la_oenb[65]) ? la_data_in[65] : wb_clk_i;
- //assign clk = wb_clk_i;
assign rst = (~la_oenb[64]) ? la_data_in[64] : ~wb_rst_i;
assign rx_i = (~la_oenb[1]) ? la_data_in[1] : io_in[5];
assign reset_vector = 32'haffff000;
@@ -232,7 +245,7 @@
.lsu_axi_bvalid (lsu_axi_bvalid),
.lsu_axi_bready (),
.lsu_axi_bresp (2'b00),
- .lsu_axi_bid (3'b000),
+ .lsu_axi_bid (lsu_axi_bid),
.lsu_axi_arvalid (),
@@ -404,11 +417,11 @@
.trace_rv_i_interrupt_ip(),
.trace_rv_i_tval_ip (),
- .jtag_tck ( (io_oeb[0]) ? io_in[0] : 1'b0 ),
- .jtag_tms ( (io_oeb[1]) ? io_in[1] : 1'b0 ),
- .jtag_tdi ( (io_oeb[3]) ? io_in[3] : 1'b0 ),
- .jtag_trst_n ( (io_oeb[2]) ? io_in[2] : 1'b0 ),
- .jtag_tdo ( io_out[4] ),
+ .jtag_tck ( io_in[0] ),
+ .jtag_tms ( io_in[1] ),
+ .jtag_tdi ( io_in[3] ),
+ .jtag_trst_n ( io_in[2] ),
+ .jtag_tdo ( io_out[4]),
.mpc_debug_halt_ack ( ),
.mpc_debug_halt_req ( 1'b0),