mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-21 05:13:40 +00:00
Added elsif preproc support
This commit is contained in:
parent
921064c200
commit
fbd06a1afc
2 changed files with 243 additions and 2 deletions
|
@ -1,9 +1,237 @@
|
|||
module test(a, y);
|
||||
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue