Skip to content

Commit bc38997

Browse files
authored
Merge pull request #896 from diffblue/engine-heuristic
EBMC: basic engine selection heuristic
2 parents ed80f2e + 4b73053 commit bc38997

File tree

184 files changed

+422
-353
lines changed

Some content is hidden

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

184 files changed

+422
-353
lines changed

Diff for: CHANGELOG

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# EBMC 5.5
22

3+
* If no engine is given, EBMC now selects an engine heuristically, instead
4+
of doing BMC with k=1
35
* Verilog: bugfix for $onehot0
46
* Verilog: fix for primitive gates with more than two inputs
57
* Verilog: Support $past when using AIG-based engines

Diff for: regression/ebmc/example1/test.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
example1.sv
3-
--bound 10
4-
PROVED up to bound 10$
3+
4+
^\[.*\] always 2'\(main\.a\) \+ main\.b == main\.result: PROVED$
55
^EXIT=0$
66
^SIGNAL=0$

Diff for: regression/smv/smv/bmc_unsupported_property1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
bmc_unsupported_property1.smv
3-
3+
--bound 1
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[spec1\] EG x = FALSE: FAILURE: property not supported by BMC engine$

Diff for: regression/smv/smv/bmc_unsupported_property2.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
bmc_unsupported_property2.smv
3-
3+
--bound 1
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[spec1\] EG x = FALSE: FAILURE: property not supported by BMC engine$

Diff for: regression/verilog/SVA/immediate2.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
CORE
22
immediate2.sv
3-
--bound 0
3+
44
^\[main\.assume\.1\] assume always 0: ASSUMED$
5-
^\[main\.assert\.2\] always main\.index < 10: PROVED up to bound 0$
5+
^\[main\.assert\.2\] always main\.index < 10: PROVED$
66
^\[main\.assert\.3\] always 0: REFUTED$
77
^EXIT=10$
88
^SIGNAL=0$

Diff for: regression/verilog/SVA/immediate3.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
immediate3.sv
3-
--bound 0
4-
^\[full_adder\.assert\.1\] always \{ full_adder\.carry, full_adder\.sum \} == \{ 1'b0, full_adder\.a \} \+ full_adder\.b \+ full_adder\.c: PROVED up to bound 0$
3+
4+
^\[full_adder\.assert\.1\] always \{ full_adder\.carry, full_adder\.sum \} == \{ 1'b0, full_adder\.a \} \+ full_adder\.b \+ full_adder\.c: PROVED$
55
^EXIT=0$
66
^SIGNAL=0$
77
--

Diff for: regression/verilog/SVA/named_property1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
named_property1.sv
3-
--bound 0
4-
^\[main\.assert\.1\] always main\.x_is_ten: PROVED up to bound 0$
3+
4+
^\[main\.assert\.1\] always main\.x_is_ten: PROVED$
55
^EXIT=0$
66
^SIGNAL=0$
77
--

Diff for: regression/verilog/SVA/named_sequence1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
named_sequence1.sv
3-
--bound 0
4-
^\[main\.assert\.1\] always main\.x_is_ten: PROVED up to bound 0$
3+
4+
^\[main\.assert\.1\] always main\.x_is_ten: PROVED up to bound 5$
55
^EXIT=0$
66
^SIGNAL=0$
77
--

Diff for: regression/verilog/SVA/sequence5.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
sequence5.sv
3-
--bound 0
4-
^\[main\.p0\] 1: PROVED up to bound 0$
3+
4+
^\[main\.p0\] 1: PROVED up to bound 5$
55
^\[main\.p1\] 0: REFUTED$
66
^\[main\.p2\] 1'bx: REFUTED$
77
^\[main\.p3\] 1'bz: REFUTED$

Diff for: regression/verilog/SVA/sequence_first_match1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
sequence_first_match1.sv
3-
3+
--bound 5
44
^\[.*\] first_match\(main\.x == 0\): FAILURE: property not supported by BMC engine$
55
^EXIT=10$
66
^SIGNAL=0$

Diff for: regression/verilog/SVA/sequence_within1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
sequence_within1.sv
3-
3+
--bound 5
44
^\[.*\] main\.x == 0 within main\.x == 1: FAILURE: property not supported by BMC engine$
55
^EXIT=10$
66
^SIGNAL=0$

Diff for: regression/verilog/SVA/static_final1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
static_final1.sv
3-
--bound 0
4-
^\[full_adder\.p0\] always \{ full_adder\.carry, full_adder\.sum \} == \{ 1'b0, full_adder\.a \} \+ full_adder\.b \+ full_adder\.c: PROVED up to bound 0$
3+
4+
^\[full_adder\.p0\] always \{ full_adder\.carry, full_adder\.sum \} == \{ 1'b0, full_adder\.a \} \+ full_adder\.b \+ full_adder\.c: PROVED$
55
^EXIT=0$
66
^SIGNAL=0$
77
--

Diff for: regression/verilog/SVA/sva_and1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
sva_and1.sv
3-
--bound 0
4-
^\[main\.p0\] always \(1 and 1\): PROVED up to bound 0$
3+
4+
^\[main\.p0\] always \(1 and 1\): PROVED$
55
^\[main\.p1\] always \(1 and 0\): REFUTED$
66
^\[main\.p2\] always \(1 and 32'b0000000000000000000000000000000x\): REFUTED$
77
^EXIT=10$

Diff for: regression/verilog/SVA/sva_iff1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
sva_iff1.sv
3-
--bound 0
4-
^\[main\.p0\] always \(1 iff 1\): PROVED up to bound 0$
3+
4+
^\[main\.p0\] always \(1 iff 1\): PROVED$
55
^\[main\.p1\] always \(1 iff 0\): REFUTED$
66
^\[main\.p2\] always \(1 iff 32'b0000000000000000000000000000000x\): REFUTED$
77
^EXIT=10$

Diff for: regression/verilog/SVA/sva_implies1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
sva_implies1.sv
3-
--bound 0
4-
^\[main\.p0\] always \(1 implies 1\): PROVED up to bound 0$
3+
4+
^\[main\.p0\] always \(1 implies 1\): PROVED$
55
^\[main\.p1\] always \(1 implies 0\): REFUTED$
66
^\[main\.p2\] always \(1 implies 32'b0000000000000000000000000000000x\): REFUTED$
77
^EXIT=10$

Diff for: regression/verilog/SVA/sva_until1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
sva_until1.sv
3-
--bound 1
3+
44
^\[main\.p0\] always \(main.a until_with main.b\): REFUTED$
55
^\[main\.p1\] always \(main.a until main.b\): REFUTED$
66
^\[main\.p2\] always \(main.a s_until main.b\): REFUTED$

Diff for: regression/verilog/SVA/system_verilog_assertion3.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
system_verilog_assertion3.sv
3-
--module main --bound 0
3+
--module main
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/UDPs/multiplexer1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
multiplexer1.sv
3-
--bound 0 --module main
3+
--module main
44
^no properties$
55
^EXIT=10$
66
^SIGNAL=0$

Diff for: regression/verilog/arrays/array1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
array1.sv
3-
--module main --bound 0
3+
--module main
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/arrays/packed_real1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
packed_real1.sv
3-
--module main --bound 0
3+
--module main
44
^file .* line 6: packed array must use packed element type$
55
^EXIT=2$
66
^SIGNAL=0$

Diff for: regression/verilog/arrays/packed_typedef1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
packed_typedef1.sv
3-
--module main --bound 0
3+
--module main
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/assignments/procedural_assignments1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
procedural_assignments1.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/case/nested_case1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
CORE
22
nested_case1.v
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main.property.p1\] .* PROVED up to bound 0$
6+
^\[main.property.p1\] .* PROVED$
77
--
88
^warning: ignoring

Diff for: regression/verilog/case/riscv-alu.desc

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
CORE
22
riscv-alu.sv
3-
--module alu --bound 0
4-
^\[alu\.pADD\] always alu\.op == \{ 7'b0000000, 3'b000 \} -> alu\.out == alu\.a \+ alu\.b: PROVED up to bound 0$
5-
^\[alu\.pSUB\] always alu\.op == \{ 7'b0100000, 3'b000 \} -> alu\.out == alu\.a - alu\.b: PROVED up to bound 0$
6-
^\[alu\.pSLL\] always alu\.op == \{ 7'b0000000, 3'b001 \} -> alu\.out == alu\.a << alu\.b\[4:0\]: PROVED up to bound 0$
7-
^\[alu\.pSLT\] always alu\.op == \{ 7'b0000000, 3'b010 \} -> alu\.out == \$signed\(alu\.a\) < \$signed\(alu\.b\): PROVED up to bound 0$
8-
^\[alu\.pSLTU\] always alu\.op == \{ 7'b0000000, 3'b011 \} -> alu\.out == alu\.a < alu\.b: PROVED up to bound 0$
9-
^\[alu\.pXOR\] always alu\.op == \{ 7'b0000000, 3'b100 \} -> alu\.out == \(alu\.a \^ alu\.b\): PROVED up to bound 0$
10-
^\[alu\.pSRL\] always alu\.op == \{ 7'b0000000, 3'b101 \} -> alu\.out == alu\.a >> alu\.b\[4:0\]: PROVED up to bound 0$
11-
^\[alu\.pSRA\] always alu\.op == \{ 7'b0100000, 3'b101 \} -> alu\.out == \$signed\(alu\.a\) >>> alu\.b\[4:0\]: PROVED up to bound 0$
12-
^\[alu\.pOR\] always alu\.op == \{ 7'b0000000, 3'b110 \} -> alu\.out == \(alu\.a | alu\.b\): PROVED up to bound 0$
13-
^\[alu\.pAND\] always alu\.op == \{ 7'b0000000, 3'b111 \} -> alu\.out == \(alu\.a & alu\.b\): PROVED up to bound 0$
3+
--module alu
4+
^\[alu\.pADD\] always alu\.op == \{ 7'b0000000, 3'b000 \} -> alu\.out == alu\.a \+ alu\.b: PROVED$
5+
^\[alu\.pSUB\] always alu\.op == \{ 7'b0100000, 3'b000 \} -> alu\.out == alu\.a - alu\.b: PROVED$
6+
^\[alu\.pSLL\] always alu\.op == \{ 7'b0000000, 3'b001 \} -> alu\.out == alu\.a << alu\.b\[4:0\]: PROVED$
7+
^\[alu\.pSLT\] always alu\.op == \{ 7'b0000000, 3'b010 \} -> alu\.out == \$signed\(alu\.a\) < \$signed\(alu\.b\): PROVED$
8+
^\[alu\.pSLTU\] always alu\.op == \{ 7'b0000000, 3'b011 \} -> alu\.out == alu\.a < alu\.b: PROVED$
9+
^\[alu\.pXOR\] always alu\.op == \{ 7'b0000000, 3'b100 \} -> alu\.out == \(alu\.a \^ alu\.b\): PROVED$
10+
^\[alu\.pSRL\] always alu\.op == \{ 7'b0000000, 3'b101 \} -> alu\.out == alu\.a >> alu\.b\[4:0\]: PROVED$
11+
^\[alu\.pSRA\] always alu\.op == \{ 7'b0100000, 3'b101 \} -> alu\.out == \$signed\(alu\.a\) >>> alu\.b\[4:0\]: PROVED$
12+
^\[alu\.pOR\] always alu\.op == \{ 7'b0000000, 3'b110 \} -> alu\.out == \(alu\.a | alu\.b\): PROVED$
13+
^\[alu\.pAND\] always alu\.op == \{ 7'b0000000, 3'b111 \} -> alu\.out == \(alu\.a & alu\.b\): PROVED$
1414
^EXIT=0$
1515
^SIGNAL=0$
1616
--

Diff for: regression/verilog/data-types/associative_array1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
KNOWNBUG
22
associative_array1.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/data-types/chandle1.desc

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
CORE
22
chandle1.sv
3-
--bound 0
4-
^\[main\.p0\] always main\.some_handle == null: PROVED up to bound 0$
5-
^\[main\.p1\] always \$typename\(main\.some_handle\) == "chandle": PROVED up to bound 0$
3+
4+
^\[main\.p0\] always main\.some_handle == null: PROVED$
5+
^\[main\.p1\] always \$typename\(main\.some_handle\) == "chandle": PROVED$
66
^EXIT=0$
77
^SIGNAL=0$
88
--

Diff for: regression/verilog/data-types/integer_atom_types1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
integer_atom_types1.sv
3-
--module main --bound 0
3+
--module main
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/data-types/queue1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
KNOWNBUG
22
queue1.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/data-types/signed1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
signed1.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/data-types/signed2.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
signed2.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/data-types/type_operator.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
type_operator.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/data-types/vector_types1.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
vector_types1.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/data-types/vector_types2.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
vector_types2.sv
3-
--bound 0
4-
^\[.*\] always \$bits\(main\.x\) == \(1 << main\.p\) \+ 1: PROVED up to bound 0$
3+
4+
^\[.*\] always \$bits\(main\.x\) == \(1 << main\.p\) \+ 1: PROVED$
55
^EXIT=0$
66
^SIGNAL=0$
77
--

Diff for: regression/verilog/elaboration/type_operator.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
type_operator.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/elaboration/var_bits.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
var_bits.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/elaboration/wire_bits.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
wire_bits.v
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
66
--

Diff for: regression/verilog/enums/enum4.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
enum4.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main\.p1\] always main\.A == \[7:0\]'\(1\): PROVED up to bound 0$
6+
^\[main\.p1\] always main\.A == \[7:0\]'\(1\): PROVED$
77
--

Diff for: regression/verilog/enums/enum5.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
enum5.sv
3-
--bound 0
3+
44
^file .* line 6: expected constant expression, but got `main\.some_wire'$
55
^EXIT=2$
66
^SIGNAL=0$

Diff for: regression/verilog/enums/enum_base_type1.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
enum_base_type1.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[.*\] always \$bits\(main\.A\) == 8: PROVED up to bound 0$
6+
^\[.*\] always \$bits\(main\.A\) == 8: PROVED$
77
--

Diff for: regression/verilog/enums/enum_base_type2.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
enum_base_type2.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[.*\] always \$bits\(main\.A\) == main\.p: PROVED up to bound 0$
6+
^\[.*\] always \$bits\(main\.A\) == main\.p: PROVED$
77
--

Diff for: regression/verilog/enums/enum_cast1.desc

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
CORE
22
enum_cast1.sv
3-
--bound 0
3+
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main\.p1\] always main.A == signed \[31:0\]'\(1\): PROVED up to bound 0$
7-
^\[main\.p2\] always main.B == signed \[31:0\]'\(2\): PROVED up to bound 0$
6+
^\[main\.p1\] always main.A == signed \[31:0\]'\(1\): PROVED$
7+
^\[main\.p2\] always main.B == signed \[31:0\]'\(2\): PROVED$
88
--

Diff for: regression/verilog/enums/enum_initializers1.desc

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
CORE
22
enum_initializers1.sv
3-
--bound 0
4-
^\[main\.pA\] always main.A == 1: PROVED up to bound 0$
5-
^\[main\.pB\] always main.B == 11: PROVED up to bound 0$
3+
4+
^\[main\.pA\] always main.A == 1: PROVED$
5+
^\[main\.pB\] always main.B == 11: PROVED$
66
^EXIT=0$
77
^SIGNAL=0$
88
--

0 commit comments

Comments
 (0)