Skip to content

Commit e2f7b60

Browse files
authored
Merge pull request #594 from diffblue/assert-final
SystemVerilog: final immediate assertions
2 parents 5082938 + b4e5bfe commit e2f7b60

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+256
-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: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
immediate3.sv
3+
--bound 0
4+
^\[full_adder\.assert\.1\] always \(\{ full_adder\.carry, full_adder\.sum \}\) == full_adder\.a \+ full_adder\.b \+ full_adder\.c: PROVED up to bound 0$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
^warning: ignoring
9+
--

regression/verilog/SVA/immediate3.sv

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module full_adder(input a, b, c, output sum, carry);
2+
3+
assign sum = a ^ b ^ c;
4+
assign carry = a & b | (a ^ b) & c;
5+
6+
always @(*)
7+
assert final({carry, sum} == a + b + c);
8+
9+
endmodule
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
static_final1.sv
3+
--bound 0
4+
^\[full_adder\.p0\] always \(\{ full_adder\.carry, full_adder\.sum \}\) == full_adder\.a \+ full_adder\.b \+ full_adder\.c: PROVED up to bound 0$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
^warning: ignoring
9+
--
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module full_adder(input a, b, c, output sum, carry);
2+
3+
assign sum = a ^ b ^ c;
4+
assign carry = a & b | (a ^ b) & c;
5+
6+
// 1800-2017
7+
// 16.4.3 Deferred assertions outside procedural code
8+
p0: assert final ({carry, sum} == a + b + c);
9+
10+
endmodule
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

0 commit comments

Comments
 (0)