EBMC is a bounded model checker for the Verilog language (and other HW
specification languages). The verification is performed by synthesizing a
transition system from the Verilog, unwinding the transition system (up to a
certain bound), and then producing a decision problem. The decision problem
encodes the circuit and the negation of the property under verification.
Hence if satisfiable, the tool produces a counterexample demonstrating
violation of the property. EBMC can use CBMC’s bit-vector solver or Z3
or CVC4 to solve the decision problem.
About
EBMC is a bounded model checker for the Verilog language (and other HW specification languages). The verification is performed by synthesizing a transition system from the Verilog, unwinding the transition system (up to a certain bound), and then producing a decision problem. The decision problem encodes the circuit and the negation of the property under verification. Hence if satisfiable, the tool produces a counterexample demonstrating violation of the property. EBMC can use CBMC’s bit-vector solver or Z3 or CVC4 to solve the decision problem.
For full information see cprover.org.
Usage
Let us assume we have the following Verilog code in
main.v
.Then we can run the EBMC verification as
gt; ebmc main.v --module main --bound 3
setting the unwinding bound to
3
and running the verification of the modulemain
.For more information see EBMC Manual