Skip to content

Commit b4e5bfe

Browse files
committed
tests now use static final assertions
Continuous assertions expect the definition of a clock, which is an ill-fit for combinational logic. This changes the assertions for combinational logic to use a final static assertion.
1 parent 746c03c commit b4e5bfe

37 files changed

+97
-97
lines changed

regression/ebmc/example1/example1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ module main(input a, input b);
1111

1212
my_add adder(a, b, result);
1313

14-
assert property (a+b==result);
14+
assert final (a+b==result);
1515

1616
endmodule

regression/verilog/Array1/main.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module top (input clk, input reset);
44

55
assign x[4][5][3] = 1;
66

7-
p1: assert property (x[4][5][3] == 1);
7+
p1: assert final (x[4][5][3] == 1);
88

99
endmodule
1010

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
module main();
22

3-
assert property ($onehot('b0001000));
4-
assert property (!$onehot('b0101000));
5-
assert property (!$onehot('b00000));
6-
assert property ($onehot0('b00000));
7-
assert property ($onehot0('b000100));
8-
assert property (!$onehot0('b010100));
3+
assert final ($onehot('b0001000));
4+
assert final (!$onehot('b0101000));
5+
assert final (!$onehot('b00000));
6+
assert final ($onehot0('b00000));
7+
assert final ($onehot0('b000100));
8+
assert final (!$onehot0('b010100));
99

1010
endmodule
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
module main;
22

3-
p0: assert property ($bits(byte) == 8);
4-
p1: assert property ($bits(shortint) == 16);
5-
p2: assert property ($bits(int) == 32);
6-
p3: assert property ($bits(longint) == 64);
7-
p4: assert property ($bits(integer) == 32);
8-
p5: assert property ($bits(time) == 64);
3+
p0: assert final ($bits(byte) == 8);
4+
p1: assert final ($bits(shortint) == 16);
5+
p2: assert final ($bits(int) == 32);
6+
p3: assert final ($bits(longint) == 64);
7+
p4: assert final ($bits(integer) == 32);
8+
p5: assert final ($bits(time) == 64);
99

1010
endmodule

regression/verilog/data-types/type_operator.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module main;
66
typedef bit [31:0] some_type;
77
wire some_type next_wire;
88

9-
p0: assert property ($bits(other_wire) == 32);
10-
p1: assert property ($bits(next_wire) == 32);
9+
p0: assert final ($bits(other_wire) == 32);
10+
p1: assert final ($bits(next_wire) == 32);
1111

1212
endmodule

regression/verilog/data-types/vector_types1.sv

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ module main;
1111
wire logic signed [7:0] some_logic_signed;
1212

1313
// expected to pass
14-
p0: assert property ($bits(implicit) == 8);
15-
p1: assert property ($bits(some_bits) == 8);
16-
p2: assert property ($bits(some_logic) == 8);
17-
p3: assert property ($bits(implicit_unsigned) == 8);
18-
p4: assert property ($bits(some_bits_unsigned) == 8);
19-
p5: assert property ($bits(some_logic_unsigned) == 8);
20-
p6: assert property ($bits(implicit_signed) == 8);
21-
p7: assert property ($bits(some_bits_signed) == 8);
22-
p8: assert property ($bits(some_logic_signed) == 8);
14+
p0: assert final ($bits(implicit) == 8);
15+
p1: assert final ($bits(some_bits) == 8);
16+
p2: assert final ($bits(some_logic) == 8);
17+
p3: assert final ($bits(implicit_unsigned) == 8);
18+
p4: assert final ($bits(some_bits_unsigned) == 8);
19+
p5: assert final ($bits(some_logic_unsigned) == 8);
20+
p6: assert final ($bits(implicit_signed) == 8);
21+
p7: assert final ($bits(some_bits_signed) == 8);
22+
p8: assert final ($bits(some_logic_signed) == 8);
2323

2424
endmodule

regression/verilog/elaboration/type_operator.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ module main;
55

66
parameter param0 = $bits(other_wire);
77

8-
p0: assert property (param0 == 32);
8+
p0: assert final (param0 == 32);
99

1010
endmodule

regression/verilog/elaboration/var_bits.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ module main;
44
var [$bits(some_var)-1:0] other_var;
55
parameter param = $bits(other_var);
66

7-
p0: assert property (param == 32);
7+
p0: assert final (param == 32);
88

99
endmodule

regression/verilog/enums/enum4.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ module main;
33
typedef enum bit [7:0] { A = 'h0101 } enum_t;
44

55
// expected to pass
6-
p1: assert property (A == enum_t'(1));
6+
p1: assert final (A == enum_t'(1));
77

88
endmodule

regression/verilog/enums/enum_base_type1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ module main;
33
typedef enum bit [7:0] { A } enum_t;
44

55
// expected to pass
6-
p1: assert property ($bits(A) == 8);
6+
p1: assert final ($bits(A) == 8);
77

88
endmodule

regression/verilog/enums/enum_base_type2.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ module main;
66
parameter p = 8;
77

88
// expected to pass
9-
p1: assert property ($bits(A) == p);
9+
p1: assert final ($bits(A) == p);
1010

1111
endmodule

regression/verilog/enums/enum_cast1.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module main;
33
typedef enum { A = 1, B = 2 } enum_t;
44

55
// expected to pass
6-
p1: assert property (A == enum_t'(1));
7-
p2: assert property (B == enum_t'(2));
6+
p1: assert final (A == enum_t'(1));
7+
p2: assert final (B == enum_t'(2));
88

99
endmodule

regression/verilog/enums/enum_initializers1.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module main;
33
enum { A = 1, B = A + 10 } my_enum;
44

55
// expected to pass
6-
pA: assert property (A == 1);
7-
pB: assert property (B == 11);
6+
pA: assert final (A == 1);
7+
pB: assert final (B == 11);
88

99
endmodule

regression/verilog/enums/enum_initializers2.sv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ module main;
55
enum { A = 1, C = B + 1 } my_enum;
66

77
// expected to pass
8-
pA: assert property (A == 1);
9-
pB: assert property (B == 2);
10-
pC: assert property (C == 3);
8+
pA: assert final (A == 1);
9+
pB: assert final (B == 2);
10+
pC: assert final (C == 3);
1111

1212
endmodule

regression/verilog/enums/enum_with_hierarchy1.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ module main;
1212
sub #(1) sub1();
1313
sub #(2) sub2();
1414

15-
p1: assert property (sub1.E0 == 0 && sub1.E1 == 1 && sub1.E2 == 2);
16-
p2: assert property (sub2.E0 == 0 && sub2.E2 == 2 && sub2.E2 == 4);
15+
p1: assert final (sub1.E0 == 0 && sub1.E1 == 1 && sub1.E2 == 2);
16+
p2: assert final (sub2.E0 == 0 && sub2.E2 == 2 && sub2.E2 == 4);
1717

1818
endmodule

regression/verilog/expressions/bit-extract3.desc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ bit-extract3.sv
33
--module main --bound 0
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main\.property\.property1\] .*: PROVED up to bound 0$
7-
^\[main\.property\.property2\] .*: PROVED up to bound 0$
8-
^\[main\.property\.property3\] .*: PROVED up to bound 0$
9-
^\[main\.property\.property4\] .*: PROVED up to bound 0$
10-
^\[main\.property\.property5\] .*: PROVED up to bound 0$
6+
^\[main\.property1\] .*: PROVED up to bound 0$
7+
^\[main\.property2\] .*: PROVED up to bound 0$
8+
^\[main\.property3\] .*: PROVED up to bound 0$
9+
^\[main\.property4\] .*: PROVED up to bound 0$
10+
^\[main\.property5\] .*: PROVED up to bound 0$
1111
--
1212
^warning: ignoring

regression/verilog/expressions/bit-extract3.sv

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ module main;
44

55
// 1800-2017 sec 11.5.1: out-of-bounds bit-select is
66
// x for 4-state and 0 for 2-state values.
7-
always assert property1: x[7] == 1;
8-
always assert property2: x[8] == 0;
9-
always assert property3: x[-1] == 0;
10-
always assert property4: x[8:7] == 1;
11-
always assert property5: x[8:-1] == 'b0111111110;
7+
property1: assert final (x[7] == 1);
8+
property2: assert final (x[8] == 0);
9+
property3: assert final (x[-1] == 0);
10+
property4: assert final (x[8:7] == 1);
11+
property5: assert final (x[8:-1] == 'b0111111110);
1212

1313
endmodule

regression/verilog/expressions/bit-extract4.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ module main;
22

33
wire integer x = 'hff;
44

5-
p0: assert property (x[7] == 1);
5+
p0: assert final (x[7] == 1);
66

77
endmodule

regression/verilog/expressions/bit-extract5.sv

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ module main;
55
wire [0:31] w3 = 'b1;
66
wire [1:32] w4 = 'b1;
77

8-
p0: assert property (w1[0] and !w1[31]);
9-
p1: assert property (w2[1] and !w2[32]);
10-
p2: assert property (w3[31] and !w3[0]);
11-
p3: assert property (w4[32] and !w4[1]);
8+
p0: assert final (w1[0] && !w1[31]);
9+
p1: assert final (w2[1] && !w2[32]);
10+
p2: assert final (w3[31] && !w3[0]);
11+
p3: assert final (w4[32] && !w4[1]);
1212

1313
endmodule

regression/verilog/expressions/bit-extract6.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ module main;
55

66
// Non-constant index.
77
// Note that index 8 is the least significant bit.
8-
p0: assert property (index == 8 |-> vector[index] == 1);
8+
p0: assert final (index == 8 -> vector[index] == 1);
99

1010
// Verilog guarantees that any out-of-bounds access is zero.
11-
p1: assert property (index >= 1 && index <= 7 |-> vector[index] == 0);
11+
p1: assert final (index >= 1 && index <= 7 -> vector[index] == 0);
1212

1313
endmodule

regression/verilog/expressions/size_cast1.sv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ module main;
22

33
parameter P = 20;
44

5-
p0: assert property ($bits(10'(1)) == 10);
6-
p1: assert property ($bits(P'(1)) == 20);
7-
p2: assert property (10'(-1) == -1);
5+
p0: assert final ($bits(10'(1)) == 10);
6+
p1: assert final ($bits(P'(1)) == 20);
7+
p2: assert final (10'(-1) == -1);
88

99
endmodule

regression/verilog/expressions/static_cast1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ module main;
22

33
typedef bit [7:0] eight_bits;
44

5-
p0: assert property (eight_bits'('hffff) == 'hff);
5+
p0: assert final (eight_bits'('hffff) == 'hff);
66

77
endmodule

regression/verilog/let/let1.sv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
module main;
44

55
let some_let = 8'd123;
6-
p0: assert property (some_let == 123 && $bits(some_let) == 8);
6+
p0: assert final (some_let == 123 && $bits(some_let) == 8);
77

88
// The standard doesn't say, but we allow these to be elaboration-time
99
// constants.
1010
parameter some_parameter = some_let;
1111

12-
p1: assert property (some_parameter == 123 && $bits(some_parameter) == 8);
12+
p1: assert final (some_parameter == 123 && $bits(some_parameter) == 8);
1313

1414
// May depend on state.
1515
wire some_wire;
1616
let some_let_eq_wire = some_wire;
1717

18-
p2: assert property (some_let_eq_wire == some_wire);
18+
p2: assert final (some_let_eq_wire == some_wire);
1919

2020
endmodule

regression/verilog/let/let_ports1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
module main;
44

55
let some_let_with_port(x) = x + 1;
6-
p0: assert property (some_let_with_port(1) == 2);
6+
p0: assert final (some_let_with_port(1) == 2);
77

88
endmodule

regression/verilog/modules/parameter_ports4.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ module main;
88

99
sub #(byte) submodule();
1010

11-
p1: assert property ($bits(submodule.my_var) == 8);
11+
p1: assert final ($bits(submodule.my_var) == 8);
1212

1313
endmodule // main

regression/verilog/modules/parameters7.sv

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ module main;
44
// unless specified otherwise.
55

66
parameter p1 = 8'h13;
7-
assert property ($bits(p1) == 8);
7+
assert final ($bits(p1) == 8);
88

99
parameter p2 = 'h13;
10-
assert property ($bits(p2) == 32);
10+
assert final ($bits(p2) == 32);
1111

1212
parameter [9:0] p3 = 'h13;
13-
assert property ($bits(p3) == 10);
13+
assert final ($bits(p3) == 10);
1414

1515
parameter unsigned [31:0] p4 = -1;
16-
assert property (p4 == 'hffffffff);
16+
assert final (p4 == 'hffffffff);
1717

1818
endmodule

regression/verilog/modules/ports5.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Ports may use SystemVerilog datatypes.
22
module main(input logic [31:0] data);
33

4-
always assert property1: $bits(data) == 32;
4+
always assert final1: $bits(data) == 32;
55

66
endmodule

regression/verilog/modules/type_parameters1.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module main;
33
parameter type T1 = bit;
44
localparam type T2 = bit [31:0];
55

6-
p1: assert property ($bits(T1) == 1);
7-
p2: assert property ($bits(T2) == 32);
6+
p1: assert final ($bits(T1) == 1);
7+
p2: assert final ($bits(T2) == 32);
88

99
endmodule

regression/verilog/modules/variable_module_port1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ module main;
1212

1313
wire [7:0] comp = data0 + 1;
1414

15-
always assert property1: data1 == comp;
15+
always assert final1: data1 == comp;
1616

1717
endmodule

regression/verilog/part-select/indexed-part-select1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ module main(in);
99
out[16 +: 16]=0;
1010
end
1111

12-
p1: assert property ({ in, { 8 { 1'b0 }} } == out);
12+
p1: assert final ({ in, { 8 { 1'b0 }} } == out);
1313

1414
endmodule

regression/verilog/part-select/indexed-part-select3.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ module main(input [7:0] in, input [2:0] where);
44
// does not need to be constant.
55
wire out = in[where +: 1];
66

7-
p0: assert property (out == in[where]);
7+
p0: assert final (out == in[where]);
88

99
endmodule

regression/verilog/synthesis/always_comb1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ module main(input [7:0] data1);
33
logic [7:0] data2;
44
always_comb data2 = data1;
55

6-
p1: assert property (data2 == data1);
6+
p1: assert final (data2 == data1);
77

88
endmodule

regression/verilog/synthesis/always_comb2.sv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ module main(input [7:0] data);
99
decoded[i] = data == i;
1010
end
1111

12-
p0: assert property (data == 0 |-> decoded == 1);
13-
p1: assert property (data == 1 |-> decoded == 2);
14-
p2: assert property (data == 2 |-> decoded == 4);
12+
p0: assert final (data == 0 -> decoded == 1);
13+
p1: assert final (data == 1 -> decoded == 2);
14+
p2: assert final (data == 2 -> decoded == 4);
1515

1616
endmodule

regression/verilog/synthesis/continuous_assignment_to_variable_systemverilog.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ module main(input i);
66
assign some_reg = i;
77

88
// should pass
9-
p1: assert property (some_reg == i);
9+
p1: assert final (some_reg == i);
1010

1111
endmodule

0 commit comments

Comments
 (0)