module top ( input x, input y, input cin, output reg A, output reg cout, output reg B,C ); reg ASSERT = 1; (* anyconst *) reg foo; (* anyseq *) reg too; initial begin begin A = 0; cout = 0; end end `ifndef BUG always @(posedge x) begin if ($initstate) A <= 0; A <= y + cin + too; assume(too); assume(s_eventually too); end always @(posedge x) begin if ($initstate) cout <= 0; cout <= y + A + foo; assert(ASSERT); assert(s_eventually ASSERT); end assign {B,C} = {cout,A} <<< 1; `else assign {cout,A} = cin - y * x; `endif endmodule