module top; integer x = 0; integer y = 1; `define GOOD \ $display("%x %x %d", x, y, `__LINE__); \ x += 1; $display(x); `define BAD \ $display("FAIL line ", `__LINE__); initial begin `include "cond.vh" $display(`RESULT); `include "cond.vh" $display(`RESULT); `include "cond.vh" $display(`RESULT); `undef INCLUDED `include "cond.vh" $display(`RESULT); `include "cond.vh" $display(`RESULT); `define A `define C `ifdef A `GOOD `endif `ifndef A `BAD `endif `ifdef B `BAD `endif `ifndef B `GOOD `endif `ifdef A `GOOD `else `BAD `endif `ifdef B `BAD `define A `else `GOOD `endif `ifndef A `BAD `elsif B `BAD `elsif A `GOOD `else `BAD `endif `ifndef B `GOOD `elsif A `BAD `elsif B `BAD `else `BAD `endif `ifdef B `BAD `elsif A `GOOD `else `BAD `endif `ifdef B `BAD `elsif A `GOOD `elsif B `BAD `else `BAD `endif `ifdef B `BAD `elsif A `GOOD `elsif C `BAD `else `BAD `endif `ifdef A `ifdef B `BAD `ifdef B `BAD `else `BAD `endif `BAD `else `ifdef C `GOOD `ifndef C `BAD `else `GOOD `endif `else `BAD `endif `endif `GOOD `else `BAD `ifdef B `BAD `else `BAD `endif `BAD `endif end endmodule