Added global csr pin
diff --git a/verilog/dv/gpio_test/gpio_test.c b/verilog/dv/gpio_test/gpio_test.c
index 50ea61b..fa53b87 100644
--- a/verilog/dv/gpio_test/gpio_test.c
+++ b/verilog/dv/gpio_test/gpio_test.c
@@ -55,7 +55,7 @@
// Configure IO pin 21 as user output
// Observe value in the testbench
- reg_mprj_io_21 = GPIO_MODE_USER_STD_OUTPUT;
+ reg_mprj_io_22 = GPIO_MODE_USER_STD_OUTPUT;
/* Apply configuration */
reg_mprj_xfer = 1;
diff --git a/verilog/dv/gpio_test/gpio_test_tb.v b/verilog/dv/gpio_test/gpio_test_tb.v
index 131b5ff..c27fda7 100644
--- a/verilog/dv/gpio_test/gpio_test_tb.v
+++ b/verilog/dv/gpio_test/gpio_test_tb.v
@@ -30,9 +30,9 @@
wire gpio;
wire [37:0] mprj_io;
- wire [7:0] mprj_io_0;
+ wire mprj_io_22;
- assign mprj_io_0 = mprj_io[7:0];
+ assign mprj_io_0 = mprj_io[22];
// assign mprj_io_0 = {mprj_io[8:4],mprj_io[2:0]};
assign mprj_io[3] = (CSB == 1'b1) ? 1'b1 : 1'bz;
@@ -42,7 +42,7 @@
// simulation. Normally this would be a slow clock and the digital PLL
// would be the fast clock.
- always #12.5 clock <= (clock === 1'b0);
+ always #5 clock <= (clock === 1'b0);
initial begin
clock = 0;
@@ -51,7 +51,8 @@
initial begin
$dumpfile("gpio_test.vcd");
$dumpvars(0, gpio_test_tb);
-
+
+ /*
// Repeat cycles of 1000 clock edges as needed to complete testbench
repeat (25) begin
repeat (1000) @(posedge clock);
@@ -65,6 +66,7 @@
`endif
$display("%c[0m",27);
$finish;
+ */
end
initial begin
diff --git a/verilog/rtl/openram_testchip.v b/verilog/rtl/openram_testchip.v
index 50a227b..809d0b7 100644
--- a/verilog/rtl/openram_testchip.v
+++ b/verilog/rtl/openram_testchip.v
@@ -20,7 +20,7 @@
input gpio_in,
input gpio_scan,
input gpio_sram_load,
-
+ input global_csr,
// SRAM data outputs to be captured
input [`DATA_SIZE-1:0] sram0_data0,
input [`DATA_SIZE-1:0] sram0_data1,
@@ -131,13 +131,13 @@
left_addr0 = sram_register[`TOTAL_SIZE-`SELECT_SIZE-1:`TOTAL_SIZE-`SELECT_SIZE-`ADDR_SIZE];
left_din0 = sram_register[`DATA_SIZE+`PORT_SIZE+`WMASK_SIZE+1:`PORT_SIZE+`WMASK_SIZE+2];
- csb0_temp = gpio_scan | la_in_load | sram_register[`PORT_SIZE+`WMASK_SIZE+1];
+ csb0_temp = global_csr | sram_register[`PORT_SIZE+`WMASK_SIZE+1];
left_web0 = sram_register[`PORT_SIZE+`WMASK_SIZE];
left_wmask0 = sram_register[`PORT_SIZE+`WMASK_SIZE-1:`PORT_SIZE];
left_addr1 = sram_register[`PORT_SIZE-1:`DATA_SIZE+`WMASK_SIZE+2];
left_din1 = sram_register[`DATA_SIZE+`WMASK_SIZE+1:`WMASK_SIZE+2];
- csb1_temp = gpio_scan | la_in_load | sram_register[`WMASK_SIZE+1];
+ csb1_temp = global_csr | sram_register[`WMASK_SIZE+1];
left_web1 = sram_register[`WMASK_SIZE];
left_wmask1 = sram_register[`WMASK_SIZE-1:0];
end
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 2d92416..53569e8 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -98,17 +98,17 @@
wire gpio_sram_clk = io_in[18];
wire gpio_scan = io_in[19];
wire gpio_sram_load = io_in[20];
+ wire global_csr = io_in[21];
wire la_clk = la_data_in[127];
wire la_in_load = la_data_in[125];
wire la_sram_load = la_data_in[124];
-
- // Only io_out[21] is output
- assign io_oeb = ~(1'b1 << 21);
+ // Only io_out[22] is output
+ assign io_oeb = ~(1'b1 << 22);
// Assign other outputs to 0
- assign io_out[`MPRJ_IO_PADS-1:22] = 0;
+ assign io_out[`MPRJ_IO_PADS-1:23] = 0;
wire gpio_out;
- assign io_out[21] = gpio_out;
- assign io_out[20:0] = 0;
+ assign io_out[22] = gpio_out;
+ assign io_out[21:0] = 0;
// Selecting clock pin
reg clk;
@@ -119,6 +119,7 @@
openram_testchip CONTROL_LOGIC(
.resetn(resetn & wb_rst_i),
.clk(clk),
+ .global_csr(global_csr),
.gpio_scan(gpio_scan),
.gpio_sram_load(gpio_sram_load),
.la_in_load(la_in_load),