aboutsummaryrefslogtreecommitdiffstats
path: root/examples/smtbmc/demo2.v
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2016-08-20 18:44:27 +0200
committerClifford Wolf <clifford@clifford.at>2016-08-20 18:44:27 +0200
commita93fcec93fdd5da581ece4a593369978db9dd42c (patch)
treeff880f7190840fc58069fdcca116c77672300e1c /examples/smtbmc/demo2.v
parentf7578b0239720562571d88d5a0406488075a2a31 (diff)
downloadyosys-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.v29
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