// 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 @(negedge 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