Debugged la_test clock error
diff --git a/verilog/dv/la_test/la_test.c b/verilog/dv/la_test/la_test.c
index 16a8284..0b78219 100644
--- a/verilog/dv/la_test/la_test.c
+++ b/verilog/dv/la_test/la_test.c
@@ -85,9 +85,12 @@
{
reg_spimaster_config = 0xa002; // Enable, prescaler = 2,
// connect to housekeeping SPI
- // Configure Pin 22 as user output
- // Observe counter value in the testbench
- reg_mprj_io_22 = GPIO_MODE_USER_STD_OUTPUT;
+
+ // This is to signal when the code is ready to the test bench
+ reg_mprj_io_0 = GPIO_MODE_MGMT_STD_OUTPUT;
+
+ // To start, set pin 0 to 1
+ reg_mprj_datal = 0x000000001;
// Configure LA probes as outputs from the cpu
reg_la0_oenb = reg_la0_iena = 0x00000000; // [31:0]
@@ -98,12 +101,14 @@
reg_la1_data = 0x00000000;
reg_la2_data = 0x00000000;
reg_la3_data = 0x00000000;
-
- // On success, set pin 22 to 1
- reg_mprj_datal = 0xFFFFFFFF;
- /* Apply configuration */
- reg_mprj_xfer = 1;
- while (reg_mprj_xfer == 1);
+ reg_la0_data = 0x10101111;
+ reg_la1_data = 0x20202222;
+ reg_la2_data = 0x30303333;
+ reg_la3_data = 0x40404444;
+ reg_la0_data = 0x00000000;
+ reg_la1_data = 0x00000000;
+ reg_la2_data = 0x00000000;
+ reg_la3_data = 0x00000000;
union packet p;
p.bf.rst = 0;
@@ -127,16 +132,25 @@
p.wf.word2 = reg_la2_data;
p.wf.word3 = reg_la3_data;
- /* p.bf.addr0 = 0x000000001; */
- /* p.bf.din0 = 0xDEADBEEF; */
- /* p.bf.csb0 = 0; */
- /* p.bf.web0 = 0; */
- /* p.bf.csb1 = 1; */
- /* p.bf.web1 = 1; */
- /* reg_la0_data = p.wf.word0; */
- /* reg_la1_data = p.wf.word1; */
- /* reg_la2_data = p.wf.word2; */
- /* reg_la3_data = p.wf.word3; */
+ p.bf.addr0 = 0x000000001;
+ p.bf.din0 = 0xDEADBEEF;
+ p.bf.csb0 = 0;
+ p.bf.web0 = 0;
+ p.bf.csb1 = 1;
+ p.bf.web1 = 1;
+ reg_la0_data = p.wf.word0;
+ reg_la1_data = p.wf.word1;
+ reg_la2_data = p.wf.word2;
+ reg_la3_data = p.wf.word3;
+
+
+ // On end, set pin 0 to 0
+ reg_mprj_datal = 0x000000000;
+
+ /* Apply configuration */
+ reg_mprj_xfer = 1;
+ while (reg_mprj_xfer == 1);
+
}
diff --git a/verilog/dv/la_test/la_test_tb.v b/verilog/dv/la_test/la_test_tb.v
index 4e1a6bd..97b1f10 100644
--- a/verilog/dv/la_test/la_test_tb.v
+++ b/verilog/dv/la_test/la_test_tb.v
@@ -30,13 +30,7 @@
wire gpio;
wire [37:0] mprj_io;
- wire mprj_io_22;
-
- assign mprj_io_22 = 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;
- // assign mprj_io[3] = 1'b1;
+ wire mprj_io_0 = mprj_io[0];
// External clock is used by default. Make this artificially fast for the
// simulation. Normally this would be a slow clock and the digital PLL
@@ -48,11 +42,12 @@
clock = 0;
end
- wire gpio_clk = 1'b0;
+ wire gpio_clk = 1'b1;
wire gpio_scan = 1'b0;
wire gpio_sram_load = 1'b0;
wire global_csb = 1'b1;
wire gpio_in = 1'b0;
+ wire gpio_out = mprj_io[22];
assign mprj_io[15] = 1'b0; // in_select
assign mprj_io[16] = 1'b1; // resetn
@@ -63,26 +58,31 @@
assign mprj_io[21] = global_csb;
initial begin
- //#170000;
+
+ wait(mprj_io_0 == 1'b1);
+ $display($time, " Saw bit 0: VCD starting");
$dumpfile("la_test.vcd");
$dumpvars(0, la_test_tb);
- // #200000 $display("TIMEOUT");
- // $finish;
+ wait(mprj_io_0 == 1'b0);
+ $display($time, " Saw bit 0: VCD stopping");
+ $finish;
- end
+ end // initial begin
+
+ initial begin
+ $dumpfile("foo.vcd");
+ $dumpvars(0, la_test_tb);
+
+ #500000
+ $display("Timeout");
+ $finish;
+ end
- initial begin
- // Observe Output pin 22
- wait(mprj_io_22 == 8'h01);
- $display("Saw bit 22");
- $finish;
- end
-
initial begin
RSTB <= 1'b0;
CSB <= 1'b1; // Force CSB high
@@ -107,10 +107,6 @@
power4 <= 1'b1;
end
- always @(mprj_io) begin
- //#1 $display("MPRJ-IO state = %b ", mprj_io[22]);
- end
-
wire flash_csb;
wire flash_clk;
wire flash_io0;