Add regression tests for block labels shadowing type identifiers
Check that visible type identifiers can be reused as named block labels. Cover procedural `begin` blocks, fork blocks, and conditional generate blocks. Also check matching end labels where the grammar consumes the shared `label_opt` rule. The generate test keeps the existing vlog95 compile-error expectation because named generate scopes are not translated by the vlog95 target. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
06740d0dda
commit
f6848300b7
|
|
@ -0,0 +1,28 @@
|
|||
// Check that block labels can shadow visible type identifiers.
|
||||
|
||||
typedef int T;
|
||||
|
||||
module test;
|
||||
|
||||
reg failed;
|
||||
reg value;
|
||||
|
||||
initial begin
|
||||
failed = 1'b0;
|
||||
value = 0;
|
||||
|
||||
begin : T
|
||||
value = value + 1;
|
||||
end : T
|
||||
|
||||
if (value !== 1) begin
|
||||
$display("FAILED(%0d). block labels did not hide typedefs", `__LINE__);
|
||||
failed = 1'b1;
|
||||
end
|
||||
|
||||
if (!failed) begin
|
||||
$display("PASSED");
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
// Check that fork block labels can shadow visible type identifiers.
|
||||
|
||||
typedef int T;
|
||||
|
||||
module test;
|
||||
|
||||
reg failed;
|
||||
reg value;
|
||||
|
||||
initial begin
|
||||
failed = 1'b0;
|
||||
value = 1'b0;
|
||||
|
||||
fork : T
|
||||
value = 1'b1;
|
||||
join : T
|
||||
|
||||
if (value !== 1'b1) begin
|
||||
$display("FAILED(%0d). fork label did not hide typedef", `__LINE__);
|
||||
failed = 1'b1;
|
||||
end
|
||||
|
||||
if (!failed) begin
|
||||
$display("PASSED");
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
// Check that generate block labels can shadow visible type identifiers.
|
||||
|
||||
typedef int G;
|
||||
module test;
|
||||
|
||||
reg failed;
|
||||
|
||||
if (1) begin : G
|
||||
localparam int VALUE = 1;
|
||||
end : G
|
||||
|
||||
initial begin
|
||||
failed = 1'b0;
|
||||
|
||||
if (G.VALUE != 1) begin
|
||||
$display("FAILED(%0d). generate labels did not hide typedefs", `__LINE__);
|
||||
failed = 1'b1;
|
||||
end
|
||||
|
||||
if (!failed) begin
|
||||
$display("PASSED");
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
@ -386,10 +386,13 @@ sv_soft_packed_union vvp_tests/sv_soft_packed_union.json
|
|||
sv_soft_packed_union_fail1 vvp_tests/sv_soft_packed_union_fail1.json
|
||||
sv_super_member_fail vvp_tests/sv_super_member_fail.json
|
||||
sv_type_identifier_ams_name_fields vvp_tests/sv_type_identifier_ams_name_fields.json
|
||||
sv_type_identifier_block_label_name vvp_tests/sv_type_identifier_block_label_name.json
|
||||
sv_type_identifier_config_name vvp_tests/sv_type_identifier_config_name.json
|
||||
sv_type_identifier_enum_item_name vvp_tests/sv_type_identifier_enum_item_name.json
|
||||
sv_type_identifier_foreach_name vvp_tests/sv_type_identifier_foreach_name.json
|
||||
sv_type_identifier_fork_label_name vvp_tests/sv_type_identifier_fork_label_name.json
|
||||
sv_type_identifier_function_name vvp_tests/sv_type_identifier_function_name.json
|
||||
sv_type_identifier_generate_label_name vvp_tests/sv_type_identifier_generate_label_name.json
|
||||
sv_type_identifier_genvar_name vvp_tests/sv_type_identifier_genvar_name.json
|
||||
sv_type_identifier_modport_name vvp_tests/sv_type_identifier_modport_name.json
|
||||
sv_type_identifier_module_name vvp_tests/sv_type_identifier_module_name.json
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"type" : "normal",
|
||||
"source" : "sv_type_identifier_block_label_name.v",
|
||||
"iverilog-args" : [ "-g2005-sv" ]
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"type" : "normal",
|
||||
"source" : "sv_type_identifier_fork_label_name.v",
|
||||
"iverilog-args" : [ "-g2005-sv" ]
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type" : "normal",
|
||||
"source" : "sv_type_identifier_generate_label_name.v",
|
||||
"iverilog-args" : [ "-g2005-sv" ],
|
||||
"vlog95" : {
|
||||
"__comment" : "Named generate scopes are not translated by vlog95",
|
||||
"type" : "CE"
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue