update usb2uart test
- rtl test pass
- gl test fails (todo)
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
index 05068db..7d4ec32 100644
--- a/.github/workflows/user_project_ci.yml
+++ b/.github/workflows/user_project_ci.yml
@@ -126,7 +126,6 @@
make verify-usb2uart-rtl
- name: Run DV GL tests
- if: failure()
run: |
make verify-usb2uart-gl
@@ -222,7 +221,6 @@
make verify-usb2uart-rtl
- name: Run DV GL tests
- if: failure()
run: |
make verify-usb2uart-gl
diff --git a/verilog/dv/usb2uart/usb2uart.c b/verilog/dv/usb2uart/usb2uart.c
index 8cfb5d9..01dd4e5 100644
--- a/verilog/dv/usb2uart/usb2uart.c
+++ b/verilog/dv/usb2uart/usb2uart.c
@@ -23,76 +23,6 @@
void main()
{
- // The upper GPIO pins are configured to be output
- // and accessble to the management SoC.
- // Used to flag the start/end of a test
- // The lower GPIO pins are configured to be output
- // and accessible to the user project. They show
- // the project count value, although this test is
- // designed to read the project count through the
- // logic analyzer probes.
- // I/O 6 is configured for the UART Tx line
-
- // User USB
- reg_mprj_io_37 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
- reg_mprj_io_36 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
- reg_mprj_io_35 = GPIO_MODE_USER_STD_OUTPUT;
-
- // User UART
- reg_mprj_io_33 = GPIO_MODE_USER_STD_OUTPUT;
- reg_mprj_io_34 = GPIO_MODE_USER_STD_INPUT_NOPULL;
-
- // MGMT GPIO
- reg_mprj_io_32 = GPIO_MODE_MGMT_STD_OUTPUT;
-
- reg_mprj_io_31 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_30 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_29 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_28 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_27 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_26 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_25 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_24 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_23 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_22 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_21 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_20 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_19 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_18 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_17 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_16 = GPIO_MODE_MGMT_STD_OUTPUT;
-
- reg_mprj_io_15 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_14 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_13 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_12 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_11 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_10 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_9 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_8 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_7 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_6 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_5 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_4 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_3 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_2 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_1 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_0 = GPIO_MODE_MGMT_STD_OUTPUT;
-
- // Set UART clock to 64 kbaud (enable before I/O configuration)
- // reg_uart_clkdiv = 625;
- //reg_uart_enable = 1;
-
- /* Apply configuration */
- //reg_mprj_xfer = 1;
- //while (reg_mprj_xfer == 1);
-
- //print("Test\n\n");
- //print("\n");
- //print("\n");
-
- // Flag end of the test
- //reg_mprj_datal = 0xAB510000;
-
- //TODO: Turn on PLL for clock2
+ //print("test\n");
+ asm("j .");
}
diff --git a/verilog/dv/usb2uart/usb2uart_tb.v b/verilog/dv/usb2uart/usb2uart_tb.v
index 0693bca..44c969f 100644
--- a/verilog/dv/usb2uart/usb2uart_tb.v
+++ b/verilog/dv/usb2uart/usb2uart_tb.v
@@ -44,7 +44,10 @@
/*
wire mgmt_uart_tx;
assign mgmt_uart_tx = mprj_io[6];
+ //assign mprj_io[34] = mprj_io[6];
*/
+ assign mprj_io[3] = (CSB == 1'b1) ? 1'b1 : 1'bz;
+
// Signals Assignment
assign mprj_io[34] = user_uart_rx;
@@ -151,20 +154,18 @@
initial begin
$dumpfile("usb2uart.vcd");
$dumpvars(0, usb2uart_tb);
- //$monitor("usb2uart.in_data: 0x%x", uut.mprj.mprj.usb2uart.in_data);
-
+ `ifdef GL
+ $monitor( "io_in[34]: 0x%x", uut.mprj.mprj.io_in[34] );
+ `else
+ $monitor( "usb2uart.in_data: 0x%x", uut.mprj.mprj.usb2uart.in_data );
+ `endif
// Repeat cycles of 1000 clock edges as needed to complete testbench
- repeat (100) begin
+ repeat (50) begin
repeat (1000) @(posedge clock);
end
- $display("%c[1;31m",27);
- `ifdef GL
- $display ("Monitor: Timeout, Test Project USB (GL) Failed");
- `else
- $display ("Monitor: Timeout, Test Project USB (RTL) Failed");
- `endif
- $display("%c[0m",27);
- $finish;
+ $error ("Monitor: Timeout, Test Project USB Failed");
+ //$fatal(1);
+ $finish;
end
// Write a byte to RX pin
@@ -172,8 +173,10 @@
input [7:0] i_Data;
integer ii;
begin
- wait(uut.mprj.mprj.usb2uart.in_ready == 1);
-
+ `ifdef GL
+ `else
+ //wait(uut.mprj.mprj.usb2uart.in_ready == 1);
+ `endif
// Write Start Bit
#(c_BIT_PERIOD) user_uart_rx <= 1'b0;
@@ -186,26 +189,44 @@
// Write Stop Bit
#(c_BIT_PERIOD) user_uart_rx <= 1'b1;
+ `ifdef GL
+ //wait(uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tvalid_reg == 1);
+ `else
//@(posedge uut.mprj.mprj.usb2uart.in_valid);
- wait(uut.mprj.mprj.usb2uart.in_valid == 1);
+ //wait(uut.mprj.mprj.usb2uart.in_valid == 1);
+ `endif
+ #(c_BIT_PERIOD);
end
endtask
initial begin
// Exercise Rx
j=0;
- for (i=0; i<8; i=i+1)
- begin
+ for (i=0; i<8; i=i+1) begin
UART_WRITE_RX_AND_RCV(i);
+ `ifdef GL
+ k[7:0] = {
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[7] ,
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[6] ,
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[5] ,
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[4] ,
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[3] ,
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[2] ,
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[1] ,
+ uut.mprj.mprj.\usb2uart.u_uart.uart_rx_inst.m_axis_tdata_reg[0] };
+ `else
k = uut.mprj.mprj.usb2uart.in_data;
+ `endif
+
if (k == i)
j=j+1;
else
- $display("RX Test Failed - Incorrect Byte Received 0x%x", k);
+ $error("RX Test Failed - Incorrect Byte Received 0x%x", k);
end
if (j == 8)
$display("RX Test Passed - Correct Bytes Received");
-
+ else
+ ;//$fatal(2);
$finish;
end
@@ -276,6 +297,7 @@
.io2(), // not used
.io3() // not used
);
+
/*
// Testbench UART
tbuart tbuart (