module top(input i, output o); | |
A A(); | |
B B(); | |
assign A.i = i; | |
assign o = B.o; | |
always @* assert(o == i); | |
endmodule | |
module A; | |
wire i, y; | |
`ifdef FAIL | |
assign B.x = i; | |
`else | |
assign B.x = !i; | |
`endif | |
assign y = !B.y; | |
endmodule | |
module B; | |
wire x, y, o; | |
assign y = x, o = A.y; | |
endmodule |