From 270c528afdb952b680a1e545fbbbdd135236ddc5 Mon Sep 17 00:00:00 2001 From: Mike Murunov <63611806+haskiindahouse@users.noreply.github.com> Date: Mon, 14 Sep 2026 14:31:51 -0700 Subject: [PATCH] Fix missing implicit net for bufif/notif/nmos/pmos data input (#8353) (#8354) --- docs/CONTRIBUTORS | 1 + src/V3LinkDot.cpp | 3 ++- test_regress/t/t_gate_implicit.v | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) 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