mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-23 03:27:53 +00:00
verilog: fix handling of nested ifdef directives
- track depth so we know whether to consider higher-level elsifs - error on unmatched endif/elsif/else
This commit is contained in:
parent
b6904a8e53
commit
1ec5994100
8 changed files with 197 additions and 11 deletions
88
tests/simple/ifdef_1.v
Normal file
88
tests/simple/ifdef_1.v
Normal file
|
@ -0,0 +1,88 @@
|
|||
module top(o1, o2, o3, o4);
|
||||
|
||||
`define FAIL input wire not_a_port;
|
||||
|
||||
`ifdef COND_1
|
||||
`FAIL
|
||||
`elsif COND_2
|
||||
`FAIL
|
||||
`elsif COND_3
|
||||
`FAIL
|
||||
`elsif COND_4
|
||||
`FAIL
|
||||
`else
|
||||
|
||||
`define COND_4
|
||||
output wire o4;
|
||||
|
||||
`ifdef COND_1
|
||||
`FAIL
|
||||
`elsif COND_2
|
||||
`FAIL
|
||||
`elsif COND_3
|
||||
`FAIL
|
||||
`elsif COND_4
|
||||
|
||||
`define COND_3
|
||||
output wire o3;
|
||||
|
||||
`ifdef COND_1
|
||||
`FAIL
|
||||
`elsif COND_2
|
||||
`FAIL
|
||||
`elsif COND_3
|
||||
|
||||
`define COND_2
|
||||
output wire o2;
|
||||
|
||||
`ifdef COND_1
|
||||
`FAIL
|
||||
`elsif COND_2
|
||||
|
||||
`define COND_1
|
||||
output wire o1;
|
||||
|
||||
`ifdef COND_1
|
||||
|
||||
`ifdef COND_1
|
||||
`elsif COND_2
|
||||
`FAIL
|
||||
`elsif COND_3
|
||||
`FAIL
|
||||
`elsif COND_4
|
||||
`FAIL
|
||||
`else
|
||||
`FAIL
|
||||
`endif
|
||||
|
||||
`elsif COND_2
|
||||
`FAIL
|
||||
`elsif COND_3
|
||||
`FAIL
|
||||
`elsif COND_4
|
||||
`FAIL
|
||||
`else
|
||||
`FAIL
|
||||
`endif
|
||||
|
||||
`elsif COND_3
|
||||
`FAIL
|
||||
`elsif COND_4
|
||||
`FAIL
|
||||
`else
|
||||
`FAIL
|
||||
`endif
|
||||
|
||||
`elsif COND_4
|
||||
`FAIL
|
||||
`else
|
||||
`FAIL
|
||||
`endif
|
||||
|
||||
`else
|
||||
`FAIL
|
||||
`endif
|
||||
|
||||
`endif
|
||||
|
||||
endmodule
|
21
tests/simple/ifdef_2.v
Normal file
21
tests/simple/ifdef_2.v
Normal file
|
@ -0,0 +1,21 @@
|
|||
module top(o1, o2, o3);
|
||||
|
||||
output wire o1;
|
||||
|
||||
`define COND_1
|
||||
`define COND_2
|
||||
`define COND_3
|
||||
|
||||
`ifdef COND_1
|
||||
output wire o2;
|
||||
`elsif COND_2
|
||||
input wire dne1;
|
||||
`elsif COND_3
|
||||
input wire dne2;
|
||||
`else
|
||||
input wire dne3;
|
||||
`endif
|
||||
|
||||
output wire o3;
|
||||
|
||||
endmodule
|
Loading…
Add table
Add a link
Reference in a new issue