From 754c5c71f1683032ce6e36c24ab8c9aeb28a87a2 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sat, 15 Feb 2025 00:52:41 -0500 Subject: [PATCH] Fix force VPI public signal visibility (#5225). --- Changes | 1 + src/V3EmitCSyms.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Changes b/Changes index db6a674f5..2b2c13540 100644 --- a/Changes +++ b/Changes @@ -28,6 +28,7 @@ Verilator 5.033 devel * Optimize labels as final `if` block statements (#5744). * Optimize empty function definition bodies (#5750). * Fix error message when call task as a function (#3089). [Matthew Ballance] +* Fix force VPI public signal visibility (#5225). [Frédéric Requin] * Fix VPI iteration over hierarchy (#5314) (#5731). [Natan Kreimer] * Fix constrained random for > 64-bit associative arrays (#5670) (#5682). [Yilou Wang] * Fix mis-optimizing away `$urandom` (#5703). [Parker Schless] diff --git a/src/V3EmitCSyms.cpp b/src/V3EmitCSyms.cpp index 1eaeea18c..b92b0dcef 100644 --- a/src/V3EmitCSyms.cpp +++ b/src/V3EmitCSyms.cpp @@ -369,7 +369,8 @@ class EmitCSyms final : EmitCBaseVisitorConst { void visit(AstVar* nodep) override { nameCheck(nodep); iterateChildrenConst(nodep); - if (nodep->isSigUserRdPublic() && !m_cfuncp) m_modVars.emplace_back(m_modp, nodep); + if ((nodep->isSigUserRdPublic() || nodep->isSigUserRWPublic()) && !m_cfuncp) + m_modVars.emplace_back(m_modp, nodep); } void visit(AstVarScope* nodep) override { iterateChildrenConst(nodep);