Add regression tests for UDP declaration diagnostics

Check that UDP initial values on non-registered outputs generate compile
errors for both old-style and ANSI-style UDP declarations. Also check that
conflicting UDP port declarations generate an error and that a valid
ANSI-style `output reg` initializer is accepted.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
Lars-Peter Clausen 2026-07-04 12:45:15 -07:00
parent 8d4faf2744
commit c8568998af
9 changed files with 73 additions and 0 deletions

View File

@ -0,0 +1,8 @@
// Check that an ANSI-style UDP output initializer requires a reg output.
primitive udp_ansi_initial_nonreg_fail (output o = 1'b0, input i);
table
0 : 0;
1 : 1;
endtable
endprimitive

View File

@ -0,0 +1,21 @@
// Check that an ANSI-style UDP reg output can have an initializer.
primitive udp_ansi_initial_reg (output reg o = 1'b0, input i);
table
0 : ? : 0;
1 : ? : 1;
endtable
endprimitive
module test;
reg i;
wire o;
udp_ansi_initial_reg i_udp(o, i);
initial begin
i = 1'b0;
#1;
$display("PASSED");
end
endmodule

View File

@ -0,0 +1,12 @@
// Check that an old-style UDP initial statement requires a reg output.
primitive udp_initial_nonreg_fail (o, i);
output o;
input i;
initial o = 1'b0;
table
0 : 0;
1 : 1;
endtable
endprimitive

View File

@ -0,0 +1,12 @@
// Check that conflicting UDP port declarations generate an error.
primitive udp_port_decl_conflict_fail (o, i);
output o;
input o;
input i;
table
0 : 0;
1 : 1;
endtable
endprimitive

View File

@ -430,7 +430,11 @@ test_va_math vvp_tests/test_va_math.json
test_vams_math vvp_tests/test_vams_math.json test_vams_math vvp_tests/test_vams_math.json
timing_check_syntax vvp_tests/timing_check_syntax.json timing_check_syntax vvp_tests/timing_check_syntax.json
timing_check_delayed_signals vvp_tests/timing_check_delayed_signals.json timing_check_delayed_signals vvp_tests/timing_check_delayed_signals.json
udp_ansi_initial_nonreg_fail vvp_tests/udp_ansi_initial_nonreg_fail.json
udp_ansi_initial_reg vvp_tests/udp_ansi_initial_reg.json
udp_empty_table_fail vvp_tests/udp_empty_table_fail.json udp_empty_table_fail vvp_tests/udp_empty_table_fail.json
udp_initial_nonreg_fail vvp_tests/udp_initial_nonreg_fail.json
udp_port_decl_conflict_fail vvp_tests/udp_port_decl_conflict_fail.json
uwire_fail2 vvp_tests/uwire_fail2.json uwire_fail2 vvp_tests/uwire_fail2.json
uwire_fail3 vvp_tests/uwire_fail3.json uwire_fail3 vvp_tests/uwire_fail3.json
value_range1 vvp_tests/value_range1.json value_range1 vvp_tests/value_range1.json

View File

@ -0,0 +1,4 @@
{
"type" : "CE",
"source" : "udp_ansi_initial_nonreg_fail.v"
}

View File

@ -0,0 +1,4 @@
{
"type" : "normal",
"source" : "udp_ansi_initial_reg.v"
}

View File

@ -0,0 +1,4 @@
{
"type" : "CE",
"source" : "udp_initial_nonreg_fail.v"
}

View File

@ -0,0 +1,4 @@
{
"type" : "CE",
"source" : "udp_port_decl_conflict_fail.v"
}