Tests: Avoid side effect on array index

This commit is contained in:
Wilson Snyder 2023-09-01 19:26:50 -04:00
parent 36932d31c4
commit 679a4314dc
4 changed files with 47 additions and 36 deletions

View File

@ -25,16 +25,18 @@ module t (/*AUTOARG*/);
32'h7777_7777,
32'h8888_8888};
int i;
initial begin
// Note: Base index via $c to prevent optimizatoin by Verilator
$display("0x%8x", C[$c(0*32)+:32]);
$display("0x%8x", D[$c(1*32)+:32]);
$display("0x%8x", C[$c(2*32)+:32]);
$display("0x%8x", D[$c(3*32)+:32]);
$display("0x%8x", C[$c(4*32)+:32]);
$display("0x%8x", D[$c(5*32)+:32]);
$display("0x%8x", C[$c(6*32)+:32]);
$display("0x%8x", D[$c(7*32)+:32]);
i = $c(0*32); $display("0x%8x", C[i+:32]);
i = $c(1*32); $display("0x%8x", D[i+:32]);
i = $c(2*32); $display("0x%8x", C[i+:32]);
i = $c(3*32); $display("0x%8x", D[i+:32]);
i = $c(4*32); $display("0x%8x", C[i+:32]);
i = $c(5*32); $display("0x%8x", D[i+:32]);
i = $c(6*32); $display("0x%8x", C[i+:32]);
i = $c(7*32); $display("0x%8x", D[i+:32]);
$write("*-* All Finished *-*\n");
$finish;
end

View File

@ -25,14 +25,16 @@ module a(
32'h7777_7777,
32'h8888_8888};
int i;
always @(posedge clk) begin
trig_o <= 1'd0;
if (trig_i) begin
// Note: Base index via $c to prevent optimizatoin by Verilator
$display("0x%8x", C[$c(0*32)+:32]);
$display("0x%8x", C[$c(2*32)+:32]);
$display("0x%8x", C[$c(4*32)+:32]);
$display("0x%8x", C[$c(6*32)+:32]);
i = $c(0*32); $display("0x%8x", C[i+:32]);
i = $c(2*32); $display("0x%8x", C[i+:32]);
i = $c(4*32); $display("0x%8x", C[i+:32]);
i = $c(6*32); $display("0x%8x", C[i+:32]);
$display("0x%32x", C);
trig_o <= 1'd1;
end
@ -57,14 +59,16 @@ module b(
32'h7777_7777,
32'h8888_8888};
int i;
always @(posedge clk) begin
trig_o <= 1'd0;
if (trig_i) begin
// Note: Base index via $c to prevent optimizatoin by Verilator
$display("0x%8x", C[$c(1*32)+:32]);
$display("0x%8x", C[$c(3*32)+:32]);
$display("0x%8x", C[$c(5*32)+:32]);
$display("0x%8x", C[$c(7*32)+:32]);
i = $c(1*32); $display("0x%8x", C[i+:32]);
i = $c(3*32); $display("0x%8x", C[i+:32]);
i = $c(5*32); $display("0x%8x", C[i+:32]);
i = $c(7*32); $display("0x%8x", C[i+:32]);
$display("0x%32x", C);
trig_o <= 1'd1;
end

View File

@ -22,12 +22,14 @@ module sub;
32'h7777_7777,
32'h8888_8888};
int i;
initial begin
// Note: Base index via $c to prevent optimization
$display("0x%32x", C[$c(0*32)+:32]);
$display("0x%32x", C[$c(2*32)+:32]);
$display("0x%32x", C[$c(4*32)+:32]);
$display("0x%32x", C[$c(6*32)+:32]);
i = $c(0*32); $display("0x%32x", C[i+:32]);
i = $c(1*32); $display("0x%32x", C[i+:32]);
i = $c(2*32); $display("0x%32x", C[i+:32]);
i = $c(3*32); $display("0x%32x", C[i+:32]);
$write("*-* All Finished *-*\n");
$finish;
end

View File

@ -33,24 +33,27 @@ module a
parameter s_t p3 [2] = '{'{a: 1, b: 2, c: 3},
'{a: 1, b: 2, c: 3}}
);
int i;
initial begin
// Go via $c to ensure parameters are emitted
if (p0[$c("0")] != 5) $stop;
if (p0[$c("1")] != 6) $stop;
if (p0[$c("2")] != 7) $stop;
if (p0[$c("3")] != 8) $stop;
if (p1[$c("0")] != 9) $stop;
if (p1[$c("1")] != 10) $stop;
if (p1[$c("2")] != 11) $stop;
if (p1[$c("3")] != 12) $stop;
if (p2[$c("0")] != "baz") $stop;
if (p2[$c("1")] != "quux") $stop;
if (p3[$c("0")].a != 100) $stop;
if (p3[$c("0")].b != 200) $stop;
if (p3[$c("0")].c != 300) $stop;
if (p3[$c("1")].a != 1000) $stop;
if (p3[$c("1")].b != 2000) $stop;
if (p3[$c("1")].c != 3000) $stop;
i = $c("0"); if (p0[i] != 5) $stop;
i = $c("1"); if (p0[i] != 6) $stop;
i = $c("2"); if (p0[i] != 7) $stop;
i = $c("3"); if (p0[i] != 8) $stop;
i = $c("0"); if (p1[i] != 9) $stop;
i = $c("1"); if (p1[i] != 10) $stop;
i = $c("2"); if (p1[i] != 11) $stop;
i = $c("3"); if (p1[i] != 12) $stop;
i = $c("0"); if (p2[i] != "baz") $stop;
i = $c("1"); if (p2[i] != "quux") $stop;
i = $c("0"); if (p3[i].a != 100) $stop;
i = $c("0"); if (p3[i].b != 200) $stop;
i = $c("0"); if (p3[i].c != 300) $stop;
i = $c("1"); if (p3[i].a != 1000) $stop;
i = $c("1"); if (p3[i].b != 2000) $stop;
i = $c("1"); if (p3[i].c != 3000) $stop;
$write("*-* All Finished *-*\n");
$finish;
end