mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 00:55:32 +00:00
sv: fix up end label checking
- disallow [gen]blocks with an end label but not begin label - check validity of module end label - fix memory leak of package name and end label - fix memory leak of module end label
This commit is contained in:
parent
092f0cb01e
commit
f2c2d73f36
7 changed files with 98 additions and 7 deletions
29
tests/simple/matching_end_labels.sv
Normal file
29
tests/simple/matching_end_labels.sv
Normal file
|
@ -0,0 +1,29 @@
|
|||
module top(
|
||||
output reg [7:0]
|
||||
out1, out2, out3, out4
|
||||
);
|
||||
initial begin
|
||||
begin : blk1
|
||||
reg x;
|
||||
x = 1;
|
||||
end
|
||||
out1 = blk1.x;
|
||||
begin : blk2
|
||||
reg x;
|
||||
x = 2;
|
||||
end : blk2
|
||||
out2 = blk2.x;
|
||||
end
|
||||
if (1) begin
|
||||
if (1) begin : blk3
|
||||
reg x;
|
||||
assign x = 3;
|
||||
end
|
||||
assign out3 = blk3.x;
|
||||
if (1) begin : blk4
|
||||
reg x;
|
||||
assign x = 4;
|
||||
end : blk4
|
||||
assign out4 = blk4.x;
|
||||
end
|
||||
endmodule
|
9
tests/verilog/block_end_label_only.ys
Normal file
9
tests/verilog/block_end_label_only.ys
Normal file
|
@ -0,0 +1,9 @@
|
|||
logger -expect error "Begin label missing where end label \(incorrect_name\) was given\." 1
|
||||
read_verilog -sv <<EOF
|
||||
module top;
|
||||
initial
|
||||
begin
|
||||
$display("HI");
|
||||
end : incorrect_name
|
||||
endmodule
|
||||
EOF
|
9
tests/verilog/block_end_label_wrong.ys
Normal file
9
tests/verilog/block_end_label_wrong.ys
Normal file
|
@ -0,0 +1,9 @@
|
|||
logger -expect error "Begin label \(correct_name\) and end label \(incorrect_name\) don't match\." 1
|
||||
read_verilog -sv <<EOF
|
||||
module top;
|
||||
initial
|
||||
begin : correct_name
|
||||
$display("HI");
|
||||
end : incorrect_name
|
||||
endmodule
|
||||
EOF
|
9
tests/verilog/gen_block_end_label_only.ys
Normal file
9
tests/verilog/gen_block_end_label_only.ys
Normal file
|
@ -0,0 +1,9 @@
|
|||
logger -expect error "Begin label missing where end label \(incorrect_name\) was given\." 1
|
||||
read_verilog -sv <<EOF
|
||||
module top;
|
||||
if (1)
|
||||
begin
|
||||
initial $display("HI");
|
||||
end : incorrect_name
|
||||
endmodule
|
||||
EOF
|
9
tests/verilog/gen_block_end_label_wrong.ys
Normal file
9
tests/verilog/gen_block_end_label_wrong.ys
Normal file
|
@ -0,0 +1,9 @@
|
|||
logger -expect error "Begin label \(correct_name\) and end label \(incorrect_name\) don't match\." 1
|
||||
read_verilog -sv <<EOF
|
||||
module top;
|
||||
if (1)
|
||||
begin : correct_name
|
||||
initial $display("HI");
|
||||
end : incorrect_name
|
||||
endmodule
|
||||
EOF
|
15
tests/verilog/module_end_label.ys
Normal file
15
tests/verilog/module_end_label.ys
Normal file
|
@ -0,0 +1,15 @@
|
|||
logger -expect-no-warnings
|
||||
read_verilog -sv <<EOF
|
||||
module correct_name;
|
||||
localparam X = 1;
|
||||
endmodule : correct_name
|
||||
EOF
|
||||
|
||||
design -reset
|
||||
|
||||
logger -expect error "Module name \(correct_name\) and end label \(incorrect_name\) don't match\." 1
|
||||
read_verilog -sv <<EOF
|
||||
module correct_name;
|
||||
localparam X = 1;
|
||||
endmodule : incorrect_name
|
||||
EOF
|
Loading…
Add table
Add a link
Reference in a new issue