Tests: Avoid side effect on array index
This commit is contained in:
parent
36932d31c4
commit
679a4314dc
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue