Fix UNDRIVEN on refs

This commit is contained in:
Wilson Snyder 2024-11-25 18:41:38 -05:00
parent a934d965be
commit a72009fb41

View File

@ -279,7 +279,7 @@ class UndrivenVisitor final : public VNVisitorConst {
bool m_inContAssign = false; // In continuous assignment bool m_inContAssign = false; // In continuous assignment
bool m_inProcAssign = false; // In procedural assignment bool m_inProcAssign = false; // In procedural assignment
bool m_inFTaskRef = false; // In function or task call bool m_inFTaskRef = false; // In function or task call
bool m_inInoutPin = false; // Connected to pin that is inout bool m_inInoutOrRefPin = false; // Connected to pin that is inout
const AstNodeFTask* m_taskp = nullptr; // Current task const AstNodeFTask* m_taskp = nullptr; // Current task
const AstAlways* m_alwaysCombp = nullptr; // Current always if combo, otherwise nullptr const AstAlways* m_alwaysCombp = nullptr; // Current always if combo, otherwise nullptr
@ -452,7 +452,7 @@ class UndrivenVisitor final : public VNVisitorConst {
// Inouts have only isWrite set, as we don't have more // Inouts have only isWrite set, as we don't have more
// information and operating on module boundary, treat as // information and operating on module boundary, treat as
// both read and writing // both read and writing
|| m_inInoutPin) || m_inInoutOrRefPin)
entryp->usedWhole(); entryp->usedWhole();
} }
} }
@ -503,8 +503,8 @@ class UndrivenVisitor final : public VNVisitorConst {
iterateChildrenConst(nodep); iterateChildrenConst(nodep);
} }
void visit(AstPin* nodep) override { void visit(AstPin* nodep) override {
VL_RESTORER(m_inInoutPin); VL_RESTORER(m_inInoutOrRefPin);
m_inInoutPin = nodep->modVarp()->isInout(); m_inInoutOrRefPin = nodep->modVarp()->isInoutOrRef();
iterateChildrenConst(nodep); iterateChildrenConst(nodep);
} }