diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/simple/generate.v | 16 | ||||
-rw-r--r-- | tests/various/const_arg_loop.v | 20 | ||||
-rw-r--r-- | tests/various/const_func_block_var.v | 9 |
3 files changed, 42 insertions, 3 deletions
diff --git a/tests/simple/generate.v b/tests/simple/generate.v index dcd450e47..12327b36e 100644 --- a/tests/simple/generate.v +++ b/tests/simple/generate.v @@ -223,6 +223,10 @@ module gen_test8; `ASSERT(A.x == 2) `ASSERT(A.C.x == 1) `ASSERT(A.B.x == 0) + `ASSERT(gen_test8.x == 3) + `ASSERT(gen_test8.A.x == 2) + `ASSERT(gen_test8.A.C.x == 1) + `ASSERT(gen_test8.A.B.x == 0) end begin : C wire [1:0] x = 2'b01; @@ -230,12 +234,20 @@ module gen_test8; `ASSERT(A.x == 2) `ASSERT(A.C.x == 1) `ASSERT(A.B.x == 0) + `ASSERT(gen_test8.x == 3) + `ASSERT(gen_test8.A.x == 2) + `ASSERT(gen_test8.A.C.x == 1) + `ASSERT(gen_test8.A.B.x == 0) end assign x = B.x ^ 2'b11 ^ C.x; `ASSERT(x == 2) `ASSERT(A.x == 2) `ASSERT(A.C.x == 1) `ASSERT(A.B.x == 0) + `ASSERT(gen_test8.x == 3) + `ASSERT(gen_test8.A.x == 2) + `ASSERT(gen_test8.A.C.x == 1) + `ASSERT(gen_test8.A.B.x == 0) end endgenerate @@ -243,4 +255,8 @@ module gen_test8; `ASSERT(A.x == 2) `ASSERT(A.C.x == 1) `ASSERT(A.B.x == 0) + `ASSERT(gen_test8.x == 3) + `ASSERT(gen_test8.A.x == 2) + `ASSERT(gen_test8.A.C.x == 1) + `ASSERT(gen_test8.A.B.x == 0) endmodule diff --git a/tests/various/const_arg_loop.v b/tests/various/const_arg_loop.v index 85318562f..3bfff4acd 100644 --- a/tests/various/const_arg_loop.v +++ b/tests/various/const_arg_loop.v @@ -23,6 +23,22 @@ module top; end endfunction + function automatic [31:0] operation3; + input [4:0] rounds; + input integer num; + reg [4:0] rounds; + integer i; + begin + begin : shadow + integer rounds; + rounds = 0; + end + for (i = 0; i < rounds; i = i + 1) + num = num * 2; + operation3 = num; + end + endfunction + wire [31:0] a; assign a = 2; @@ -34,11 +50,15 @@ module top; wire [31:0] x2; assign x2 = operation2(A, a); + wire [31:0] x3; + assign x3 = operation3(A, a); + // `define VERIFY `ifdef VERIFY assert property (a == 2); assert property (A == 3); assert property (x1 == 16); assert property (x2 == 4); + assert property (x3 == 16); `endif endmodule diff --git a/tests/various/const_func_block_var.v b/tests/various/const_func_block_var.v index 98e83aa5b..cb60844ab 100644 --- a/tests/various/const_func_block_var.v +++ b/tests/various/const_func_block_var.v @@ -1,15 +1,18 @@ module top(out); function integer operation; input integer num; + localparam incr = 1; + localparam mult = 1; begin operation = 0; begin : op_i integer i; - for (i = 0; i < 2; i = i + 1) + for (i = 0; i * mult < 2; i = i + incr) begin : op_j integer j; - for (j = i; j < i * 2; j = j + 1) - num = num + 1; + localparam other_mult = 2; + for (j = i; j < i * other_mult; j = j + incr) + num = num + incr; end num = num * 2; end |