From 41b40157d80999f2d6a7d6a32d7a7b7eacbf8374 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Thu, 14 Sep 2017 21:15:56 -0400 Subject: [PATCH] Fix non-colon array of interface modports, bug1212. --- Changes | 2 ++ src/verilog.y | 2 +- test_regress/t/t_interface_array_modport.v | 9 +++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Changes b/Changes index a78488cc1..f3462377c 100644 --- a/Changes +++ b/Changes @@ -16,6 +16,8 @@ The contributors that suggested a given feature are shown in []. Thanks! **** Fix constant function default parameters, bug1211. [Mike Popoloski] +**** Fix non-colon array of interface modports, bug1212. [Mike Popoloski] + * Verilator 3.910 2017-09-07 diff --git a/src/verilog.y b/src/verilog.y index 093083f09..5f0de37a0 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -863,7 +863,7 @@ port: // ==IEEE: port { $$ = $3; VARDECL(AstVarType::IFACEREF); VARIO(UNKNOWN); VARDTYPE(new AstIfaceRefDType($2,"",*$2)); $$->addNextNull(VARDONEP($$,$4,$5)); } - | portDirNetE id/*interface*/ '.' idAny/*modport*/ portSig rangeListE sigAttrListE + | portDirNetE id/*interface*/ '.' idAny/*modport*/ portSig variable_dimensionListE sigAttrListE { $$ = $5; VARDECL(AstVarType::IFACEREF); VARIO(UNKNOWN); VARDTYPE(new AstIfaceRefDType($2,"",*$2,*$4)); $$->addNextNull(VARDONEP($$,$6,$7)); } diff --git a/test_regress/t/t_interface_array_modport.v b/test_regress/t/t_interface_array_modport.v index 4ed075278..cc6c5dc24 100644 --- a/test_regress/t/t_interface_array_modport.v +++ b/test_regress/t/t_interface_array_modport.v @@ -5,11 +5,14 @@ interface foo_intf; logic a; + + modport m(input a); endinterface module foo_mod ( - foo_intf foo + foo_intf foo, + foo_intf.m bars[4] ); endmodule @@ -18,12 +21,14 @@ module t (/*AUTOARG*/); localparam N = 4; foo_intf foos [N-1:0] (); + foo_intf bars [N] (); //foo_intf foos (); foo_mod foo_mod ( - .foo (foos[2]) + .foo (foos[2]), + .bars (bars) //.foo (foos) );