From 679a4314dc0d13392aa3668ca82f2f13aedc6d2e Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Fri, 1 Sep 2023 19:26:50 -0400 Subject: [PATCH] Tests: Avoid side effect on array index --- test_regress/t/t_extract_static_const.v | 18 +++++----- .../t/t_extract_static_const_multimodule.v | 20 ++++++----- test_regress/t/t_flag_prefix.v | 10 +++--- test_regress/t/t_param_array7.v | 35 ++++++++++--------- 4 files changed, 47 insertions(+), 36 deletions(-) diff --git a/test_regress/t/t_extract_static_const.v b/test_regress/t/t_extract_static_const.v index 5e258dbe9..94a1c528b 100644 --- a/test_regress/t/t_extract_static_const.v +++ b/test_regress/t/t_extract_static_const.v @@ -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 diff --git a/test_regress/t/t_extract_static_const_multimodule.v b/test_regress/t/t_extract_static_const_multimodule.v index 7885ecb5b..227fdcf1c 100644 --- a/test_regress/t/t_extract_static_const_multimodule.v +++ b/test_regress/t/t_extract_static_const_multimodule.v @@ -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 diff --git a/test_regress/t/t_flag_prefix.v b/test_regress/t/t_flag_prefix.v index 00634520b..1ee503c93 100644 --- a/test_regress/t/t_flag_prefix.v +++ b/test_regress/t/t_flag_prefix.v @@ -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 diff --git a/test_regress/t/t_param_array7.v b/test_regress/t/t_param_array7.v index 72380d0a9..d7b167941 100644 --- a/test_regress/t/t_param_array7.v +++ b/test_regress/t/t_param_array7.v @@ -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