Merge pull request #918 from larsclausen/fix-single-element-array-ports

Fix connecting single element array ports
This commit is contained in:
Cary R 2023-06-04 21:09:04 -07:00 committed by GitHub
commit 9cb3d53633
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 2 deletions

View File

@ -1538,7 +1538,7 @@ void PGModule::elaborate_mod_(Design*des, Module*rmod, NetScope*scope) const
// array, then there should be no sub-ports and
// the r-value expression is processed
// differently.
if (prts.size() >= 1 && prts[0]->pin_count()>1) {
if (prts.size() >= 1 && prts[0]->unpacked_dimensions() > 0) {
ivl_assert(*this, prts.size()==1);
elaborate_unpacked_port(des, scope, prts[0], pins[idx],
ptype, rmod, idx);
@ -1703,7 +1703,7 @@ void PGModule::elaborate_mod_(Design*des, Module*rmod, NetScope*scope) const
// differently. Note that we are calling it the
// "r-value" expression, but since this is an
// output port, we assign to it from the internal object.
if (prts[0]->pin_count() > 1) {
if (prts[0]->unpacked_dimensions() > 0) {
elaborate_unpacked_port(des, scope, prts[0], pins[idx],
ptype, rmod, idx);
continue;

View File

@ -0,0 +1,32 @@
// Check that connecting a module port array with a single element is supported
module M (
input [7:0] in[0:0],
output [7:0] out[0:0]
);
assign out[0] = in[0];
endmodule
module test;
reg [7:0] A[0:0];
wire [7:0] B[0:0];
M i_m (
.in(A),
.out(B)
);
initial begin
A[0] = 10;
#1
if (B[0] === 10) begin
$display("PASSED");
end else begin
$display("FAILED");
end
end
endmodule

View File

@ -26,6 +26,7 @@ dumpfile vvp_tests/dumpfile.json
final3 vvp_tests/final3.json
macro_str_esc vvp_tests/macro_str_esc.json
memsynth1 vvp_tests/memsynth1.json
module_port_array1 vvp_tests/module_port_array1.json
param-width vvp_tests/param-width.json
param-width-vlog95 vvp_tests/param-width-vlog95.json
pr1388974 vvp_tests/pr1388974.json

View File

@ -0,0 +1,5 @@
{
"type" : "normal",
"source" : "module_port_array1.v",
"iverilog-args" : [ "-g2009" ]
}