Commit 285d285f authored by Tristan Gingold's avatar Tristan Gingold

main.sv: rework timeout logic, add disabled traces

parent 63d1ad2c
...@@ -113,6 +113,8 @@ module ICpuTestWrapper ...@@ -113,6 +113,8 @@ module ICpuTestWrapper
int f = $fopen(filename,"r"); int f = $fopen(filename,"r");
int n, i; int n, i;
// $display("load %s %x", filename, f);
current_msg = ""; current_msg = "";
test_complete = 0; test_complete = 0;
...@@ -165,7 +167,10 @@ module ICpuTestWrapper ...@@ -165,7 +167,10 @@ module ICpuTestWrapper
begin begin
// Read memory for insn // Read memory for insn
if( $dist_uniform(seed, 0, 100 ) <= 100) begin if( $dist_uniform(seed, 0, 100 ) <= 100) begin
im_data <= mem[(im_addr / 4) % mem_size]; logic [31:0] dat;
dat = mem[(im_addr / 4) % mem_size];
// $display("imem @%h: %08x", im_addr, dat);
im_data <= dat;
im_valid <= 1; im_valid <= 1;
end else end else
im_valid <= 0; im_valid <= 0;
...@@ -181,6 +186,7 @@ module ICpuTestWrapper ...@@ -181,6 +186,7 @@ module ICpuTestWrapper
mem [(dm_addr / 4) % mem_size][23:16] <= dm_data_s[23:16]; mem [(dm_addr / 4) % mem_size][23:16] <= dm_data_s[23:16];
if(dm_data_select[3]) if(dm_data_select[3])
mem [(dm_addr / 4) % mem_size][31:24] <= dm_data_s[31:24]; mem [(dm_addr / 4) % mem_size][31:24] <= dm_data_s[31:24];
// $display("dmem @%h: <- %08x", dm_addr, dm_data_s);
end end
dm_store_done_d <= {dm_store_done_d[0], dm_store}; dm_store_done_d <= {dm_store_done_d[0], dm_store};
...@@ -208,6 +214,7 @@ module ICpuTestWrapper ...@@ -208,6 +214,7 @@ module ICpuTestWrapper
// instruction mem I/F // instruction mem I/F
.im_addr_o(im_addr_m[i]), .im_addr_o(im_addr_m[i]),
.im_rd_o(),
.im_data_i(im_data), .im_data_i(im_data),
.im_valid_i(im_valid), .im_valid_i(im_valid),
...@@ -245,7 +252,7 @@ module ICpuTestWrapper ...@@ -245,7 +252,7 @@ module ICpuTestWrapper
begin begin
current_msg = $sformatf("%s%c", current_msg, chr); current_msg = $sformatf("%s%c", current_msg, chr);
end end
else if(DUT.dm_addr == 'h100004) else if(dm_addr == 'h100004)
begin begin
test_complete = 1; test_complete = 1;
end end
...@@ -275,11 +282,11 @@ class ISATestRunner extends LoggerClient; ...@@ -275,11 +282,11 @@ class ISATestRunner extends LoggerClient;
} TestStatus; } TestStatus;
const time c_test_timeout = 1ms;
task automatic runTest(string filename, ref TestStatus status, ref int failedTest ); task automatic runTest(string filename, ref TestStatus status, ref int failedTest );
automatic time t_start = $time; automatic integer cnt = 0;
// $display("runTest task");
DUT.runTest(filename); DUT.runTest(filename);
failedTest = 0; failedTest = 0;
...@@ -287,11 +294,14 @@ class ISATestRunner extends LoggerClient; ...@@ -287,11 +294,14 @@ class ISATestRunner extends LoggerClient;
while(!DUT.isTestComplete() ) while(!DUT.isTestComplete() )
begin begin
#1us; #1us;
if ( $time - t_start > c_test_timeout ) if ( cnt > 10000)
begin begin
status = R_TIMEOUT; status = R_TIMEOUT;
$display("timeout, time=%t, msg=%s",
$time, DUT.getTestResult());
return; return;
end end
cnt++;
end end
if ($sscanf( DUT.getTestResult(), "Test %d failed", failedTest ) == 1) if ($sscanf( DUT.getTestResult(), "Test %d failed", failedTest ) == 1)
...@@ -326,6 +336,8 @@ class ISATestRunner extends LoggerClient; ...@@ -326,6 +336,8 @@ class ISATestRunner extends LoggerClient;
if (tests[i][0] == "#" || tests[i] == "") if (tests[i][0] == "#" || tests[i] == "")
continue; continue;
// $display("Run %s", tests[i]);
runTest({test_dir,"/",tests[i]}, status, failedTest ); runTest({test_dir,"/",tests[i]}, status, failedTest );
if ( status == R_OK ) if ( status == R_OK )
...@@ -334,6 +346,7 @@ class ISATestRunner extends LoggerClient; ...@@ -334,6 +346,7 @@ class ISATestRunner extends LoggerClient;
begin begin
s = "Timeout (likely fail due to CPU freeze)"; s = "Timeout (likely fail due to CPU freeze)";
failCount++; failCount++;
break;
end else begin end else begin
s = $sformatf ("FAIL (subtest %d)", failedTest ); s = $sformatf ("FAIL (subtest %d)", failedTest );
failCount++; failCount++;
...@@ -367,7 +380,7 @@ endclass // ISATestRunner ...@@ -367,7 +380,7 @@ endclass // ISATestRunner
end end
l.writeTestReport("report.txt"); l.writeTestReport("report.txt");
$stop;
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment