Skip to content

The HW-CBMC and EBMC Model Checkers for Verilog

License

Notifications You must be signed in to change notification settings

Abhinandan-Pal/hw-cbmc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 SystemVerilog code in main.sv.

module main(input clk, x, y);

  reg [1:0] cnt1;
  reg z;

  initial cnt1=0;
  initial z=0;

  always @(posedge clk) cnt1=cnt1+1;

  always @(posedge clk)
    casex (cnt1)
      2'b00:;
      2'b01:;
      2'b1?: z=1;
    endcase

  p1: assert property (@(posedge clk) (z==0));

endmodule

Then we can run the EBMC verification as

$> ebmc main.sv --module main --bound 3

setting the unwinding bound to 3 and running the verification of the module main.

For more information see EBMC Manual

About

The HW-CBMC and EBMC Model Checkers for Verilog

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 63.5%
  • SystemVerilog 22.5%
  • Yacc 4.6%
  • C 4.5%
  • Verilog 2.5%
  • Lex 1.1%
  • Other 1.3%