1
1
About
2
2
=======
3
3
4
- EBMC is a bounded model checker for the Verilog language (and other HW
5
- specification languages). The verification is performed by synthesizing a
6
- transition system from the Verilog, unwinding the transition system (up to a
7
- certain bound), and then producing a decision problem. The decision problem
8
- encodes the circuit and the negation of the property under verification.
9
- Hence if satisfiable, the tool produces a counterexample demonstrating
10
- violation of the property. EBMC can use CBMC's bit-vector solver or Z3
11
- or CVC4 to solve the decision problem.
4
+ EBMC is a free, open-source formal verification tool for hardware designs.
5
+ It can read Verilog 2005, SystemVerilog 2017, NuSMV and netlists (given in
6
+ ISCAS89 format). Properties can be given in LTL or a fragment of
7
+ SystemVerilog Assertions. It includes both bounded and (despite its name)
8
+ unbounded Model Checking engines, i.e., it can both discover bugs and prove
9
+ the absence of bugs.
12
10
13
11
For full information see [ cprover.org] ( http://www.cprover.org/ebmc/ ) .
14
12
15
13
Usage
16
14
=====
17
15
18
- Let us assume we have the following SystemVerilog code in ` main.sv ` .
16
+ Let us assume we have the following SystemVerilog model in ` main.sv ` .
19
17
20
18
``` main.sv
21
19
module main(input clk, x, y);
@@ -40,10 +38,10 @@ module main(input clk, x, y);
40
38
endmodule
41
39
```
42
40
43
- Then we can run the EBMC verification as
41
+ We can then invoke the BMC engine in EBMC as follows:
44
42
45
- ` $> ebmc main.sv --module main --bound 3 `
43
+ ` $ ebmc main.sv --top main --bound 3 `
46
44
47
- setting the unwinding bound to ` 3 ` and running the verification of the module ` main ` .
45
+ This sets the unwinding bound to ` 3 ` and the top-level module to ` main ` .
48
46
49
- For more information see [ EBMC Manual] ( http://www.cprover.org/ebmc/manual/ )
47
+ For more information see [ EBMC Manual] ( http://www.cprover.org/ebmc/manual/ ) .
0 commit comments