From a595916574dc3992797340fc257b634456b364ca Mon Sep 17 00:00:00 2001 From: Daniel Kroening Date: Wed, 15 Oct 2025 07:51:50 -0700 Subject: [PATCH] Verilog: KNOWNBUG test for unconnected module input ports --- .../verilog/modules/unconnected_ports1.desc | 8 ++++++ .../verilog/modules/unconnected_ports1.sv | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 regression/verilog/modules/unconnected_ports1.desc create mode 100644 regression/verilog/modules/unconnected_ports1.sv diff --git a/regression/verilog/modules/unconnected_ports1.desc b/regression/verilog/modules/unconnected_ports1.desc new file mode 100644 index 000000000..e45992263 --- /dev/null +++ b/regression/verilog/modules/unconnected_ports1.desc @@ -0,0 +1,8 @@ +KNOWNBUG +unconnected_ports1.v +--bound 0 +^EXIT=0$ +^SIGNAL=0$ +-- +-- +This fails an assertion. diff --git a/regression/verilog/modules/unconnected_ports1.sv b/regression/verilog/modules/unconnected_ports1.sv new file mode 100644 index 000000000..27562a2e9 --- /dev/null +++ b/regression/verilog/modules/unconnected_ports1.sv @@ -0,0 +1,25 @@ +module my_module(input [31:0] x, y, z = 5); + +endmodule + +module main(); + + my_module m1(.x(1), .y(), .z()); + + // 1800-2017 23.3.3.2 says + // "If left unconnected, the port shall have the default + // initial value corresponding to the data type." + // This is 'x for logic types. + // However, Icarus Verilog, VCS, Questa, Xcelium use 'z. + + initial assert (m1.x == 1); + initial assert (m1.y === 'z); + initial assert (m1.z == 5); + + my_module m2(/* blank */, 1, /* blank */); + + initial assert (m2.x === 'z); + initial assert (m2.y == 1); + initial assert (m2.z == 5); + +endmodule