module test_001(clk, a, a_old, b); // test case taken from: // http://www.reddit.com/r/yosys/comments/1wvpj6/trouble_with_assertions_and_sat_solver/ input wire clk; input wire a; output reg a_old = 0; output reg b = 1; wire assertion = (a_old != b); always @(posedge clk) begin a_old <= a; b <= !a; assert(a_old != b); end endmodule module test_002(clk, a, a_old, b); // copy from test_001 with modifications input wire clk; input wire a; output reg a_old = 0; output reg b = 0; // <-- this will fail wire assertion = (a_old != b); always @(posedge clk) begin a_old <= a; b <= !a; assert(a_old != b); end endmodule module test_003(clk, a, a_old, b); // copy from test_001 with modifications input wire clk; input wire a; output reg a_old = 0; output reg b; // <-- this will fail wire assertion = (a_old != b); always @(posedge clk) begin a_old <= a; b <= !a; assert(a_old != b); end endmodule module test_004(clk, a, a_old, b); // copy from test_001 with modifications input wire clk; input wire a; output reg a_old = 0; output reg b = 1; wire assertion = (a_old != b); always @(posedge clk) begin a_old <= a; b <= !a; assert(a_old == b); // <-- this will fail end endmodule module test_005(clk, a, a_old, b); // copy from test_001 with modifications input wire clk; input wire a; output reg a_old = 1; // <-- inverted, no problem output reg b = 0; wire assertion = (a_old != b); always @(posedge clk) begin a_old <= a; b <= !a; assert(a_old != b); end endmodule