From 8f935ec3aaa58eb3b61d4f0d7073e3233ab77c73 Mon Sep 17 00:00:00 2001 From: Edmund Lam Date: Tue, 9 Jun 2026 13:08:34 -0400 Subject: [PATCH] descend into dots used by subDTypes --- src/V3Param.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/V3Param.cpp b/src/V3Param.cpp index ea60bd8f1..0317234b0 100644 --- a/src/V3Param.cpp +++ b/src/V3Param.cpp @@ -2232,6 +2232,16 @@ public: collectTypedefs(varp->valuep()); enqueueRefs(varp->valuep()); } + // Descend into each collected typedef's subDType for Dots (e.g. class-scoped + // lparams used in a packed range like `logic [(CFG::pc_width - 1):0]`) and + // nested typedef references. The loop grows tdefps as it goes; the + // `i < tdefps.size()` re-check carries us to fixpoint. + for (size_t i = 0; i < tdefps.size(); ++i) { + AstNodeDType* const subp = tdefps[i]->subDTypep(); + if (!subp) continue; + collectDots(subp); + collectTypedefs(subp); + } if (dotps.empty() && tdefps.empty()) return; VL_RESTORER(m_modp); m_modp = modp;