diff --git a/docs/CONTRIBUTORS b/docs/CONTRIBUTORS index b217e3b43..ed287f13c 100644 --- a/docs/CONTRIBUTORS +++ b/docs/CONTRIBUTORS @@ -229,6 +229,7 @@ Michael Rogenmoser Michal Czyz Michaël Lefebvre Miguel Perez Andrade +Mike Murunov Mike Popoloski Miodrag Milanović Mladen Slijepcevic diff --git a/src/V3LinkDot.cpp b/src/V3LinkDot.cpp index 6a130b2c0..b2f452020 100644 --- a/src/V3LinkDot.cpp +++ b/src/V3LinkDot.cpp @@ -2464,8 +2464,9 @@ class LinkDotParamVisitor final : public VNVisitor { if (AstNode* const refp = nodep->op2p()) pinImplicitExprRecurse(refp); if (AstNode* const refp = nodep->op3p()) pinImplicitExprRecurse(refp); if (AstNode* const refp = nodep->op4p()) pinImplicitExprRecurse(refp); - if (AstNode* const refp = nodep->nextp()) pinImplicitExprRecurse(refp); } + // Continue along a list (e.g. the terminals under AstImplicit), also after a reference + if (AstNode* const refp = nodep->nextp()) pinImplicitExprRecurse(refp); } // VISITORS diff --git a/test_regress/t/t_gate_implicit.v b/test_regress/t/t_gate_implicit.v index 113b9ec32..41f418b43 100644 --- a/test_regress/t/t_gate_implicit.v +++ b/test_regress/t/t_gate_implicit.v @@ -78,6 +78,13 @@ module Test ( RWL1, RWL2_n ); + // Data inputs used only by the gate, with an identifier as the enable (#8353) + bufif0 I4 (n4_out, n4_in, RWL1); + bufif1 I5 (n5_out, n5_in, RWL1); + notif0 I6 (n6_out, n6_in, RWL1); + notif1 I7 (n7_out, n7_in, RWL1); + nmos I8 (n8_out, n8_in, RWL1); + pmos I9 (n9_out, n9_in, RWL1); // verilator lint_on IMPLICIT endmodule