diff options
author | Clifford Wolf <clifford@clifford.at> | 2016-08-20 18:44:27 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2016-08-20 18:44:27 +0200 |
commit | a93fcec93fdd5da581ece4a593369978db9dd42c (patch) | |
tree | ff880f7190840fc58069fdcca116c77672300e1c /examples/smtbmc/demo2.v | |
parent | f7578b0239720562571d88d5a0406488075a2a31 (diff) | |
download | yosys-a93fcec93fdd5da581ece4a593369978db9dd42c.tar.gz yosys-a93fcec93fdd5da581ece4a593369978db9dd42c.tar.bz2 yosys-a93fcec93fdd5da581ece4a593369978db9dd42c.zip |
Added examples/smtbmc/demo2.v
Diffstat (limited to 'examples/smtbmc/demo2.v')
-rw-r--r-- | examples/smtbmc/demo2.v | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/examples/smtbmc/demo2.v b/examples/smtbmc/demo2.v new file mode 100644 index 000000000..34745e898 --- /dev/null +++ b/examples/smtbmc/demo2.v @@ -0,0 +1,29 @@ +// Nothing to prove in this demo. +// Just an example for memories, vcd dumps and vlog testbench dumps. + +`ifdef FORMAL +`define assume(_expr_) assume(_expr_) +`else +`define assume(_expr_) +`endif + +module demo2(input clk, input [4:0] addr, output reg [31:0] data); + reg [31:0] mem [0:31]; + always @(posedge clk) + data <= mem[addr]; + + reg [31:0] used_addr = 0; + reg [31:0] used_dbits = 0; + reg initstate = 1; + + always @(posedge clk) begin + initstate <= 0; + `assume(!used_addr[addr]); + used_addr[addr] <= 1; + if (!initstate) begin + `assume(data != 0); + `assume((used_dbits & data) == 0); + used_dbits <= used_dbits | data; + end + end +endmodule |