| module test_def(a, y); | |
| `define MSB_LSB_SEP : | |
| `define get_msb(off, len) ((off)+(len)-1) | |
| `define get_lsb(off, len) (off) | |
| `define sel_bits(offset, len) `get_msb(offset, len) `MSB_LSB_SEP `get_lsb(offset, len) | |
| input [31:0] a; | |
| output [7:0] y; | |
| assign y = a[`sel_bits(16, 8)]; | |
| endmodule | |
| // --------------------------------------------------- | |
| module test_ifdef(a, y); | |
| input [2:0] a; | |
| output reg [31:0] y; | |
| always @* begin | |
| y = 0; | |
| `undef X | |
| `ifdef X | |
| y = y + 42; | |
| `else | |
| `undef A | |
| `undef B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `undef A | |
| `define B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `undef B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `define B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| // ------------------------------------ | |
| `undef A | |
| `undef B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `undef A | |
| `define B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `undef B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `define B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| // ------------------------------------ | |
| `undef A | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| // ------------------------------------ | |
| `undef A | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `endif | |
| `define X | |
| `ifdef X | |
| `undef A | |
| `undef B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `undef A | |
| `define B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `undef B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `define B | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| // ------------------------------------ | |
| `undef A | |
| `undef B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `undef A | |
| `define B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `undef B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `define B | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `elsif B | |
| y = (y << 1) | a[1]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| // ------------------------------------ | |
| `undef A | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `ifdef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| // ------------------------------------ | |
| `undef A | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `define A | |
| `ifndef A | |
| y = (y << 1) | a[0]; | |
| `else | |
| y = (y << 1) | a[2]; | |
| `endif | |
| `else | |
| y = y + 42; | |
| `endif | |
| end | |
| endmodule | |
| `define SIZE 4 // comment supported in this part | |
| module test_comment_in_macro ( din_a, dout_a ); | |
| input [`SIZE-1:0] din_a; | |
| output [`SIZE-1:0] dout_a; | |
| assign dout_a = din_a | `SIZE'ha; | |
| endmodule |