diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2385ff662..9add1edaa 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -349,6 +349,7 @@ set(COMMON_SOURCES V3Undriven.cpp V3Unknown.cpp V3Unroll.cpp + V3UnrollGen.cpp V3VariableOrder.cpp V3Waiver.cpp V3Width.cpp diff --git a/src/Makefile_obj.in b/src/Makefile_obj.in index d343b8e78..cae700778 100644 --- a/src/Makefile_obj.in +++ b/src/Makefile_obj.in @@ -324,6 +324,7 @@ RAW_OBJS_PCH_ASTNOMT = \ V3Undriven.o \ V3Unknown.o \ V3Unroll.o \ + V3UnrollGen.o \ V3Width.o \ V3WidthCommit.o \ V3WidthSel.o \ diff --git a/src/V3AssertPre.cpp b/src/V3AssertPre.cpp index 030d6a3a2..b31b2da0d 100644 --- a/src/V3AssertPre.cpp +++ b/src/V3AssertPre.cpp @@ -349,16 +349,21 @@ private: AstVar* const cntVarp = new AstVar{flp, VVarType::BLOCKTEMP, delayName + "__counter", nodep->findBasicDType(VBasicDTypeKwd::UINT32)}; cntVarp->lifetime(VLifetime::AUTOMATIC_EXPLICIT); - cntVarp->funcLocal(true); AstBegin* const beginp = new AstBegin{flp, delayName + "__block", cntVarp, true}; beginp->addStmtsp(new AstAssign{flp, new AstVarRef{flp, cntVarp, VAccess::WRITE}, valuep}); - beginp->addStmtsp(new AstWhile{ - nodep->fileline(), - new AstGt{flp, new AstVarRef{flp, cntVarp, VAccess::READ}, new AstConst{flp, 0}}, - controlp, - new AstAssign{flp, new AstVarRef{flp, cntVarp, VAccess::WRITE}, - new AstSub{flp, new AstVarRef{flp, cntVarp, VAccess::READ}, - new AstConst{flp, 1}}}}); + + { + AstLoop* const loopp = new AstLoop{flp}; + loopp->addStmtsp(new AstLoopTest{ + flp, loopp, + new AstGt{flp, new AstVarRef{flp, cntVarp, VAccess::READ}, new AstConst{flp, 0}}}); + loopp->addStmtsp(controlp); + loopp->addStmtsp( + new AstAssign{flp, new AstVarRef{flp, cntVarp, VAccess::WRITE}, + new AstSub{flp, new AstVarRef{flp, cntVarp, VAccess::READ}, + new AstConst{flp, 1}}}); + beginp->addStmtsp(loopp); + } nodep->replaceWith(beginp); VL_DO_DANGLING(nodep->deleteTree(), nodep); } diff --git a/src/V3AstNodeStmt.h b/src/V3AstNodeStmt.h index 699b0c1a4..5622cc01c 100644 --- a/src/V3AstNodeStmt.h +++ b/src/V3AstNodeStmt.h @@ -520,20 +520,6 @@ public: // * = Add a newline for $display bool addNewline() const { return displayType().addNewline(); } }; -class AstDoWhile final : public AstNodeStmt { - // @astgen op1 := condp : AstNodeExpr - // @astgen op2 := stmtsp : List[AstNode] -public: - AstDoWhile(FileLine* fl, AstNodeExpr* conditionp, AstNode* stmtsp = nullptr) - : ASTGEN_SUPER_DoWhile(fl) { - condp(conditionp); - addStmtsp(stmtsp); - } - ASTGEN_MEMBERS_AstDoWhile; - bool isGateOptimizable() const override { return false; } - int instrCount() const override { return INSTR_COUNT_BRANCH; } - bool sameNode(const AstNode* /*samep*/) const override { return true; } -}; class AstDumpCtl final : public AstNodeStmt { // $dumpon etc // Parents: expr @@ -677,6 +663,58 @@ public: } AstJumpBlock* blockp() const { return m_blockp; } }; +class AstLoop final : public AstNodeStmt { + // An inifinite loop, used to model all source level procedural loops. + // Executes as: + // while (true) { + // stmtsp; + // // <- 'continue' inside 'stmtsp goes here + // contsp; + // } + // 'contsp' is moved into 'stmtsp' in LinkJump when 'continue' statements are resovled. + // @astgen op1 := stmtsp : List[AstNode] + // @astgen op2 := contsp : List[AstNode] // Empty after LinkJump + VOptionBool m_unroll; // Full, none, or default unrolling +public: + AstLoop(FileLine* fl) + : ASTGEN_SUPER_Loop(fl) {} + ASTGEN_MEMBERS_AstLoop; + void dump(std::ostream& str) const override; + void dumpJson(std::ostream& str) const override; + bool sameNode(const AstNode* thatp) const override { + return m_unroll == VN_DBG_AS(thatp, Loop)->m_unroll; + } + bool isGateOptimizable() const override { return false; } + int instrCount() const override { return INSTR_COUNT_BRANCH; } + bool maybePointedTo() const override VL_MT_SAFE { return true; } + // ACCESSORS + VOptionBool unroll() const { return m_unroll; } + void unroll(const VOptionBool flag) { m_unroll = flag; } +}; +class AstLoopTest final : public AstNodeStmt { + // The condition test inside an AstLoop. If the condition is true, + // execution continues after this AstLoopTest statement. If the condition + // is false, control is transfered to after the corresponding AstLoop. + // In other words: AstLoopTest is like a conditional 'break' statement, + // which breaks out of the loop if the condition is false. + // @astgen op1 := condp : AstNodeExpr // The loop condition + // @astgen ptr := m_loopp : AstLoop // The corresponding AstLoop +public: + AstLoopTest(FileLine* fl, AstLoop* loopp, AstNodeExpr* condp) + : ASTGEN_SUPER_LoopTest(fl) + , m_loopp{loopp} { + this->condp(condp); + } + ASTGEN_MEMBERS_AstLoopTest; + const char* broken() const override; + void dump(std::ostream& str) const override; + bool sameNode(const AstNode*) const override { return true; } + bool isGateOptimizable() const override { return false; } + bool isBrancher() const override { return true; } + int instrCount() const override { return 0; } + // ACCESSORS + AstLoop* loopp() const { return m_loopp; } +}; class AstMonitorOff final : public AstNodeStmt { const bool m_off; // Monitor off. Using 0=on allows faster init and comparison @@ -1044,28 +1082,6 @@ public: ASTGEN_MEMBERS_AstWaitFork; bool isTimingControl() const override { return true; } }; -class AstWhile final : public AstNodeStmt { - // @astgen op1 := condp : AstNodeExpr - // @astgen op2 := stmtsp : List[AstNode] - // @astgen op3 := incsp : List[AstNode] - VOptionBool m_unrollFull; // Full, disable, or default unrolling -public: - AstWhile(FileLine* fl, AstNodeExpr* condp, AstNode* stmtsp = nullptr, AstNode* incsp = nullptr) - : ASTGEN_SUPER_While(fl) { - this->condp(condp); - addStmtsp(stmtsp); - addIncsp(incsp); - } - ASTGEN_MEMBERS_AstWhile; - void dump(std::ostream& str) const override; - bool isGateOptimizable() const override { return false; } - int instrCount() const override { return INSTR_COUNT_BRANCH; } - bool sameNode(const AstNode* /*samep*/) const override { return true; } - // Stop statement searchback here - void addNextStmt(AstNode* newp, AstNode* belowp) override; - VOptionBool unrollFull() const { return m_unrollFull; } - void unrollFull(const VOptionBool flag) { m_unrollFull = flag; } -}; // === AstNodeAssign === class AstAssign final : public AstNodeAssign { diff --git a/src/V3AstNodes.cpp b/src/V3AstNodes.cpp index ef3ef1166..3c0b6e3ca 100644 --- a/src/V3AstNodes.cpp +++ b/src/V3AstNodes.cpp @@ -1551,24 +1551,6 @@ void AstNodeStmt::addNextStmt(AstNode* newp, AstNode*) { this->addNextHere(newp); } -void AstWhile::addNextStmt(AstNode* newp, AstNode* belowp) { - // Special, as statements need to be put in different places - // Belowp is how we came to recurse up to this point - if (belowp == condp()) { - // Becomes first statement in body, body may have been empty - if (stmtsp()) { - stmtsp()->addHereThisAsNext(newp); - } else { - addStmtsp(newp); - } - } else if (belowp == stmtsp()) { - // Next statement in body - belowp->addNextHere(newp); - } else { - belowp->v3fatalSrc("Doesn't look like this was really under the while"); - } -} - //====================================================================== // Per-type Debugging @@ -2065,6 +2047,30 @@ const char* AstJumpGo::broken() const { return nullptr; } +void AstLoop::dump(std::ostream& str) const { + this->AstNode::dump(str); + if (unroll().isSetTrue()) + str << " [unrollfull]"; + else if (unroll().isSetFalse()) + str << " [unrollnone]"; +} +void AstLoop::dumpJson(std::ostream& str) const { + dumpJsonStr(str, "unroll", + unroll().isSetTrue() ? "full" + : unroll().isSetFalse() ? "none" + : "default"); + dumpJsonGen(str); +} +void AstLoopTest::dump(std::ostream& str) const { + this->AstNode::dump(str); + str << " -> "; + loopp()->dump(str); +} +const char* AstLoopTest::broken() const { + BROKEN_RTN(!loopp()->brokeExistsAbove()); + return nullptr; +} + void AstMemberDType::dump(std::ostream& str) const { this->AstNodeDType::dump(str); if (isConstrainedRand()) str << " [CONSTRAINEDRAND]"; @@ -2732,7 +2738,7 @@ void AstVar::dump(std::ostream& str) const { if (isSigUserRWPublic()) str << " [PWR]"; if (isInternal()) str << " [INTERNAL]"; if (isLatched()) str << " [LATCHED]"; - if (isUsedLoopIdx()) str << " [LOOP]"; + if (isUsedLoopIdx()) str << " [LOOPIDX]"; if (rand().isRandomizable()) str << rand(); if (noReset()) str << " [!RST]"; if (attrIsolateAssign()) str << " [aISO]"; @@ -2783,13 +2789,6 @@ bool AstVar::sameNode(const AstNode* samep) const { const AstVar* const asamep = VN_DBG_AS(samep, Var); return name() == asamep->name() && varType() == asamep->varType(); } -void AstWhile::dump(std::ostream& str) const { - this->AstNode::dump(str); - if (unrollFull().isSetTrue()) - str << " [unrollfull]"; - else if (unrollFull().isSetFalse()) - str << " [unrolldis]"; -} void AstScope::dump(std::ostream& str) const { this->AstNode::dump(str); str << " [abovep=" << nodeAddr(aboveScopep()) << "]"; diff --git a/src/V3Begin.cpp b/src/V3Begin.cpp index 8d445dd44..5563f4b9a 100644 --- a/src/V3Begin.cpp +++ b/src/V3Begin.cpp @@ -415,11 +415,13 @@ static AstNode* createForeachLoop(AstNodeForeach* nodep, AstNode* bodysp, AstVar else incp = new AstSub{fl, varRefp->cloneTree(false), new AstConst{fl, 1}}; - AstWhile* const whilep = new AstWhile{ - fl, condp, bodysp, new AstAssign{fl, new AstVarRef{fl, varp, VAccess::WRITE}, incp}}; + AstLoop* const loopp = new AstLoop{fl}; + loopp->addStmtsp(new AstLoopTest{fl, loopp, condp}); + loopp->addStmtsp(bodysp); + loopp->addStmtsp(new AstAssign{fl, new AstVarRef{fl, varp, VAccess::WRITE}, incp}); AstNode* const stmtsp = varp; // New statements for outer loop stmtsp->addNext(new AstAssign{fl, new AstVarRef{fl, varp, VAccess::WRITE}, leftp}); - stmtsp->addNext(whilep); + stmtsp->addNext(loopp); return stmtsp; } static AstNode* createForeachLoopRanged(AstNodeForeach* nodep, AstNode* bodysp, AstVar* varp, @@ -519,12 +521,14 @@ AstNode* V3Begin::convertToWhile(AstForeach* nodep) { AstLogOr* const orp = new AstLogOr{fl, new AstVarRef{fl, first_varp, VAccess::READ}, new AstNeq{fl, new AstConst{fl, 0}, nextp}}; - AstNode* const whilep = new AstWhile{fl, orp, first_clearp}; + AstLoop* const lp = new AstLoop{fl}; + lp->addStmtsp(new AstLoopTest{fl, lp, orp}); + lp->addStmtsp(first_clearp); first_clearp->addNext(bodyPointp); AstNode* const ifbodyp = new AstAssign{fl, new AstVarRef{fl, first_varp, VAccess::WRITE}, new AstConst{fl, AstConst::BitTrue{}}}; - ifbodyp->addNext(whilep); + ifbodyp->addNext(lp); loopp = varp; loopp->addNext(first_varp); loopp->addNext( diff --git a/src/V3Cfg.cpp b/src/V3Cfg.cpp index 34a870a60..827f7d49f 100644 --- a/src/V3Cfg.cpp +++ b/src/V3Cfg.cpp @@ -39,10 +39,10 @@ std::string CfgBlock::name() const { ss << "if ("; V3EmitV::debugVerilogForTree(ifp->condp(), ss); ss << ") ..."; - } else if (const AstWhile* const whilep = VN_CAST(nodep, While)) { - ss << "while ("; - V3EmitV::debugVerilogForTree(whilep->condp(), ss); - ss << ") ..."; + } else if (const AstLoopTest* const testp = VN_CAST(nodep, LoopTest)) { + ss << "if (!"; + V3EmitV::debugVerilogForTree(testp->condp(), ss); + ss << ") break;"; } else { V3EmitV::debugVerilogForTree(nodep, ss); } diff --git a/src/V3CfgBuilder.cpp b/src/V3CfgBuilder.cpp index 1d5379d81..3be38f0fa 100644 --- a/src/V3CfgBuilder.cpp +++ b/src/V3CfgBuilder.cpp @@ -39,6 +39,8 @@ class CfgBuilder final : public VNVisitorConst { CfgBlock* m_currBBp = nullptr; // Continuation block for given JumpBlock std::unordered_map m_jumpBlockContp; + // Continuation block for given Loop + std::unordered_map m_loopContp; // METHODS @@ -119,29 +121,40 @@ class CfgBuilder final : public VNVisitorConst { // Set continuation m_currBBp = contBBp; } - void visit(AstWhile* nodep) override { + void visit(AstLoop* nodep) override { + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); if (!m_cfgp) return; - // Create the header block - CfgBlock* const headBBp = m_cfgp->addBlock(); - m_cfgp->addTakenEdge(m_currBBp, headBBp); + // Don't acutally need to add this 'nodep' to any block - // The While goes in the header block - semantically the condition check only ... - m_currBBp = headBBp; - addStmt(nodep); - - // Create the body/continuation blocks - CfgBlock* const bodyBBp = m_cfgp->addBlock(); + // Create continuation block CfgBlock* const contBBp = m_cfgp->addBlock(); - m_cfgp->addTakenEdge(headBBp, bodyBBp); - m_cfgp->addUntknEdge(headBBp, contBBp); + const bool newEntry = m_loopContp.emplace(nodep, contBBp).second; + UASSERT_OBJ(newEntry, nodep, "AstLoop visited twice"); + + // Create the body block + CfgBlock* const bodyBBp = m_cfgp->addBlock(); + m_cfgp->addTakenEdge(m_currBBp, bodyBBp); // Build the body m_currBBp = bodyBBp; iterateAndNextConstNull(nodep->stmtsp()); - iterateAndNextConstNull(nodep->incsp()); if (!m_cfgp) return; - if (m_currBBp) m_cfgp->addTakenEdge(m_currBBp, headBBp); + if (m_currBBp) m_cfgp->addTakenEdge(m_currBBp, bodyBBp); + + // Set continuation + m_currBBp = contBBp; + } + void visit(AstLoopTest* nodep) override { + if (!m_cfgp) return; + + // Add terminator statement to current block - semantically the condition check only ... + addStmt(nodep); + + // Create continuation blocks + CfgBlock* const contBBp = m_cfgp->addBlock(); + m_cfgp->addTakenEdge(m_currBBp, contBBp); + m_cfgp->addUntknEdge(m_currBBp, m_loopContp.at(nodep->loopp())); // Set continuation m_currBBp = contBBp; diff --git a/src/V3CfgLiveVariables.cpp b/src/V3CfgLiveVariables.cpp index f8db52ba7..75bfeaf77 100644 --- a/src/V3CfgLiveVariables.cpp +++ b/src/V3CfgLiveVariables.cpp @@ -169,7 +169,7 @@ class CfgLiveVariables final : VNVisitorConst { // Only the condition check belongs to the terminated basic block void visit(AstIf* nodep) override { single(nodep->condp()); } - void visit(AstWhile* nodep) override { single(nodep->condp()); } + void visit(AstLoopTest* nodep) override { single(nodep->condp()); } // CONSTRUCTOR explicit CfgLiveVariables(const CfgGraph& cfg) diff --git a/src/V3Clean.cpp b/src/V3Clean.cpp index ed8134b9a..39f922aeb 100644 --- a/src/V3Clean.cpp +++ b/src/V3Clean.cpp @@ -268,7 +268,8 @@ class CleanVisitor final : public VNVisitor { ensureClean(nodep->condp()); setClean(nodep, isClean(nodep->thenp()) && isClean(nodep->elsep())); } - void visit(AstWhile* nodep) override { + void visit(AstLoop* nodep) override { iterateChildren(nodep); } + void visit(AstLoopTest* nodep) override { iterateChildren(nodep); ensureClean(nodep->condp()); } diff --git a/src/V3Const.cpp b/src/V3Const.cpp index 15b834f59..4eb72ee55 100644 --- a/src/V3Const.cpp +++ b/src/V3Const.cpp @@ -926,7 +926,8 @@ class ConstVisitor final : public VNVisitor { bool m_doV = false; // Verilog, not C++ conversion bool m_doGenerate = false; // Postpone width checking inside generate bool m_convertLogicToBit = false; // Convert logical operators to bitwise - bool m_hasJumpDelay = false; // JumpGo or Delay under this while + bool m_hasJumpDelay = false; // JumpGo or Delay under this loop + bool m_hasLoopTest = false; // Contains AstLoopTest bool m_underRecFunc = false; // Under a recursive function AstNodeModule* m_modp = nullptr; // Current module const AstArraySel* m_selp = nullptr; // Current select @@ -3588,31 +3589,62 @@ class ConstVisitor final : public VNVisitor { // replaceWithSimulation on the Arg's parent FuncRef replaces these iterateChildren(nodep); } - void visit(AstWhile* nodep) override { + void visit(AstLoop* nodep) override { + VL_RESTORER(m_hasLoopTest); const bool oldHasJumpDelay = m_hasJumpDelay; m_hasJumpDelay = false; - { iterateChildren(nodep); } - const bool thisWhileHasJumpDelay = m_hasJumpDelay; - m_hasJumpDelay = thisWhileHasJumpDelay || oldHasJumpDelay; - if (m_doNConst) { - if (nodep->condp()->isZero()) { - UINFO(4, "WHILE(0) => nop " << nodep); - nodep->v3warn(UNUSEDLOOP, - "Loop condition is always false; body will never execute"); - nodep->fileline()->modifyWarnOff(V3ErrorCode::UNUSEDLOOP, true); - nodep->unlinkFrBack(); - VL_DO_DANGLING(pushDeletep(nodep), nodep); - } else if (nodep->condp()->isNeqZero()) { - if (!thisWhileHasJumpDelay) { - nodep->v3warn(INFINITELOOP, "Infinite loop (condition always true)"); - nodep->fileline()->modifyWarnOff(V3ErrorCode::INFINITELOOP, - true); // Complain just once - } - } else if (operandBoolShift(nodep->condp())) { - replaceBoolShift(nodep->condp()); + m_hasLoopTest = false; + iterateChildren(nodep); + bool thisLoopHasJumpDelay = m_hasJumpDelay; + m_hasJumpDelay = thisLoopHasJumpDelay || oldHasJumpDelay; + // If the first statement always break, the loop is useless + if (AstLoopTest* const testp = VN_CAST(nodep->stmtsp(), LoopTest)) { + if (testp->condp()->isZero()) { + nodep->v3warn(UNUSEDLOOP, "Loop condition is always false"); + VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); + return; } } + // If last statement always breaks, repalce loop with body + if (AstNode* lastp = nodep->stmtsp()) { + while (AstNode* const nextp = lastp->nextp()) lastp = nextp; + if (AstLoopTest* const testp = VN_CAST(lastp, LoopTest)) { + if (testp->condp()->isZero()) { + VL_DO_DANGLING(pushDeletep(testp->unlinkFrBack()), testp); + nodep->replaceWith(nodep->stmtsp()->unlinkFrBackWithNext()); + VL_DO_DANGLING(pushDeletep(nodep), nodep); + return; + } + } + } + // Warn on infinite loop + if (!m_hasLoopTest && !thisLoopHasJumpDelay) { + nodep->v3warn(INFINITELOOP, "Infinite loop (condition always true)"); + nodep->fileline()->modifyWarnOff(V3ErrorCode::INFINITELOOP, true); // Complain once + } } + void visit(AstLoopTest* nodep) override { + iterateChildren(nodep); + + // If never breaks, remove + if (nodep->condp()->isNeqZero()) { + VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); + return; + } + + m_hasLoopTest = true; + + // If always breaks, subsequent statements are dead code, delete them + if (nodep->condp()->isZero()) { + if (AstNode* const nextp = nodep->nextp()) { + VL_DO_DANGLING(pushDeletep(nextp->unlinkFrBackWithNext()), nodep); + } + return; + } + + if (operandBoolShift(nodep->condp())) replaceBoolShift(nodep->condp()); + } + void visit(AstInitArray* nodep) override { iterateChildren(nodep); } void visit(AstInitItem* nodep) override { iterateChildren(nodep); } void visit(AstUnbounded* nodep) override { iterateChildren(nodep); } @@ -3674,6 +3706,11 @@ class ConstVisitor final : public VNVisitor { void visit(AstJumpBlock* nodep) override { iterateChildren(nodep); + // If first statement is an AstLoopTest, pull it before the jump block + if (AstLoopTest* const testp = VN_CAST(nodep->stmtsp(), LoopTest)) { + nodep->addHereThisAsNext(testp->unlinkFrBack()); + } + // Remove if empty if (!nodep->stmtsp()) { UINFO(4, "JUMPLABEL => empty " << nodep); diff --git a/src/V3Coverage.cpp b/src/V3Coverage.cpp index c5f271ebf..50cf31344 100644 --- a/src/V3Coverage.cpp +++ b/src/V3Coverage.cpp @@ -135,7 +135,7 @@ class CoverageVisitor final : public VNVisitor { // NODE STATE // Entire netlist: // AstIf::user1() -> bool. True indicates ifelse processed - // AstIf::user2() -> bool. True indicates coverage-generated + // AstIf/AstLoopTest::user2() -> bool. True indicates coverage-generated const VNUser1InUse m_inuser1; const VNUser2InUse m_inuser2; @@ -153,7 +153,6 @@ class CoverageVisitor final : public VNVisitor { bool m_objective = false; // Expression objective bool m_ifCond = false; // Visiting if condition bool m_inToggleOff = false; // In function/task etc - bool m_inLoopNotBody = false; // Inside a loop, but not in its body string m_beginHier; // AstBegin hier name for user coverage points // STATE - cleared each module @@ -285,23 +284,14 @@ class CoverageVisitor final : public VNVisitor { } void visit(AstNodeProcedure* nodep) override { iterateProcedure(nodep); } - // we can cover expressions in while loops, but the counting goes outside - // the while, see: "minimally-intelligent decision about ... clock domain" - // in the Toggle Coverage docs - void visit(AstWhile* nodep) override { + void visit(AstLoop* nodep) override { + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); VL_RESTORER(m_state); VL_RESTORER(m_inToggleOff); m_inToggleOff = true; createHandle(nodep); - { - VL_RESTORER(m_inLoopNotBody); - m_inLoopNotBody = true; - iterateNull(nodep->condp()); - iterateAndNextNull(nodep->incsp()); - } iterateAndNextNull(nodep->stmtsp()); if (m_state.lineCoverageOn(nodep)) { - lineTrack(nodep); AstCoverOtherDecl* const declp = new AstCoverOtherDecl{nodep->fileline(), "v_line/" + m_modp->prettyName(), "block", linesCov(m_state, nodep), 0}; @@ -311,6 +301,21 @@ class CoverageVisitor final : public VNVisitor { insertProcStatement(nodep, newp); } } + void visit(AstLoopTest* nodep) override { + if (nodep->user2SetOnce()) return; + lineTrack(nodep); + if (m_state.lineCoverageOn(nodep) && nodep->backp()->nextp() == nodep) { + AstCoverOtherDecl* const declp + = new AstCoverOtherDecl{nodep->fileline(), "v_line/" + m_modp->prettyName(), + "block", linesCov(m_state, nodep), 0}; + m_modp->addStmtsp(declp); + AstNode* const newp + = newCoverInc(nodep->fileline(), declp, traceNameForLine(nodep, "block")); + nodep->addHereThisAsNext(newp); + createHandle(nodep); + } + iterateChildren(nodep); + } void visit(AstNodeFTask* nodep) override { if (!nodep->dpiImport()) iterateProcedure(nodep); @@ -321,7 +326,7 @@ class CoverageVisitor final : public VNVisitor { itemp->addStmtsp(stmtp); } else if (AstNodeFTask* const itemp = VN_CAST(nodep, NodeFTask)) { itemp->addStmtsp(stmtp); - } else if (AstWhile* const itemp = VN_CAST(nodep, While)) { + } else if (AstLoop* const itemp = VN_CAST(nodep, Loop)) { itemp->addStmtsp(stmtp); } else if (AstIf* const itemp = VN_CAST(nodep, If)) { if (m_then) { @@ -499,8 +504,7 @@ class CoverageVisitor final : public VNVisitor { return includeCondToBranchRecursive(backp); } else if (VN_IS(backp, Sel) && VN_AS(backp, Sel)->fromp() == nodep) { return includeCondToBranchRecursive(backp); - } else if (VN_IS(backp, NodeAssign) && VN_AS(backp, NodeAssign)->rhsp() == nodep - && !m_inLoopNotBody) { + } else if (VN_IS(backp, NodeAssign) && VN_AS(backp, NodeAssign)->rhsp() == nodep) { return true; } return false; diff --git a/src/V3Delayed.cpp b/src/V3Delayed.cpp index 3b46cf250..6e1a704bf 100644 --- a/src/V3Delayed.cpp +++ b/src/V3Delayed.cpp @@ -1298,7 +1298,7 @@ class DelayedVisitor final : public VNVisitor { // Record write reference recordWriteRef(nodep, false); } - void visit(AstWhile* nodep) override { + void visit(AstLoop* nodep) override { VL_RESTORER(m_inLoop); m_inLoop = true; iterateChildren(nodep); diff --git a/src/V3EmitCFunc.h b/src/V3EmitCFunc.h index 51e5fd7c9..e83e30127 100644 --- a/src/V3EmitCFunc.h +++ b/src/V3EmitCFunc.h @@ -118,7 +118,7 @@ public: class EmitCFunc VL_NOT_FINAL : public EmitCConstInit { VMemberMap m_memberMap; AstVarRef* m_wideTempRefp = nullptr; // Variable that _WW macros should be setting - std::unordered_map m_labelNumbers; // Label numbers for JumpBlocks + std::unordered_map m_labelNumbers; // Label numbers for AstJumpBlocks bool m_inUC = false; // Inside an AstUCStmt or AstUCExpr bool m_emitConstInit = false; // Emitting constant initializer bool m_createdScopeHash = false; // Already created a scope hash @@ -1095,21 +1095,47 @@ public: // Emit putns(nodep, "goto __Vlabel" + std::to_string(n) + ";\n"); } + void visit(AstLoop* nodep) override { + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); + VL_RESTORER(m_createdScopeHash); + // Special case when the AstLoopTest is first for output readability + if (AstLoopTest* const testp = VN_CAST(nodep->stmtsp(), LoopTest)) { + putns(nodep, "while ("); + iterateConst(testp->condp()); + puts(") {\n"); + iterateAndNextConstNull(testp->nextp()); + puts("}\n"); + return; + } + // Special case when the AstLoopTest is last for output readability + if (AstNode* lastp = nodep->stmtsp()) { + while (AstNode* const nextp = lastp->nextp()) lastp = nextp; + if (AstLoopTest* const testp = VN_CAST(lastp, LoopTest)) { + putns(nodep, "do {\n"); + for (AstNode* p = nodep->stmtsp(); p != lastp; p = p->nextp()) iterateConst(p); + puts("} while ("); + iterateConst(testp->condp()); + puts(");\n"); + return; + } + } + // Emit generic case directly + putns(nodep, "while (true) {\n"); + iterateAndNextConstNull(nodep->stmtsp()); + puts("}\n"); + } + void visit(AstLoopTest* nodep) override { + VL_RESTORER(m_createdScopeHash); + putns(nodep, "if (!("); + iterateAndNextConstNull(nodep->condp()); + puts(")) break;\n"); + } void visit(AstCLocalScope* nodep) override { putns(nodep, "{\n"); VL_RESTORER(m_createdScopeHash); iterateAndNextConstNull(nodep->stmtsp()); puts("}\n"); } - void visit(AstWhile* nodep) override { - VL_RESTORER(m_createdScopeHash); - putns(nodep, "while ("); - iterateAndNextConstNull(nodep->condp()); - puts(") {\n"); - iterateAndNextConstNull(nodep->stmtsp()); - iterateAndNextConstNull(nodep->incsp()); - puts("}\n"); - } void visit(AstNodeIf* nodep) override { putns(nodep, "if ("); if (!nodep->branchPred().unknown()) { diff --git a/src/V3EmitV.cpp b/src/V3EmitV.cpp index a320a8daa..52ed254ed 100644 --- a/src/V3EmitV.cpp +++ b/src/V3EmitV.cpp @@ -399,14 +399,39 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public VNVisitorConst { iterateAndNextConstNull(nodep->stmtsp()); putfs(nodep, "end\n"); } - void visit(AstWhile* nodep) override { - putfs(nodep, "while ("); - iterateAndNextConstNull(nodep->condp()); - puts(") begin\n"); + void visit(AstLoop* nodep) override { + // Special case when the AstLoopTest is first for output readability + if (AstLoopTest* const testp = VN_CAST(nodep->stmtsp(), LoopTest)) { + putfs(nodep, "while ("); + iterateConst(testp->condp()); + puts(") begin\n"); + iterateAndNextConstNull(testp->nextp()); + puts("end\n"); + return; + } + // Special case when the AstLoopTest is last for output readability + if (AstNode* lastp = nodep->stmtsp()) { + while (AstNode* const nextp = lastp->nextp()) lastp = nextp; + if (AstLoopTest* const testp = VN_CAST(lastp, LoopTest)) { + putfs(nodep, "do begin\n"); + for (AstNode* p = nodep->stmtsp(); p != lastp; p = p->nextp()) iterateConst(p); + puts("end while ("); + iterateConst(testp->condp()); + puts(")\n"); + return; + } + } + // Generic case + putfs(nodep, "while (true) begin\n"); iterateAndNextConstNull(nodep->stmtsp()); - iterateAndNextConstNull(nodep->incsp()); + iterateAndNextConstNull(nodep->contsp()); putfs(nodep, "end\n"); } + void visit(AstLoopTest* nodep) override { + putfs(nodep, "if (!("); + iterateAndNextConstNull(nodep->condp()); + puts(")) break;\n"); + } void visit(AstNodeIf* nodep) override { putfs(nodep, ""); if (const AstIf* const ifp = VN_CAST(nodep, If)) { diff --git a/src/V3EmitXml.cpp b/src/V3EmitXml.cpp index 6b210de3a..032a43bb0 100644 --- a/src/V3EmitXml.cpp +++ b/src/V3EmitXml.cpp @@ -126,25 +126,26 @@ class EmitXmlFileVisitor final : public VNVisitorConst { } puts("\n"); } - void visit(AstWhile* nodep) override { - outputTag(nodep, "while"); + void visit(AstLoop* nodep) override { + outputTag(nodep, "loop"); puts(">\n"); - if (nodep->condp()) { - puts("\n"); - iterateAndNextConstNull(nodep->condp()); - puts("\n"); - } if (nodep->stmtsp()) { puts("\n"); iterateAndNextConstNull(nodep->stmtsp()); puts("\n"); } - if (nodep->incsp()) { + if (nodep->contsp()) { puts("\n"); - iterateAndNextConstNull(nodep->incsp()); + iterateAndNextConstNull(nodep->contsp()); puts("\n"); } - puts("\n"); + puts("\n"); + } + void visit(AstLoopTest* nodep) override { + outputTag(nodep, "looptest"); + puts(">\n"); + iterateAndNextConstNull(nodep->condp()); + puts("\n"); } void visit(AstNetlist* nodep) override { puts("\n"); diff --git a/src/V3Gate.cpp b/src/V3Gate.cpp index 4baf6451c..d641d5c1b 100644 --- a/src/V3Gate.cpp +++ b/src/V3Gate.cpp @@ -1229,9 +1229,9 @@ class GateUnused final { if (const AstNodeProcedure* const procedurep = VN_CAST(nodep, NodeProcedure)) { if (procedurep->stmtsp()) - procedurep->stmtsp()->foreach([](const AstWhile* const whilep) { // - whilep->v3warn(UNUSEDLOOP, "Loop is not used and will be optimized out"); - whilep->fileline()->modifyWarnOff(V3ErrorCode::UNUSEDLOOP, true); + procedurep->stmtsp()->foreach([](const AstLoop* const loopp) { // + loopp->v3warn(UNUSEDLOOP, "Loop is not used and will be optimized out"); + loopp->fileline()->modifyWarnOff(V3ErrorCode::UNUSEDLOOP, true); }); } } diff --git a/src/V3Life.cpp b/src/V3Life.cpp index c51d9d216..276c0104a 100644 --- a/src/V3Life.cpp +++ b/src/V3Life.cpp @@ -387,37 +387,25 @@ class LifeVisitor final : public VNVisitor { VL_DO_DANGLING(delete ifLifep, ifLifep); VL_DO_DANGLING(delete elseLifep, elseLifep); } - - void visit(AstWhile* nodep) override { - // While's are a problem, as we don't allow loops in the graph. We - // may go around the cond/body multiple times. Thus a - // lifelication just in the body is ok, but we can't delete an - // assignment in the body that's used in the cond. (And otherwise - // would because it only appears used after-the-fact. So, we model - // it as a IF statement, and just don't allow elimination of - // variables across the body. + void visit(AstLoop* nodep) override { + // Similar problem to AstJumpBlock, don't optimize loop bodies - most are unrolled + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); LifeBlock* const prevLifep = m_lifep; - LifeBlock* const condLifep = new LifeBlock{prevLifep, m_statep}; LifeBlock* const bodyLifep = new LifeBlock{prevLifep, m_statep}; { - m_lifep = condLifep; - iterateAndNextNull(nodep->condp()); - } - { + VL_RESTORER(m_noopt); m_lifep = bodyLifep; + setNoopt(); iterateAndNextNull(nodep->stmtsp()); - iterateAndNextNull(nodep->incsp()); + m_lifep = prevLifep; } - m_lifep = prevLifep; - UINFO(4, " joinfor"); + UINFO(4, " joinloop"); // For the next assignments, clear any variables that were read or written in the block - condLifep->lifeToAbove(); bodyLifep->lifeToAbove(); - VL_DO_DANGLING(delete condLifep, condLifep); VL_DO_DANGLING(delete bodyLifep, bodyLifep); } void visit(AstJumpBlock* nodep) override { - // As with While's we can't predict if a JumpGo will kill us or not + // As with Loop's we can't predict if a JumpGo will kill us or not // It's worse though as an IF(..., JUMPGO) may change the control flow. // Just don't optimize blocks with labels; they're rare - so far. LifeBlock* const prevLifep = m_lifep; diff --git a/src/V3LinkInc.cpp b/src/V3LinkInc.cpp index d8b92b984..a902010c5 100644 --- a/src/V3LinkInc.cpp +++ b/src/V3LinkInc.cpp @@ -56,7 +56,6 @@ class LinkIncVisitor final : public VNVisitor { AstNodeFTask* m_ftaskp = nullptr; // Function or task we're inside AstNodeModule* m_modp = nullptr; // Module we're inside int m_modIncrementsNum = 0; // Var name counter - AstWhile* m_inWhileCondp = nullptr; // Inside condition of this while loop AstNode* m_insStmtp = nullptr; // Where to insert statement bool m_unsupportedHere = false; // Used to detect where it's not supported yet @@ -81,14 +80,12 @@ class LinkIncVisitor final : public VNVisitor { // Return node that must be visited, if any UINFOTREE(9, newp, "", "newstmt"); UASSERT_OBJ(m_insStmtp, nodep, "Expression not underneath a statement"); - // In a while condition, the statement also needs to go on the - // back-edge to the loop header, 'incsp' is that place. - if (m_inWhileCondp) m_inWhileCondp->addIncsp(newp->cloneTreePure(true)); m_insStmtp->addHereThisAsNext(newp); } // VISITORS void visit(AstNodeModule* nodep) override { + if (nodep->dead()) return; VL_RESTORER(m_modp); VL_RESTORER(m_modIncrementsNum); m_modp = nodep; @@ -113,20 +110,10 @@ class LinkIncVisitor final : public VNVisitor { } iterateAndNextNull(nodep->passsp()); } - void visit(AstWhile* nodep) override { - // Special, as statements need to be put in different places - m_insStmtp = nodep; - { - // Conditions insert before the loop and into incsp - VL_RESTORER(m_inWhileCondp); - m_inWhileCondp = nodep; - iterateAndNextNull(nodep->condp()); - } - // Body insert just before themselves + void visit(AstLoop* nodep) override { + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); m_insStmtp = nullptr; // First thing should be new statement iterateAndNextNull(nodep->stmtsp()); - iterateAndNextNull(nodep->incsp()); - // Done the loop m_insStmtp = nullptr; // Next thing should be new statement } void visit(AstNodeForeach* nodep) override { @@ -181,6 +168,11 @@ class LinkIncVisitor final : public VNVisitor { iterateAndNextNull(nodep->stmtsp()); m_insStmtp = nullptr; } + void visit(AstBegin* nodep) override { + m_insStmtp = nullptr; // Pretend not a statement TODO: parse ++/-- as ExprStmt + iterateChildren(nodep); + m_insStmtp = nullptr; // Next thing should be new statement + } void visit(AstNodeStmt* nodep) override { m_insStmtp = nodep; iterateChildren(nodep); diff --git a/src/V3LinkJump.cpp b/src/V3LinkJump.cpp index 2796a4a45..bce12782b 100644 --- a/src/V3LinkJump.cpp +++ b/src/V3LinkJump.cpp @@ -86,24 +86,18 @@ class LinkJumpVisitor final : public VNVisitor { } else if (AstForeach* const foreachp = VN_CAST(nodep, Foreach)) { if (endOfIter) { underp = foreachp->stmtsp(); + // Keep a LoopTest **at the front** outside the jump block + if (VN_IS(underp, LoopTest)) underp = underp->nextp(); } else { underp = nodep; under_and_next = false; // IE we skip the entire foreach } - } else if (AstWhile* const whilep = VN_CAST(nodep, While)) { + } else if (AstLoop* const loopp = VN_CAST(nodep, Loop)) { if (endOfIter) { - underp = whilep->stmtsp(); + underp = loopp->stmtsp(); } else { underp = nodep; - under_and_next = false; // IE we skip the entire while - } - } else if (AstDoWhile* const dowhilep = VN_CAST(nodep, DoWhile)) { - // Handle it the same as AstWhile, because it will be converted to it - if (endOfIter) { - underp = dowhilep->stmtsp(); - } else { - underp = nodep; - under_and_next = false; + under_and_next = false; // IE we skip the entire loop } } else { nodep->v3fatalSrc("Unknown jump point for break/disable/continue"); @@ -307,52 +301,34 @@ class LinkJumpVisitor final : public VNVisitor { nodep->fileline(), new AstVarRef{nodep->fileline(), varp, VAccess::READ}, zerosp}; AstNode* const bodysp = nodep->stmtsp(); if (bodysp) bodysp->unlinkFrBackWithNext(); - AstWhile* const whilep = new AstWhile{nodep->fileline(), condp, bodysp, decp}; - if (!m_unrollFull.isDefault()) whilep->unrollFull(m_unrollFull); + FileLine* const flp = nodep->fileline(); + AstLoop* const loopp = new AstLoop{flp}; + loopp->addStmtsp(new AstLoopTest{flp, loopp, condp}); + loopp->addStmtsp(bodysp); + loopp->addContsp(decp); + if (!m_unrollFull.isDefault()) loopp->unroll(m_unrollFull); m_unrollFull = VOptionBool::OPT_DEFAULT_FALSE; beginp->addStmtsp(initsp); - beginp->addStmtsp(whilep); + beginp->addStmtsp(loopp); + // Replacement AstBegin will be iterated next nodep->replaceWith(beginp); VL_DO_DANGLING(nodep->deleteTree(), nodep); } - void visit(AstWhile* nodep) override { - // Don't need to track AstRepeat/AstFor as they have already been converted - if (!m_unrollFull.isDefault()) nodep->unrollFull(m_unrollFull); - if (m_modp->hasParameterList() || m_modp->hasGParam()) + void visit(AstLoop* nodep) override { + if (!m_unrollFull.isDefault()) nodep->unroll(m_unrollFull); + if (m_modp->hasParameterList() || m_modp->hasGParam()) { nodep->fileline()->modifyWarnOff(V3ErrorCode::UNUSEDLOOP, true); + } m_unrollFull = VOptionBool::OPT_DEFAULT_FALSE; VL_RESTORER(m_loopp); VL_RESTORER(m_loopInc); m_loopp = nodep; m_loopInc = false; - iterateAndNextNull(nodep->condp()); iterateAndNextNull(nodep->stmtsp()); m_loopInc = true; - iterateAndNextNull(nodep->incsp()); - } - void visit(AstDoWhile* nodep) override { - // It is converted to AstWhile in this visit method - VL_RESTORER(m_loopp); - { - m_loopp = nodep; - iterateAndNextNull(nodep->condp()); - iterateAndNextNull(nodep->stmtsp()); - } - AstNodeExpr* const condp = nodep->condp() ? nodep->condp()->unlinkFrBack() : nullptr; - AstNode* const bodyp = nodep->stmtsp() ? nodep->stmtsp()->unlinkFrBack() : nullptr; - AstWhile* const whilep = new AstWhile{nodep->fileline(), condp, bodyp}; - if (!m_unrollFull.isDefault()) whilep->unrollFull(m_unrollFull); - m_unrollFull = VOptionBool::OPT_DEFAULT_FALSE; - // No unused warning for converted AstDoWhile, as body always executes once - nodep->fileline()->modifyWarnOff(V3ErrorCode::UNUSEDLOOP, true); - nodep->replaceWith(whilep); - VL_DO_DANGLING(nodep->deleteTree(), nodep); - if (bodyp) { - AstNode* const copiedBodyp = bodyp->cloneTree(false); - addPrefixToBlocksRecurse("__Vdo_while1_", copiedBodyp); - addPrefixToBlocksRecurse("__Vdo_while2_", bodyp); - whilep->addHereThisAsNext(copiedBodyp); - } + iterateAndNextNull(nodep->contsp()); + // Move contsp into stmtsp, no longer needed to keep separately + if (nodep->contsp()) nodep->addStmtsp(nodep->contsp()->unlinkFrBackWithNext()); } void visit(AstNodeForeach* nodep) override { VL_RESTORER(m_loopp); diff --git a/src/V3LinkParse.cpp b/src/V3LinkParse.cpp index 2efd08724..e01e85fea 100644 --- a/src/V3LinkParse.cpp +++ b/src/V3LinkParse.cpp @@ -130,7 +130,7 @@ class LinkParseVisitor final : public VNVisitor { // Try very hard to avoid false positives AstNode* nextp = nodep->nextp(); if (!childp) return; - if (!nextp && VN_IS(nodep, While) && VN_IS(nodep->backp(), Begin)) + if (!nextp && VN_IS(nodep, Loop) && VN_IS(nodep->backp(), Begin)) nextp = nodep->backp()->nextp(); if (!nextp) return; if (VN_IS(childp, Begin) || VN_IS(childp, GenBlock)) return; @@ -573,10 +573,15 @@ class LinkParseVisitor final : public VNVisitor { checkIndent(nodep, nodep->stmtsp()); iterateChildren(nodep); } - void visit(AstDoWhile* nodep) override { + void visit(AstLoop* nodep) override { cleanFileline(nodep); VL_RESTORER(m_insideLoop); m_insideLoop = true; + if (VN_IS(nodep->stmtsp(), LoopTest)) { + checkIndent(nodep, nodep->stmtsp()->nextp()); + } else { + checkIndent(nodep, nodep->stmtsp()); + } iterateChildren(nodep); } void visit(AstWait* nodep) override { @@ -590,13 +595,6 @@ class LinkParseVisitor final : public VNVisitor { nodep->fileline(newfl); } } - void visit(AstWhile* nodep) override { - cleanFileline(nodep); - VL_RESTORER(m_insideLoop); - m_insideLoop = true; - checkIndent(nodep, nodep->stmtsp()); - iterateChildren(nodep); - } void visit(AstNodeModule* nodep) override { V3Control::applyModule(nodep); ++m_statModules; diff --git a/src/V3Param.cpp b/src/V3Param.cpp index df3013a15..a7318adc1 100644 --- a/src/V3Param.cpp +++ b/src/V3Param.cpp @@ -55,6 +55,8 @@ #include "V3Hasher.h" #include "V3Os.h" #include "V3Parse.h" +#include "V3Simulate.h" +#include "V3Stats.h" #include "V3Unroll.h" #include "V3Width.h" @@ -1267,7 +1269,7 @@ class ParamVisitor final : public VNVisitor { // STATE - across all visitors ParamState& m_state; // Common state ParamProcessor m_processor; // De-parameterize a cell, build modules - UnrollStateful m_unroller; // Loop unroller + GenForUnroller m_unroller; // Unroller for AstGenFor bool m_iterateModule = false; // Iterating module body string m_unlinkedTxt; // Text for AstUnlinkedRef @@ -1632,10 +1634,10 @@ class ParamVisitor final : public VNVisitor { // a BEGIN("zzz__BRA__{loop#}__KET__") const string beginName = nodep->name(); // Leave the original Begin, as need a container for the (possible) GENVAR - // Note V3Unroll will replace some AstVarRef's to the loop variable with constants + // Note m_unroller will replace some AstVarRef's to the loop variable with constants // Don't remove any deleted nodes in m_unroller until whole process finishes, - // (are held in m_unroller), as some AstXRefs may still point to old nodes. - VL_DO_DANGLING(m_unroller.unrollGen(forp, beginName), forp); + // as some AstXRefs may still point to old nodes. + VL_DO_DANGLING(m_unroller.unroll(forp, beginName), forp); // Blocks were constructed under the special begin, move them up // Note forp is null, so grab statements again if (AstNode* const stmtsp = nodep->genforp()) { diff --git a/src/V3Premit.cpp b/src/V3Premit.cpp index 7662d571f..f2a3aa735 100644 --- a/src/V3Premit.cpp +++ b/src/V3Premit.cpp @@ -52,7 +52,6 @@ class PremitVisitor final : public VNVisitor { AstCFunc* m_cfuncp = nullptr; // Current block size_t m_tmpVarCnt = 0; // Number of temporary variables created inside a function AstNode* m_stmtp = nullptr; // Current statement - AstWhile* m_inWhileCondp = nullptr; // Inside condition of this while loop bool m_assignLhs = false; // Inside assignment lhs, don't breakup extracts // METHODS @@ -100,10 +99,6 @@ class PremitVisitor final : public VNVisitor { = new AstAssign{flp, new AstVarRef{flp, varp, VAccess::WRITE}, nodep}; // Insert before the statement m_stmtp->addHereThisAsNext(assignp); - // Statements that are needed for the 'condition' in a while also - // need to be inserted on the back-edge to the loop header. - // 'incsp' is just right palce to do this - if (m_inWhileCondp) m_inWhileCondp->addIncsp(assignp->cloneTree(false)); } // Replace node with VarRef to new Var @@ -173,24 +168,9 @@ class PremitVisitor final : public VNVisitor { if (stmtp->user1SetOnce()) return; \ VL_RESTORER(m_assignLhs); \ VL_RESTORER(m_stmtp); \ - VL_RESTORER(m_inWhileCondp); \ m_assignLhs = false; \ - m_stmtp = stmtp; \ - m_inWhileCondp = nullptr + m_stmtp = stmtp; - void visit(AstWhile* nodep) override { - UINFO(4, " WHILE " << nodep); - // cppcheck-suppress shadowVariable // Also restored below - START_STATEMENT_OR_RETURN(nodep); - { - // cppcheck-suppress shadowVariable // Also restored above - VL_RESTORER(m_inWhileCondp); - m_inWhileCondp = nodep; - iterateAndNextNull(nodep->condp()); - } - iterateAndNextNull(nodep->stmtsp()); - iterateAndNextNull(nodep->incsp()); - } void visit(AstNodeAssign* nodep) override { START_STATEMENT_OR_RETURN(nodep); diff --git a/src/V3Randomize.cpp b/src/V3Randomize.cpp index 0b7d9767e..409d7d448 100644 --- a/src/V3Randomize.cpp +++ b/src/V3Randomize.cpp @@ -1530,12 +1530,15 @@ class RandomizeVisitor final : public VNVisitor { AstNode* const stmtsp = iterVarp; stmtsp->addNext( new AstAssign{fl, new AstVarRef{fl, iterVarp, VAccess::WRITE}, new AstConst{fl, 0}}); - stmtsp->addNext( - new AstWhile{fl, new AstLt{fl, new AstVarRef{fl, iterVarp, VAccess::READ}, sizep}, - new AstAssign{fl, setp, rhsp}, - new AstAssign{fl, new AstVarRef{fl, iterVarp, VAccess::WRITE}, - new AstAdd{fl, new AstConst{fl, 1}, - new AstVarRef{fl, iterVarp, VAccess::READ}}}}); + + AstLoop* const loopp = new AstLoop{fl}; + stmtsp->addNext(loopp); + loopp->addStmtsp(new AstLoopTest{ + fl, loopp, new AstLt{fl, new AstVarRef{fl, iterVarp, VAccess::READ}, sizep}}); + loopp->addStmtsp(new AstAssign{fl, setp, rhsp}); + loopp->addStmtsp(new AstAssign{ + fl, new AstVarRef{fl, iterVarp, VAccess::WRITE}, + new AstAdd{fl, new AstConst{fl, 1}, new AstVarRef{fl, iterVarp, VAccess::READ}}}); return new AstBegin{fl, "", stmtsp, true}; } static AstNodeStmt* wrapIfRandMode(AstClass* classp, AstVar* const varp, AstNodeStmt* stmtp) { diff --git a/src/V3Reloop.cpp b/src/V3Reloop.cpp index 99855dbf0..280a7008f 100644 --- a/src/V3Reloop.cpp +++ b/src/V3Reloop.cpp @@ -102,11 +102,13 @@ class ReloopVisitor final : public VNVisitor { AstNode* const incp = new AstAssign{ fl, new AstVarRef{fl, itp, VAccess::WRITE}, new AstAdd{fl, new AstConst{fl, 1}, new AstVarRef{fl, itp, VAccess::READ}}}; - AstWhile* const whilep = new AstWhile{fl, condp, nullptr, incp}; - initp->addNext(whilep); + AstLoop* const loopp = new AstLoop{fl}; + loopp->addStmtsp(new AstLoopTest{fl, loopp, condp}); + initp->addNext(loopp); itp->AstNode::addNext(initp); bodyp->replaceWith(itp); - whilep->addStmtsp(bodyp); + loopp->addStmtsp(bodyp); + loopp->addStmtsp(incp); // Replace constant index with new loop index AstNodeExpr* const offsetp @@ -122,7 +124,7 @@ class ReloopVisitor final : public VNVisitor { VL_DO_DANGLING(rbitp->deleteTree(), lbitp); } UINFOTREE(9, initp, "", "new"); - UINFOTREE(9, whilep, "", "new"); + UINFOTREE(9, loopp, "", "new"); // Remove remaining assigns for (AstNodeAssign* assp : m_mgAssignps) { diff --git a/src/V3Sched.cpp b/src/V3Sched.cpp index a7b96f7d7..9921e1841 100644 --- a/src/V3Sched.cpp +++ b/src/V3Sched.cpp @@ -263,8 +263,9 @@ EvalLoop createEvalLoop( // The loop { - AstWhile* const loopp - = new AstWhile{flp, new AstVarRef{flp, continueFlagp, VAccess::READ}}; + AstNodeExpr* const condp = new AstVarRef{flp, continueFlagp, VAccess::READ}; + AstLoop* const loopp = new AstLoop{flp}; + loopp->addStmtsp(new AstLoopTest{flp, loopp, condp}); // Check the iteration limit (aborts if exceeded) loopp->addStmtsp(checkIterationLimit(netlistp, name, counterp, dumpFuncp)); @@ -451,14 +452,12 @@ void orderSequentially(AstCFunc* funcp, const LogicByScope& lbs) { if (VN_IS(procp, Always)) { subFuncp->slow(false); FileLine* const flp = procp->fileline(); - bodyp = new AstWhile{ - flp, - // If we change to use exceptions to handle finish/stop, - // this can get removed - new AstCExpr{flp, - "VL_LIKELY(!vlSymsp->_vm_contextp__->gotFinish())", 1, - true}, - bodyp}; + AstNodeExpr* const condp = new AstCExpr{ + flp, "VL_LIKELY(!vlSymsp->_vm_contextp__->gotFinish())", 1, true}; + AstLoop* const loopp = new AstLoop{flp}; + loopp->addStmtsp(new AstLoopTest{flp, loopp, condp}); + loopp->addStmtsp(bodyp); + bodyp = loopp; } } subFuncp->addStmtsp(bodyp); diff --git a/src/V3SchedVirtIface.cpp b/src/V3SchedVirtIface.cpp index 75abdf436..93a871098 100644 --- a/src/V3SchedVirtIface.cpp +++ b/src/V3SchedVirtIface.cpp @@ -195,9 +195,8 @@ private: m_trigAssignMemberVarp = nullptr; } } - void visit(AstWhile* nodep) override { - unsupportedWriteToVirtIface(nodep->condp(), "loop condition"); - unsupportedWriteToVirtIface(nodep->incsp(), "loop increment statement"); + void visit(AstLoop* nodep) override { + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); { VL_RESTORER(m_trigAssignp); VL_RESTORER(m_trigAssignIfacep); @@ -211,6 +210,9 @@ private: m_trigAssignMemberVarp = nullptr; } } + void visit(AstLoopTest* nodep) override { + unsupportedWriteToVirtIface(nodep->condp(), "loop condition"); + } void visit(AstJumpBlock* nodep) override { { VL_RESTORER(m_trigAssignp); diff --git a/src/V3Simulate.h b/src/V3Simulate.h index dc77cb410..a390bdd26 100644 --- a/src/V3Simulate.h +++ b/src/V3Simulate.h @@ -141,7 +141,7 @@ private: int m_instrCount; ///< Number of nodes int m_dataCount; ///< Bytes of data int m_recurseCount = 0; // Now deep in current recursion - AstJumpGo* m_jumpp = nullptr; ///< Jump label we're branching from + AstNode* m_jumptargetp = nullptr; // AstJumpBlock/AstLoop we are branching over // Simulating: // Allocators for constants of various data types std::unordered_map m_constps; @@ -409,7 +409,7 @@ private: } // True if current node might be jumped over - all visitors must call this up front - bool jumpingOver() const { return m_jumpp; } + bool jumpingOver() const { return m_jumptargetp; } void assignOutValue(const AstNodeAssign* nodep, AstNode* vscp, const AstNodeExpr* valuep) { if (VN_IS(nodep, AssignDly)) { // Don't do setValue, as value isn't yet visible to following statements @@ -1056,9 +1056,9 @@ private: void visit(AstJumpBlock* nodep) override { if (jumpingOver()) return; iterateChildrenConst(nodep); - if (m_jumpp && m_jumpp->blockp() == nodep) { + if (m_jumptargetp == nodep) { UINFO(5, " JUMP DONE " << nodep); - m_jumpp = nullptr; + m_jumptargetp = nullptr; } } void visit(AstJumpGo* nodep) override { @@ -1066,9 +1066,55 @@ private: checkNodeInfo(nodep); if (!m_checkOnly) { UINFO(5, " JUMP GO " << nodep); - // Should be back at the JumpBlock and clear m_jumpp before another JumpGo - UASSERT_OBJ(!m_jumpp, nodep, "Jump inside jump"); - m_jumpp = nodep; + UASSERT_OBJ(!m_jumptargetp, nodep, "Jump inside jump"); + m_jumptargetp = nodep->blockp(); + } + } + void visit(AstLoop* nodep) override { + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); + if (jumpingOver()) return; + UINFO(5, " LOOP " << nodep); + // Doing lots of loops is slow, so only for parameters + if (!m_params) { + badNodeType(nodep); + return; + } + checkNodeInfo(nodep); + if (m_checkOnly) { + iterateChildrenConst(nodep); + return; + } + if (!optimizable()) return; + + int loops = 0; + while (true) { + UINFO(5, " LOOP-ITER " << nodep); + iterateAndNextConstNull(nodep->stmtsp()); + if (jumpingOver()) break; + + // Prep for next loop + if (loops++ > v3Global.opt.unrollCountAdjusted(nodep->unroll(), m_params, true)) { + clearOptimizable(nodep, "Loop unrolling took too long; probably this is an" + "infinite loop, or use /*verilator unroll_full*/, or " + "set --unroll-count above " + + cvtToStr(loops)); + break; + } + } + + if (m_jumptargetp == nodep) { + UINFO(5, " LOOP TEST DONE " << nodep); + m_jumptargetp = nullptr; + } + } + void visit(AstLoopTest* nodep) override { + if (jumpingOver()) return; + checkNodeInfo(nodep); + iterateConst(nodep->condp()); + if (!m_checkOnly && optimizable() && fetchConst(nodep->condp())->num().isEqZero()) { + UINFO(5, " LOOP TEST GO " << nodep); + UASSERT_OBJ(!m_jumptargetp, nodep, "Jump inside jump"); + m_jumptargetp = nodep->loopp(); } } @@ -1082,46 +1128,6 @@ private: } checkNodeInfo(nodep); } - - void visit(AstWhile* nodep) override { - // Doing lots of Whiles is slow, so only for parameters - if (jumpingOver()) return; - UINFO(5, " WHILE " << nodep); - if (!m_params) { - badNodeType(nodep); - return; - } - checkNodeInfo(nodep); - if (m_checkOnly) { - iterateChildrenConst(nodep); - } else if (optimizable()) { - int loops = 0; - while (true) { - UINFO(5, " WHILE-ITER " << nodep); - iterateAndNextConstNull(nodep->condp()); - if (jumpingOver()) break; - if (!optimizable()) break; - if (!fetchConst(nodep->condp())->num().isNeqZero()) { // - break; - } - iterateAndNextConstNull(nodep->stmtsp()); - if (jumpingOver()) break; - iterateAndNextConstNull(nodep->incsp()); - if (jumpingOver()) break; - - // Prep for next loop - if (loops++ - > v3Global.opt.unrollCountAdjusted(nodep->unrollFull(), m_params, true)) { - clearOptimizable(nodep, "Loop unrolling took too long; probably this is an" - "infinite loop, or use /*verilator unroll_full*/, or " - "set --unroll-count above " - + cvtToStr(loops)); - break; - } - } - } - } - void visit(AstFuncRef* nodep) override { if (jumpingOver()) return; if (!optimizable()) return; // Accelerate @@ -1375,7 +1381,7 @@ private: } void mainGuts(AstNode* nodep) { iterateConst(nodep); - UASSERT_OBJ(!m_jumpp, m_jumpp, "JumpGo branched to label that wasn't found"); + UASSERT_OBJ(!m_jumptargetp, m_jumptargetp, "Jump target was not found"); } public: @@ -1395,7 +1401,7 @@ public: m_isCoverage = false; m_instrCount = 0; m_dataCount = 0; - m_jumpp = nullptr; + m_jumptargetp = nullptr; AstNode::user1ClearTree(); m_varAux.clear(); @@ -1409,10 +1415,6 @@ public: setMode(true /*scoped*/, false /*checking*/, false /*params*/); mainGuts(nodep); } - void mainCheckTree(AstNode* nodep) { - setMode(false /*scoped*/, true /*checking*/, false /*params*/); - mainGuts(nodep); - } void mainParamEmulate(AstNode* nodep) { setMode(false /*scoped*/, false /*checking*/, true /*params*/); mainGuts(nodep); diff --git a/src/V3Split.cpp b/src/V3Split.cpp index 1fb156076..6c986a2eb 100644 --- a/src/V3Split.cpp +++ b/src/V3Split.cpp @@ -338,8 +338,7 @@ protected: void visit(AstAlways* nodep) override = 0; void visit(AstNodeIf* nodep) override = 0; - // We don't do AstWhile loops, due to the standard question - // of what is before vs. after + // We don't do AstLoop, due to the standard question of what is before vs. after void visit(AstAssignDly* nodep) override { VL_RESTORER(m_inDly); diff --git a/src/V3Task.cpp b/src/V3Task.cpp index edf1db57b..fefe843ee 100644 --- a/src/V3Task.cpp +++ b/src/V3Task.cpp @@ -1610,21 +1610,6 @@ class TaskVisitor final : public VNVisitor { VL_DO_DANGLING(pushDeletep(nodep), nodep); } } - void visit(AstWhile* nodep) override { - // Special, as statements need to be put in different places - { - // Conditions will create a StmtExpr - // Leave m_instStmtp = null, so will assert if not - iterateAndNextNull(nodep->condp()); - } - { - // Body insert just before themselves - VL_RESTORER(m_insStmtp); - m_insStmtp = nullptr; // First thing should be new statement - iterateAndNextNull(nodep->stmtsp()); - iterateAndNextNull(nodep->incsp()); - } - } void visit(AstNodeForeach* nodep) override { // LCOV_EXCL_LINE nodep->v3fatalSrc( "Foreach statements should have been converted to while statements in V3Begin.cpp"); diff --git a/src/V3Timing.cpp b/src/V3Timing.cpp index a53ad8d6a..b532cc5be 100644 --- a/src/V3Timing.cpp +++ b/src/V3Timing.cpp @@ -944,9 +944,11 @@ class TimingControlVisitor final : public VNVisitor { } // Create the trigger eval loop, which will await the evaluation step and check the // trigger - AstWhile* const loopp = new AstWhile{ - flp, new AstLogNot{flp, new AstVarRef{flp, trigvscp, VAccess::READ}}, - awaitEvalp->makeStmt()}; + AstNodeExpr* const condp + = new AstLogNot{flp, new AstVarRef{flp, trigvscp, VAccess::READ}}; + AstLoop* const loopp = new AstLoop{flp}; + loopp->addStmtsp(new AstLoopTest{flp, loopp, condp}); + loopp->addStmtsp(awaitEvalp->makeStmt()); // Put pre updates before the trigger check and assignment for (AstNodeStmt* const stmtp : senResults.m_preUpdates) loopp->addStmtsp(stmtp); // Then the trigger check and assignment @@ -1206,7 +1208,9 @@ class TimingControlVisitor final : public VNVisitor { flp, new AstSenItem{flp, VEdgeType::ET_CHANGED, condp->cloneTree(false)}}, nullptr}; controlp->user2(true); // Commit immediately - AstWhile* const loopp = new AstWhile{flp, new AstLogNot{flp, condp}, controlp}; + AstLoop* const loopp = new AstLoop{flp}; + loopp->addStmtsp(new AstLoopTest{flp, loopp, new AstLogNot{flp, condp}}); + loopp->addStmtsp(controlp); if (stmtsp) AstNode::addNext(loopp, stmtsp); nodep->replaceWith(loopp); } diff --git a/src/V3Unroll.cpp b/src/V3Unroll.cpp index 15293ed96..c3fb046ed 100644 --- a/src/V3Unroll.cpp +++ b/src/V3Unroll.cpp @@ -1,6 +1,6 @@ // -*- mode: C++; c-file-style: "cc-mode" -*- //************************************************************************* -// DESCRIPTION: Verilator: Add temporaries, such as for unroll nodes +// DESCRIPTION: Verilator: Loop unrolling // // Code available from: https://verilator.org // @@ -13,14 +13,8 @@ // SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 // //************************************************************************* -// V3Unroll's Transformations: -// Note is called twice. Once on modules for GenFor unrolling, -// Again after V3Scope for normal for loop unrolling. // -// Each module: -// Look for "FOR" loops and unroll them if <= 32 loops. -// (Eventually, a better way would be to simulate the entire loop; ala V3Table.) -// Convert remaining FORs to WHILEs +// Unroll AstLoopStmts // //************************************************************************* @@ -29,489 +23,374 @@ #include "V3Unroll.h" #include "V3Const.h" -#include "V3Simulate.h" #include "V3Stats.h" VL_DEFINE_DEBUG_FUNCTIONS; //###################################################################### -// Unroll state, as a visitor of each AstNode +// Statistics tracking -class UnrollVisitor final : public VNVisitor { - // STATE - across all visitors - AstVar* m_forVarp; // Iterator variable - const AstVarScope* m_forVscp; // Iterator variable scope (nullptr for generate pass) - const AstNode* m_ignoreIncp; // Increment node to ignore - bool m_varModeCheck; // Just checking RHS assignments - bool m_varAssignHit; // Assign var hit - bool m_forkHit; // Fork hit - bool m_generate; // Expand single generate For loop - string m_beginName; // What name to give begin iterations - // STATE - Statistic tracking - VDouble0 m_statLoops; // Statistic tracking - VDouble0 m_statIters; // Statistic tracking +struct UnrollStats final { + class Stat final { + size_t m_value = 0; // Statistics value + const char* const m_name; // Name for stats file and UDEBUG + + public: + Stat(const char* const name) + : m_name{name} {} + ~Stat() { V3Stats::addStat("Optimizations, Loop unrolling, "s + m_name, m_value); } + const char* name() const { return m_name; } + Stat& operator++() { + ++m_value; + return *this; + } + Stat& operator+=(size_t v) { + m_value += v; + return *this; + } + }; + + // STATE - statistics + Stat m_nFailCall{"Failed - non-inlined call"}; + Stat m_nFailCondition{"Failed - unknown loop condition"}; + Stat m_nFailFork{"Failed - contains fork"}; + Stat m_nFailInfinite{"Failed - infinite loop"}; + Stat m_nFailNestedLoopTest{"Failed - loop test in sub-statement"}; + Stat m_nFailTimingControl{"Failed - contains timing control"}; + Stat m_nFailUnrollCount{"Failed - reached --unroll-count"}; + Stat m_nFailUnrollStmts{"Failed - reached --unroll-stmts"}; + Stat m_nPragmaDisabled{"Pragma unroll_disable"}; + Stat m_nUnrolledLoops{"Unrolled loops"}; + Stat m_nUnrolledIters{"Unrolled iterations"}; +}; + +//###################################################################### +// Unroll one AstLoop + +class UnrollOneVisitor final : VNVisitor { + // NODE STATE + // AstVarScope::user1p() AstConst: Value of this AstVarScope + const VNUser1InUse m_user1InUse; + + // STATE + UnrollStats& m_stats; // Statistics tracking + AstLoop* const m_loopp; // The loop we are trying to unroll + AstNode* m_stmtsp = nullptr; // Resulting unrolled statement + size_t m_unrolledSize = 0; // Number of nodes in unrolled loop + // Temporary block needed for iteration of cloned statements + AstBegin* const m_wrapp = new AstBegin{m_loopp->fileline(), "[EditWrapper]", nullptr, false}; + const bool m_unrollFull = m_loopp->unroll().isSetTrue(); // Completely unroll the loop? + bool m_ok = true; // Unrolling successful so far, gave up if false // METHODS - void replaceVarRef(AstNode* bodyp, AstNode* varValuep) { - // Replace all occurances of loop variable in bodyp and next - bodyp->foreachAndNext([this, varValuep](AstVarRef* refp) { - if (refp->varp() == m_forVarp && refp->varScopep() == m_forVscp - && refp->access().isReadOnly()) { - AstNode* const newconstp = varValuep->cloneTree(false); - refp->replaceWith(newconstp); - VL_DO_DANGLING(pushDeletep(refp), refp); - } - }); + void cantUnroll(AstNode* nodep, UnrollStats::Stat& stat) { + m_ok = false; + ++stat; + UINFO(4, " Can't Unroll: " << stat.name() << " :" << nodep); } - bool cantUnroll(AstNode* nodep, const char* reason) const { - if (m_generate) - nodep->v3warn(E_UNSUPPORTED, "Unsupported: Can't unroll generate for; " << reason); - UINFO(4, " Can't Unroll: " << reason << " :" << nodep); - // UINFOTREE(9, nodep, "", "cant"); - V3Stats::addStatSum("Unrolling gave up, "s + reason, 1); - return false; - } - - bool bodySizeOverRecurse(AstNode* nodep, int& bodySize, int bodyLimit) { - if (!nodep) return false; - bodySize++; - // Exit once exceeds limits, rather than always total - // so don't go O(n^2) when can't unroll - if (bodySize > bodyLimit) return true; - if (bodySizeOverRecurse(nodep->op1p(), bodySize, bodyLimit)) return true; - if (bodySizeOverRecurse(nodep->op2p(), bodySize, bodyLimit)) return true; - if (bodySizeOverRecurse(nodep->op3p(), bodySize, bodyLimit)) return true; - if (bodySizeOverRecurse(nodep->op4p(), bodySize, bodyLimit)) return true; - // Tail recurse. - return bodySizeOverRecurse(nodep->nextp(), bodySize, bodyLimit); - } - - bool forUnrollCheck( - AstNode* const nodep, - const VOptionBool& unrollFull, // Pragma unroll_full, unroll_disable - AstNode* const initp, // Maybe under nodep (no nextp), or standalone (ignore nextp) - AstNode* condp, - AstNode* const incp, // Maybe under nodep or in bodysp - AstNode* bodysp) { - // To keep the IF levels low, we return as each test fails. - UINFO(4, " FOR Check " << nodep); - if (initp) UINFO(6, " Init " << initp); - if (condp) UINFO(6, " Cond " << condp); - if (incp) UINFO(6, " Inc " << incp); - - if (unrollFull.isSetFalse()) return cantUnroll(nodep, "pragma unroll_disable"); - - // Initial value check - AstAssign* const initAssp = VN_CAST(initp, Assign); - if (!initAssp) return cantUnroll(nodep, "no initial assignment"); - UASSERT_OBJ(!(initp->nextp() && initp->nextp() != nodep), nodep, - "initial assignment shouldn't be a list"); - if (!VN_IS(initAssp->lhsp(), VarRef)) { - return cantUnroll(nodep, "no initial assignment to simple variable"); - } - // - // Condition check - UASSERT_OBJ(!condp->nextp(), nodep, "conditional shouldn't be a list"); - // - // Assignment of next value check - const AstAssign* const incAssp = VN_CAST(incp, Assign); - if (!incAssp) return cantUnroll(nodep, "no increment assignment"); - if (incAssp->nextp()) return cantUnroll(nodep, "multiple increments"); - - m_forVarp = VN_AS(initAssp->lhsp(), VarRef)->varp(); - m_forVscp = VN_AS(initAssp->lhsp(), VarRef)->varScopep(); - if (VN_IS(nodep, GenFor) && !m_forVarp->isGenVar()) { - nodep->v3error("Non-genvar used in generate for: " << m_forVarp->prettyNameQ()); - } else if (!VN_IS(nodep, GenFor) && m_forVarp->isGenVar()) { - // Likely impossible as V3LinkResolve will earlier throw bad genvar use error - nodep->v3error("Genvar not legal in non-generate for" // LCOV_EXCL_LINE - " (IEEE 1800-2023 27.4): " - << m_forVarp->prettyNameQ()); - } - if (m_generate) V3Const::constifyParamsEdit(initAssp->rhsp()); // rhsp may change - - // This check shouldn't be needed when using V3Simulate - // however, for repeat loops, the loop variable is auto-generated - // and the initp statements will reference a variable outside of the initp scope - // alas, failing to simulate. - const AstConst* const constInitp = VN_CAST(initAssp->rhsp(), Const); - if (!constInitp) return cantUnroll(nodep, "non-constant initializer"); - - // - // Now, make sure there's no assignment to this variable in the loop - m_varModeCheck = true; - m_varAssignHit = false; - m_forkHit = false; - m_ignoreIncp = incp; - iterateAndNextNull(bodysp); - iterateAndNextNull(incp); - m_varModeCheck = false; - m_ignoreIncp = nullptr; - if (m_varAssignHit) return cantUnroll(nodep, "genvar assigned *inside* loop"); - - if (m_forkHit) return cantUnroll(nodep, "fork inside loop"); - - // - if (m_forVscp) { - UINFO(8, " Loop Variable: " << m_forVscp); - } else { - UINFO(8, " Loop Variable: " << m_forVarp); - } - UINFOTREE(9, nodep, "", "for"); - - if (!m_generate) { - const AstAssign* const incpAssign = VN_AS(incp, Assign); - if (!canSimulate(incpAssign->rhsp())) { - return cantUnroll(incp, "Unable to simulate increment"); - } - if (!canSimulate(condp)) return cantUnroll(condp, "Unable to simulate condition"); - - // Check whether to we actually want to try and unroll. - int loops; - const int limit = v3Global.opt.unrollCountAdjusted(unrollFull, m_generate, false); - if (!countLoops(initAssp, condp, incp, limit, loops)) { - return cantUnroll(nodep, "Unable to simulate loop"); - } - - // Less than 10 statements in the body? - if (!unrollFull.isSetTrue()) { - int bodySize = 0; - int bodyLimit = v3Global.opt.unrollStmts(); - if (loops > 0) bodyLimit = v3Global.opt.unrollStmts() / loops; - if (bodySizeOverRecurse(bodysp, bodySize /*ref*/, bodyLimit) - || bodySizeOverRecurse(incp, bodySize /*ref*/, bodyLimit)) { - return cantUnroll(nodep, "too many statements"); - } - } - } - // Finally, we can do it - if (!forUnroller(nodep, unrollFull, initAssp, condp, incp, bodysp)) { - return cantUnroll(nodep, "Unable to unroll loop"); - } - VL_DANGLING(nodep); - // Cleanup - return true; - } - - bool canSimulate(AstNode* nodep) { - SimulateVisitor simvis; - AstNode* clonep = nodep->cloneTree(true); - simvis.mainCheckTree(clonep); - VL_DO_CLEAR(pushDeletep(clonep), clonep = nullptr); - return simvis.optimizable(); - } - - bool simulateTree(AstNode* nodep, const V3Number* loopValue, AstNode* dtypep, - V3Number& outNum) { - AstNode* clonep = nodep->cloneTree(true); - UASSERT_OBJ(clonep, nodep, "Failed to clone tree"); - if (loopValue) { - AstConst* varValuep = new AstConst{nodep->fileline(), *loopValue}; - // Iteration requires a back, so put under temporary node - AstBegin* tempp = new AstBegin{nodep->fileline(), "[EditWrapper]", clonep, false}; - replaceVarRef(tempp->stmtsp(), varValuep); - clonep = tempp->stmtsp()->unlinkFrBackWithNext(); - VL_DO_CLEAR(tempp->deleteTree(), tempp = nullptr); - VL_DO_DANGLING(pushDeletep(varValuep), varValuep); - } - SimulateVisitor simvis; - simvis.mainParamEmulate(clonep); - if (!simvis.optimizable()) { - UINFO(4, "Unable to simulate"); - UINFOTREE(9, nodep, "", "_simtree"); - VL_DO_DANGLING(clonep->deleteTree(), clonep); - return false; - } - // Fetch the result - V3Number* resp = simvis.fetchNumberNull(clonep); - if (!resp) { - UINFO(3, "No number returned from simulation"); - VL_DO_DANGLING(clonep->deleteTree(), clonep); - return false; - } - // Patch up datatype - if (dtypep) { - AstConst new_con{clonep->fileline(), *resp}; - new_con.dtypeFrom(dtypep); - outNum = new_con.num(); - outNum.isSigned(dtypep->isSigned()); - VL_DO_DANGLING(clonep->deleteTree(), clonep); - return true; - } - outNum = *resp; - VL_DO_DANGLING(clonep->deleteTree(), clonep); - return true; - } - - bool countLoops(AstAssign* initp, AstNode* condp, AstNode* incp, int max, int& outLoopsr) { - outLoopsr = 0; - V3Number loopValue{initp}; - if (!simulateTree(initp->rhsp(), nullptr, initp, loopValue)) { // - return false; - } - while (true) { - V3Number res{initp}; - if (!simulateTree(condp, &loopValue, nullptr, res)) { // - return false; - } - if (!res.isEqOne()) break; - - outLoopsr++; - - // Run inc - AstAssign* const incpass = VN_AS(incp, Assign); - V3Number newLoopValue{initp}; - if (!simulateTree(incpass->rhsp(), &loopValue, incpass, newLoopValue)) { - return false; - } - loopValue.opAssign(newLoopValue); - if (outLoopsr > max) return false; - } - return true; - } - - bool forUnroller(AstNode* nodep, const VOptionBool& unrollFull, AstAssign* initp, - AstNode* condp, AstNode* incp, AstNode* bodysp) { - UINFO(9, "forUnroller " << nodep); - V3Number loopValue{nodep}; - if (!simulateTree(initp->rhsp(), nullptr, initp, loopValue)) { // - return false; - } - AstNode* stmtsp = nullptr; - if (initp) { - initp->unlinkFrBack(); // Always a single statement; nextp() may be nodep - // Don't add to list, we do it once, and setting loop index isn't - // needed if we have > 1 loop, as we're constant propagating it - pushDeletep(initp); // Always cloned below. - } - if (bodysp) { - bodysp->unlinkFrBackWithNext(); - stmtsp = AstNode::addNext(stmtsp, bodysp); // Maybe null if no body - } - if (incp && !VN_IS(nodep, GenFor)) { // Generates don't need to increment loop index - incp->unlinkFrBackWithNext(); - stmtsp = AstNode::addNext(stmtsp, incp); // Maybe null if no body - } - // Mark variable to disable some later warnings - m_forVarp->usedLoopIdx(true); - - ++m_statLoops; - AstNode* newbodysp = nullptr; - if (initp && !m_generate) { // Set variable to initial value (may optimize away later) - AstNode* clonep = initp->cloneTree(true); - AstConst* varValuep = new AstConst{nodep->fileline(), loopValue}; - // Iteration requires a back, so put under temporary node - AstBegin* tempp = new AstBegin{nodep->fileline(), "[EditWrapper]", clonep, false}; - replaceVarRef(clonep, varValuep); - clonep = tempp->stmtsp()->unlinkFrBackWithNext(); - VL_DO_CLEAR(tempp->deleteTree(), tempp = nullptr); - VL_DO_DANGLING(pushDeletep(varValuep), varValuep); - newbodysp = clonep; - } - if (stmtsp) { - pushDeletep(stmtsp); // Always cloned below. - int times = 0; - while (true) { - UINFO(8, " Looping " << loopValue); - V3Number res{nodep}; - if (!simulateTree(condp, &loopValue, nullptr, res)) { - nodep->v3error("Loop unrolling failed."); + // Returns false if the loop terminated (or we gave up) + bool unrollOneIteration(AstNode* stmtsp) { + // True if the loop contains at least one dependent AstLoopTest + bool foundLoopTest = false; + // Process one body statement at a time + for (AstNode* stmtp = stmtsp; stmtp; stmtp = stmtp->nextp()) { + // Check if this is a loop test - before substitution + if (AstLoopTest* const testp = VN_CAST(stmtp, LoopTest)) { + AstNode* const condp = V3Const::constifyEdit(testp->condp()); + if (condp->isZero()) { + // Loop terminates return false; + } else if (condp->isNeqZero()) { + // Loop test is unconditionally true, ignore + continue; } - if (!res.isEqOne()) { - break; // Done with the loop - } else { - // Replace iterator values with constant - AstNode* oneloopp = stmtsp->cloneTree(true); - AstConst* varValuep = new AstConst{nodep->fileline(), loopValue}; - if (oneloopp) { - // Iteration requires a back, so put under temporary node - AstBegin* const tempp - = new AstBegin{oneloopp->fileline(), "[EditWrapper]", oneloopp, false}; - replaceVarRef(tempp->stmtsp(), varValuep); - oneloopp = tempp->stmtsp()->unlinkFrBackWithNext(); - VL_DO_DANGLING(tempp->deleteTree(), tempp); - } - if (m_generate) { - const string index = AstNode::encodeNumber(varValuep->toSInt()); - const string nname = m_beginName + "__BRA__" + index + "__KET__"; - oneloopp = new AstGenBlock{oneloopp->fileline(), nname, oneloopp, false}; - } - VL_DO_DANGLING(pushDeletep(varValuep), varValuep); - if (newbodysp) { - newbodysp->addNext(oneloopp); - } else { - newbodysp = oneloopp; - } + } - ++m_statIters; - const int limit - = v3Global.opt.unrollCountAdjusted(unrollFull, m_generate, false); - if (++times / 3 > limit) { - nodep->v3error( - "Loop unrolling took too long;" - " probably this is an infinite loop, " - " or use /*verilator unroll_full*/, or set --unroll-count above " - << times); - break; - } + // Clone and iterate one body statement + m_wrapp->addStmtsp(stmtp->cloneTree(false)); + iterateAndNextNull(m_wrapp->stmtsp()); + // Give up if failed + if (!m_ok) return false; - // loopValue += valInc - AstAssign* const incpass = VN_AS(incp, Assign); - V3Number newLoopValue{nodep}; - if (!simulateTree(incpass->rhsp(), &loopValue, incpass, newLoopValue)) { - nodep->v3error("Loop unrolling failed"); + // Add statements to unrolled body + while (AstNode* const nodep = m_wrapp->stmtsp()) { + // Check if we reached the size limit, unless full unrolling is requested + if (!m_loopp->unroll().isSetTrue()) { + m_unrolledSize += nodep->nodeCount(); + if (m_unrolledSize > static_cast(v3Global.opt.unrollStmts())) { + cantUnroll(m_loopp, m_stats.m_nFailUnrollStmts); return false; } - loopValue.opAssign(newLoopValue); + } + + // Will be adding to results (or deleting) + nodep->unlinkFrBack(); + + // If a LoopTest, check how it resolved + if (AstLoopTest* const testp = VN_CAST(nodep, LoopTest)) { + foundLoopTest = true; + // Will not actually need it, nor any subsequent + pushDeletep(testp); + // Loop continues - add rest of statements + if (testp->condp()->isNeqZero()) continue; + // Won't need any of the trailing statements + if (m_wrapp->stmtsp()) pushDeletep(m_wrapp->stmtsp()->unlinkFrBackWithNext()); + // Loop terminates + if (testp->condp()->isZero()) return false; + // Loop condition unknown - cannot unroll + cantUnroll(testp->condp(), m_stats.m_nFailCondition); + return false; + } + + // Add this statement to the result list + m_stmtsp = AstNode::addNext(m_stmtsp, nodep); + + // Check if terminated via JumpGo + if (VN_IS(nodep, JumpGo)) { + UASSERT_OBJ(!m_wrapp->stmtsp(), nodep, "Statements after JumpGo"); + // This JumpGo is going directly into the body of the unrolled loop. + // A JumpGo always redirects to the end of an enclosing JumpBlock, + // so this JumpGo must go outside the loop. The loop terminates. + return false; } } } - if (!newbodysp) { // initp might have effects after the loop - if (m_generate && initp) { // GENFOR(ASSIGN(...)) need to move under a new Initial - newbodysp = new AstInitial{initp->fileline(), initp->cloneTree(true)}; - } else { - newbodysp = initp ? initp->cloneTree(true) : nullptr; - } + // If there is no loop test in the body, give up, it's an infinite loop + if (!foundLoopTest) { + cantUnroll(m_loopp, m_stats.m_nFailInfinite); + return false; } - // Replace the FOR() - if (newbodysp) { - nodep->replaceWith(newbodysp); - } else { - nodep->unlinkFrBack(); - } - if (newbodysp) UINFOTREE(9, newbodysp, "", "_new"); + // One iteration done, loop continues return true; } - // VISITORS - void visit(AstWhile* nodep) override { - iterateChildren(nodep); - if (!m_varModeCheck) { - // Constify before unroll call, as it may change what is underneath. - if (nodep->condp()) V3Const::constifyEdit(nodep->condp()); // condp may change - // Grab initial value - AstNode* initp = nullptr; // Should be statement before the while. - if (nodep->backp()->nextp() == nodep) initp = nodep->backp(); - if (initp) VL_DO_DANGLING(V3Const::constifyEdit(initp), initp); - if (nodep->backp()->nextp() == nodep) initp = nodep->backp(); - // Grab assignment - AstNode* incp = nullptr; // Should be last statement - AstNode* stmtsp = nodep->stmtsp(); - if (nodep->incsp()) V3Const::constifyEdit(nodep->incsp()); - // cppcheck-suppress duplicateCondition - if (nodep->incsp()) { - incp = nodep->incsp(); - } else { - for (incp = nodep->stmtsp(); incp && incp->nextp(); incp = incp->nextp()) {} - if (incp) VL_DO_DANGLING(V3Const::constifyEdit(incp), incp); - // Again, as may have changed - stmtsp = nodep->stmtsp(); - for (incp = nodep->stmtsp(); incp && incp->nextp(); incp = incp->nextp()) {} - if (incp == stmtsp) stmtsp = nullptr; + // Substitute all reads of bound variables with their value. If a write is + // encountered, remove the binding and don't substitute that variable. + // Returns false if we can't unroll + bool process(AstNode* nodep) { + UASSERT_OBJ(m_ok, nodep, "Should not call 'substituteCondVscp' if we gave up"); + if (!nodep) return true; + // Variable references we should try to substitute + std::vector toSubstitute; + // Iterate subtree + nodep->foreach([&](AstNode* np) { + // Failed earlier + if (!m_ok) return; + // Check for AstLoopTest + if (AstLoopTest* const testp = VN_CAST(np, LoopTest)) { + // Nested loop is OK, bail only if the nested LoopTest is for the current loop + if (testp->loopp() == m_loopp) cantUnroll(np, m_stats.m_nFailNestedLoopTest); + return; } - // And check it - if (forUnrollCheck(nodep, nodep->unrollFull(), initp, nodep->condp(), incp, stmtsp)) { - VL_DO_DANGLING(pushDeletep(nodep), nodep); // Did replacement - } - } - } - void visit(AstGenFor* nodep) override { - UASSERT_OBJ(m_generate, nodep, "There should be no GenFor left when unrolling all"); - if (!m_varModeCheck) { - // Constify before unroll call, as it may change what is underneath. - if (nodep->initsp()) V3Const::constifyEdit(nodep->initsp()); // initsp may change - if (nodep->condp()) V3Const::constifyEdit(nodep->condp()); // condp may change - if (nodep->incsp()) V3Const::constifyEdit(nodep->incsp()); // incsp may change - if (nodep->condp()->isZero()) { - // We don't need to do any loops. Remove the GenFor, - // Genvar's don't care about any initial assignments. - // - // Note normal For's can't do exactly this deletion, as - // we'd need to initialize the variable to the initial - // condition, but they'll become while's which can be - // deleted by V3Const. - VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); - } else if (forUnrollCheck(nodep, VOptionBool{}, nodep->initsp(), nodep->condp(), - nodep->incsp(), nodep->itemsp())) { - VL_DO_DANGLING(pushDeletep(nodep), nodep); // Did replacement - } else { - nodep->v3error("For loop doesn't have genvar index, or is malformed"); - // We will die, do it gracefully - VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); + // Check for AstFork - can't unroll + if (VN_IS(np, Fork)) { + cantUnroll(np, m_stats.m_nFailFork); + return; } + // Check for calls - can't unroll if not pure might modify bindings + if (AstNodeCCall* const callp = VN_CAST(np, NodeCCall)) { + if (!callp->isPure()) { + cantUnroll(np, m_stats.m_nFailCall); + return; + } + } + // Check for timing control - can't unroll, might modify bindings + if (np->isTimingControl()) { + cantUnroll(np, m_stats.m_nFailTimingControl); + return; + } + // Process variable references + AstVarRef* const refp = VN_CAST(np, VarRef); + if (!refp) return; + // Ignore if the referenced variable has no binding + AstConst* const valp = VN_AS(refp->varScopep()->user1p(), Const); + if (!valp) return; + // If writen, remove the binding + if (refp->access().isWriteOrRW()) { + refp->varScopep()->user1p(nullptr); + return; + } + // Otherwise add it to the list of variables to substitute + toSubstitute.push_back(refp); + }); + // Give up if we have to + if (!m_ok) return false; + // Actually substitute the variables that still have bindings + for (AstVarRef* const refp : toSubstitute) { + // Pick up bound value + AstConst* const valp = VN_AS(refp->varScopep()->user1p(), Const); + // Binding might have been removed after adding to 'toSubstitute' + if (!valp) continue; + // Substitute it + refp->replaceWith(valp->cloneTree(false)); + VL_DO_DANGLING(pushDeletep(refp), refp); } + return true; } - void visit(AstVarRef* nodep) override { - if (m_varModeCheck && nodep->varp() == m_forVarp && nodep->varScopep() == m_forVscp - && nodep->access().isWriteOrRW()) { - UINFO(8, " Itervar assigned to: " << nodep); - m_varAssignHit = true; + // CONSTRUCTOR + UnrollOneVisitor(UnrollStats& stats, AstLoop* loopp) + : m_stats{stats} + , m_loopp{loopp} { + UASSERT_OBJ(!loopp->contsp(), loopp, "'contsp' only used before LinkJump"); + // Do not unroll if we are told not to + if (loopp->unroll().isSetFalse()) { + cantUnroll(loopp, m_stats.m_nPragmaDisabled); + return; } - } - - void visit(AstFork* nodep) override { - if (m_varModeCheck) { - if (nodep->joinType().joinNone() || nodep->joinType().joinAny()) { - // Forks are not allowed to unroll for loops, so we just set a flag - m_forkHit = true; + // Gather variable bindings from the preceding statements + for (AstNode *succp = loopp, *currp = loopp->backp(); currp->nextp() == succp; + succp = currp, currp = currp->backp()) { + AstAssign* const assignp = VN_CAST(currp, Assign); + if (!assignp) break; + AstConst* const valp = VN_CAST(V3Const::constifyEdit(assignp->rhsp()), Const); + if (!valp) break; + AstVarRef* const lhsp = VN_CAST(assignp->lhsp(), VarRef); + if (!lhsp) break; + // Don't bind if volatile + if (lhsp->varp()->isForced() || lhsp->varp()->isSigUserRWPublic()) continue; + // Don't overwrite a later binding + if (lhsp->varScopep()->user1p()) continue; + // Set up the binding + lhsp->varScopep()->user1p(valp); + } + // Attempt to unroll the loop + const size_t iterLimit = v3Global.opt.unrollCountAdjusted(loopp->unroll(), false, false); + size_t iterCount = 0; + do { + // Allow iterLimit + 1 iterations, which is consistent with the old behaviour + // where 'do' loops used to be unrolled at least once, and while/for loops are + // tested at the front on the last entry to the loop body + if (iterCount > iterLimit) { + cantUnroll(m_loopp, m_stats.m_nFailUnrollCount); + return; } - } else { - iterateChildren(nodep); + ++iterCount; + } while (unrollOneIteration(loopp->stmtsp())); + + if (m_ok) { + ++m_stats.m_nUnrolledLoops; + m_stats.m_nUnrolledIters += iterCount; } } + ~UnrollOneVisitor() { VL_DO_DANGLING(m_wrapp->deleteTree(), m_wrapp); } + // VISIT - these are called for the statements directly in the loop body void visit(AstNode* nodep) override { - if (m_varModeCheck && nodep == m_ignoreIncp) { - // Ignore subtree that is the increment - } else { - iterateChildren(nodep); + if (!m_ok) return; + // Generic body statement, just substitute + process(nodep); + } + void visit(AstLoopTest* nodep) override { + if (!m_ok) return; + // If the condition is a ExprStmt, move it before the LoopTest + if (AstExprStmt* const exprp = VN_CAST(nodep->condp(), ExprStmt)) { + AstNode* const stmtsp = exprp->stmtsp()->unlinkFrBackWithNext(); + exprp->replaceWith(exprp->resultp()->unlinkFrBack()); + VL_DO_DANGLING(pushDeletep(exprp), exprp); + VNRelinker relinker; + nodep->unlinkFrBack(&relinker); + stmtsp->addNext(nodep); + relinker.relink(stmtsp); + return; } + // Substitute the condition only, this is not a nested AstLoopTest + process(nodep->condp()); + // Also simplify it, it will be checked later + V3Const::constifyEdit(nodep->condp()); + } + void visit(AstAssign* nodep) override { + if (!m_ok) return; + // Can't do it if delayed + if (nodep->timingControlp()) { + cantUnroll(nodep, m_stats.m_nFailTimingControl); + return; + } + if (!process(nodep->rhsp())) return; + // If a simple variable assignment, update the binding + AstVarRef* const lhsp = VN_CAST(nodep->lhsp(), VarRef); + AstConst* const valp = VN_CAST(V3Const::constifyEdit(nodep->rhsp()), Const); + if (lhsp && valp && !lhsp->varp()->isForced() && !lhsp->varp()->isSigUserRWPublic()) { + lhsp->varScopep()->user1p(valp); + return; + } + // Otherwise just like a generic statement + process(nodep->lhsp()); + } + void visit(AstIf* nodep) override { + if (!m_ok) return; + if (!process(nodep->condp())) return; + // If condition is constant, replce with the relevant branch + if (AstConst* const condp = VN_CAST(V3Const::constifyEdit(nodep->condp()), Const)) { + if (AstNode* const bodyp = condp->isNeqZero() ? nodep->thensp() : nodep->elsesp()) { + nodep->addNextHere(bodyp->unlinkFrBackWithNext()); // This will be iterated next + } + VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); + return; + } + // Otherwise just like a generic statement + process(nodep); + } + void visit(AstJumpGo* nodep) override { + // Remove trailing dead code + if (nodep->nextp()) pushDeletep(nodep->nextp()->unlinkFrBackWithNext()); } public: - // CONSTRUCTORS - UnrollVisitor() { init(false, ""); } - ~UnrollVisitor() override { - V3Stats::addStatSum("Optimizations, Unrolled Loops", m_statLoops); - V3Stats::addStatSum("Optimizations, Unrolled Iterations", m_statIters); - } - // METHODS - void init(bool generate, const string& beginName) { - m_forVarp = nullptr; - m_forVscp = nullptr; - m_ignoreIncp = nullptr; - m_varModeCheck = false; - m_varAssignHit = false; - m_forkHit = false; - m_generate = generate; - m_beginName = beginName; - } - void process(AstNode* nodep, bool generate, const string& beginName) { - init(generate, beginName); - iterate(nodep); + // Unroll the given loop. Returns the resulting statements and the number of + // iterations unrolled (0 if unrolling failed); + static std::pair apply(UnrollStats& stats, AstLoop* loopp) { + UnrollOneVisitor visitor{stats, loopp}; + // If successfully unrolled, return the resulting list of statements - might be empty + if (visitor.m_ok) return {visitor.m_stmtsp, true}; + // Otherwise delete intermediate results + if (visitor.m_stmtsp) VL_DO_DANGLING(visitor.m_stmtsp->deleteTree(), visitor.m_stmtsp); + return {nullptr, false}; } }; //###################################################################### -// Unroll class functions +// Unroll all AstLoop statements -UnrollStateful::UnrollStateful() - : m_unrollerp{new UnrollVisitor} {} -UnrollStateful::~UnrollStateful() { delete m_unrollerp; } +class UnrollAllVisitor final : VNVisitor { + // STATE - Statistic tracking + UnrollStats m_stats; -void UnrollStateful::unrollGen(AstGenFor* nodep, const string& beginName) { - UINFO(5, __FUNCTION__ << ": "); - m_unrollerp->process(nodep, true, beginName); -} + // VISIT + void visit(AstLoop* nodep) override { + // Attempt to unroll this loop + const std::pair pair = UnrollOneVisitor::apply(m_stats, nodep); + + // If failed, carry on with nested loop + if (!pair.second) { + iterateChildren(nodep); + return; + } + + // Otherwise replace the loop with the unrolled code - might be empty + if (pair.first) { + nodep->replaceWith(pair.first); + VL_DO_DANGLING(pushDeletep(nodep), nodep); + } else { + VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); + } + // Iteration continues with the unrolled body + } + void visit(AstNode* nodep) override { iterateChildren(nodep); } + + // CONSTRUCTOR + UnrollAllVisitor(AstNetlist* netlistp) { iterate(netlistp); } + +public: + static void apply(AstNetlist* netlistp) { UnrollAllVisitor{netlistp}; } +}; + +//###################################################################### +// V3Unroll class functions void V3Unroll::unrollAll(AstNetlist* nodep) { UINFO(2, __FUNCTION__ << ":"); - { - UnrollVisitor visitor; - visitor.process(nodep, false, ""); - } // Destruct before checking + UnrollAllVisitor::apply(nodep); V3Global::dumpCheckGlobalTree("unroll", 0, dumpTreeEitherLevel() >= 3); } diff --git a/src/V3Unroll.h b/src/V3Unroll.h index bc16c4a4e..59866f0ef 100644 --- a/src/V3Unroll.h +++ b/src/V3Unroll.h @@ -1,6 +1,6 @@ // -*- mode: C++; c-file-style: "cc-mode" -*- //************************************************************************* -// DESCRIPTION: Verilator: Pre C-Emit stage changes +// DESCRIPTION: Verilator: Loop unroller // // Code available from: https://verilator.org // @@ -24,24 +24,24 @@ #include "V3Error.h" //============================================================================ -/// Unroller with saved state, so caller can determine when pushDelete's are executed. +// Generate loop unroller -class UnrollVisitor; +class UnrollGenVisitor; -class UnrollStateful final { +class GenForUnroller final { // MEMBERS - UnrollVisitor* const m_unrollerp; - VL_UNCOPYABLE(UnrollStateful); + UnrollGenVisitor* const m_unrollerp; public: - // CONSTRUCTORS - UnrollStateful() VL_MT_DISABLED; - ~UnrollStateful() VL_MT_DISABLED; + // CONSTRUCTOR + GenForUnroller() VL_MT_DISABLED; + ~GenForUnroller() VL_MT_DISABLED; // METHODS - void unrollGen(AstGenFor* nodep, const string& beginName) VL_MT_DISABLED; + void unroll(AstGenFor* nodep, const std::string& beginName) VL_MT_DISABLED; }; //============================================================================ +// Loop statement unroller class V3Unroll final { public: diff --git a/src/V3UnrollGen.cpp b/src/V3UnrollGen.cpp new file mode 100644 index 000000000..be0d19f9a --- /dev/null +++ b/src/V3UnrollGen.cpp @@ -0,0 +1,323 @@ +// -*- mode: C++; c-file-style: "cc-mode" -*- +//************************************************************************* +// DESCRIPTION: Verilator: Generate loop unrolling +// +// Code available from: https://verilator.org +// +//************************************************************************* +// +// Copyright 2003-2025 by Wilson Snyder. This program is free software; you +// can redistribute it and/or modify it under the terms of either the GNU +// Lesser General Public License Version 3 or the Perl Artistic License +// Version 2.0. +// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 +// +//************************************************************************* +// +// Unroll AstLoopStmts +// +//************************************************************************* + +#include "V3PchAstNoMT.h" // VL_MT_DISABLED_CODE_UNIT + +#include "V3Const.h" +#include "V3Simulate.h" +#include "V3Unroll.h" + +VL_DEFINE_DEBUG_FUNCTIONS; +//###################################################################### +// Unroll AstGenFor + +class UnrollGenVisitor final : public VNVisitor { + // STATE - across all visitors + AstVar* m_forVarp = nullptr; // Iterator variable + const AstNode* m_ignoreIncp = nullptr; // Increment node to ignore + bool m_varModeCheck = false; // Just checking RHS assignments + bool m_varAssignHit = false; // Assign var hit + bool m_forkHit = false; // Fork hit + std::string m_beginName; // What name to give begin iterations + + // METHODS + void replaceVarRef(AstNode* bodyp, AstNode* varValuep) { + // Replace all occurances of loop variable in bodyp and next + bodyp->foreachAndNext([this, varValuep](AstVarRef* refp) { + if (refp->varp() == m_forVarp && refp->access().isReadOnly()) { + AstNode* const newconstp = varValuep->cloneTree(false); + refp->replaceWith(newconstp); + VL_DO_DANGLING(pushDeletep(refp), refp); + } + }); + } + + bool cantUnroll(AstNode* nodep, const char* reason) const { + UINFO(4, " Can't Unroll: " << reason << " :" << nodep); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Can't unroll generate for; " << reason); + return false; + } + + bool forUnrollCheck( + AstGenFor* const nodep, + AstNode* const initp, // Maybe under nodep (no nextp), or standalone (ignore nextp) + AstNodeExpr* condp, + AstNode* const incp, // Maybe under nodep or in bodysp + AstNode* bodysp) { + // To keep the IF levels low, we return as each test fails. + UINFO(4, " FOR Check " << nodep); + if (initp) UINFO(6, " Init " << initp); + if (condp) UINFO(6, " Cond " << condp); + if (incp) UINFO(6, " Inc " << incp); + + // Initial value check + AstAssign* const initAssp = VN_CAST(initp, Assign); + if (!initAssp) return cantUnroll(nodep, "no initial assignment"); + UASSERT_OBJ(!(initp->nextp() && initp->nextp() != nodep), nodep, + "initial assignment shouldn't be a list"); + if (!VN_IS(initAssp->lhsp(), VarRef)) { + return cantUnroll(nodep, "no initial assignment to simple variable"); + } + // + // Condition check + UASSERT_OBJ(!condp->nextp(), nodep, "conditional shouldn't be a list"); + // + // Assignment of next value check + const AstAssign* const incAssp = VN_CAST(incp, Assign); + if (!incAssp) return cantUnroll(nodep, "no increment assignment"); + if (incAssp->nextp()) return cantUnroll(nodep, "multiple increments"); + + m_forVarp = VN_AS(initAssp->lhsp(), VarRef)->varp(); + if (!m_forVarp->isGenVar()) { + nodep->v3error("Non-genvar used in generate for: " << m_forVarp->prettyNameQ()); + } + V3Const::constifyParamsEdit(initAssp->rhsp()); // rhsp may change + + // This check shouldn't be needed when using V3Simulate + // however, for repeat loops, the loop variable is auto-generated + // and the initp statements will reference a variable outside of the initp scope + // alas, failing to simulate. + const AstConst* const constInitp = VN_CAST(initAssp->rhsp(), Const); + if (!constInitp) return cantUnroll(nodep, "non-constant initializer"); + + // + // Now, make sure there's no assignment to this variable in the loop + m_varModeCheck = true; + m_varAssignHit = false; + m_forkHit = false; + m_ignoreIncp = incp; + iterateAndNextNull(bodysp); + iterateAndNextNull(incp); + m_varModeCheck = false; + m_ignoreIncp = nullptr; + if (m_varAssignHit) return cantUnroll(nodep, "genvar assigned *inside* loop"); + + if (m_forkHit) return cantUnroll(nodep, "fork inside loop"); + + // + UINFO(8, " Loop Variable: " << m_forVarp); + UINFOTREE(9, nodep, "", "for"); + + // Finally, we can do it + if (!forUnroller(nodep, initAssp, condp, incp, bodysp)) { + return cantUnroll(nodep, "Unable to unroll loop"); + } + VL_DANGLING(nodep); + // Cleanup + return true; + } + + bool simulateTree(AstNodeExpr* nodep, const V3Number* loopValue, AstNode* dtypep, + V3Number& outNum) { + AstNode* clonep = nodep->cloneTree(true); + UASSERT_OBJ(clonep, nodep, "Failed to clone tree"); + if (loopValue) { + AstConst* varValuep = new AstConst{nodep->fileline(), *loopValue}; + // Iteration requires a back, so put under temporary node + AstBegin* tempp = new AstBegin{nodep->fileline(), "[EditWrapper]", clonep, false}; + replaceVarRef(tempp->stmtsp(), varValuep); + clonep = tempp->stmtsp()->unlinkFrBackWithNext(); + VL_DO_CLEAR(tempp->deleteTree(), tempp = nullptr); + VL_DO_DANGLING(pushDeletep(varValuep), varValuep); + } + SimulateVisitor simvis; + simvis.mainParamEmulate(clonep); + if (!simvis.optimizable()) { + UINFO(4, "Unable to simulate"); + UINFOTREE(9, nodep, "", "_simtree"); + VL_DO_DANGLING(clonep->deleteTree(), clonep); + return false; + } + // Fetch the result + V3Number* resp = simvis.fetchNumberNull(clonep); + if (!resp) { + UINFO(3, "No number returned from simulation"); + VL_DO_DANGLING(clonep->deleteTree(), clonep); + return false; + } + // Patch up datatype + if (dtypep) { + AstConst new_con{clonep->fileline(), *resp}; + new_con.dtypeFrom(dtypep); + outNum = new_con.num(); + outNum.isSigned(dtypep->isSigned()); + VL_DO_DANGLING(clonep->deleteTree(), clonep); + return true; + } + outNum = *resp; + VL_DO_DANGLING(clonep->deleteTree(), clonep); + return true; + } + + bool forUnroller(AstGenFor* nodep, AstAssign* initp, AstNodeExpr* condp, AstNode* incp, + AstNode* bodysp) { + UINFO(9, "forUnroller " << nodep); + V3Number loopValue{nodep}; + if (!simulateTree(initp->rhsp(), nullptr, initp, loopValue)) { // + return false; + } + AstNode* stmtsp = nullptr; + if (initp) { + initp->unlinkFrBack(); // Always a single statement; nextp() may be nodep + // Don't add to list, we do it once, and setting loop index isn't + // needed if we have > 1 loop, as we're constant propagating it + pushDeletep(initp); // Always cloned below. + } + if (bodysp) { + bodysp->unlinkFrBackWithNext(); + stmtsp = AstNode::addNext(stmtsp, bodysp); // Maybe null if no body + } + // Mark variable to disable some later warnings + m_forVarp->usedLoopIdx(true); + + AstNode* newbodysp = nullptr; + if (stmtsp) { + pushDeletep(stmtsp); // Always cloned below. + int times = 0; + while (true) { + UINFO(8, " Looping " << loopValue); + V3Number res{nodep}; + if (!simulateTree(condp, &loopValue, nullptr, res)) { + nodep->v3error("Loop unrolling failed."); + return false; + } + if (!res.isEqOne()) { + break; // Done with the loop + } else { + // Replace iterator values with constant + AstNode* oneloopp = stmtsp->cloneTree(true); + AstConst* varValuep = new AstConst{nodep->fileline(), loopValue}; + if (oneloopp) { + // Iteration requires a back, so put under temporary node + AstBegin* const tempp + = new AstBegin{oneloopp->fileline(), "[EditWrapper]", oneloopp, false}; + replaceVarRef(tempp->stmtsp(), varValuep); + oneloopp = tempp->stmtsp()->unlinkFrBackWithNext(); + VL_DO_DANGLING(tempp->deleteTree(), tempp); + } + const string index = AstNode::encodeNumber(varValuep->toSInt()); + const string nname = m_beginName + "__BRA__" + index + "__KET__"; + oneloopp = new AstGenBlock{oneloopp->fileline(), nname, oneloopp, false}; + VL_DO_DANGLING(pushDeletep(varValuep), varValuep); + if (newbodysp) { + newbodysp->addNext(oneloopp); + } else { + newbodysp = oneloopp; + } + + const int limit = v3Global.opt.unrollCountAdjusted(VOptionBool{}, true, false); + if (++times / 3 > limit) { + nodep->v3error( + "Loop unrolling took too long;" + " probably this is an infinite loop, " + " or use /*verilator unroll_full*/, or set --unroll-count above " + << times); + break; + } + + // loopValue += valInc + AstAssign* const incpass = VN_AS(incp, Assign); + V3Number newLoopValue{nodep}; + if (!simulateTree(incpass->rhsp(), &loopValue, incpass, newLoopValue)) { + nodep->v3error("Loop unrolling failed"); + return false; + } + loopValue.opAssign(newLoopValue); + } + } + } + if (!newbodysp) { // initp might have effects after the loop + if (initp) { // GENFOR(ASSIGN(...)) need to move under a new Initial + newbodysp = new AstInitial{initp->fileline(), initp->cloneTree(true)}; + } else { + newbodysp = initp ? initp->cloneTree(true) : nullptr; + } + } + // Replace the FOR() + if (newbodysp) { + nodep->replaceWith(newbodysp); + } else { + nodep->unlinkFrBack(); + } + if (newbodysp) UINFOTREE(9, newbodysp, "", "_new"); + return true; + } + + // VISITORS + void visit(AstVarRef* nodep) override { + if (m_varModeCheck && nodep->varp() == m_forVarp && nodep->access().isWriteOrRW()) { + UINFO(8, " Itervar assigned to: " << nodep); + m_varAssignHit = true; + } + } + + void visit(AstNode* nodep) override { + if (m_varModeCheck && nodep == m_ignoreIncp) { + // Ignore subtree that is the increment + } else { + iterateChildren(nodep); + } + } + +public: + // CONSTRUCTORS + UnrollGenVisitor() = default; + + void unroll(AstGenFor* nodep, const std::string& beginName) { + m_forVarp = nullptr; // Iterator variable + m_ignoreIncp = nullptr; // Increment node to ignore + m_varModeCheck = false; // Just checking RHS assignments + m_varAssignHit = false; // Assign var hit + m_forkHit = false; // Fork hit + m_beginName = beginName; + + // Constify before unroll call, as it may change what is underneath. + if (nodep->initsp()) V3Const::constifyEdit(nodep->initsp()); // initsp may change + if (nodep->condp()) V3Const::constifyEdit(nodep->condp()); // condp may change + if (nodep->incsp()) V3Const::constifyEdit(nodep->incsp()); // incsp may change + if (nodep->condp()->isZero()) { + // We don't need to do any loops. Remove the GenFor, + // Genvar's don't care about any initial assignments. + // + // Note normal For's can't do exactly this deletion, as + // we'd need to initialize the variable to the initial + // condition, but they'll become while's which can be + // deleted by V3Const. + VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); + } else if (forUnrollCheck(nodep, nodep->initsp(), nodep->condp(), nodep->incsp(), + nodep->itemsp())) { + VL_DO_DANGLING(pushDeletep(nodep), nodep); // Did replacement + } else { + nodep->v3error("For loop doesn't have genvar index, or is malformed"); + // We will die, do it gracefully + VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep); + } + } +}; + +//###################################################################### +// GenForUnroller members + +GenForUnroller::GenForUnroller() + : m_unrollerp{new UnrollGenVisitor{}} {} +GenForUnroller::~GenForUnroller() { VL_DO_DANGLING(delete m_unrollerp, m_unrollerp); } +void GenForUnroller::unroll(AstGenFor* nodep, const std::string& beginName) { + m_unrollerp->unroll(nodep, beginName); +} diff --git a/src/V3Width.cpp b/src/V3Width.cpp index 851395f17..a3cf42c2d 100644 --- a/src/V3Width.cpp +++ b/src/V3Width.cpp @@ -5466,18 +5466,20 @@ class WidthVisitor final : public VNVisitor { } } + void visit(AstLoop* nodep) override { + UASSERT_OBJ(!nodep->contsp(), nodep, "'contsp' only used before LinkJump"); + assertAtStatement(nodep); + userIterateAndNext(nodep->stmtsp(), nullptr); + } + void visit(AstLoopTest* nodep) override { + assertAtStatement(nodep); + iterateCheckBool(nodep, "Loop Condition", nodep->condp(), BOTH); + } void visit(AstRepeat* nodep) override { assertAtStatement(nodep); userIterateAndNext(nodep->countp(), WidthVP{SELF, BOTH}.p()); userIterateAndNext(nodep->stmtsp(), nullptr); } - void visit(AstWhile* nodep) override { - assertAtStatement(nodep); - iterateCheckBool(nodep, "For Test Condition", nodep->condp(), - BOTH); // it's like an if() condition. - userIterateAndNext(nodep->stmtsp(), nullptr); - userIterateAndNext(nodep->incsp(), nullptr); - } void visit(AstNodeIf* nodep) override { assertAtStatement(nodep); // UINFOTREE(1, nodep, "", "IfPre"); diff --git a/src/Verilator.cpp b/src/Verilator.cpp index b1947f8d8..6f5907bec 100644 --- a/src/Verilator.cpp +++ b/src/Verilator.cpp @@ -372,7 +372,7 @@ static void process() { // After V3Task so task internal variables will get renamed V3Name::nameAll(v3Global.rootp()); - // Loop unrolling & convert FORs to WHILEs + // Loop unrolling V3Unroll::unrollAll(v3Global.rootp()); // Expand slices of arrays diff --git a/src/verilog.y b/src/verilog.y index 6d42a8b07..9ce8432bd 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -3590,14 +3590,31 @@ statement_item: // IEEE: statement_item | yP_MINUSGTGT delay_or_event_controlE expr ';' { $$ = new AstFireEvent{$1, $3, true}; } // - // // IEEE: loop_statement + // do/for/forever/while loops all modelled as AstLoop + | yDO stmtBlock yWHILE '(' expr ')' ';' + { AstLoop* const loopp = new AstLoop{$1}; + loopp->addStmtsp($2); + loopp->addContsp(new AstLoopTest{$5, loopp, $5}); + $$ = loopp; } + | yFOR '(' { VARRESET_NONLIST(UNKNOWN); } for_initializationE ';' exprE ';' for_stepE ')' stmtBlock + { AstBegin* const blockp = new AstBegin{$1, "", $4, true}; + AstLoop* const loopp = new AstLoop{$1}; + if ($6) loopp->addStmtsp(new AstLoopTest{$6, loopp, $6}); + loopp->addStmtsp($10); + loopp->addContsp($8); + blockp->addStmtsp(loopp); + $$ = blockp; } | yFOREVER stmtBlock - { $$ = new AstWhile{$1, new AstConst{$1, AstConst::BitTrue{}}, $2}; } + { AstLoop* const loopp = new AstLoop{$1}; + loopp->addStmtsp($2); + $$ = loopp; } + | yWHILE '(' expr ')' stmtBlock + { AstLoop* const loopp = new AstLoop{$1}; + loopp->addStmtsp(new AstLoopTest{$3, loopp, $3}); + loopp->addStmtsp($5); + $$ = loopp; } + // Other loop statements | yREPEAT '(' expr ')' stmtBlock { $$ = new AstRepeat{$1, $3, $5}; } - | yWHILE '(' expr ')' stmtBlock { $$ = new AstWhile{$1, $3, $5}; } - // // for's first ';' is in for_initialization - | statementFor { $$ = $1; } - | yDO stmtBlock yWHILE '(' expr ')' ';' { $$ = new AstDoWhile{$1, $5, $2}; } // // IEEE says array_identifier here, but dotted accepted in VMM and 1800-2009 | yFOREACH '(' idClassSelForeach ')' stmtBlock { $$ = new AstBegin{$1, "", new AstForeach{$1, $3, $5}, true}; } @@ -3660,18 +3677,6 @@ statement_item: // IEEE: statement_item { $$ = nullptr; BBUNSUP($1, "Unsupported: expect"); DEL($3, $6); } ; -statementFor: // IEEE: part of statement - yFOR beginForParen for_initialization expr ';' for_stepE ')' stmtBlock - { $$ = new AstBegin{$1, "", $3, true}; - $$->addStmtsp(new AstWhile{$1, $4, $8, $6}); } - | yFOR beginForParen for_initialization ';' for_stepE ')' stmtBlock - { $$ = new AstBegin{$1, "", $3, true}; - $$->addStmtsp(new AstWhile{$1, new AstConst{$1, AstConst::BitTrue{}}, $7, $5}); } - ; -beginForParen: // IEEE: Part of statement (for loop beginning paren) - '(' { VARRESET_NONLIST(UNKNOWN); } - ; - statementVerilatorPragmas: yVL_COVERAGE_BLOCK_OFF { $$ = new AstPragma{$1, VPragmaType::COVERAGE_BLOCK_OFF}; } @@ -3948,11 +3953,9 @@ assignment_pattern: // ==IEEE: assignment_pattern ; // "datatype id = x {, id = x }" | "yaId = x {, id=x}" is legal -for_initialization: // ==IEEE: for_initialization + for_variable_declaration + extra terminating ";" - // // IEEE: for_variable_declaration - for_initializationItemList ';' { $$ = $1; } - // // IEEE: 1800-2017 empty initialization - | ';' { $$ = nullptr; } +for_initializationE: // ==IEEE: for_initialization + for_variable_declaration + /* empty */ { $$ = nullptr; } + | for_initializationItemList { $$ = $1; } ; for_initializationItemList: // IEEE: [for_variable_declaration...] diff --git a/test_regress/t/t_cover_line.out b/test_regress/t/t_cover_line.out index 820f4f2a7..79e9a6694 100644 --- a/test_regress/t/t_cover_line.out +++ b/test_regress/t/t_cover_line.out @@ -148,12 +148,12 @@ -000000 point: comment=block hier=top.t ~000010 do begin -000000 point: comment=block hier=top.t -+000010 point: comment=if hier=top.t -~000010 $write(""); --000000 point: comment=block hier=top.t -+000010 point: comment=if hier=top.t -%000000 end while (0); ++000010 point: comment=block hier=top.t + 000010 $write(""); ++000010 point: comment=block hier=top.t +~000010 end while (0); -000000 point: comment=block hier=top.t ++000010 point: comment=block hier=top.t //=== // Task and complicated %000001 if (cyc==3) begin @@ -522,6 +522,8 @@ end 000044 for (int i = 0; i < 7; i = (i > 4) ? i + 1 : i + 2) begin +000011 point: comment=block hier=top.t.cond1 ++000011 point: comment=cond_then hier=top.t.cond1 ++000033 point: comment=cond_else hier=top.t.cond1 +000044 point: comment=block hier=top.t.cond1 000044 k = 1'(i); +000044 point: comment=block hier=top.t.cond1 diff --git a/test_regress/t/t_cover_line_cc.info.out b/test_regress/t/t_cover_line_cc.info.out index d5225250c..ceb68f067 100644 --- a/test_regress/t/t_cover_line_cc.info.out +++ b/test_regress/t/t_cover_line_cc.info.out @@ -55,9 +55,9 @@ DA:105,10 BRDA:105,0,0,0 BRDA:105,0,1,10 DA:106,10 -BRDA:106,0,0,0 -BRDA:106,0,1,10 -DA:107,0 +DA:107,10 +BRDA:107,0,0,0 +BRDA:107,0,1,10 DA:110,1 DA:111,1 DA:113,1 @@ -200,12 +200,14 @@ BRDA:354,0,1,55 DA:355,55 DA:357,44 BRDA:357,0,0,11 -BRDA:357,0,1,44 +BRDA:357,0,1,11 +BRDA:357,0,2,33 +BRDA:357,0,3,44 DA:358,44 DA:361,11 BRDA:361,0,0,0 BRDA:361,0,1,11 DA:362,11 -BRF:77 -BRH:30 +BRF:79 +BRH:32 end_of_record diff --git a/test_regress/t/t_cover_line_trace.out b/test_regress/t/t_cover_line_trace.out index 654d78ec4..7403fb79e 100644 --- a/test_regress/t/t_cover_line_trace.out +++ b/test_regress/t/t_cover_line_trace.out @@ -1,133 +1,134 @@ $version Generated by VerilatedVcd $end $timescale 1ps $end $scope module top $end - $var wire 1 2! clk $end + $var wire 1 8! clk $end $scope module t $end - $var wire 1 2! clk $end - $var wire 1 ? toggle $end + $var wire 1 8! clk $end + $var wire 1 = toggle $end $var wire 32 # vlCoverageLineTrace_t_cover_line__15_block [31:0] $end - $var wire 32 @ cyc [31:0] $end + $var wire 32 > cyc [31:0] $end $var wire 32 $ vlCoverageLineTrace_t_cover_line__18_block [31:0] $end - $var wire 8 A cyc_copy [7:0] $end + $var wire 8 ? cyc_copy [7:0] $end $scope module b1 $end - $var wire 1 2! clk $end - $var wire 1 ? toggle $end - $var wire 32 &! vlCoverageLineTrace_t_cover_line__164_block [31:0] $end - $var wire 32 '! vlCoverageLineTrace_t_cover_line__166_else [31:0] $end - $var wire 32 K! vlCoverageLineTrace_t_cover_line__166_if [31:0] $end - $var wire 32 (! vlCoverageLineTrace_t_cover_line__170_else [31:0] $end - $var wire 32 )! vlCoverageLineTrace_t_cover_line__170_if [31:0] $end - $var wire 32 *! vlCoverageLineTrace_t_cover_line__174_else [31:0] $end + $var wire 1 8! clk $end + $var wire 1 = toggle $end + $var wire 32 ,! vlCoverageLineTrace_t_cover_line__164_block [31:0] $end + $var wire 32 -! vlCoverageLineTrace_t_cover_line__166_else [31:0] $end + $var wire 32 N! vlCoverageLineTrace_t_cover_line__166_if [31:0] $end + $var wire 32 .! vlCoverageLineTrace_t_cover_line__170_else [31:0] $end + $var wire 32 /! vlCoverageLineTrace_t_cover_line__170_if [31:0] $end + $var wire 32 0! vlCoverageLineTrace_t_cover_line__174_else [31:0] $end $upscope $end $scope module b2 $end - $var wire 1 2! clk $end - $var wire 1 ? toggle $end - $var wire 32 +! vlCoverageLineTrace_t_cover_line__164_block [31:0] $end - $var wire 32 ,! vlCoverageLineTrace_t_cover_line__166_else [31:0] $end - $var wire 32 L! vlCoverageLineTrace_t_cover_line__166_if [31:0] $end - $var wire 32 -! vlCoverageLineTrace_t_cover_line__170_else [31:0] $end - $var wire 32 .! vlCoverageLineTrace_t_cover_line__170_if [31:0] $end - $var wire 32 /! vlCoverageLineTrace_t_cover_line__174_else [31:0] $end + $var wire 1 8! clk $end + $var wire 1 = toggle $end + $var wire 32 1! vlCoverageLineTrace_t_cover_line__164_block [31:0] $end + $var wire 32 2! vlCoverageLineTrace_t_cover_line__166_else [31:0] $end + $var wire 32 O! vlCoverageLineTrace_t_cover_line__166_if [31:0] $end + $var wire 32 3! vlCoverageLineTrace_t_cover_line__170_else [31:0] $end + $var wire 32 4! vlCoverageLineTrace_t_cover_line__170_if [31:0] $end + $var wire 32 5! vlCoverageLineTrace_t_cover_line__174_else [31:0] $end $upscope $end $scope module t1 $end - $var wire 1 2! clk $end - $var wire 1 ? toggle $end - $var wire 32 0! vlCoverageLineTrace_t_cover_line__215_block [31:0] $end - $var wire 32 5! vlCoverageLineTrace_t_cover_line__219_block [31:0] $end - $var wire 32 6! vlCoverageLineTrace_t_cover_line__222_else [31:0] $end - $var wire 32 7! vlCoverageLineTrace_t_cover_line__222_if [31:0] $end - $var wire 32 1! vlCoverageLineTrace_t_cover_line__225_else [31:0] $end - $var wire 32 8! vlCoverageLineTrace_t_cover_line__225_if [31:0] $end + $var wire 1 8! clk $end + $var wire 1 = toggle $end + $var wire 32 6! vlCoverageLineTrace_t_cover_line__215_block [31:0] $end + $var wire 32 ;! vlCoverageLineTrace_t_cover_line__219_block [31:0] $end + $var wire 32 ! vlCoverageLineTrace_t_cover_line__225_if [31:0] $end $upscope $end - $var wire 32 B vlCoverageLineTrace_t_cover_line__55_block [31:0] $end - $var wire 32 C vlCoverageLineTrace_t_cover_line__56_else [31:0] $end - $var wire 32 D vlCoverageLineTrace_t_cover_line__56_if [31:0] $end - $var wire 32 E vlCoverageLineTrace_t_cover_line__60_else [31:0] $end - $var wire 32 F vlCoverageLineTrace_t_cover_line__60_if [31:0] $end - $var wire 32 G vlCoverageLineTrace_t_cover_line__61_else [31:0] $end - $var wire 32 H vlCoverageLineTrace_t_cover_line__61_if [31:0] $end - $var wire 32 I vlCoverageLineTrace_t_cover_line__66_else [31:0] $end - $var wire 32 J vlCoverageLineTrace_t_cover_line__66_if [31:0] $end - $var wire 32 K vlCoverageLineTrace_t_cover_line__67_else [31:0] $end - $var wire 32 L vlCoverageLineTrace_t_cover_line__67_if [31:0] $end - $var wire 32 M vlCoverageLineTrace_t_cover_line__73_else [31:0] $end - $var wire 32 N vlCoverageLineTrace_t_cover_line__73_if [31:0] $end - $var wire 32 O vlCoverageLineTrace_t_cover_line__74_else [31:0] $end - $var wire 32 P vlCoverageLineTrace_t_cover_line__74_if [31:0] $end - $var wire 32 Q vlCoverageLineTrace_t_cover_line__83_elsif [31:0] $end - $var wire 32 R vlCoverageLineTrace_t_cover_line__87_elsif [31:0] $end - $var wire 32 S vlCoverageLineTrace_t_cover_line__91_else [31:0] $end - $var wire 32 T vlCoverageLineTrace_t_cover_line__91_if [31:0] $end - $var wire 32 9! vlCoverageLineTrace_t_cover_line__100_block [31:0] $end - $var wire 32 :! vlCoverageLineTrace_t_cover_line__101_block [31:0] $end - $var wire 32 ;! vlCoverageLineTrace_t_cover_line__104_block [31:0] $end - $var wire 32 ! l $end - $var wire 1 4! m $end - $var wire 6 . tab [5:0] $end + $var wire 1 8! clk $end + $var wire 32 > cyc [31:0] $end + $var wire 1 2 a $end + $var wire 1 3 b $end + $var wire 1 * c $end + $var wire 1 ` d $end + $var wire 1 4 e $end + $var wire 1 a f $end + $var wire 1 + g $end + $var wire 1 b h $end + $var wire 1 c k $end + $var wire 1 C! l $end + $var wire 1 :! m $end + $var wire 6 , tab [5:0] $end $var wire 8 d data[0][0] [7:0] $end $var wire 8 e data[0][1] [7:0] $end $var wire 8 f data[1][0] [7:0] $end $var wire 8 g data[1][1] [7:0] $end $var wire 32 % vlCoverageLineTrace_t_cover_line__315_block [31:0] $end - $var wire 32 / vlCoverageLineTrace_t_cover_line__318_block [31:0] $end + $var wire 32 - vlCoverageLineTrace_t_cover_line__318_block [31:0] $end $var wire 32 h vlCoverageLineTrace_t_cover_line__323_block [31:0] $end - $var wire 8 ?! get_arr__Vstatic__arr[0] [7:0] $end - $var wire 8 @! get_arr__Vstatic__arr[1] [7:0] $end - $var wire 32 7 vlCoverageLineTrace_t_cover_line__328_cond_else [31:0] $end - $var wire 32 8 vlCoverageLineTrace_t_cover_line__328_cond_then [31:0] $end - $var wire 32 9 vlCoverageLineTrace_t_cover_line__329_cond_else [31:0] $end - $var wire 32 : vlCoverageLineTrace_t_cover_line__329_cond_then [31:0] $end - $var wire 32 0 vlCoverageLineTrace_t_cover_line__330_cond_else [31:0] $end - $var wire 32 1 vlCoverageLineTrace_t_cover_line__330_cond_then [31:0] $end + $var wire 8 D! get_arr__Vstatic__arr[0] [7:0] $end + $var wire 8 E! get_arr__Vstatic__arr[1] [7:0] $end + $var wire 32 5 vlCoverageLineTrace_t_cover_line__328_cond_else [31:0] $end + $var wire 32 6 vlCoverageLineTrace_t_cover_line__328_cond_then [31:0] $end + $var wire 32 7 vlCoverageLineTrace_t_cover_line__329_cond_else [31:0] $end + $var wire 32 8 vlCoverageLineTrace_t_cover_line__329_cond_then [31:0] $end + $var wire 32 . vlCoverageLineTrace_t_cover_line__330_cond_else [31:0] $end + $var wire 32 / vlCoverageLineTrace_t_cover_line__330_cond_then [31:0] $end $var wire 32 i vlCoverageLineTrace_t_cover_line__331_block [31:0] $end $var wire 32 j vlCoverageLineTrace_t_cover_line__332_cond_else [31:0] $end $var wire 32 k vlCoverageLineTrace_t_cover_line__332_cond_then [31:0] $end $var wire 32 l vlCoverageLineTrace_t_cover_line__333_cond_else [31:0] $end $var wire 32 m vlCoverageLineTrace_t_cover_line__333_cond_then [31:0] $end - $var wire 32 ; vlCoverageLineTrace_t_cover_line__335_cond_else_1 [31:0] $end - $var wire 32 < vlCoverageLineTrace_t_cover_line__335_cond_then_1 [31:0] $end - $var wire 32 = vlCoverageLineTrace_t_cover_line__335_cond_else [31:0] $end - $var wire 32 > vlCoverageLineTrace_t_cover_line__335_cond_then [31:0] $end + $var wire 32 9 vlCoverageLineTrace_t_cover_line__335_cond_else_1 [31:0] $end + $var wire 32 : vlCoverageLineTrace_t_cover_line__335_cond_then_1 [31:0] $end + $var wire 32 ; vlCoverageLineTrace_t_cover_line__335_cond_else [31:0] $end + $var wire 32 < vlCoverageLineTrace_t_cover_line__335_cond_then [31:0] $end $var wire 32 n vlCoverageLineTrace_t_cover_line__338_cond_else [31:0] $end $var wire 32 o vlCoverageLineTrace_t_cover_line__338_cond_then [31:0] $end - $var wire 32 A! vlCoverageLineTrace_t_cover_line__344_cond_else [31:0] $end - $var wire 32 2 vlCoverageLineTrace_t_cover_line__344_cond_else_1 [31:0] $end - $var wire 32 B! vlCoverageLineTrace_t_cover_line__344_cond_then [31:0] $end - $var wire 32 3 vlCoverageLineTrace_t_cover_line__344_cond_then_1 [31:0] $end + $var wire 32 F! vlCoverageLineTrace_t_cover_line__344_cond_else [31:0] $end + $var wire 32 0 vlCoverageLineTrace_t_cover_line__344_cond_else_1 [31:0] $end + $var wire 32 G! vlCoverageLineTrace_t_cover_line__344_cond_then [31:0] $end + $var wire 32 1 vlCoverageLineTrace_t_cover_line__344_cond_then_1 [31:0] $end $var wire 32 & vlCoverageLineTrace_t_cover_line__347_block [31:0] $end $var wire 32 p vlCoverageLineTrace_t_cover_line__348_else [31:0] $end $var wire 32 q vlCoverageLineTrace_t_cover_line__348_if [31:0] $end @@ -136,48 +137,50 @@ $timescale 1ps $end $var wire 32 t vlCoverageLineTrace_t_cover_line__351_cond_else [31:0] $end $var wire 32 u vlCoverageLineTrace_t_cover_line__351_cond_then [31:0] $end $var wire 32 ' vlCoverageLineTrace_t_cover_line__354_block [31:0] $end - $var wire 32 ( vlCoverageLineTrace_t_cover_line__357_block [31:0] $end - $var wire 32 ) vlCoverageLineTrace_t_cover_line__361_else [31:0] $end - $var wire 32 C! vlCoverageLineTrace_t_cover_line__361_if [31:0] $end + $var wire 32 v vlCoverageLineTrace_t_cover_line__357_block [31:0] $end + $var wire 32 w vlCoverageLineTrace_t_cover_line__357_cond_else [31:0] $end + $var wire 32 x vlCoverageLineTrace_t_cover_line__357_cond_then [31:0] $end + $var wire 32 y vlCoverageLineTrace_t_cover_line__361_else [31:0] $end + $var wire 32 z vlCoverageLineTrace_t_cover_line__361_if [31:0] $end $scope module unnamedblk1 $end - $var wire 32 D! i [31:0] $end + $var wire 32 H! i [31:0] $end $upscope $end $scope module unnamedblk2 $end - $var wire 32 E! i [31:0] $end + $var wire 32 { i [31:0] $end $upscope $end $upscope $end $scope module o1 $end - $var wire 1 2! clk $end - $var wire 1 ? toggle $end - $var wire 32 v vlCoverageLineTrace_t_cover_line__253_block [31:0] $end - $var wire 32 w vlCoverageLineTrace_t_cover_line__254_else [31:0] $end - $var wire 32 x vlCoverageLineTrace_t_cover_line__254_if [31:0] $end - $var wire 32 y vlCoverageLineTrace_t_cover_line__257_else [31:0] $end - $var wire 32 F! vlCoverageLineTrace_t_cover_line__257_if [31:0] $end + $var wire 1 8! clk $end + $var wire 1 = toggle $end + $var wire 32 | vlCoverageLineTrace_t_cover_line__253_block [31:0] $end + $var wire 32 } vlCoverageLineTrace_t_cover_line__254_else [31:0] $end + $var wire 32 ~ vlCoverageLineTrace_t_cover_line__254_if [31:0] $end + $var wire 32 !! vlCoverageLineTrace_t_cover_line__257_else [31:0] $end + $var wire 32 I! vlCoverageLineTrace_t_cover_line__257_if [31:0] $end $upscope $end $scope module par1 $end - $var wire 32 G! CALLS_FUNC [31:0] $end - $var wire 32 H! vlCoverageLineTrace_t_cover_line__288_block [31:0] $end - $var wire 32 I! vlCoverageLineTrace_t_cover_line__289_else [31:0] $end - $var wire 32 J! vlCoverageLineTrace_t_cover_line__289_if [31:0] $end + $var wire 32 J! CALLS_FUNC [31:0] $end + $var wire 32 K! vlCoverageLineTrace_t_cover_line__288_block [31:0] $end + $var wire 32 L! vlCoverageLineTrace_t_cover_line__289_else [31:0] $end + $var wire 32 M! vlCoverageLineTrace_t_cover_line__289_if [31:0] $end $upscope $end $scope module tab1 $end - $var wire 1 2! clk $end - $var wire 4 z cyc4 [3:0] $end - $var wire 32 { decoded [31:0] $end - $var wire 32 | vlCoverageLineTrace_t_cover_line__266_block [31:0] $end - $var wire 32 } vlCoverageLineTrace_t_cover_line__268_case [31:0] $end - $var wire 32 ~ vlCoverageLineTrace_t_cover_line__269_case [31:0] $end - $var wire 32 !! vlCoverageLineTrace_t_cover_line__270_case [31:0] $end - $var wire 32 "! vlCoverageLineTrace_t_cover_line__271_case [31:0] $end - $var wire 32 #! vlCoverageLineTrace_t_cover_line__272_case [31:0] $end - $var wire 32 $! vlCoverageLineTrace_t_cover_line__273_case [31:0] $end - $var wire 32 %! vlCoverageLineTrace_t_cover_line__277_block [31:0] $end + $var wire 1 8! clk $end + $var wire 4 "! cyc4 [3:0] $end + $var wire 32 #! decoded [31:0] $end + $var wire 32 $! vlCoverageLineTrace_t_cover_line__266_block [31:0] $end + $var wire 32 %! vlCoverageLineTrace_t_cover_line__268_case [31:0] $end + $var wire 32 &! vlCoverageLineTrace_t_cover_line__269_case [31:0] $end + $var wire 32 '! vlCoverageLineTrace_t_cover_line__270_case [31:0] $end + $var wire 32 (! vlCoverageLineTrace_t_cover_line__271_case [31:0] $end + $var wire 32 )! vlCoverageLineTrace_t_cover_line__272_case [31:0] $end + $var wire 32 *! vlCoverageLineTrace_t_cover_line__273_case [31:0] $end + $var wire 32 +! vlCoverageLineTrace_t_cover_line__277_block [31:0] $end $upscope $end $upscope $end $scope module my_pkg $end - $var wire 32 * x [31:0] $end - $var wire 32 + vlCoverageLineTrace_t_cover_line__301_block [31:0] $end + $var wire 32 ( x [31:0] $end + $var wire 32 ) vlCoverageLineTrace_t_cover_line__301_block [31:0] $end $upscope $end $upscope $end $enddefinitions $end @@ -189,32 +192,32 @@ b00000000000000000000000000000001 $ b00000000000000000000000000000001 % b00000000000000000000000000000001 & b00000000000000000000000000000101 ' -b00000000000000000000000000000100 ( +b00000000000000000000000000000001 ( b00000000000000000000000000000001 ) -b00000000000000000000000000000001 * -b00000000000000000000000000000001 + -0, -0- -b000001 . +0* +0+ +b000001 , +b00000000000000000000000000000010 - +b00000000000000000000000000000000 . b00000000000000000000000000000010 / -b00000000000000000000000000000000 0 -b00000000000000000000000000000010 1 -b00000000000000000000000000000010 2 -b00000000000000000000000000000000 3 +b00000000000000000000000000000010 0 +b00000000000000000000000000000000 1 +02 +03 04 -05 -06 -b00000000000000000000000000000010 7 -b00000000000000000000000000000000 8 +b00000000000000000000000000000010 5 +b00000000000000000000000000000000 6 +b00000000000000000000000000000000 7 +b00000000000000000000000000000010 8 b00000000000000000000000000000000 9 b00000000000000000000000000000010 : -b00000000000000000000000000000000 ; -b00000000000000000000000000000010 < -b00000000000000000000000000000010 = -b00000000000000000000000000000000 > -0? -b00000000000000000000000000000001 @ -b00000001 A +b00000000000000000000000000000010 ; +b00000000000000000000000000000000 < +0= +b00000000000000000000000000000001 > +b00000001 ? +b00000000000000000000000000000000 @ +b00000000000000000000000000000000 A b00000000000000000000000000000000 B b00000000000000000000000000000000 C b00000000000000000000000000000000 D @@ -245,10 +248,10 @@ b00000000000000000000000000000000 \ b00000000000000000000000000000000 ] b00000000000000000000000000000000 ^ b00000000000000000000000000000000 _ -b00000000000000000000000000000000 ` -0a +0` +1a 1b -1c +0c b00000000 d b00000000 e b00000000 f @@ -267,17 +270,17 @@ b00000000000000000000000000000000 r b00000000000000000000000000000000 s b00000000000000000000000000000001 t b00000000000000000000000000000000 u -b00000000000000000000000000000000 v -b00000000000000000000000000000000 w -b00000000000000000000000000000000 x -b00000000000000000000000000000000 y -b0000 z -b00000000000000000000000000000000 { +b00000000000000000000000000000100 v +b00000000000000000000000000000011 w +b00000000000000000000000000000001 x +b00000000000000000000000000000001 y +b00000000000000000000000000000000 z +b00000000000000000000000000000111 { b00000000000000000000000000000000 | b00000000000000000000000000000000 } b00000000000000000000000000000000 ~ b00000000000000000000000000000000 !! -b00000000000000000000000000000000 "! +b0000 "! b00000000000000000000000000000000 #! b00000000000000000000000000000000 $! b00000000000000000000000000000000 %! @@ -293,65 +296,69 @@ b00000000000000000000000000000000 .! b00000000000000000000000000000000 /! b00000000000000000000000000000000 0! b00000000000000000000000000000000 1! -02! +b00000000000000000000000000000000 2! b00000000000000000000000000000000 3! -04! +b00000000000000000000000000000000 4! b00000000000000000000000000000000 5! b00000000000000000000000000000000 6! b00000000000000000000000000000000 7! -b00000000000000000000000000000000 8! +08! b00000000000000000000000000000000 9! -b00000000000000000000000000000000 :! +0:! b00000000000000000000000000000000 ;! b00000000000000000000000000000000 ! -b00000000 ?! -b00000000 @! +b00000000000000000000000000000000 =! +b00000000000000000000000000000000 >! +b00000000000000000000000000000000 ?! +b00000000000000000000000000000000 @! b00000000000000000000000000000000 A! b00000000000000000000000000000000 B! -b00000000000000000000000000000000 C! -b00000000000000000000000000000101 D! -b00000000000000000000000000000111 E! +0C! +b00000000 D! +b00000000 E! b00000000000000000000000000000000 F! -b00000000000000000000000000000010 G! -b00000000000000000000000000000000 H! +b00000000000000000000000000000000 G! +b00000000000000000000000000000101 H! b00000000000000000000000000000000 I! -b00000000000000000000000000000000 J! +b00000000000000000000000000000010 J! b00000000000000000000000000000000 K! b00000000000000000000000000000000 L! +b00000000000000000000000000000000 M! +b00000000000000000000000000000000 N! +b00000000000000000000000000000000 O! #10 -1, -1- -b000011 . +1* +1+ +b000011 , +b00000000000000000000000000000011 - b00000000000000000000000000000011 / -b00000000000000000000000000000011 1 -b00000000000000000000000000000001 3 -16 -b00000000000000000000000000000100 7 +b00000000000000000000000000000001 1 +14 +b00000000000000000000000000000100 5 +b00000000000000000000000000000001 7 +b00000000000000000000000000000011 8 b00000000000000000000000000000001 9 b00000000000000000000000000000011 : -b00000000000000000000000000000001 ; -b00000000000000000000000000000011 < -b00000000000000000000000000000001 > -b00000000000000000000000000000010 @ -b00000010 A +b00000000000000000000000000000001 < +b00000000000000000000000000000010 > +b00000010 ? +b00000000000000000000000000000001 @ b00000000000000000000000000000001 B -b00000000000000000000000000000001 D +b00000000000000000000000000000001 C b00000000000000000000000000000001 E b00000000000000000000000000000001 G b00000000000000000000000000000001 I b00000000000000000000000000000001 K b00000000000000000000000000000001 M -b00000000000000000000000000000001 O +b00000000000000000000000000000001 Q b00000000000000000000000000000001 S -b00000000000000000000000000000001 W +b00000000000000000000000000000001 V +b00000000000000000000000000000001 X b00000000000000000000000000000001 Y -b00000000000000000000000000000001 Z +b00000000000000000000000000000001 [ b00000000000000000000000000000001 \ b00000000000000000000000000000001 ] -b00000000000000000000000000000001 ^ -b00000000000000000000000000000001 ` +b00000000000000000000000000000001 _ b00000010 d b00000001 e b00000000000000000000000000000001 i @@ -360,62 +367,67 @@ b00000000000000000000000000000001 l b00000000000000000000000000000010 o b00000000000000000000000000000010 p b00000000000000000000000000000001 u -b00000000000000000000000000000001 v -b00000000000000000000000000000001 w -b0001 z +b00000000000000000000000000001000 v +b00000000000000000000000000000110 w +b00000000000000000000000000000010 x +b00000000000000000000000000000010 y b00000000000000000000000000000001 | +b00000000000000000000000000000001 } +b0001 "! b00000000000000000000000000000001 $! -b00000000000000000000000000000001 %! -b00000000000000000000000000000001 &! -b00000000000000000000000000000001 '! -b00000000000000000000000000000001 (! b00000000000000000000000000000001 *! b00000000000000000000000000000001 +! b00000000000000000000000000000001 ,! b00000000000000000000000000000001 -! -b00000000000000000000000000000001 /! +b00000000000000000000000000000001 .! b00000000000000000000000000000001 0! b00000000000000000000000000000001 1! -12! +b00000000000000000000000000000001 2! +b00000000000000000000000000000001 3! b00000000000000000000000000000001 5! b00000000000000000000000000000001 6! +b00000000000000000000000000000001 7! +18! +b00000000000000000000000000000001 ;! +b00000000000000000000000000000001 +b00000011 ? +b00000000000000000000000000000010 @ b00000000000000000000000000000010 B -b00000000000000000000000000000010 D +b00000000000000000000000000000010 C b00000000000000000000000000000010 E b00000000000000000000000000000010 G b00000000000000000000000000000010 I b00000000000000000000000000000010 K b00000000000000000000000000000010 M -b00000000000000000000000000000010 O +b00000000000000000000000000000010 Q b00000000000000000000000000000010 S -b00000000000000000000000000000010 W +b00000000000000000000000000000010 V +b00000000000000000000000000000010 X b00000000000000000000000000000010 Y -b00000000000000000000000000000010 Z +b00000000000000000000000000000010 [ b00000000000000000000000000000010 \ b00000000000000000000000000000010 ] -b00000000000000000000000000000010 ^ -b00000000000000000000000000000010 ` +b00000000000000000000000000000010 _ b00000000 d b00000000 e b00000000000000000000000000000010 h @@ -425,67 +437,72 @@ b00000000000000000000000000000010 l b00000000000000000000000000000011 o b00000000000000000000000000000011 p b00000000000000000000000000000010 t -b00000000000000000000000000000010 v -b00000000000000000000000000000010 w -b0010 z -b00000000000000000000000000001010 { +b00000000000000000000000000001100 v +b00000000000000000000000000001001 w +b00000000000000000000000000000011 x +b00000000000000000000000000000011 y b00000000000000000000000000000010 | -b00000000000000000000000000000001 } -b00000000000000000000000000000010 %! -b00000000000000000000000000000010 &! -b00000000000000000000000000000010 '! -b00000000000000000000000000000010 (! -b00000000000000000000000000000010 *! +b00000000000000000000000000000010 } +b0010 "! +b00000000000000000000000000001010 #! +b00000000000000000000000000000010 $! +b00000000000000000000000000000001 %! b00000000000000000000000000000010 +! b00000000000000000000000000000010 ,! b00000000000000000000000000000010 -! -b00000000000000000000000000000010 /! +b00000000000000000000000000000010 .! b00000000000000000000000000000010 0! b00000000000000000000000000000010 1! -12! +b00000000000000000000000000000010 2! +b00000000000000000000000000000010 3! b00000000000000000000000000000010 5! b00000000000000000000000000000010 6! +b00000000000000000000000000000010 7! +18! +b00000000000000000000000000000010 ;! +b00000000000000000000000000000010 -1? -b00000000000000000000000000000100 @ -b00000100 A +b00000000000000000000000000000011 1 +b00000000000000000000000000001010 5 +b00000000000000000000000000000111 7 +b00000000000000000000000000000110 9 +b00000000000000000000000000000100 : +b00000000000000000000000000000010 < +1= +b00000000000000000000000000000100 > +b00000100 ? +b00000000000000000000000000000011 @ b00000000000000000000000000000011 B -b00000000000000000000000000000011 D +b00000000000000000000000000000001 D b00000000000000000000000000000001 F b00000000000000000000000000000001 H b00000000000000000000000000000001 J b00000000000000000000000000000001 L b00000000000000000000000000000001 N -b00000000000000000000000000000001 P -b00000000000000000000000000000001 Q -b00000000000000000000000000000001 U +b00000000000000000000000000000001 O +b00000000000000000000000000000011 S +b00000000000000000000000000000001 T +b00000000000000000000000000000011 X b00000000000000000000000000000011 Y -b00000000000000000000000000000011 Z +b00000000000000000000000000000011 [ b00000000000000000000000000000011 \ b00000000000000000000000000000011 ] -b00000000000000000000000000000011 ^ -b00000000000000000000000000000011 ` -1a +b00000000000000000000000000000011 _ +1` b00000000000000000000000000000011 h b00000000000000000000000000000011 i b00000000000000000000000000000001 k @@ -493,69 +510,74 @@ b00000000000000000000000000000011 l b00000000000000000000000000000100 o b00000000000000000000000000000100 p b00000000000000000000000000000011 t -b00000000000000000000000000000011 v -b00000000000000000000000000000011 w -b0011 z -b00000000000000000000000000010100 { +b00000000000000000000000000010000 v +b00000000000000000000000000001100 w +b00000000000000000000000000000100 x +b00000000000000000000000000000100 y b00000000000000000000000000000011 | -b00000000000000000000000000000001 ~ -b00000000000000000000000000000011 %! -b00000000000000000000000000000011 &! -b00000000000000000000000000000011 '! -b00000000000000000000000000000011 (! -b00000000000000000000000000000011 *! +b00000000000000000000000000000011 } +b0011 "! +b00000000000000000000000000010100 #! +b00000000000000000000000000000011 $! +b00000000000000000000000000000001 &! b00000000000000000000000000000011 +! b00000000000000000000000000000011 ,! b00000000000000000000000000000011 -! -b00000000000000000000000000000011 /! +b00000000000000000000000000000011 .! b00000000000000000000000000000011 0! b00000000000000000000000000000011 1! -12! +b00000000000000000000000000000011 2! +b00000000000000000000000000000011 3! b00000000000000000000000000000011 5! b00000000000000000000000000000011 6! +b00000000000000000000000000000011 7! +18! +b00000000000000000000000000000011 ;! +b00000000000000000000000000000011 -0? -b00000000000000000000000000000101 @ -b00000101 A +b00000000000000000000000000000100 1 +14 +b00000000000000000000000000001101 5 +b00000000000000000000000000001010 7 +b00000000000000000000000000000111 9 +b00000000000000000000000000000110 : +b00000000000000000000000000000011 < +0= +b00000000000000000000000000000101 > +b00000101 ? +b00000000000000000000000000000100 @ b00000000000000000000000000000100 B -b00000000000000000000000000000100 D +b00000000000000000000000000000011 C b00000000000000000000000000000011 E b00000000000000000000000000000011 G b00000000000000000000000000000011 I b00000000000000000000000000000011 K b00000000000000000000000000000011 M -b00000000000000000000000000000011 O -b00000000000000000000000000000001 R -b00000000000000000000000000000011 W -b00000000000000000000000000000100 Y -b00000000000000000000000000000001 [ -b00000000000000000000000000000100 ] -b00000000000000000000000000000001 _ -0a -0c +b00000000000000000000000000000001 P +b00000000000000000000000000000100 S +b00000000000000000000000000000011 V +b00000000000000000000000000000100 X +b00000000000000000000000000000001 Z +b00000000000000000000000000000100 \ +b00000000000000000000000000000001 ^ +0` +0b b00000000000000000000000000000100 h b00000000000000000000000000000100 i b00000000000000000000000000000011 j @@ -564,63 +586,68 @@ b00000000000000000000000000000101 o b00000000000000000000000000000001 q b00000000000000000000000000000001 r b00000000000000000000000000000100 t -b00000000000000000000000000000100 v -b00000000000000000000000000000001 x -b00000000000000000000000000000001 y -b0100 z -b00000000000000000000000000011110 { +b00000000000000000000000000010100 v +b00000000000000000000000000001111 w +b00000000000000000000000000000101 x +b00000000000000000000000000000101 y b00000000000000000000000000000100 | +b00000000000000000000000000000001 ~ b00000000000000000000000000000001 !! -b00000000000000000000000000000100 %! -b00000000000000000000000000000100 &! -b00000000000000000000000000000100 '! -b00000000000000000000000000000001 )! +b0100 "! +b00000000000000000000000000011110 #! +b00000000000000000000000000000100 $! +b00000000000000000000000000000001 '! b00000000000000000000000000000100 +! b00000000000000000000000000000100 ,! -b00000000000000000000000000000001 .! -b00000000000000000000000000000100 0! +b00000000000000000000000000000100 -! +b00000000000000000000000000000001 /! b00000000000000000000000000000100 1! -12! -b00000000000000000000000000000100 5! -b00000000000000000000000000000001 7! +b00000000000000000000000000000100 2! +b00000000000000000000000000000001 4! +b00000000000000000000000000000100 6! +b00000000000000000000000000000100 7! +18! +b00000000000000000000000000000100 ;! +b00000000000000000000000000000001 =! #45 -0, -0- +0* +0+ +b00000000000000000000000000001010 - b00000000000000000000000000001010 / -b00000000000000000000000000001010 1 -b00000000000000000000000000000110 2 -b00000000000000000000000000001110 7 -b00000000000000000000000000001011 9 -b00000000000000000000000000001000 ; -02! +b00000000000000000000000000000110 0 +b00000000000000000000000000001110 5 +b00000000000000000000000000001011 7 +b00000000000000000000000000001000 9 +08! #50 -1, -1- +1* +1+ +b00000000000000000000000000001011 - b00000000000000000000000000001011 / -b00000000000000000000000000001011 1 -b00000000000000000000000000000101 3 -b00000000000000000000000000010000 7 -b00000000000000000000000000001101 9 -b00000000000000000000000000001010 ; -b00000000000000000000000000000110 @ -b00000110 A +b00000000000000000000000000000101 1 +b00000000000000000000000000010000 5 +b00000000000000000000000000001101 7 +b00000000000000000000000000001010 9 +b00000000000000000000000000000110 > +b00000110 ? +b00000000000000000000000000000101 @ b00000000000000000000000000000101 B -b00000000000000000000000000000101 D +b00000000000000000000000000000100 C b00000000000000000000000000000100 E b00000000000000000000000000000100 G b00000000000000000000000000000100 I b00000000000000000000000000000100 K b00000000000000000000000000000100 M -b00000000000000000000000000000100 O -b00000000000000000000000000000001 T -b00000000000000000000000000000001 V -b00000000000000000000000000000101 Y -b00000000000000000000000000000100 Z -b00000000000000000000000000000100 \ -b00000000000000000000000000000101 ] -b00000000000000000000000000000100 ^ -b00000000000000000000000000000100 ` -1c +b00000000000000000000000000000001 R +b00000000000000000000000000000101 S +b00000000000000000000000000000001 U +b00000000000000000000000000000101 X +b00000000000000000000000000000100 Y +b00000000000000000000000000000100 [ +b00000000000000000000000000000101 \ +b00000000000000000000000000000100 ] +b00000000000000000000000000000100 _ +1b b00000000000000000000000000000101 h b00000000000000000000000000000101 i b00000000000000000000000000000100 j @@ -628,68 +655,73 @@ b00000000000000000000000000000101 l b00000000000000000000000000000110 o b00000000000000000000000000000101 p b00000000000000000000000000000101 t -b00000000000000000000000000000101 v -b00000000000000000000000000000100 w -b0101 z -b00000000000000000000000000101000 { +b00000000000000000000000000011000 v +b00000000000000000000000000010010 w +b00000000000000000000000000000110 x +b00000000000000000000000000000110 y b00000000000000000000000000000101 | -b00000000000000000000000000000001 "! -b00000000000000000000000000000101 %! -b00000000000000000000000000000101 &! -b00000000000000000000000000000101 '! -b00000000000000000000000000000100 (! -b00000000000000000000000000000100 *! +b00000000000000000000000000000100 } +b0101 "! +b00000000000000000000000000101000 #! +b00000000000000000000000000000101 $! +b00000000000000000000000000000001 (! b00000000000000000000000000000101 +! b00000000000000000000000000000101 ,! -b00000000000000000000000000000100 -! -b00000000000000000000000000000100 /! -b00000000000000000000000000000101 0! +b00000000000000000000000000000101 -! +b00000000000000000000000000000100 .! +b00000000000000000000000000000100 0! b00000000000000000000000000000101 1! -12! -b00000000000000000000000000000001 3! -b00000000000000000000000000000110 5! +b00000000000000000000000000000101 2! +b00000000000000000000000000000100 3! +b00000000000000000000000000000100 5! b00000000000000000000000000000101 6! -b00000000000000000000000000000001 8! +b00000000000000000000000000000101 7! +18! +b00000000000000000000000000000001 9! +b00000000000000000000000000000110 ;! +b00000000000000000000000000000101 ! #55 -0, -0- +0* +0+ +b00000000000000000000000000001100 - b00000000000000000000000000001100 / -b00000000000000000000000000001100 1 -b00000000000000000000000000000111 2 -b00000000000000000000000000010001 7 -b00000000000000000000000000001110 9 -b00000000000000000000000000001011 ; -02! +b00000000000000000000000000000111 0 +b00000000000000000000000000010001 5 +b00000000000000000000000000001110 7 +b00000000000000000000000000001011 9 +08! #60 -1, -1- +1* +1+ +b00000000000000000000000000001101 - b00000000000000000000000000001101 / -b00000000000000000000000000001101 1 -b00000000000000000000000000000110 3 -b00000000000000000000000000010011 7 -b00000000000000000000000000010000 9 -b00000000000000000000000000001100 ; -b00000000000000000000000000000111 < -b00000000000000000000000000000100 > -b00000000000000000000000000000111 @ -b00000111 A +b00000000000000000000000000000110 1 +b00000000000000000000000000010011 5 +b00000000000000000000000000010000 7 +b00000000000000000000000000001100 9 +b00000000000000000000000000000111 : +b00000000000000000000000000000100 < +b00000000000000000000000000000111 > +b00000111 ? +b00000000000000000000000000000110 @ b00000000000000000000000000000110 B -b00000000000000000000000000000110 D +b00000000000000000000000000000101 C b00000000000000000000000000000101 E b00000000000000000000000000000101 G b00000000000000000000000000000101 I b00000000000000000000000000000101 K b00000000000000000000000000000101 M -b00000000000000000000000000000101 O -b00000000000000000000000000000011 S -b00000000000000000000000000000100 W -b00000000000000000000000000000110 Y -b00000000000000000000000000000101 Z -b00000000000000000000000000000101 \ -b00000000000000000000000000000110 ] -b00000000000000000000000000000101 ^ -b00000000000000000000000000000101 ` -1a +b00000000000000000000000000000011 Q +b00000000000000000000000000000110 S +b00000000000000000000000000000100 V +b00000000000000000000000000000110 X +b00000000000000000000000000000101 Y +b00000000000000000000000000000101 [ +b00000000000000000000000000000110 \ +b00000000000000000000000000000101 ] +b00000000000000000000000000000101 _ +1` b00000000000000000000000000000110 h b00000000000000000000000000000110 i b00000000000000000000000000000010 k @@ -697,69 +729,74 @@ b00000000000000000000000000000110 l b00000000000000000000000000000111 o b00000000000000000000000000000110 p b00000000000000000000000000000110 t -b00000000000000000000000000000110 v -b00000000000000000000000000000101 w -b0110 z -b00000000000000000000000000110010 { +b00000000000000000000000000011100 v +b00000000000000000000000000010101 w +b00000000000000000000000000000111 x +b00000000000000000000000000000111 y b00000000000000000000000000000110 | -b00000000000000000000000000000001 #! -b00000000000000000000000000000110 %! -b00000000000000000000000000000110 &! -b00000000000000000000000000000110 '! -b00000000000000000000000000000101 (! -b00000000000000000000000000000101 *! +b00000000000000000000000000000101 } +b0110 "! +b00000000000000000000000000110010 #! +b00000000000000000000000000000110 $! +b00000000000000000000000000000001 )! b00000000000000000000000000000110 +! b00000000000000000000000000000110 ,! -b00000000000000000000000000000101 -! -b00000000000000000000000000000101 /! -b00000000000000000000000000000110 0! +b00000000000000000000000000000110 -! +b00000000000000000000000000000101 .! +b00000000000000000000000000000101 0! b00000000000000000000000000000110 1! -12! -b00000000000000000000000000000111 5! +b00000000000000000000000000000110 2! +b00000000000000000000000000000101 3! +b00000000000000000000000000000101 5! b00000000000000000000000000000110 6! +b00000000000000000000000000000110 7! +18! +b00000000000000000000000000000111 ;! +b00000000000000000000000000000110 -b00000000000000000000000000001000 @ -b00001000 A +b00000000000000000000000000000111 1 +14 +b00000000000000000000000000010110 5 +b00000000000000000000000000010011 7 +b00000000000000000000000000001101 9 +b00000000000000000000000000001001 : +b00000000000000000000000000000101 < +b00000000000000000000000000001000 > +b00001000 ? +b00000000000000000000000000000111 @ b00000000000000000000000000000111 B -b00000000000000000000000000000111 D +b00000000000000000000000000000110 C b00000000000000000000000000000110 E b00000000000000000000000000000110 G b00000000000000000000000000000110 I b00000000000000000000000000000110 K b00000000000000000000000000000110 M -b00000000000000000000000000000110 O -b00000000000000000000000000000100 S -b00000000000000000000000000000101 W -b00000000000000000000000000000111 Y -b00000000000000000000000000000110 Z -b00000000000000000000000000000110 \ -b00000000000000000000000000000111 ] -b00000000000000000000000000000110 ^ -b00000000000000000000000000000110 ` -0a +b00000000000000000000000000000100 Q +b00000000000000000000000000000111 S +b00000000000000000000000000000101 V +b00000000000000000000000000000111 X +b00000000000000000000000000000110 Y +b00000000000000000000000000000110 [ +b00000000000000000000000000000111 \ +b00000000000000000000000000000110 ] +b00000000000000000000000000000110 _ +0` b00000000000000000000000000000111 h b00000000000000000000000000000111 i b00000000000000000000000000000101 j @@ -767,63 +804,68 @@ b00000000000000000000000000000111 l b00000000000000000000000000001000 o b00000000000000000000000000000111 p b00000000000000000000000000000111 t -b00000000000000000000000000000111 v -b00000000000000000000000000000110 w -b0111 z -b00000000000000000000000000000000 { +b00000000000000000000000000100000 v +b00000000000000000000000000011000 w +b00000000000000000000000000001000 x +b00000000000000000000000000001000 y b00000000000000000000000000000111 | -b00000000000000000000000000000010 $! -b00000000000000000000000000000111 %! -b00000000000000000000000000000111 &! -b00000000000000000000000000000111 '! -b00000000000000000000000000000110 (! -b00000000000000000000000000000110 *! +b00000000000000000000000000000110 } +b0111 "! +b00000000000000000000000000000000 #! +b00000000000000000000000000000111 $! +b00000000000000000000000000000010 *! b00000000000000000000000000000111 +! b00000000000000000000000000000111 ,! -b00000000000000000000000000000110 -! -b00000000000000000000000000000110 /! -b00000000000000000000000000000111 0! +b00000000000000000000000000000111 -! +b00000000000000000000000000000110 .! +b00000000000000000000000000000110 0! b00000000000000000000000000000111 1! -12! -b00000000000000000000000000001000 5! +b00000000000000000000000000000111 2! +b00000000000000000000000000000110 3! +b00000000000000000000000000000110 5! b00000000000000000000000000000111 6! +b00000000000000000000000000000111 7! +18! +b00000000000000000000000000001000 ;! +b00000000000000000000000000000111 +b00001001 ? +b00000000000000000000000000001000 @ b00000000000000000000000000001000 B -b00000000000000000000000000001000 D +b00000000000000000000000000000111 C b00000000000000000000000000000111 E b00000000000000000000000000000111 G b00000000000000000000000000000111 I b00000000000000000000000000000111 K b00000000000000000000000000000111 M -b00000000000000000000000000000111 O -b00000000000000000000000000000101 S -b00000000000000000000000000000110 W -b00000000000000000000000000001000 Y -b00000000000000000000000000000111 Z -b00000000000000000000000000000111 \ -b00000000000000000000000000001000 ] -b00000000000000000000000000000111 ^ -b00000000000000000000000000000111 ` +b00000000000000000000000000000101 Q +b00000000000000000000000000001000 S +b00000000000000000000000000000110 V +b00000000000000000000000000001000 X +b00000000000000000000000000000111 Y +b00000000000000000000000000000111 [ +b00000000000000000000000000001000 \ +b00000000000000000000000000000111 ] +b00000000000000000000000000000111 _ b00000000000000000000000000001000 h b00000000000000000000000000001000 i b00000000000000000000000000000110 j @@ -831,65 +873,70 @@ b00000000000000000000000000001000 l b00000000000000000000000000001001 o b00000000000000000000000000001000 p b00000000000000000000000000001000 t -b00000000000000000000000000001000 v -b00000000000000000000000000000111 w -b1000 z +b00000000000000000000000000100100 v +b00000000000000000000000000011011 w +b00000000000000000000000000001001 x +b00000000000000000000000000001001 y b00000000000000000000000000001000 | -b00000000000000000000000000000011 $! -b00000000000000000000000000001000 %! -b00000000000000000000000000001000 &! -b00000000000000000000000000001000 '! -b00000000000000000000000000000111 (! -b00000000000000000000000000000111 *! +b00000000000000000000000000000111 } +b1000 "! +b00000000000000000000000000001000 $! +b00000000000000000000000000000011 *! b00000000000000000000000000001000 +! b00000000000000000000000000001000 ,! -b00000000000000000000000000000111 -! -b00000000000000000000000000000111 /! -b00000000000000000000000000001000 0! +b00000000000000000000000000001000 -! +b00000000000000000000000000000111 .! +b00000000000000000000000000000111 0! b00000000000000000000000000001000 1! -12! -b00000000000000000000000000001001 5! +b00000000000000000000000000001000 2! +b00000000000000000000000000000111 3! +b00000000000000000000000000000111 5! b00000000000000000000000000001000 6! +b00000000000000000000000000001000 7! +18! +b00000000000000000000000000001001 ;! +b00000000000000000000000000001000 -b00000000000000000000000000001010 @ -b00001010 A +b00000000000000000000000000001001 1 +b00000000000000000000000000011100 5 +b00000000000000000000000000011001 7 +b00000000000000000000000000010010 9 +b00000000000000000000000000001010 : +b00000000000000000000000000000110 < +b00000000000000000000000000001010 > +b00001010 ? +b00000000000000000000000000001001 @ b00000000000000000000000000001001 B -b00000000000000000000000000001001 D +b00000000000000000000000000001000 C b00000000000000000000000000001000 E b00000000000000000000000000001000 G b00000000000000000000000000001000 I b00000000000000000000000000001000 K b00000000000000000000000000001000 M -b00000000000000000000000000001000 O -b00000000000000000000000000000110 S -b00000000000000000000000000000111 W -b00000000000000000000000000001001 Y -b00000000000000000000000000001000 Z -b00000000000000000000000000001000 \ -b00000000000000000000000000001001 ] -b00000000000000000000000000001000 ^ -b00000000000000000000000000001000 ` -1a +b00000000000000000000000000000110 Q +b00000000000000000000000000001001 S +b00000000000000000000000000000111 V +b00000000000000000000000000001001 X +b00000000000000000000000000001000 Y +b00000000000000000000000000001000 [ +b00000000000000000000000000001001 \ +b00000000000000000000000000001000 ] +b00000000000000000000000000001000 _ +1` b00000000000000000000000000001001 h b00000000000000000000000000001001 i b00000000000000000000000000000011 k @@ -897,68 +944,73 @@ b00000000000000000000000000001001 l b00000000000000000000000000001010 o b00000000000000000000000000001001 p b00000000000000000000000000001001 t -b00000000000000000000000000001001 v -b00000000000000000000000000001000 w -b1001 z +b00000000000000000000000000101000 v +b00000000000000000000000000011110 w +b00000000000000000000000000001010 x +b00000000000000000000000000001010 y b00000000000000000000000000001001 | -b00000000000000000000000000000100 $! -b00000000000000000000000000001001 %! -b00000000000000000000000000001001 &! -b00000000000000000000000000001001 '! -b00000000000000000000000000001000 (! -b00000000000000000000000000001000 *! +b00000000000000000000000000001000 } +b1001 "! +b00000000000000000000000000001001 $! +b00000000000000000000000000000100 *! b00000000000000000000000000001001 +! b00000000000000000000000000001001 ,! -b00000000000000000000000000001000 -! -b00000000000000000000000000001000 /! -b00000000000000000000000000001001 0! +b00000000000000000000000000001001 -! +b00000000000000000000000000001000 .! +b00000000000000000000000000001000 0! b00000000000000000000000000001001 1! -12! -b00000000000000000000000000001010 5! +b00000000000000000000000000001001 2! +b00000000000000000000000000001000 3! +b00000000000000000000000000001000 5! b00000000000000000000000000001001 6! +b00000000000000000000000000001001 7! +18! +b00000000000000000000000000001010 ;! +b00000000000000000000000000001001 -b00000000000000000000000000001011 @ -b00001011 A +b00000000000000000000000000001010 1 +14 +b00000000000000000000000000011111 5 +b00000000000000000000000000011100 7 +b00000000000000000000000000010011 9 +b00000000000000000000000000001100 : +b00000000000000000000000000000111 < +b00000000000000000000000000001011 > +b00001011 ? +b00000000000000000000000000001010 @ b00000000000000000000000000001010 B -b00000000000000000000000000001010 D +b00000000000000000000000000001001 C b00000000000000000000000000001001 E b00000000000000000000000000001001 G b00000000000000000000000000001001 I b00000000000000000000000000001001 K b00000000000000000000000000001001 M -b00000000000000000000000000001001 O -b00000000000000000000000000000111 S -b00000000000000000000000000000001 X -b00000000000000000000000000001010 Y -b00000000000000000000000000001001 Z -b00000000000000000000000000001001 \ -b00000000000000000000000000001010 ] -b00000000000000000000000000001001 ^ -b00000000000000000000000000001001 ` -0a +b00000000000000000000000000000111 Q +b00000000000000000000000000001010 S +b00000000000000000000000000000001 W +b00000000000000000000000000001010 X +b00000000000000000000000000001001 Y +b00000000000000000000000000001001 [ +b00000000000000000000000000001010 \ +b00000000000000000000000000001001 ] +b00000000000000000000000000001001 _ +0` b00000000000000000000000000001010 h b00000000000000000000000000001010 i b00000000000000000000000000000111 j @@ -966,22 +1018,26 @@ b00000000000000000000000000001010 l b00000000000000000000000000001011 o b00000000000000000000000000001010 p b00000000000000000000000000001010 t -b00000000000000000000000000001010 v -b00000000000000000000000000001001 w -b1010 z +b00000000000000000000000000101100 v +b00000000000000000000000000100001 w +b00000000000000000000000000001011 x +b00000000000000000000000000001011 y b00000000000000000000000000001010 | -b00000000000000000000000000000101 $! -b00000000000000000000000000001010 %! -b00000000000000000000000000001010 &! -b00000000000000000000000000001010 '! -b00000000000000000000000000001001 (! -b00000000000000000000000000001001 *! +b00000000000000000000000000001001 } +b1010 "! +b00000000000000000000000000001010 $! +b00000000000000000000000000000101 *! b00000000000000000000000000001010 +! b00000000000000000000000000001010 ,! -b00000000000000000000000000001001 -! -b00000000000000000000000000001001 /! -b00000000000000000000000000001010 0! +b00000000000000000000000000001010 -! +b00000000000000000000000000001001 .! +b00000000000000000000000000001001 0! b00000000000000000000000000001010 1! -12! -b00000000000000000000000000001011 5! +b00000000000000000000000000001010 2! +b00000000000000000000000000001001 3! +b00000000000000000000000000001001 5! b00000000000000000000000000001010 6! +b00000000000000000000000000001010 7! +18! +b00000000000000000000000000001011 ;! +b00000000000000000000000000001010 _vm_contextp__->debug())) {..."}, - {"type":"STMTEXPR","name":"","addr":"(SP)","loc":"a,0:0,0:0", + {"type":"TEXT","name":"","addr":"(TN)","loc":"d,11:8,11:9","shortText":"#ifdef VL_DEBUG..."}, + {"type":"TEXT","name":"","addr":"(UN)","loc":"d,11:8,11:9","shortText":"if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) {..."}, + {"type":"STMTEXPR","name":"","addr":"(VN)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CCALL","name":"","addr":"(TP)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_dump_triggers__act","funcp":"(UP)","argsp": []} + {"type":"CCALL","name":"","addr":"(WN)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_dump_triggers__act","funcp":"(XN)","argsp": []} ]}, - {"type":"TEXT","name":"","addr":"(VP)","loc":"d,11:8,11:9","shortText":"}..."}, - {"type":"TEXT","name":"","addr":"(WP)","loc":"d,11:8,11:9","shortText":"#endif..."} + {"type":"TEXT","name":"","addr":"(YN)","loc":"d,11:8,11:9","shortText":"}..."}, + {"type":"TEXT","name":"","addr":"(ZN)","loc":"d,11:8,11:9","shortText":"#endif..."} ]} ],"finalsp": []}, - {"type":"CFUNC","name":"_dump_triggers__act","addr":"(UP)","loc":"a,0:0,0:0","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [],"initsp": [], + {"type":"CFUNC","name":"_dump_triggers__act","addr":"(XN)","loc":"a,0:0,0:0","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [],"initsp": [], "stmtsp": [ - {"type":"IF","name":"","addr":"(XP)","loc":"d,11:8,11:9", + {"type":"IF","name":"","addr":"(AO)","loc":"d,11:8,11:9", "condp": [ - {"type":"AND","name":"","addr":"(YP)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"AND","name":"","addr":"(BO)","loc":"d,11:8,11:9","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'h1","addr":"(ZP)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h1","addr":"(CO)","loc":"d,11:8,11:9","dtypep":"(GC)"} ], "rhsp": [ - {"type":"NOT","name":"","addr":"(AQ)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"NOT","name":"","addr":"(DO)","loc":"d,11:8,11:9","dtypep":"(FB)", "lhsp": [ - {"type":"CMETHODHARD","name":"any","addr":"(BQ)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"CMETHODHARD","name":"any","addr":"(EO)","loc":"d,11:8,11:9","dtypep":"(FB)", "fromp": [ - {"type":"VARREF","name":"__VactTriggered","addr":"(CQ)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactTriggered","addr":"(FO)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"pinsp": []} ]} ]} ], "thensp": [ - {"type":"CSTMT","name":"","addr":"(DQ)","loc":"d,11:8,11:9", + {"type":"CSTMT","name":"","addr":"(GO)","loc":"d,11:8,11:9", "exprsp": [ - {"type":"TEXT","name":"","addr":"(EQ)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" No triggers active\\n\");"} + {"type":"TEXT","name":"","addr":"(HO)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" No triggers active\\n\");"} ]} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(FQ)","loc":"d,11:8,11:9", + {"type":"IF","name":"","addr":"(IO)","loc":"d,11:8,11:9", "condp": [ - {"type":"AND","name":"","addr":"(GQ)","loc":"d,11:8,11:9","dtypep":"(HQ)", + {"type":"AND","name":"","addr":"(JO)","loc":"d,11:8,11:9","dtypep":"(KO)", "lhsp": [ - {"type":"CONST","name":"64'h1","addr":"(IQ)","loc":"d,11:8,11:9","dtypep":"(HQ)"} + {"type":"CONST","name":"64'h1","addr":"(LO)","loc":"d,11:8,11:9","dtypep":"(KO)"} ], "rhsp": [ - {"type":"CMETHODHARD","name":"word","addr":"(JQ)","loc":"d,11:8,11:9","dtypep":"(KQ)", + {"type":"CMETHODHARD","name":"word","addr":"(MO)","loc":"d,11:8,11:9","dtypep":"(NO)", "fromp": [ - {"type":"VARREF","name":"__VactTriggered","addr":"(LQ)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactTriggered","addr":"(OO)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "pinsp": [ - {"type":"CONST","name":"32'h0","addr":"(MQ)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(PO)","loc":"d,11:8,11:9","dtypep":"(GC)"} ]} ]} ], "thensp": [ - {"type":"TEXT","name":"","addr":"(NQ)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" 'act' region trigger index 0 is active: @(posedge clk)\\n\");..."} + {"type":"TEXT","name":"","addr":"(QO)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" 'act' region trigger index 0 is active: @(posedge clk)\\n\");..."} ],"elsesp": []} ],"finalsp": []}, - {"type":"CFUNC","name":"_dump_triggers__nba","addr":"(OQ)","loc":"a,0:0,0:0","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [],"initsp": [], + {"type":"CFUNC","name":"_dump_triggers__nba","addr":"(RO)","loc":"a,0:0,0:0","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [],"initsp": [], "stmtsp": [ - {"type":"IF","name":"","addr":"(PQ)","loc":"d,11:8,11:9", + {"type":"IF","name":"","addr":"(SO)","loc":"d,11:8,11:9", "condp": [ - {"type":"AND","name":"","addr":"(QQ)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"AND","name":"","addr":"(TO)","loc":"d,11:8,11:9","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'h1","addr":"(RQ)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h1","addr":"(UO)","loc":"d,11:8,11:9","dtypep":"(GC)"} ], "rhsp": [ - {"type":"NOT","name":"","addr":"(SQ)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"NOT","name":"","addr":"(VO)","loc":"d,11:8,11:9","dtypep":"(FB)", "lhsp": [ - {"type":"CMETHODHARD","name":"any","addr":"(TQ)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"CMETHODHARD","name":"any","addr":"(WO)","loc":"d,11:8,11:9","dtypep":"(FB)", "fromp": [ - {"type":"VARREF","name":"__VnbaTriggered","addr":"(UQ)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaTriggered","addr":"(XO)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"pinsp": []} ]} ]} ], "thensp": [ - {"type":"CSTMT","name":"","addr":"(VQ)","loc":"d,11:8,11:9", + {"type":"CSTMT","name":"","addr":"(YO)","loc":"d,11:8,11:9", "exprsp": [ - {"type":"TEXT","name":"","addr":"(WQ)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" No triggers active\\n\");"} + {"type":"TEXT","name":"","addr":"(ZO)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" No triggers active\\n\");"} ]} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(XQ)","loc":"d,11:8,11:9", + {"type":"IF","name":"","addr":"(AP)","loc":"d,11:8,11:9", "condp": [ - {"type":"AND","name":"","addr":"(YQ)","loc":"d,11:8,11:9","dtypep":"(HQ)", + {"type":"AND","name":"","addr":"(BP)","loc":"d,11:8,11:9","dtypep":"(KO)", "lhsp": [ - {"type":"CONST","name":"64'h1","addr":"(ZQ)","loc":"d,11:8,11:9","dtypep":"(HQ)"} + {"type":"CONST","name":"64'h1","addr":"(CP)","loc":"d,11:8,11:9","dtypep":"(KO)"} ], "rhsp": [ - {"type":"CMETHODHARD","name":"word","addr":"(AR)","loc":"d,11:8,11:9","dtypep":"(KQ)", + {"type":"CMETHODHARD","name":"word","addr":"(DP)","loc":"d,11:8,11:9","dtypep":"(NO)", "fromp": [ - {"type":"VARREF","name":"__VnbaTriggered","addr":"(BR)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaTriggered","addr":"(EP)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "pinsp": [ - {"type":"CONST","name":"32'h0","addr":"(CR)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(FP)","loc":"d,11:8,11:9","dtypep":"(GC)"} ]} ]} ], "thensp": [ - {"type":"TEXT","name":"","addr":"(DR)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" 'nba' region trigger index 0 is active: @(posedge clk)\\n\");..."} + {"type":"TEXT","name":"","addr":"(GP)","loc":"d,11:8,11:9","shortText":"VL_DBG_MSGF(\" 'nba' region trigger index 0 is active: @(posedge clk)\\n\");..."} ],"elsesp": []} ],"finalsp": []}, - {"type":"CFUNC","name":"_eval_act","addr":"(ER)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [],"initsp": [],"stmtsp": [],"finalsp": []}, + {"type":"CFUNC","name":"_eval_act","addr":"(HP)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [],"initsp": [],"stmtsp": [],"finalsp": []}, {"type":"CFUNC","name":"_eval_nba","addr":"(G)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [],"initsp": [], "stmtsp": [ - {"type":"IF","name":"","addr":"(FR)","loc":"d,11:8,11:9", + {"type":"IF","name":"","addr":"(IP)","loc":"d,11:8,11:9", "condp": [ - {"type":"AND","name":"","addr":"(GR)","loc":"d,11:8,11:9","dtypep":"(HQ)", + {"type":"AND","name":"","addr":"(JP)","loc":"d,11:8,11:9","dtypep":"(KO)", "lhsp": [ - {"type":"CONST","name":"64'h1","addr":"(HR)","loc":"d,11:8,11:9","dtypep":"(HQ)"} + {"type":"CONST","name":"64'h1","addr":"(KP)","loc":"d,11:8,11:9","dtypep":"(KO)"} ], "rhsp": [ - {"type":"CMETHODHARD","name":"word","addr":"(IR)","loc":"d,11:8,11:9","dtypep":"(KQ)", + {"type":"CMETHODHARD","name":"word","addr":"(LP)","loc":"d,11:8,11:9","dtypep":"(NO)", "fromp": [ - {"type":"VARREF","name":"__VnbaTriggered","addr":"(JR)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaTriggered","addr":"(MP)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "pinsp": [ - {"type":"CONST","name":"32'h0","addr":"(KR)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(NP)","loc":"d,11:8,11:9","dtypep":"(GC)"} ]} ]} ], "thensp": [ - {"type":"STMTEXPR","name":"","addr":"(LR)","loc":"d,23:17,23:20", + {"type":"STMTEXPR","name":"","addr":"(OP)","loc":"d,23:17,23:20", "exprp": [ - {"type":"CCALL","name":"","addr":"(MR)","loc":"d,23:17,23:20","dtypep":"(CB)","funcName":"_nba_sequent__TOP__0","funcp":"(NR)","argsp": []} + {"type":"CCALL","name":"","addr":"(PP)","loc":"d,23:17,23:20","dtypep":"(CB)","funcName":"_nba_sequent__TOP__0","funcp":"(QP)","argsp": []} ]} ],"elsesp": []} ],"finalsp": []}, - {"type":"CFUNC","name":"_nba_sequent__TOP__0","addr":"(NR)","loc":"d,23:17,23:20","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [], + {"type":"CFUNC","name":"_nba_sequent__TOP__0","addr":"(QP)","loc":"d,23:17,23:20","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [], "initsp": [ - {"type":"VAR","name":"__Vdly__t.cyc","addr":"(OR)","loc":"d,23:17,23:20","dtypep":"(R)","origName":"__Vdly__t__DOT__cyc","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"BLOCKTEMP","dtypeName":"integer","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"CRESET","name":"","addr":"(PR)","loc":"d,23:17,23:20","constructing":true, + {"type":"VAR","name":"__Vdly__t.cyc","addr":"(RP)","loc":"d,23:17,23:20","dtypep":"(R)","origName":"__Vdly__t__DOT__cyc","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"BLOCKTEMP","dtypeName":"integer","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, + {"type":"CRESET","name":"","addr":"(SP)","loc":"d,23:17,23:20","constructing":true, "varrefp": [ - {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(QR)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(OR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(TP)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(RP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]}, - {"type":"VAR","name":"__Vdly__t.e","addr":"(RR)","loc":"d,24:9,24:10","dtypep":"(M)","origName":"__Vdly__t__DOT__e","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"BLOCKTEMP","dtypeName":"my_t","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"CRESET","name":"","addr":"(SR)","loc":"d,24:9,24:10","constructing":true, + {"type":"VAR","name":"__Vdly__t.e","addr":"(UP)","loc":"d,24:9,24:10","dtypep":"(M)","origName":"__Vdly__t__DOT__e","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"BLOCKTEMP","dtypeName":"my_t","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, + {"type":"CRESET","name":"","addr":"(VP)","loc":"d,24:9,24:10","constructing":true, "varrefp": [ - {"type":"VARREF","name":"__Vdly__t.e","addr":"(TR)","loc":"d,24:9,24:10","dtypep":"(M)","access":"WR","varp":"(RR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.e","addr":"(WP)","loc":"d,24:9,24:10","dtypep":"(M)","access":"WR","varp":"(UP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]}, - {"type":"VAR","name":"__Vtemp_1","addr":"(UR)","loc":"d,70:123,70:124","dtypep":"(RB)","origName":"__Vtemp_1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"NONE","varType":"STMTTEMP","dtypeName":"string","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"VAR","name":"__Vtemp_2","addr":"(VR)","loc":"d,80:123,80:124","dtypep":"(RB)","origName":"__Vtemp_2","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"NONE","varType":"STMTTEMP","dtypeName":"string","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"VAR","name":"__Vtemp_3","addr":"(WR)","loc":"d,90:123,90:124","dtypep":"(RB)","origName":"__Vtemp_3","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"NONE","varType":"STMTTEMP","dtypeName":"string","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} + {"type":"VAR","name":"__Vtemp_1","addr":"(XP)","loc":"d,70:123,70:124","dtypep":"(RB)","origName":"__Vtemp_1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"NONE","varType":"STMTTEMP","dtypeName":"string","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, + {"type":"VAR","name":"__Vtemp_2","addr":"(YP)","loc":"d,80:123,80:124","dtypep":"(RB)","origName":"__Vtemp_2","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"NONE","varType":"STMTTEMP","dtypeName":"string","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, + {"type":"VAR","name":"__Vtemp_3","addr":"(ZP)","loc":"d,90:123,90:124","dtypep":"(RB)","origName":"__Vtemp_3","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"NONE","varType":"STMTTEMP","dtypeName":"string","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} ], "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(XR)","loc":"d,23:17,23:20","dtypep":"(R)", + {"type":"ASSIGN","name":"","addr":"(AQ)","loc":"d,23:17,23:20","dtypep":"(R)", "rhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(YR)","loc":"d,23:17,23:20","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(BQ)","loc":"d,23:17,23:20","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(ZR)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(OR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(CQ)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(RP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(AS)","loc":"d,24:9,24:10","dtypep":"(AC)", + {"type":"ASSIGN","name":"","addr":"(DQ)","loc":"d,24:9,24:10","dtypep":"(TB)", "rhsp": [ - {"type":"VARREF","name":"t.e","addr":"(BS)","loc":"d,24:9,24:10","dtypep":"(AC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(EQ)","loc":"d,24:9,24:10","dtypep":"(TB)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"__Vdly__t.e","addr":"(CS)","loc":"d,24:9,24:10","dtypep":"(AC)","access":"WR","varp":"(RR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.e","addr":"(FQ)","loc":"d,24:9,24:10","dtypep":"(TB)","access":"WR","varp":"(UP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGNDLY","name":"","addr":"(DS)","loc":"d,64:11,64:13","dtypep":"(R)", + {"type":"ASSIGNDLY","name":"","addr":"(GQ)","loc":"d,64:11,64:13","dtypep":"(R)", "rhsp": [ - {"type":"ADD","name":"","addr":"(ES)","loc":"d,64:18,64:19","dtypep":"(R)", + {"type":"ADD","name":"","addr":"(HQ)","loc":"d,64:18,64:19","dtypep":"(R)", "lhsp": [ - {"type":"CCAST","name":"","addr":"(FS)","loc":"d,64:20,64:21","dtypep":"(NC)","size":32, + {"type":"CCAST","name":"","addr":"(IQ)","loc":"d,64:20,64:21","dtypep":"(GC)","size":32, "lhsp": [ - {"type":"CONST","name":"32'sh1","addr":"(GS)","loc":"d,64:20,64:21","dtypep":"(KB)"} + {"type":"CONST","name":"32'sh1","addr":"(JQ)","loc":"d,64:20,64:21","dtypep":"(KB)"} ]} ], "rhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(HS)","loc":"d,64:14,64:17","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(KQ)","loc":"d,64:14,64:17","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "lhsp": [ - {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(IS)","loc":"d,64:7,64:10","dtypep":"(R)","access":"WR","varp":"(OR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(LQ)","loc":"d,64:7,64:10","dtypep":"(R)","access":"WR","varp":"(RP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"IF","name":"","addr":"(JS)","loc":"d,65:7,65:9", + {"type":"IF","name":"","addr":"(MQ)","loc":"d,65:7,65:9", "condp": [ - {"type":"EQ","name":"","addr":"(KS)","loc":"d,65:14,65:16","dtypep":"(FB)", + {"type":"EQ","name":"","addr":"(NQ)","loc":"d,65:14,65:16","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'sh0","addr":"(LS)","loc":"d,65:16,65:17","dtypep":"(KB)"} + {"type":"CONST","name":"32'sh0","addr":"(OQ)","loc":"d,65:16,65:17","dtypep":"(KB)"} ], "rhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(MS)","loc":"d,65:11,65:14","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(PQ)","loc":"d,65:11,65:14","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "thensp": [ - {"type":"ASSIGNDLY","name":"","addr":"(NS)","loc":"d,67:12,67:14","dtypep":"(AC)", + {"type":"ASSIGNDLY","name":"","addr":"(QQ)","loc":"d,67:12,67:14","dtypep":"(TB)", "rhsp": [ - {"type":"CONST","name":"4'h1","addr":"(OS)","loc":"d,67:15,67:18","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(RQ)","loc":"d,67:15,67:18","dtypep":"(TB)"} ], "lhsp": [ - {"type":"VARREF","name":"__Vdly__t.e","addr":"(PS)","loc":"d,67:10,67:11","dtypep":"(AC)","access":"WR","varp":"(RR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.e","addr":"(SQ)","loc":"d,67:10,67:11","dtypep":"(TB)","access":"WR","varp":"(UP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ], "elsesp": [ - {"type":"IF","name":"","addr":"(QS)","loc":"d,69:12,69:14", + {"type":"IF","name":"","addr":"(TQ)","loc":"d,69:12,69:14", "condp": [ - {"type":"EQ","name":"","addr":"(RS)","loc":"d,69:19,69:21","dtypep":"(FB)", + {"type":"EQ","name":"","addr":"(UQ)","loc":"d,69:19,69:21","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'sh1","addr":"(SS)","loc":"d,69:21,69:22","dtypep":"(KB)"} + {"type":"CONST","name":"32'sh1","addr":"(VQ)","loc":"d,69:21,69:22","dtypep":"(KB)"} ], "rhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(TS)","loc":"d,69:16,69:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(WQ)","loc":"d,69:16,69:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "thensp": [ - {"type":"IF","name":"","addr":"(US)","loc":"d,70:13,70:15", + {"type":"IF","name":"","addr":"(XQ)","loc":"d,70:13,70:15", "condp": [ - {"type":"NEQN","name":"","addr":"(VS)","loc":"d,70:26,70:28","dtypep":"(FB)", + {"type":"NEQN","name":"","addr":"(YQ)","loc":"d,70:26,70:28","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"\\\"E01\\\"","addr":"(WS)","loc":"d,70:30,70:35","dtypep":"(RB)"} + {"type":"CONST","name":"\\\"E01\\\"","addr":"(ZQ)","loc":"d,70:30,70:35","dtypep":"(RB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(XS)","loc":"d,70:18,70:19","dtypep":"(RB)", + {"type":"ARRAYSEL","name":"","addr":"(AR)","loc":"d,70:18,70:19","dtypep":"(RB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(YS)","loc":"d,17:12,17:16","dtypep":"(OM)","access":"RD","varp":"(PM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(BR)","loc":"d,17:12,17:16","dtypep":"(HM)","access":"RD","varp":"(IM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(ZS)","loc":"d,70:18,70:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(CR)","loc":"d,70:18,70:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(AT)","loc":"d,70:18,70:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(DR)","loc":"d,70:18,70:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(BT)","loc":"d,70:18,70:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(ER)","loc":"d,70:18,70:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(CT)","loc":"d,70:18,70:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(FR)","loc":"d,70:18,70:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"ASSIGN","name":"","addr":"(DT)","loc":"d,70:123,70:124","dtypep":"(RB)", + {"type":"ASSIGN","name":"","addr":"(GR)","loc":"d,70:123,70:124","dtypep":"(RB)", "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(ET)","loc":"d,70:123,70:124","dtypep":"(RB)", + {"type":"ARRAYSEL","name":"","addr":"(HR)","loc":"d,70:123,70:124","dtypep":"(RB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(FT)","loc":"d,17:12,17:16","dtypep":"(OM)","access":"RD","varp":"(PM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(IR)","loc":"d,17:12,17:16","dtypep":"(HM)","access":"RD","varp":"(IM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(GT)","loc":"d,70:123,70:124","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(JR)","loc":"d,70:123,70:124","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(HT)","loc":"d,70:123,70:124","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(KR)","loc":"d,70:123,70:124","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(IT)","loc":"d,70:123,70:124","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(LR)","loc":"d,70:123,70:124","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(JT)","loc":"d,70:123,70:124","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(MR)","loc":"d,70:123,70:124","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ], "lhsp": [ - {"type":"VARREF","name":"__Vtemp_1","addr":"(KT)","loc":"d,70:123,70:124","dtypep":"(RB)","access":"WR","varp":"(UR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vtemp_1","addr":"(NR)","loc":"d,70:123,70:124","dtypep":"(RB)","access":"WR","varp":"(XP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"DISPLAY","name":"","addr":"(LT)","loc":"d,70:44,70:50", + {"type":"DISPLAY","name":"","addr":"(OR)","loc":"d,70:44,70:50", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:70: got='%@' exp='E01'\\n","addr":"(MT)","loc":"d,70:44,70:50","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:70: got='%@' exp='E01'\\n","addr":"(PR)","loc":"d,70:44,70:50","dtypep":"(RB)", "exprsp": [ - {"type":"VARREF","name":"__Vtemp_1","addr":"(NT)","loc":"d,70:123,70:124","dtypep":"(RB)","access":"RD","varp":"(UR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vtemp_1","addr":"(QR)","loc":"d,70:123,70:124","dtypep":"(RB)","access":"RD","varp":"(XP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(OT)","loc":"d,70:142,70:147","isFatal":false} + {"type":"STOP","name":"","addr":"(RR)","loc":"d,70:142,70:147","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(PT)","loc":"d,71:13,71:15", + {"type":"IF","name":"","addr":"(SR)","loc":"d,71:13,71:15", "condp": [ - {"type":"NEQ","name":"","addr":"(QT)","loc":"d,71:26,71:29","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(TR)","loc":"d,71:26,71:29","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h3","addr":"(RT)","loc":"d,71:31,71:34","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(UR)","loc":"d,71:31,71:34","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(ST)","loc":"d,71:18,71:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(VR)","loc":"d,71:18,71:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(TT)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(WR)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(UT)","loc":"d,71:18,71:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(XR)","loc":"d,71:18,71:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(VT)","loc":"d,71:18,71:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(YR)","loc":"d,71:18,71:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(WT)","loc":"d,71:18,71:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(ZR)","loc":"d,71:18,71:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(XT)","loc":"d,71:18,71:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(AS)","loc":"d,71:18,71:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(YT)","loc":"d,71:43,71:49", + {"type":"DISPLAY","name":"","addr":"(BS)","loc":"d,71:43,71:49", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:71: got='h%x exp='h3\\n","addr":"(ZT)","loc":"d,71:43,71:49","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:71: got='h%x exp='h3\\n","addr":"(CS)","loc":"d,71:43,71:49","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(AU)","loc":"d,71:122,71:123","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(DS)","loc":"d,71:122,71:123","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(BU)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(ES)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(CU)","loc":"d,71:122,71:123","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(FS)","loc":"d,71:122,71:123","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(DU)","loc":"d,71:122,71:123","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(GS)","loc":"d,71:122,71:123","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(EU)","loc":"d,71:122,71:123","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(HS)","loc":"d,71:122,71:123","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(FU)","loc":"d,71:122,71:123","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(IS)","loc":"d,71:122,71:123","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(GU)","loc":"d,71:139,71:144","isFatal":false} + {"type":"STOP","name":"","addr":"(JS)","loc":"d,71:139,71:144","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(HU)","loc":"d,72:13,72:15", + {"type":"IF","name":"","addr":"(KS)","loc":"d,72:13,72:15", "condp": [ - {"type":"NEQ","name":"","addr":"(IU)","loc":"d,72:29,72:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(LS)","loc":"d,72:29,72:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h3","addr":"(JU)","loc":"d,72:34,72:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(MS)","loc":"d,72:34,72:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(KU)","loc":"d,72:18,72:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(NS)","loc":"d,72:18,72:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(LU)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(OS)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(MU)","loc":"d,72:18,72:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(PS)","loc":"d,72:18,72:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(NU)","loc":"d,72:18,72:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(QS)","loc":"d,72:18,72:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(OU)","loc":"d,72:18,72:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(RS)","loc":"d,72:18,72:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(PU)","loc":"d,72:18,72:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(SS)","loc":"d,72:18,72:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(QU)","loc":"d,72:46,72:52", + {"type":"DISPLAY","name":"","addr":"(TS)","loc":"d,72:46,72:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:72: got='h%x exp='h3\\n","addr":"(RU)","loc":"d,72:46,72:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:72: got='h%x exp='h3\\n","addr":"(US)","loc":"d,72:46,72:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(SU)","loc":"d,72:125,72:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(VS)","loc":"d,72:125,72:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(TU)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(WS)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(UU)","loc":"d,72:125,72:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(XS)","loc":"d,72:125,72:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(VU)","loc":"d,72:125,72:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(YS)","loc":"d,72:125,72:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(WU)","loc":"d,72:125,72:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(ZS)","loc":"d,72:125,72:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(XU)","loc":"d,72:125,72:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(AT)","loc":"d,72:125,72:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(YU)","loc":"d,72:145,72:150","isFatal":false} + {"type":"STOP","name":"","addr":"(BT)","loc":"d,72:145,72:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(ZU)","loc":"d,73:13,73:15", + {"type":"IF","name":"","addr":"(CT)","loc":"d,73:13,73:15", "condp": [ - {"type":"NEQ","name":"","addr":"(AV)","loc":"d,73:29,73:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(DT)","loc":"d,73:29,73:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h4","addr":"(BV)","loc":"d,73:34,73:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(ET)","loc":"d,73:34,73:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(CV)","loc":"d,73:18,73:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(FT)","loc":"d,73:18,73:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(DV)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(GT)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(EV)","loc":"d,73:18,73:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(HT)","loc":"d,73:18,73:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(FV)","loc":"d,73:18,73:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(IT)","loc":"d,73:18,73:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(GV)","loc":"d,73:18,73:19","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(JT)","loc":"d,73:18,73:19","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(HV)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(KT)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(IV)","loc":"d,73:18,73:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(LT)","loc":"d,73:18,73:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(JV)","loc":"d,73:18,73:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(MT)","loc":"d,73:18,73:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(KV)","loc":"d,73:18,73:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(NT)","loc":"d,73:18,73:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(LV)","loc":"d,73:18,73:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(OT)","loc":"d,73:18,73:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -1423,33 +1299,33 @@ ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(MV)","loc":"d,73:46,73:52", + {"type":"DISPLAY","name":"","addr":"(PT)","loc":"d,73:46,73:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:73: got='h%x exp='h4\\n","addr":"(NV)","loc":"d,73:46,73:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:73: got='h%x exp='h4\\n","addr":"(QT)","loc":"d,73:46,73:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(OV)","loc":"d,73:125,73:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(RT)","loc":"d,73:125,73:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(PV)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(ST)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(QV)","loc":"d,73:125,73:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(TT)","loc":"d,73:125,73:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(RV)","loc":"d,73:125,73:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(UT)","loc":"d,73:125,73:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(SV)","loc":"d,73:125,73:126","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(VT)","loc":"d,73:125,73:126","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(TV)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(WT)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(UV)","loc":"d,73:125,73:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(XT)","loc":"d,73:125,73:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(VV)","loc":"d,73:125,73:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(YT)","loc":"d,73:125,73:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(WV)","loc":"d,73:125,73:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(ZT)","loc":"d,73:125,73:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(XV)","loc":"d,73:125,73:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(AU)","loc":"d,73:125,73:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -1457,138 +1333,138 @@ ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(YV)","loc":"d,73:145,73:150","isFatal":false} + {"type":"STOP","name":"","addr":"(BU)","loc":"d,73:145,73:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(ZV)","loc":"d,74:13,74:15", + {"type":"IF","name":"","addr":"(CU)","loc":"d,74:13,74:15", "condp": [ - {"type":"NEQ","name":"","addr":"(AW)","loc":"d,74:26,74:29","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(DU)","loc":"d,74:26,74:29","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h4","addr":"(BW)","loc":"d,74:31,74:34","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(EU)","loc":"d,74:31,74:34","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(CW)","loc":"d,74:18,74:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(FU)","loc":"d,74:18,74:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(DW)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(GU)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(EW)","loc":"d,74:18,74:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(HU)","loc":"d,74:18,74:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(FW)","loc":"d,74:18,74:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(IU)","loc":"d,74:18,74:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(GW)","loc":"d,74:18,74:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(JU)","loc":"d,74:18,74:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(HW)","loc":"d,74:18,74:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(KU)","loc":"d,74:18,74:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(IW)","loc":"d,74:43,74:49", + {"type":"DISPLAY","name":"","addr":"(LU)","loc":"d,74:43,74:49", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:74: got='h%x exp='h4\\n","addr":"(JW)","loc":"d,74:43,74:49","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:74: got='h%x exp='h4\\n","addr":"(MU)","loc":"d,74:43,74:49","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(KW)","loc":"d,74:122,74:123","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(NU)","loc":"d,74:122,74:123","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(LW)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(OU)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(MW)","loc":"d,74:122,74:123","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(PU)","loc":"d,74:122,74:123","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(NW)","loc":"d,74:122,74:123","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(QU)","loc":"d,74:122,74:123","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(OW)","loc":"d,74:122,74:123","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(RU)","loc":"d,74:122,74:123","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(PW)","loc":"d,74:122,74:123","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(SU)","loc":"d,74:122,74:123","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(QW)","loc":"d,74:139,74:144","isFatal":false} + {"type":"STOP","name":"","addr":"(TU)","loc":"d,74:139,74:144","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(RW)","loc":"d,75:13,75:15", + {"type":"IF","name":"","addr":"(UU)","loc":"d,75:13,75:15", "condp": [ - {"type":"NEQ","name":"","addr":"(SW)","loc":"d,75:29,75:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(VU)","loc":"d,75:29,75:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h4","addr":"(TW)","loc":"d,75:34,75:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(WU)","loc":"d,75:34,75:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(UW)","loc":"d,75:18,75:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(XU)","loc":"d,75:18,75:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(VW)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(YU)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(WW)","loc":"d,75:18,75:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(ZU)","loc":"d,75:18,75:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(XW)","loc":"d,75:18,75:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(AV)","loc":"d,75:18,75:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(YW)","loc":"d,75:18,75:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(BV)","loc":"d,75:18,75:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(ZW)","loc":"d,75:18,75:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(CV)","loc":"d,75:18,75:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(AX)","loc":"d,75:46,75:52", + {"type":"DISPLAY","name":"","addr":"(DV)","loc":"d,75:46,75:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:75: got='h%x exp='h4\\n","addr":"(BX)","loc":"d,75:46,75:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:75: got='h%x exp='h4\\n","addr":"(EV)","loc":"d,75:46,75:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(CX)","loc":"d,75:125,75:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(FV)","loc":"d,75:125,75:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(DX)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(GV)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(EX)","loc":"d,75:125,75:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(HV)","loc":"d,75:125,75:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(FX)","loc":"d,75:125,75:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(IV)","loc":"d,75:125,75:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(GX)","loc":"d,75:125,75:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(JV)","loc":"d,75:125,75:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(HX)","loc":"d,75:125,75:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(KV)","loc":"d,75:125,75:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(IX)","loc":"d,75:145,75:150","isFatal":false} + {"type":"STOP","name":"","addr":"(LV)","loc":"d,75:145,75:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(JX)","loc":"d,76:13,76:15", + {"type":"IF","name":"","addr":"(MV)","loc":"d,76:13,76:15", "condp": [ - {"type":"NEQ","name":"","addr":"(KX)","loc":"d,76:29,76:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(NV)","loc":"d,76:29,76:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h3","addr":"(LX)","loc":"d,76:34,76:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(OV)","loc":"d,76:34,76:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(MX)","loc":"d,76:18,76:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(PV)","loc":"d,76:18,76:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(NX)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(QV)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(OX)","loc":"d,76:18,76:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(RV)","loc":"d,76:18,76:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(PX)","loc":"d,76:18,76:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(SV)","loc":"d,76:18,76:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(QX)","loc":"d,76:18,76:19","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(TV)","loc":"d,76:18,76:19","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(RX)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(UV)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(SX)","loc":"d,76:18,76:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(VV)","loc":"d,76:18,76:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(TX)","loc":"d,76:18,76:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(WV)","loc":"d,76:18,76:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(UX)","loc":"d,76:18,76:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(XV)","loc":"d,76:18,76:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(VX)","loc":"d,76:18,76:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(YV)","loc":"d,76:18,76:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -1597,33 +1473,33 @@ ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(WX)","loc":"d,76:46,76:52", + {"type":"DISPLAY","name":"","addr":"(ZV)","loc":"d,76:46,76:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:76: got='h%x exp='h3\\n","addr":"(XX)","loc":"d,76:46,76:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:76: got='h%x exp='h3\\n","addr":"(AW)","loc":"d,76:46,76:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(YX)","loc":"d,76:125,76:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(BW)","loc":"d,76:125,76:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(ZX)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(CW)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(AY)","loc":"d,76:125,76:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(DW)","loc":"d,76:125,76:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(BY)","loc":"d,76:125,76:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(EW)","loc":"d,76:125,76:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(CY)","loc":"d,76:125,76:126","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(FW)","loc":"d,76:125,76:126","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(DY)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(GW)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(EY)","loc":"d,76:125,76:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(HW)","loc":"d,76:125,76:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(FY)","loc":"d,76:125,76:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(IW)","loc":"d,76:125,76:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(GY)","loc":"d,76:125,76:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(JW)","loc":"d,76:125,76:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(HY)","loc":"d,76:125,76:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(KW)","loc":"d,76:125,76:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -1631,215 +1507,215 @@ ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(IY)","loc":"d,76:145,76:150","isFatal":false} + {"type":"STOP","name":"","addr":"(LW)","loc":"d,76:145,76:150","isFatal":false} ],"elsesp": []}, - {"type":"ASSIGNDLY","name":"","addr":"(JY)","loc":"d,77:12,77:14","dtypep":"(AC)", + {"type":"ASSIGNDLY","name":"","addr":"(MW)","loc":"d,77:12,77:14","dtypep":"(TB)", "rhsp": [ - {"type":"CONST","name":"4'h3","addr":"(KY)","loc":"d,77:15,77:18","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(NW)","loc":"d,77:15,77:18","dtypep":"(TB)"} ], "lhsp": [ - {"type":"VARREF","name":"__Vdly__t.e","addr":"(LY)","loc":"d,77:10,77:11","dtypep":"(AC)","access":"WR","varp":"(RR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.e","addr":"(OW)","loc":"d,77:10,77:11","dtypep":"(TB)","access":"WR","varp":"(UP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ], "elsesp": [ - {"type":"IF","name":"","addr":"(MY)","loc":"d,79:12,79:14", + {"type":"IF","name":"","addr":"(PW)","loc":"d,79:12,79:14", "condp": [ - {"type":"EQ","name":"","addr":"(NY)","loc":"d,79:19,79:21","dtypep":"(FB)", + {"type":"EQ","name":"","addr":"(QW)","loc":"d,79:19,79:21","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'sh2","addr":"(OY)","loc":"d,79:21,79:22","dtypep":"(KB)"} + {"type":"CONST","name":"32'sh2","addr":"(RW)","loc":"d,79:21,79:22","dtypep":"(KB)"} ], "rhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(PY)","loc":"d,79:16,79:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(SW)","loc":"d,79:16,79:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "thensp": [ - {"type":"IF","name":"","addr":"(QY)","loc":"d,80:13,80:15", + {"type":"IF","name":"","addr":"(TW)","loc":"d,80:13,80:15", "condp": [ - {"type":"NEQN","name":"","addr":"(RY)","loc":"d,80:26,80:28","dtypep":"(FB)", + {"type":"NEQN","name":"","addr":"(UW)","loc":"d,80:26,80:28","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"\\\"E03\\\"","addr":"(SY)","loc":"d,80:30,80:35","dtypep":"(RB)"} + {"type":"CONST","name":"\\\"E03\\\"","addr":"(VW)","loc":"d,80:30,80:35","dtypep":"(RB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(TY)","loc":"d,80:18,80:19","dtypep":"(RB)", + {"type":"ARRAYSEL","name":"","addr":"(WW)","loc":"d,80:18,80:19","dtypep":"(RB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(UY)","loc":"d,17:12,17:16","dtypep":"(OM)","access":"RD","varp":"(PM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(XW)","loc":"d,17:12,17:16","dtypep":"(HM)","access":"RD","varp":"(IM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(VY)","loc":"d,80:18,80:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(YW)","loc":"d,80:18,80:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(WY)","loc":"d,80:18,80:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(ZW)","loc":"d,80:18,80:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(XY)","loc":"d,80:18,80:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(AX)","loc":"d,80:18,80:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(YY)","loc":"d,80:18,80:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(BX)","loc":"d,80:18,80:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"ASSIGN","name":"","addr":"(ZY)","loc":"d,80:123,80:124","dtypep":"(RB)", + {"type":"ASSIGN","name":"","addr":"(CX)","loc":"d,80:123,80:124","dtypep":"(RB)", "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(AZ)","loc":"d,80:123,80:124","dtypep":"(RB)", + {"type":"ARRAYSEL","name":"","addr":"(DX)","loc":"d,80:123,80:124","dtypep":"(RB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(BZ)","loc":"d,17:12,17:16","dtypep":"(OM)","access":"RD","varp":"(PM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(EX)","loc":"d,17:12,17:16","dtypep":"(HM)","access":"RD","varp":"(IM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(CZ)","loc":"d,80:123,80:124","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(FX)","loc":"d,80:123,80:124","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(DZ)","loc":"d,80:123,80:124","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(GX)","loc":"d,80:123,80:124","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(EZ)","loc":"d,80:123,80:124","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(HX)","loc":"d,80:123,80:124","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(FZ)","loc":"d,80:123,80:124","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(IX)","loc":"d,80:123,80:124","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ], "lhsp": [ - {"type":"VARREF","name":"__Vtemp_2","addr":"(GZ)","loc":"d,80:123,80:124","dtypep":"(RB)","access":"WR","varp":"(VR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vtemp_2","addr":"(JX)","loc":"d,80:123,80:124","dtypep":"(RB)","access":"WR","varp":"(YP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"DISPLAY","name":"","addr":"(HZ)","loc":"d,80:44,80:50", + {"type":"DISPLAY","name":"","addr":"(KX)","loc":"d,80:44,80:50", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:80: got='%@' exp='E03'\\n","addr":"(IZ)","loc":"d,80:44,80:50","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:80: got='%@' exp='E03'\\n","addr":"(LX)","loc":"d,80:44,80:50","dtypep":"(RB)", "exprsp": [ - {"type":"VARREF","name":"__Vtemp_2","addr":"(JZ)","loc":"d,80:123,80:124","dtypep":"(RB)","access":"RD","varp":"(VR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vtemp_2","addr":"(MX)","loc":"d,80:123,80:124","dtypep":"(RB)","access":"RD","varp":"(YP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(KZ)","loc":"d,80:142,80:147","isFatal":false} + {"type":"STOP","name":"","addr":"(NX)","loc":"d,80:142,80:147","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(LZ)","loc":"d,81:13,81:15", + {"type":"IF","name":"","addr":"(OX)","loc":"d,81:13,81:15", "condp": [ - {"type":"NEQ","name":"","addr":"(MZ)","loc":"d,81:26,81:29","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(PX)","loc":"d,81:26,81:29","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h4","addr":"(NZ)","loc":"d,81:31,81:34","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(QX)","loc":"d,81:31,81:34","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(OZ)","loc":"d,81:18,81:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(RX)","loc":"d,81:18,81:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(PZ)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(SX)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(QZ)","loc":"d,81:18,81:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(TX)","loc":"d,81:18,81:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(RZ)","loc":"d,81:18,81:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(UX)","loc":"d,81:18,81:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(SZ)","loc":"d,81:18,81:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(VX)","loc":"d,81:18,81:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(TZ)","loc":"d,81:18,81:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(WX)","loc":"d,81:18,81:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(UZ)","loc":"d,81:43,81:49", + {"type":"DISPLAY","name":"","addr":"(XX)","loc":"d,81:43,81:49", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:81: got='h%x exp='h4\\n","addr":"(VZ)","loc":"d,81:43,81:49","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:81: got='h%x exp='h4\\n","addr":"(YX)","loc":"d,81:43,81:49","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(WZ)","loc":"d,81:122,81:123","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(ZX)","loc":"d,81:122,81:123","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(XZ)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(AY)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(YZ)","loc":"d,81:122,81:123","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(BY)","loc":"d,81:122,81:123","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(ZZ)","loc":"d,81:122,81:123","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(CY)","loc":"d,81:122,81:123","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(AAB)","loc":"d,81:122,81:123","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(DY)","loc":"d,81:122,81:123","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(BAB)","loc":"d,81:122,81:123","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(EY)","loc":"d,81:122,81:123","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(CAB)","loc":"d,81:139,81:144","isFatal":false} + {"type":"STOP","name":"","addr":"(FY)","loc":"d,81:139,81:144","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(DAB)","loc":"d,82:13,82:15", + {"type":"IF","name":"","addr":"(GY)","loc":"d,82:13,82:15", "condp": [ - {"type":"NEQ","name":"","addr":"(EAB)","loc":"d,82:29,82:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(HY)","loc":"d,82:29,82:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h4","addr":"(FAB)","loc":"d,82:34,82:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(IY)","loc":"d,82:34,82:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(GAB)","loc":"d,82:18,82:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(JY)","loc":"d,82:18,82:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(HAB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(KY)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(IAB)","loc":"d,82:18,82:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(LY)","loc":"d,82:18,82:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(JAB)","loc":"d,82:18,82:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(MY)","loc":"d,82:18,82:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(KAB)","loc":"d,82:18,82:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(NY)","loc":"d,82:18,82:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(LAB)","loc":"d,82:18,82:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(OY)","loc":"d,82:18,82:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(MAB)","loc":"d,82:46,82:52", + {"type":"DISPLAY","name":"","addr":"(PY)","loc":"d,82:46,82:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:82: got='h%x exp='h4\\n","addr":"(NAB)","loc":"d,82:46,82:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:82: got='h%x exp='h4\\n","addr":"(QY)","loc":"d,82:46,82:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(OAB)","loc":"d,82:125,82:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(RY)","loc":"d,82:125,82:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(PAB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(SY)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(QAB)","loc":"d,82:125,82:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(TY)","loc":"d,82:125,82:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(RAB)","loc":"d,82:125,82:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(UY)","loc":"d,82:125,82:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(SAB)","loc":"d,82:125,82:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(VY)","loc":"d,82:125,82:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(TAB)","loc":"d,82:125,82:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(WY)","loc":"d,82:125,82:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(UAB)","loc":"d,82:145,82:150","isFatal":false} + {"type":"STOP","name":"","addr":"(XY)","loc":"d,82:145,82:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(VAB)","loc":"d,83:13,83:15", + {"type":"IF","name":"","addr":"(YY)","loc":"d,83:13,83:15", "condp": [ - {"type":"NEQ","name":"","addr":"(WAB)","loc":"d,83:29,83:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(ZY)","loc":"d,83:29,83:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h1","addr":"(XAB)","loc":"d,83:34,83:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(AZ)","loc":"d,83:34,83:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(YAB)","loc":"d,83:18,83:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(BZ)","loc":"d,83:18,83:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(ZAB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(CZ)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(ABB)","loc":"d,83:18,83:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(DZ)","loc":"d,83:18,83:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(BBB)","loc":"d,83:18,83:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(EZ)","loc":"d,83:18,83:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(CBB)","loc":"d,83:18,83:19","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(FZ)","loc":"d,83:18,83:19","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(DBB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(GZ)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(EBB)","loc":"d,83:18,83:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(HZ)","loc":"d,83:18,83:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(FBB)","loc":"d,83:18,83:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(IZ)","loc":"d,83:18,83:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(GBB)","loc":"d,83:18,83:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(JZ)","loc":"d,83:18,83:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(HBB)","loc":"d,83:18,83:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(KZ)","loc":"d,83:18,83:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -1848,33 +1724,33 @@ ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(IBB)","loc":"d,83:46,83:52", + {"type":"DISPLAY","name":"","addr":"(LZ)","loc":"d,83:46,83:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:83: got='h%x exp='h1\\n","addr":"(JBB)","loc":"d,83:46,83:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:83: got='h%x exp='h1\\n","addr":"(MZ)","loc":"d,83:46,83:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(KBB)","loc":"d,83:125,83:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(NZ)","loc":"d,83:125,83:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(LBB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(OZ)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(MBB)","loc":"d,83:125,83:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(PZ)","loc":"d,83:125,83:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(NBB)","loc":"d,83:125,83:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(QZ)","loc":"d,83:125,83:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(OBB)","loc":"d,83:125,83:126","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(RZ)","loc":"d,83:125,83:126","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(PBB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(SZ)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(QBB)","loc":"d,83:125,83:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(TZ)","loc":"d,83:125,83:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(RBB)","loc":"d,83:125,83:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(UZ)","loc":"d,83:125,83:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(SBB)","loc":"d,83:125,83:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(VZ)","loc":"d,83:125,83:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(TBB)","loc":"d,83:125,83:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(WZ)","loc":"d,83:125,83:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -1882,138 +1758,138 @@ ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(UBB)","loc":"d,83:145,83:150","isFatal":false} + {"type":"STOP","name":"","addr":"(XZ)","loc":"d,83:145,83:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(VBB)","loc":"d,84:13,84:15", + {"type":"IF","name":"","addr":"(YZ)","loc":"d,84:13,84:15", "condp": [ - {"type":"NEQ","name":"","addr":"(WBB)","loc":"d,84:26,84:29","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(ZZ)","loc":"d,84:26,84:29","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h1","addr":"(XBB)","loc":"d,84:31,84:34","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(AAB)","loc":"d,84:31,84:34","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(YBB)","loc":"d,84:18,84:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(BAB)","loc":"d,84:18,84:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(ZBB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(CAB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(ACB)","loc":"d,84:18,84:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(DAB)","loc":"d,84:18,84:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(BCB)","loc":"d,84:18,84:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(EAB)","loc":"d,84:18,84:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(CCB)","loc":"d,84:18,84:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(FAB)","loc":"d,84:18,84:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(DCB)","loc":"d,84:18,84:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(GAB)","loc":"d,84:18,84:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(ECB)","loc":"d,84:43,84:49", + {"type":"DISPLAY","name":"","addr":"(HAB)","loc":"d,84:43,84:49", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:84: got='h%x exp='h1\\n","addr":"(FCB)","loc":"d,84:43,84:49","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:84: got='h%x exp='h1\\n","addr":"(IAB)","loc":"d,84:43,84:49","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(GCB)","loc":"d,84:122,84:123","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(JAB)","loc":"d,84:122,84:123","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(HCB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(KAB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(ICB)","loc":"d,84:122,84:123","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(LAB)","loc":"d,84:122,84:123","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(JCB)","loc":"d,84:122,84:123","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(MAB)","loc":"d,84:122,84:123","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(KCB)","loc":"d,84:122,84:123","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(NAB)","loc":"d,84:122,84:123","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(LCB)","loc":"d,84:122,84:123","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(OAB)","loc":"d,84:122,84:123","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(MCB)","loc":"d,84:139,84:144","isFatal":false} + {"type":"STOP","name":"","addr":"(PAB)","loc":"d,84:139,84:144","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(NCB)","loc":"d,85:13,85:15", + {"type":"IF","name":"","addr":"(QAB)","loc":"d,85:13,85:15", "condp": [ - {"type":"NEQ","name":"","addr":"(OCB)","loc":"d,85:29,85:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(RAB)","loc":"d,85:29,85:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h1","addr":"(PCB)","loc":"d,85:34,85:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(SAB)","loc":"d,85:34,85:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(QCB)","loc":"d,85:18,85:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(TAB)","loc":"d,85:18,85:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(RCB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(UAB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(SCB)","loc":"d,85:18,85:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(VAB)","loc":"d,85:18,85:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(TCB)","loc":"d,85:18,85:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(WAB)","loc":"d,85:18,85:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(UCB)","loc":"d,85:18,85:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(XAB)","loc":"d,85:18,85:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(VCB)","loc":"d,85:18,85:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(YAB)","loc":"d,85:18,85:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(WCB)","loc":"d,85:46,85:52", + {"type":"DISPLAY","name":"","addr":"(ZAB)","loc":"d,85:46,85:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:85: got='h%x exp='h1\\n","addr":"(XCB)","loc":"d,85:46,85:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:85: got='h%x exp='h1\\n","addr":"(ABB)","loc":"d,85:46,85:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(YCB)","loc":"d,85:125,85:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(BBB)","loc":"d,85:125,85:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(ZCB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(CBB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(ADB)","loc":"d,85:125,85:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(DBB)","loc":"d,85:125,85:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(BDB)","loc":"d,85:125,85:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(EBB)","loc":"d,85:125,85:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(CDB)","loc":"d,85:125,85:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(FBB)","loc":"d,85:125,85:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(DDB)","loc":"d,85:125,85:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(GBB)","loc":"d,85:125,85:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(EDB)","loc":"d,85:145,85:150","isFatal":false} + {"type":"STOP","name":"","addr":"(HBB)","loc":"d,85:145,85:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(FDB)","loc":"d,86:13,86:15", + {"type":"IF","name":"","addr":"(IBB)","loc":"d,86:13,86:15", "condp": [ - {"type":"NEQ","name":"","addr":"(GDB)","loc":"d,86:29,86:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(JBB)","loc":"d,86:29,86:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h4","addr":"(HDB)","loc":"d,86:34,86:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(KBB)","loc":"d,86:34,86:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(IDB)","loc":"d,86:18,86:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(LBB)","loc":"d,86:18,86:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(JDB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(MBB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(KDB)","loc":"d,86:18,86:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(NBB)","loc":"d,86:18,86:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(LDB)","loc":"d,86:18,86:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(OBB)","loc":"d,86:18,86:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(MDB)","loc":"d,86:18,86:19","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(PBB)","loc":"d,86:18,86:19","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(NDB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(QBB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(ODB)","loc":"d,86:18,86:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(RBB)","loc":"d,86:18,86:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(PDB)","loc":"d,86:18,86:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(SBB)","loc":"d,86:18,86:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(QDB)","loc":"d,86:18,86:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(TBB)","loc":"d,86:18,86:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(RDB)","loc":"d,86:18,86:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(UBB)","loc":"d,86:18,86:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -2022,33 +1898,33 @@ ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(SDB)","loc":"d,86:46,86:52", + {"type":"DISPLAY","name":"","addr":"(VBB)","loc":"d,86:46,86:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:86: got='h%x exp='h4\\n","addr":"(TDB)","loc":"d,86:46,86:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:86: got='h%x exp='h4\\n","addr":"(WBB)","loc":"d,86:46,86:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(UDB)","loc":"d,86:125,86:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(XBB)","loc":"d,86:125,86:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(VDB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(YBB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(WDB)","loc":"d,86:125,86:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(ZBB)","loc":"d,86:125,86:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(XDB)","loc":"d,86:125,86:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(ACB)","loc":"d,86:125,86:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(YDB)","loc":"d,86:125,86:126","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(BCB)","loc":"d,86:125,86:126","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(ZDB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(CCB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(AEB)","loc":"d,86:125,86:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(DCB)","loc":"d,86:125,86:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(BEB)","loc":"d,86:125,86:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(ECB)","loc":"d,86:125,86:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(CEB)","loc":"d,86:125,86:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(FCB)","loc":"d,86:125,86:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(DEB)","loc":"d,86:125,86:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(GCB)","loc":"d,86:125,86:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -2056,215 +1932,215 @@ ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(EEB)","loc":"d,86:145,86:150","isFatal":false} + {"type":"STOP","name":"","addr":"(HCB)","loc":"d,86:145,86:150","isFatal":false} ],"elsesp": []}, - {"type":"ASSIGNDLY","name":"","addr":"(FEB)","loc":"d,87:12,87:14","dtypep":"(AC)", + {"type":"ASSIGNDLY","name":"","addr":"(ICB)","loc":"d,87:12,87:14","dtypep":"(TB)", "rhsp": [ - {"type":"CONST","name":"4'h4","addr":"(GEB)","loc":"d,87:15,87:18","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(JCB)","loc":"d,87:15,87:18","dtypep":"(TB)"} ], "lhsp": [ - {"type":"VARREF","name":"__Vdly__t.e","addr":"(HEB)","loc":"d,87:10,87:11","dtypep":"(AC)","access":"WR","varp":"(RR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.e","addr":"(KCB)","loc":"d,87:10,87:11","dtypep":"(TB)","access":"WR","varp":"(UP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ], "elsesp": [ - {"type":"IF","name":"","addr":"(IEB)","loc":"d,89:12,89:14", + {"type":"IF","name":"","addr":"(LCB)","loc":"d,89:12,89:14", "condp": [ - {"type":"EQ","name":"","addr":"(JEB)","loc":"d,89:19,89:21","dtypep":"(FB)", + {"type":"EQ","name":"","addr":"(MCB)","loc":"d,89:19,89:21","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'sh3","addr":"(KEB)","loc":"d,89:21,89:22","dtypep":"(KB)"} + {"type":"CONST","name":"32'sh3","addr":"(NCB)","loc":"d,89:21,89:22","dtypep":"(KB)"} ], "rhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(LEB)","loc":"d,89:16,89:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(OCB)","loc":"d,89:16,89:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "thensp": [ - {"type":"IF","name":"","addr":"(MEB)","loc":"d,90:13,90:15", + {"type":"IF","name":"","addr":"(PCB)","loc":"d,90:13,90:15", "condp": [ - {"type":"NEQN","name":"","addr":"(NEB)","loc":"d,90:26,90:28","dtypep":"(FB)", + {"type":"NEQN","name":"","addr":"(QCB)","loc":"d,90:26,90:28","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"\\\"E04\\\"","addr":"(OEB)","loc":"d,90:30,90:35","dtypep":"(RB)"} + {"type":"CONST","name":"\\\"E04\\\"","addr":"(RCB)","loc":"d,90:30,90:35","dtypep":"(RB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(PEB)","loc":"d,90:18,90:19","dtypep":"(RB)", + {"type":"ARRAYSEL","name":"","addr":"(SCB)","loc":"d,90:18,90:19","dtypep":"(RB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(QEB)","loc":"d,17:12,17:16","dtypep":"(OM)","access":"RD","varp":"(PM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(TCB)","loc":"d,17:12,17:16","dtypep":"(HM)","access":"RD","varp":"(IM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(REB)","loc":"d,90:18,90:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(UCB)","loc":"d,90:18,90:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(SEB)","loc":"d,90:18,90:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(VCB)","loc":"d,90:18,90:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(TEB)","loc":"d,90:18,90:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(WCB)","loc":"d,90:18,90:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(UEB)","loc":"d,90:18,90:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(XCB)","loc":"d,90:18,90:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"ASSIGN","name":"","addr":"(VEB)","loc":"d,90:123,90:124","dtypep":"(RB)", + {"type":"ASSIGN","name":"","addr":"(YCB)","loc":"d,90:123,90:124","dtypep":"(RB)", "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(WEB)","loc":"d,90:123,90:124","dtypep":"(RB)", + {"type":"ARRAYSEL","name":"","addr":"(ZCB)","loc":"d,90:123,90:124","dtypep":"(RB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(XEB)","loc":"d,17:12,17:16","dtypep":"(OM)","access":"RD","varp":"(PM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(ADB)","loc":"d,17:12,17:16","dtypep":"(HM)","access":"RD","varp":"(IM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(YEB)","loc":"d,90:123,90:124","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(BDB)","loc":"d,90:123,90:124","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(ZEB)","loc":"d,90:123,90:124","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(CDB)","loc":"d,90:123,90:124","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(AFB)","loc":"d,90:123,90:124","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(DDB)","loc":"d,90:123,90:124","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(BFB)","loc":"d,90:123,90:124","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(EDB)","loc":"d,90:123,90:124","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ], "lhsp": [ - {"type":"VARREF","name":"__Vtemp_3","addr":"(CFB)","loc":"d,90:123,90:124","dtypep":"(RB)","access":"WR","varp":"(WR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vtemp_3","addr":"(FDB)","loc":"d,90:123,90:124","dtypep":"(RB)","access":"WR","varp":"(ZP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"DISPLAY","name":"","addr":"(DFB)","loc":"d,90:44,90:50", + {"type":"DISPLAY","name":"","addr":"(GDB)","loc":"d,90:44,90:50", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:90: got='%@' exp='E04'\\n","addr":"(EFB)","loc":"d,90:44,90:50","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:90: got='%@' exp='E04'\\n","addr":"(HDB)","loc":"d,90:44,90:50","dtypep":"(RB)", "exprsp": [ - {"type":"VARREF","name":"__Vtemp_3","addr":"(FFB)","loc":"d,90:123,90:124","dtypep":"(RB)","access":"RD","varp":"(WR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vtemp_3","addr":"(IDB)","loc":"d,90:123,90:124","dtypep":"(RB)","access":"RD","varp":"(ZP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(GFB)","loc":"d,90:142,90:147","isFatal":false} + {"type":"STOP","name":"","addr":"(JDB)","loc":"d,90:142,90:147","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(HFB)","loc":"d,91:13,91:15", + {"type":"IF","name":"","addr":"(KDB)","loc":"d,91:13,91:15", "condp": [ - {"type":"NEQ","name":"","addr":"(IFB)","loc":"d,91:26,91:29","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(LDB)","loc":"d,91:26,91:29","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h1","addr":"(JFB)","loc":"d,91:31,91:34","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(MDB)","loc":"d,91:31,91:34","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(KFB)","loc":"d,91:18,91:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(NDB)","loc":"d,91:18,91:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(LFB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(ODB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(MFB)","loc":"d,91:18,91:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(PDB)","loc":"d,91:18,91:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(NFB)","loc":"d,91:18,91:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(QDB)","loc":"d,91:18,91:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(OFB)","loc":"d,91:18,91:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(RDB)","loc":"d,91:18,91:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(PFB)","loc":"d,91:18,91:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(SDB)","loc":"d,91:18,91:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(QFB)","loc":"d,91:43,91:49", + {"type":"DISPLAY","name":"","addr":"(TDB)","loc":"d,91:43,91:49", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:91: got='h%x exp='h1\\n","addr":"(RFB)","loc":"d,91:43,91:49","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:91: got='h%x exp='h1\\n","addr":"(UDB)","loc":"d,91:43,91:49","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(SFB)","loc":"d,91:122,91:123","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(VDB)","loc":"d,91:122,91:123","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(TFB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(WDB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(UFB)","loc":"d,91:122,91:123","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(XDB)","loc":"d,91:122,91:123","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(VFB)","loc":"d,91:122,91:123","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(YDB)","loc":"d,91:122,91:123","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(WFB)","loc":"d,91:122,91:123","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(ZDB)","loc":"d,91:122,91:123","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(XFB)","loc":"d,91:122,91:123","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(AEB)","loc":"d,91:122,91:123","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(YFB)","loc":"d,91:139,91:144","isFatal":false} + {"type":"STOP","name":"","addr":"(BEB)","loc":"d,91:139,91:144","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(ZFB)","loc":"d,92:13,92:15", + {"type":"IF","name":"","addr":"(CEB)","loc":"d,92:13,92:15", "condp": [ - {"type":"NEQ","name":"","addr":"(AGB)","loc":"d,92:29,92:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(DEB)","loc":"d,92:29,92:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h1","addr":"(BGB)","loc":"d,92:34,92:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(EEB)","loc":"d,92:34,92:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(CGB)","loc":"d,92:18,92:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(FEB)","loc":"d,92:18,92:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(DGB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(GEB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(EGB)","loc":"d,92:18,92:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(HEB)","loc":"d,92:18,92:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(FGB)","loc":"d,92:18,92:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(IEB)","loc":"d,92:18,92:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(GGB)","loc":"d,92:18,92:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(JEB)","loc":"d,92:18,92:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(HGB)","loc":"d,92:18,92:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(KEB)","loc":"d,92:18,92:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(IGB)","loc":"d,92:46,92:52", + {"type":"DISPLAY","name":"","addr":"(LEB)","loc":"d,92:46,92:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:92: got='h%x exp='h1\\n","addr":"(JGB)","loc":"d,92:46,92:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:92: got='h%x exp='h1\\n","addr":"(MEB)","loc":"d,92:46,92:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(KGB)","loc":"d,92:125,92:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(NEB)","loc":"d,92:125,92:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(LGB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(OEB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(MGB)","loc":"d,92:125,92:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(PEB)","loc":"d,92:125,92:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(NGB)","loc":"d,92:125,92:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(QEB)","loc":"d,92:125,92:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(OGB)","loc":"d,92:125,92:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(REB)","loc":"d,92:125,92:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(PGB)","loc":"d,92:125,92:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(SEB)","loc":"d,92:125,92:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(QGB)","loc":"d,92:145,92:150","isFatal":false} + {"type":"STOP","name":"","addr":"(TEB)","loc":"d,92:145,92:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(RGB)","loc":"d,93:13,93:15", + {"type":"IF","name":"","addr":"(UEB)","loc":"d,93:13,93:15", "condp": [ - {"type":"NEQ","name":"","addr":"(SGB)","loc":"d,93:29,93:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(VEB)","loc":"d,93:29,93:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h3","addr":"(TGB)","loc":"d,93:34,93:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(WEB)","loc":"d,93:34,93:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(UGB)","loc":"d,93:18,93:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(XEB)","loc":"d,93:18,93:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(VGB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(YEB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(WGB)","loc":"d,93:18,93:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(ZEB)","loc":"d,93:18,93:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(XGB)","loc":"d,93:18,93:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(AFB)","loc":"d,93:18,93:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(YGB)","loc":"d,93:18,93:19","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(BFB)","loc":"d,93:18,93:19","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(ZGB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(CFB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(AHB)","loc":"d,93:18,93:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(DFB)","loc":"d,93:18,93:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(BHB)","loc":"d,93:18,93:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(EFB)","loc":"d,93:18,93:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(CHB)","loc":"d,93:18,93:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(FFB)","loc":"d,93:18,93:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(DHB)","loc":"d,93:18,93:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(GFB)","loc":"d,93:18,93:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -2273,33 +2149,33 @@ ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(EHB)","loc":"d,93:46,93:52", + {"type":"DISPLAY","name":"","addr":"(HFB)","loc":"d,93:46,93:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:93: got='h%x exp='h3\\n","addr":"(FHB)","loc":"d,93:46,93:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:93: got='h%x exp='h3\\n","addr":"(IFB)","loc":"d,93:46,93:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(GHB)","loc":"d,93:125,93:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(JFB)","loc":"d,93:125,93:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(HHB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(KFB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(IHB)","loc":"d,93:125,93:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(LFB)","loc":"d,93:125,93:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(JHB)","loc":"d,93:125,93:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(MFB)","loc":"d,93:125,93:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(KHB)","loc":"d,93:125,93:126","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(NFB)","loc":"d,93:125,93:126","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(LHB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"RD","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(OFB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"RD","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(MHB)","loc":"d,93:125,93:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(PFB)","loc":"d,93:125,93:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(NHB)","loc":"d,93:125,93:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(QFB)","loc":"d,93:125,93:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(OHB)","loc":"d,93:125,93:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(RFB)","loc":"d,93:125,93:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(PHB)","loc":"d,93:125,93:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(SFB)","loc":"d,93:125,93:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -2307,138 +2183,138 @@ ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(QHB)","loc":"d,93:145,93:150","isFatal":false} + {"type":"STOP","name":"","addr":"(TFB)","loc":"d,93:145,93:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(RHB)","loc":"d,94:13,94:15", + {"type":"IF","name":"","addr":"(UFB)","loc":"d,94:13,94:15", "condp": [ - {"type":"NEQ","name":"","addr":"(SHB)","loc":"d,94:26,94:29","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(VFB)","loc":"d,94:26,94:29","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h3","addr":"(THB)","loc":"d,94:31,94:34","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(WFB)","loc":"d,94:31,94:34","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(UHB)","loc":"d,94:18,94:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(XFB)","loc":"d,94:18,94:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(VHB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(YFB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(WHB)","loc":"d,94:18,94:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(ZFB)","loc":"d,94:18,94:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(XHB)","loc":"d,94:18,94:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(AGB)","loc":"d,94:18,94:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(YHB)","loc":"d,94:18,94:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(BGB)","loc":"d,94:18,94:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(ZHB)","loc":"d,94:18,94:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(CGB)","loc":"d,94:18,94:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(AIB)","loc":"d,94:43,94:49", + {"type":"DISPLAY","name":"","addr":"(DGB)","loc":"d,94:43,94:49", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:94: got='h%x exp='h3\\n","addr":"(BIB)","loc":"d,94:43,94:49","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:94: got='h%x exp='h3\\n","addr":"(EGB)","loc":"d,94:43,94:49","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(CIB)","loc":"d,94:122,94:123","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(FGB)","loc":"d,94:122,94:123","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(DIB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(GGB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(EIB)","loc":"d,94:122,94:123","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(HGB)","loc":"d,94:122,94:123","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(FIB)","loc":"d,94:122,94:123","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(IGB)","loc":"d,94:122,94:123","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(GIB)","loc":"d,94:122,94:123","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(JGB)","loc":"d,94:122,94:123","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(HIB)","loc":"d,94:122,94:123","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(KGB)","loc":"d,94:122,94:123","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(IIB)","loc":"d,94:139,94:144","isFatal":false} + {"type":"STOP","name":"","addr":"(LGB)","loc":"d,94:139,94:144","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(JIB)","loc":"d,95:13,95:15", + {"type":"IF","name":"","addr":"(MGB)","loc":"d,95:13,95:15", "condp": [ - {"type":"NEQ","name":"","addr":"(KIB)","loc":"d,95:29,95:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(NGB)","loc":"d,95:29,95:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h3","addr":"(LIB)","loc":"d,95:34,95:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(OGB)","loc":"d,95:34,95:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(MIB)","loc":"d,95:18,95:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(PGB)","loc":"d,95:18,95:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(NIB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(QGB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(OIB)","loc":"d,95:18,95:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(RGB)","loc":"d,95:18,95:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(PIB)","loc":"d,95:18,95:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(SGB)","loc":"d,95:18,95:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(QIB)","loc":"d,95:18,95:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(TGB)","loc":"d,95:18,95:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(RIB)","loc":"d,95:18,95:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(UGB)","loc":"d,95:18,95:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(SIB)","loc":"d,95:46,95:52", + {"type":"DISPLAY","name":"","addr":"(VGB)","loc":"d,95:46,95:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:95: got='h%x exp='h3\\n","addr":"(TIB)","loc":"d,95:46,95:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:95: got='h%x exp='h3\\n","addr":"(WGB)","loc":"d,95:46,95:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(UIB)","loc":"d,95:125,95:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(XGB)","loc":"d,95:125,95:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(VIB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(YGB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(WIB)","loc":"d,95:125,95:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(ZGB)","loc":"d,95:125,95:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(XIB)","loc":"d,95:125,95:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(AHB)","loc":"d,95:125,95:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(YIB)","loc":"d,95:125,95:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(BHB)","loc":"d,95:125,95:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(ZIB)","loc":"d,95:125,95:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(CHB)","loc":"d,95:125,95:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(AJB)","loc":"d,95:145,95:150","isFatal":false} + {"type":"STOP","name":"","addr":"(DHB)","loc":"d,95:145,95:150","isFatal":false} ],"elsesp": []}, - {"type":"IF","name":"","addr":"(BJB)","loc":"d,96:13,96:15", + {"type":"IF","name":"","addr":"(EHB)","loc":"d,96:13,96:15", "condp": [ - {"type":"NEQ","name":"","addr":"(CJB)","loc":"d,96:29,96:32","dtypep":"(FB)", + {"type":"NEQ","name":"","addr":"(FHB)","loc":"d,96:29,96:32","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"4'h1","addr":"(DJB)","loc":"d,96:34,96:37","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(GHB)","loc":"d,96:34,96:37","dtypep":"(TB)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(EJB)","loc":"d,96:18,96:19","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(HHB)","loc":"d,96:18,96:19","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(FJB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(IHB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(GJB)","loc":"d,96:18,96:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(JHB)","loc":"d,96:18,96:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(HJB)","loc":"d,96:18,96:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(KHB)","loc":"d,96:18,96:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(IJB)","loc":"d,96:18,96:19","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(LHB)","loc":"d,96:18,96:19","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(JJB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(MHB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(KJB)","loc":"d,96:18,96:19","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(NHB)","loc":"d,96:18,96:19","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(LJB)","loc":"d,96:18,96:19","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(OHB)","loc":"d,96:18,96:19","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(MJB)","loc":"d,96:18,96:19","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(PHB)","loc":"d,96:18,96:19","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(NJB)","loc":"d,96:18,96:19","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(QHB)","loc":"d,96:18,96:19","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -2447,33 +2323,33 @@ ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(OJB)","loc":"d,96:46,96:52", + {"type":"DISPLAY","name":"","addr":"(RHB)","loc":"d,96:46,96:52", "fmtp": [ - {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:96: got='h%x exp='h1\\n","addr":"(PJB)","loc":"d,96:46,96:52","dtypep":"(RB)", + {"type":"SFORMATF","name":"%%Error: t/t_enum_type_methods.v:96: got='h%x exp='h1\\n","addr":"(SHB)","loc":"d,96:46,96:52","dtypep":"(RB)", "exprsp": [ - {"type":"ARRAYSEL","name":"","addr":"(QJB)","loc":"d,96:125,96:126","dtypep":"(AC)", + {"type":"ARRAYSEL","name":"","addr":"(THB)","loc":"d,96:125,96:126","dtypep":"(TB)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(RJB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(UHB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(SJB)","loc":"d,96:125,96:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(VHB)","loc":"d,96:125,96:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(TJB)","loc":"d,96:125,96:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(WHB)","loc":"d,96:125,96:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"ARRAYSEL","name":"","addr":"(UJB)","loc":"d,96:125,96:126","dtypep":"(LC)", + {"type":"ARRAYSEL","name":"","addr":"(XHB)","loc":"d,96:125,96:126","dtypep":"(EC)", "fromp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(VJB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"RD","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(YHB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"RD","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "bitp": [ - {"type":"AND","name":"","addr":"(WJB)","loc":"d,96:125,96:126","dtypep":"(LC)", + {"type":"AND","name":"","addr":"(ZHB)","loc":"d,96:125,96:126","dtypep":"(EC)", "lhsp": [ - {"type":"CONST","name":"32'h7","addr":"(XJB)","loc":"d,96:125,96:126","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(AIB)","loc":"d,96:125,96:126","dtypep":"(GC)"} ], "rhsp": [ - {"type":"CCAST","name":"","addr":"(YJB)","loc":"d,96:125,96:126","dtypep":"(LC)","size":32, + {"type":"CCAST","name":"","addr":"(BIB)","loc":"d,96:125,96:126","dtypep":"(EC)","size":32, "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(ZJB)","loc":"d,96:125,96:126","dtypep":"(LC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(CIB)","loc":"d,96:125,96:126","dtypep":"(EC)","access":"RD","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]} ]} @@ -2481,521 +2357,522 @@ ]} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(AKB)","loc":"d,96:145,96:150","isFatal":false} + {"type":"STOP","name":"","addr":"(DIB)","loc":"d,96:145,96:150","isFatal":false} ],"elsesp": []}, - {"type":"ASSIGNDLY","name":"","addr":"(BKB)","loc":"d,97:12,97:14","dtypep":"(AC)", + {"type":"ASSIGNDLY","name":"","addr":"(EIB)","loc":"d,97:12,97:14","dtypep":"(TB)", "rhsp": [ - {"type":"CONST","name":"4'h1","addr":"(CKB)","loc":"d,97:15,97:18","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(FIB)","loc":"d,97:15,97:18","dtypep":"(TB)"} ], "lhsp": [ - {"type":"VARREF","name":"__Vdly__t.e","addr":"(DKB)","loc":"d,97:10,97:11","dtypep":"(AC)","access":"WR","varp":"(RR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.e","addr":"(GIB)","loc":"d,97:10,97:11","dtypep":"(TB)","access":"WR","varp":"(UP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ], "elsesp": [ - {"type":"IF","name":"","addr":"(EKB)","loc":"d,99:12,99:14", + {"type":"IF","name":"","addr":"(HIB)","loc":"d,99:12,99:14", "condp": [ - {"type":"EQ","name":"","addr":"(FKB)","loc":"d,99:19,99:21","dtypep":"(FB)", + {"type":"EQ","name":"","addr":"(IIB)","loc":"d,99:19,99:21","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'sh63","addr":"(GKB)","loc":"d,99:21,99:23","dtypep":"(KB)"} + {"type":"CONST","name":"32'sh63","addr":"(JIB)","loc":"d,99:21,99:23","dtypep":"(KB)"} ], "rhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(HKB)","loc":"d,99:16,99:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(KIB)","loc":"d,99:16,99:19","dtypep":"(R)","access":"RD","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "thensp": [ - {"type":"DISPLAY","name":"","addr":"(IKB)","loc":"d,100:10,100:16", + {"type":"DISPLAY","name":"","addr":"(LIB)","loc":"d,100:10,100:16", "fmtp": [ - {"type":"SFORMATF","name":"*-* All Finished *-*\\n","addr":"(JKB)","loc":"d,100:10,100:16","dtypep":"(RB)","exprsp": [],"scopeNamep": []} + {"type":"SFORMATF","name":"*-* All Finished *-*\\n","addr":"(MIB)","loc":"d,100:10,100:16","dtypep":"(RB)","exprsp": [],"scopeNamep": []} ],"filep": []}, - {"type":"FINISH","name":"","addr":"(KKB)","loc":"d,101:10,101:17"} + {"type":"FINISH","name":"","addr":"(NIB)","loc":"d,101:10,101:17"} ],"elsesp": []} ]} ]} ]} ]}, - {"type":"ASSIGN","name":"","addr":"(LKB)","loc":"d,23:17,23:20","dtypep":"(R)", + {"type":"ASSIGN","name":"","addr":"(OIB)","loc":"d,23:17,23:20","dtypep":"(R)", "rhsp": [ - {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(MKB)","loc":"d,23:17,23:20","dtypep":"(R)","access":"RD","varp":"(OR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.cyc","addr":"(PIB)","loc":"d,23:17,23:20","dtypep":"(R)","access":"RD","varp":"(RP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"t.cyc","addr":"(NKB)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(QIB)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(OKB)","loc":"d,24:9,24:10","dtypep":"(AC)", + {"type":"ASSIGN","name":"","addr":"(RIB)","loc":"d,24:9,24:10","dtypep":"(TB)", "rhsp": [ - {"type":"VARREF","name":"__Vdly__t.e","addr":"(PKB)","loc":"d,24:9,24:10","dtypep":"(AC)","access":"RD","varp":"(RR)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vdly__t.e","addr":"(SIB)","loc":"d,24:9,24:10","dtypep":"(TB)","access":"RD","varp":"(UP)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"t.e","addr":"(QKB)","loc":"d,24:9,24:10","dtypep":"(AC)","access":"WR","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(TIB)","loc":"d,24:9,24:10","dtypep":"(TB)","access":"WR","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ],"finalsp": []}, - {"type":"CFUNC","name":"_eval_phase__act","addr":"(RKB)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [], + {"type":"CFUNC","name":"_eval_phase__act","addr":"(UIB)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [], "initsp": [ - {"type":"VAR","name":"__VpreTriggered","addr":"(SKB)","loc":"d,11:8,11:9","dtypep":"(V)","origName":"__VpreTriggered","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"VlTriggerVec","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"VAR","name":"__VactExecute","addr":"(TKB)","loc":"d,11:8,11:9","dtypep":"(P)","origName":"__VactExecute","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} + {"type":"VAR","name":"__VpreTriggered","addr":"(VIB)","loc":"d,11:8,11:9","dtypep":"(V)","origName":"__VpreTriggered","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"VlTriggerVec","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, + {"type":"VAR","name":"__VactExecute","addr":"(WIB)","loc":"d,11:8,11:9","dtypep":"(P)","origName":"__VactExecute","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} ], "stmtsp": [ - {"type":"STMTEXPR","name":"","addr":"(UKB)","loc":"a,0:0,0:0", + {"type":"STMTEXPR","name":"","addr":"(XIB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CCALL","name":"","addr":"(VKB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_eval_triggers__act","funcp":"(BP)","argsp": []} + {"type":"CCALL","name":"","addr":"(YIB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_eval_triggers__act","funcp":"(EN)","argsp": []} ]}, - {"type":"ASSIGN","name":"","addr":"(WKB)","loc":"a,0:0,0:0","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(ZIB)","loc":"a,0:0,0:0","dtypep":"(FB)", "rhsp": [ - {"type":"CMETHODHARD","name":"any","addr":"(XKB)","loc":"a,0:0,0:0","dtypep":"(FB)", + {"type":"CMETHODHARD","name":"any","addr":"(AJB)","loc":"a,0:0,0:0","dtypep":"(FB)", "fromp": [ - {"type":"VARREF","name":"__VactTriggered","addr":"(YKB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactTriggered","addr":"(BJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"pinsp": []} ], "lhsp": [ - {"type":"VARREF","name":"__VactExecute","addr":"(ZKB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(TKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactExecute","addr":"(CJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(WIB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"IF","name":"","addr":"(ALB)","loc":"a,0:0,0:0", + {"type":"IF","name":"","addr":"(DJB)","loc":"a,0:0,0:0", "condp": [ - {"type":"VARREF","name":"__VactExecute","addr":"(BLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(TKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactExecute","addr":"(EJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(WIB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "thensp": [ - {"type":"STMTEXPR","name":"","addr":"(CLB)","loc":"a,0:0,0:0", + {"type":"STMTEXPR","name":"","addr":"(FJB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CMETHODHARD","name":"andNot","addr":"(DLB)","loc":"a,0:0,0:0","dtypep":"(CB)", + {"type":"CMETHODHARD","name":"andNot","addr":"(GJB)","loc":"a,0:0,0:0","dtypep":"(CB)", "fromp": [ - {"type":"VARREF","name":"__VpreTriggered","addr":"(ELB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(SKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VpreTriggered","addr":"(HJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(VIB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "pinsp": [ - {"type":"VARREF","name":"__VactTriggered","addr":"(FLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"}, - {"type":"VARREF","name":"__VnbaTriggered","addr":"(GLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactTriggered","addr":"(IJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"}, + {"type":"VARREF","name":"__VnbaTriggered","addr":"(JJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]}, - {"type":"STMTEXPR","name":"","addr":"(HLB)","loc":"a,0:0,0:0", + {"type":"STMTEXPR","name":"","addr":"(KJB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CMETHODHARD","name":"thisOr","addr":"(ILB)","loc":"a,0:0,0:0","dtypep":"(CB)", + {"type":"CMETHODHARD","name":"thisOr","addr":"(LJB)","loc":"a,0:0,0:0","dtypep":"(CB)", "fromp": [ - {"type":"VARREF","name":"__VnbaTriggered","addr":"(JLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaTriggered","addr":"(MJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "pinsp": [ - {"type":"VARREF","name":"__VactTriggered","addr":"(KLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactTriggered","addr":"(NJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(U)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ]}, - {"type":"STMTEXPR","name":"","addr":"(LLB)","loc":"a,0:0,0:0", + {"type":"STMTEXPR","name":"","addr":"(OJB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CCALL","name":"","addr":"(MLB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_eval_act","funcp":"(ER)","argsp": []} + {"type":"CCALL","name":"","addr":"(PJB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_eval_act","funcp":"(HP)","argsp": []} ]} ],"elsesp": []}, - {"type":"CRETURN","name":"","addr":"(NLB)","loc":"a,0:0,0:0", + {"type":"CRETURN","name":"","addr":"(QJB)","loc":"a,0:0,0:0", "lhsp": [ - {"type":"VARREF","name":"__VactExecute","addr":"(OLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(TKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactExecute","addr":"(RJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(WIB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ],"finalsp": []}, - {"type":"CFUNC","name":"_eval_phase__nba","addr":"(PLB)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [], + {"type":"CFUNC","name":"_eval_phase__nba","addr":"(SJB)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [], "initsp": [ - {"type":"VAR","name":"__VnbaExecute","addr":"(QLB)","loc":"d,11:8,11:9","dtypep":"(P)","origName":"__VnbaExecute","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} + {"type":"VAR","name":"__VnbaExecute","addr":"(TJB)","loc":"d,11:8,11:9","dtypep":"(P)","origName":"__VnbaExecute","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} ], "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(RLB)","loc":"a,0:0,0:0","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(UJB)","loc":"a,0:0,0:0","dtypep":"(FB)", "rhsp": [ - {"type":"CMETHODHARD","name":"any","addr":"(SLB)","loc":"a,0:0,0:0","dtypep":"(FB)", + {"type":"CMETHODHARD","name":"any","addr":"(VJB)","loc":"a,0:0,0:0","dtypep":"(FB)", "fromp": [ - {"type":"VARREF","name":"__VnbaTriggered","addr":"(TLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaTriggered","addr":"(WJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"pinsp": []} ], "lhsp": [ - {"type":"VARREF","name":"__VnbaExecute","addr":"(ULB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(QLB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaExecute","addr":"(XJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(TJB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"IF","name":"","addr":"(VLB)","loc":"a,0:0,0:0", + {"type":"IF","name":"","addr":"(YJB)","loc":"a,0:0,0:0", "condp": [ - {"type":"VARREF","name":"__VnbaExecute","addr":"(WLB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(QLB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaExecute","addr":"(ZJB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(TJB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "thensp": [ - {"type":"STMTEXPR","name":"","addr":"(XLB)","loc":"a,0:0,0:0", + {"type":"STMTEXPR","name":"","addr":"(AKB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CCALL","name":"","addr":"(YLB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_eval_nba","funcp":"(G)","argsp": []} + {"type":"CCALL","name":"","addr":"(BKB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_eval_nba","funcp":"(G)","argsp": []} ]}, - {"type":"STMTEXPR","name":"","addr":"(ZLB)","loc":"a,0:0,0:0", + {"type":"STMTEXPR","name":"","addr":"(CKB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CMETHODHARD","name":"clear","addr":"(AMB)","loc":"a,0:0,0:0","dtypep":"(CB)", + {"type":"CMETHODHARD","name":"clear","addr":"(DKB)","loc":"a,0:0,0:0","dtypep":"(CB)", "fromp": [ - {"type":"VARREF","name":"__VnbaTriggered","addr":"(BMB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaTriggered","addr":"(EKB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"WR","varp":"(W)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"pinsp": []} ]} ],"elsesp": []}, - {"type":"CRETURN","name":"","addr":"(CMB)","loc":"a,0:0,0:0", + {"type":"CRETURN","name":"","addr":"(FKB)","loc":"a,0:0,0:0", "lhsp": [ - {"type":"VARREF","name":"__VnbaExecute","addr":"(DMB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(QLB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaExecute","addr":"(GKB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(TJB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ],"finalsp": []}, {"type":"CFUNC","name":"_eval","addr":"(F)","loc":"a,0:0,0:0","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"(Y)","argsp": [], "initsp": [ - {"type":"VAR","name":"__VnbaIterCount","addr":"(EMB)","loc":"d,11:8,11:9","dtypep":"(T)","origName":"__VnbaIterCount","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"VAR","name":"__VnbaContinue","addr":"(FMB)","loc":"d,11:8,11:9","dtypep":"(P)","origName":"__VnbaContinue","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} + {"type":"VAR","name":"__VnbaIterCount","addr":"(HKB)","loc":"d,11:8,11:9","dtypep":"(T)","origName":"__VnbaIterCount","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []}, + {"type":"VAR","name":"__VnbaContinue","addr":"(IKB)","loc":"d,11:8,11:9","dtypep":"(P)","origName":"__VnbaContinue","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":true,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":true,"lifetime":"NONE","varType":"MODULETEMP","dtypeName":"bit","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [],"valuep": [],"attrsp": []} ], "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(GMB)","loc":"d,11:8,11:9","dtypep":"(T)", + {"type":"ASSIGN","name":"","addr":"(JKB)","loc":"d,11:8,11:9","dtypep":"(T)", "rhsp": [ - {"type":"CONST","name":"32'h0","addr":"(HMB)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(KKB)","loc":"d,11:8,11:9","dtypep":"(GC)"} ], "lhsp": [ - {"type":"VARREF","name":"__VnbaIterCount","addr":"(IMB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(EMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaIterCount","addr":"(LKB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(HKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(JMB)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(MKB)","loc":"d,11:8,11:9","dtypep":"(FB)", "rhsp": [ - {"type":"CONST","name":"1'h1","addr":"(KMB)","loc":"d,11:8,11:9","dtypep":"(FB)"} + {"type":"CONST","name":"1'h1","addr":"(NKB)","loc":"d,11:8,11:9","dtypep":"(FB)"} ], "lhsp": [ - {"type":"VARREF","name":"__VnbaContinue","addr":"(LMB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(FMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaContinue","addr":"(OKB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(IKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"WHILE","name":"","addr":"(MMB)","loc":"a,0:0,0:0", - "condp": [ - {"type":"VARREF","name":"__VnbaContinue","addr":"(NMB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(FMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} - ], + {"type":"LOOP","name":"","addr":"(PKB)","loc":"a,0:0,0:0","unroll":"default", "stmtsp": [ - {"type":"IF","name":"","addr":"(OMB)","loc":"a,0:0,0:0", + {"type":"LOOPTEST","name":"","addr":"(QKB)","loc":"a,0:0,0:0", "condp": [ - {"type":"LT","name":"","addr":"(PMB)","loc":"a,0:0,0:0","dtypep":"(FB)", + {"type":"VARREF","name":"__VnbaContinue","addr":"(RKB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(IKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + ]}, + {"type":"IF","name":"","addr":"(SKB)","loc":"a,0:0,0:0", + "condp": [ + {"type":"LT","name":"","addr":"(TKB)","loc":"a,0:0,0:0","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'h64","addr":"(QMB)","loc":"a,0:0,0:0","dtypep":"(NC)"} + {"type":"CONST","name":"32'h64","addr":"(UKB)","loc":"a,0:0,0:0","dtypep":"(GC)"} ], "rhsp": [ - {"type":"VARREF","name":"__VnbaIterCount","addr":"(RMB)","loc":"a,0:0,0:0","dtypep":"(T)","access":"RD","varp":"(EMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaIterCount","addr":"(VKB)","loc":"a,0:0,0:0","dtypep":"(T)","access":"RD","varp":"(HKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "thensp": [ - {"type":"TEXTBLOCK","name":"","addr":"(SMB)","loc":"a,0:0,0:0","shortText":"", + {"type":"TEXTBLOCK","name":"","addr":"(WKB)","loc":"a,0:0,0:0","shortText":"", "nodesp": [ - {"type":"TEXT","name":"","addr":"(TMB)","loc":"a,0:0,0:0","shortText":"#ifdef VL_DEBUG..."}, - {"type":"STMTEXPR","name":"","addr":"(UMB)","loc":"a,0:0,0:0", + {"type":"TEXT","name":"","addr":"(XKB)","loc":"a,0:0,0:0","shortText":"#ifdef VL_DEBUG..."}, + {"type":"STMTEXPR","name":"","addr":"(YKB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CCALL","name":"","addr":"(VMB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_dump_triggers__nba","funcp":"(OQ)","argsp": []} + {"type":"CCALL","name":"","addr":"(ZKB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_dump_triggers__nba","funcp":"(RO)","argsp": []} ]}, - {"type":"TEXT","name":"","addr":"(WMB)","loc":"a,0:0,0:0","shortText":"#endif..."}, - {"type":"TEXT","name":"","addr":"(XMB)","loc":"a,0:0,0:0","shortText":"VL_FATAL_MT(\"t/t_enum_type_methods.v\", 11, \"\", "}, - {"type":"TEXT","name":"","addr":"(YMB)","loc":"a,0:0,0:0","shortText":"\"NBA region did not converge.\");..."} + {"type":"TEXT","name":"","addr":"(ALB)","loc":"a,0:0,0:0","shortText":"#endif..."}, + {"type":"TEXT","name":"","addr":"(BLB)","loc":"a,0:0,0:0","shortText":"VL_FATAL_MT(\"t/t_enum_type_methods.v\", 11, \"\", "}, + {"type":"TEXT","name":"","addr":"(CLB)","loc":"a,0:0,0:0","shortText":"\"NBA region did not converge.\");..."} ]} ],"elsesp": []}, - {"type":"ASSIGN","name":"","addr":"(ZMB)","loc":"d,11:8,11:9","dtypep":"(T)", + {"type":"ASSIGN","name":"","addr":"(DLB)","loc":"d,11:8,11:9","dtypep":"(T)", "rhsp": [ - {"type":"ADD","name":"","addr":"(ANB)","loc":"d,11:8,11:9","dtypep":"(T)", + {"type":"ADD","name":"","addr":"(ELB)","loc":"d,11:8,11:9","dtypep":"(T)", "lhsp": [ - {"type":"CCAST","name":"","addr":"(BNB)","loc":"d,11:8,11:9","dtypep":"(NC)","size":32, + {"type":"CCAST","name":"","addr":"(FLB)","loc":"d,11:8,11:9","dtypep":"(GC)","size":32, "lhsp": [ - {"type":"CONST","name":"32'h1","addr":"(CNB)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h1","addr":"(GLB)","loc":"d,11:8,11:9","dtypep":"(GC)"} ]} ], "rhsp": [ - {"type":"VARREF","name":"__VnbaIterCount","addr":"(DNB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"RD","varp":"(EMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaIterCount","addr":"(HLB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"RD","varp":"(HKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "lhsp": [ - {"type":"VARREF","name":"__VnbaIterCount","addr":"(ENB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(EMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaIterCount","addr":"(ILB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(HKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(FNB)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(JLB)","loc":"d,11:8,11:9","dtypep":"(FB)", "rhsp": [ - {"type":"CONST","name":"1'h0","addr":"(GNB)","loc":"d,11:8,11:9","dtypep":"(FB)"} + {"type":"CONST","name":"1'h0","addr":"(KLB)","loc":"d,11:8,11:9","dtypep":"(FB)"} ], "lhsp": [ - {"type":"VARREF","name":"__VnbaContinue","addr":"(HNB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(FMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaContinue","addr":"(LLB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(IKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(INB)","loc":"d,11:8,11:9","dtypep":"(T)", + {"type":"ASSIGN","name":"","addr":"(MLB)","loc":"d,11:8,11:9","dtypep":"(T)", "rhsp": [ - {"type":"CONST","name":"32'h0","addr":"(JNB)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(NLB)","loc":"d,11:8,11:9","dtypep":"(GC)"} ], "lhsp": [ - {"type":"VARREF","name":"__VactIterCount","addr":"(KNB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactIterCount","addr":"(OLB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(LNB)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(PLB)","loc":"d,11:8,11:9","dtypep":"(FB)", "rhsp": [ - {"type":"CONST","name":"1'h1","addr":"(MNB)","loc":"d,11:8,11:9","dtypep":"(FB)"} + {"type":"CONST","name":"1'h1","addr":"(QLB)","loc":"d,11:8,11:9","dtypep":"(FB)"} ], "lhsp": [ - {"type":"VARREF","name":"__VactContinue","addr":"(NNB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactContinue","addr":"(RLB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"WHILE","name":"","addr":"(ONB)","loc":"a,0:0,0:0", - "condp": [ - {"type":"VARREF","name":"__VactContinue","addr":"(PNB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} - ], + {"type":"LOOP","name":"","addr":"(SLB)","loc":"a,0:0,0:0","unroll":"default", "stmtsp": [ - {"type":"IF","name":"","addr":"(QNB)","loc":"a,0:0,0:0", + {"type":"LOOPTEST","name":"","addr":"(TLB)","loc":"a,0:0,0:0", "condp": [ - {"type":"LT","name":"","addr":"(RNB)","loc":"a,0:0,0:0","dtypep":"(FB)", + {"type":"VARREF","name":"__VactContinue","addr":"(ULB)","loc":"a,0:0,0:0","dtypep":"(FB)","access":"RD","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + ]}, + {"type":"IF","name":"","addr":"(VLB)","loc":"a,0:0,0:0", + "condp": [ + {"type":"LT","name":"","addr":"(WLB)","loc":"a,0:0,0:0","dtypep":"(FB)", "lhsp": [ - {"type":"CONST","name":"32'h64","addr":"(SNB)","loc":"a,0:0,0:0","dtypep":"(NC)"} + {"type":"CONST","name":"32'h64","addr":"(XLB)","loc":"a,0:0,0:0","dtypep":"(GC)"} ], "rhsp": [ - {"type":"VARREF","name":"__VactIterCount","addr":"(TNB)","loc":"a,0:0,0:0","dtypep":"(T)","access":"RD","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactIterCount","addr":"(YLB)","loc":"a,0:0,0:0","dtypep":"(T)","access":"RD","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "thensp": [ - {"type":"TEXTBLOCK","name":"","addr":"(UNB)","loc":"a,0:0,0:0","shortText":"", + {"type":"TEXTBLOCK","name":"","addr":"(ZLB)","loc":"a,0:0,0:0","shortText":"", "nodesp": [ - {"type":"TEXT","name":"","addr":"(VNB)","loc":"a,0:0,0:0","shortText":"#ifdef VL_DEBUG..."}, - {"type":"STMTEXPR","name":"","addr":"(WNB)","loc":"a,0:0,0:0", + {"type":"TEXT","name":"","addr":"(AMB)","loc":"a,0:0,0:0","shortText":"#ifdef VL_DEBUG..."}, + {"type":"STMTEXPR","name":"","addr":"(BMB)","loc":"a,0:0,0:0", "exprp": [ - {"type":"CCALL","name":"","addr":"(XNB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_dump_triggers__act","funcp":"(UP)","argsp": []} + {"type":"CCALL","name":"","addr":"(CMB)","loc":"a,0:0,0:0","dtypep":"(CB)","funcName":"_dump_triggers__act","funcp":"(XN)","argsp": []} ]}, - {"type":"TEXT","name":"","addr":"(YNB)","loc":"a,0:0,0:0","shortText":"#endif..."}, - {"type":"TEXT","name":"","addr":"(ZNB)","loc":"a,0:0,0:0","shortText":"VL_FATAL_MT(\"t/t_enum_type_methods.v\", 11, \"\", "}, - {"type":"TEXT","name":"","addr":"(AOB)","loc":"a,0:0,0:0","shortText":"\"Active region did not converge.\");..."} + {"type":"TEXT","name":"","addr":"(DMB)","loc":"a,0:0,0:0","shortText":"#endif..."}, + {"type":"TEXT","name":"","addr":"(EMB)","loc":"a,0:0,0:0","shortText":"VL_FATAL_MT(\"t/t_enum_type_methods.v\", 11, \"\", "}, + {"type":"TEXT","name":"","addr":"(FMB)","loc":"a,0:0,0:0","shortText":"\"Active region did not converge.\");..."} ]} ],"elsesp": []}, - {"type":"ASSIGN","name":"","addr":"(BOB)","loc":"d,11:8,11:9","dtypep":"(T)", + {"type":"ASSIGN","name":"","addr":"(GMB)","loc":"d,11:8,11:9","dtypep":"(T)", "rhsp": [ - {"type":"ADD","name":"","addr":"(COB)","loc":"d,11:8,11:9","dtypep":"(T)", + {"type":"ADD","name":"","addr":"(HMB)","loc":"d,11:8,11:9","dtypep":"(T)", "lhsp": [ - {"type":"CCAST","name":"","addr":"(DOB)","loc":"d,11:8,11:9","dtypep":"(NC)","size":32, + {"type":"CCAST","name":"","addr":"(IMB)","loc":"d,11:8,11:9","dtypep":"(GC)","size":32, "lhsp": [ - {"type":"CONST","name":"32'h1","addr":"(EOB)","loc":"d,11:8,11:9","dtypep":"(NC)"} + {"type":"CONST","name":"32'h1","addr":"(JMB)","loc":"d,11:8,11:9","dtypep":"(GC)"} ]} ], "rhsp": [ - {"type":"VARREF","name":"__VactIterCount","addr":"(FOB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"RD","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactIterCount","addr":"(KMB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"RD","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ], "lhsp": [ - {"type":"VARREF","name":"__VactIterCount","addr":"(GOB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactIterCount","addr":"(LMB)","loc":"d,11:8,11:9","dtypep":"(T)","access":"WR","varp":"(S)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(HOB)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(MMB)","loc":"d,11:8,11:9","dtypep":"(FB)", "rhsp": [ - {"type":"CONST","name":"1'h0","addr":"(IOB)","loc":"d,11:8,11:9","dtypep":"(FB)"} + {"type":"CONST","name":"1'h0","addr":"(NMB)","loc":"d,11:8,11:9","dtypep":"(FB)"} ], "lhsp": [ - {"type":"VARREF","name":"__VactContinue","addr":"(JOB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactContinue","addr":"(OMB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"IF","name":"","addr":"(KOB)","loc":"a,0:0,0:0", + {"type":"IF","name":"","addr":"(PMB)","loc":"a,0:0,0:0", "condp": [ - {"type":"CCALL","name":"","addr":"(LOB)","loc":"a,0:0,0:0","dtypep":"(FB)","funcName":"_eval_phase__act","funcp":"(RKB)","argsp": []} + {"type":"CCALL","name":"","addr":"(QMB)","loc":"a,0:0,0:0","dtypep":"(FB)","funcName":"_eval_phase__act","funcp":"(UIB)","argsp": []} ], "thensp": [ - {"type":"ASSIGN","name":"","addr":"(MOB)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(RMB)","loc":"d,11:8,11:9","dtypep":"(FB)", "rhsp": [ - {"type":"CONST","name":"1'h1","addr":"(NOB)","loc":"d,11:8,11:9","dtypep":"(FB)"} + {"type":"CONST","name":"1'h1","addr":"(SMB)","loc":"d,11:8,11:9","dtypep":"(FB)"} ], "lhsp": [ - {"type":"VARREF","name":"__VactContinue","addr":"(OOB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VactContinue","addr":"(TMB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(O)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ],"elsesp": []} - ],"incsp": []}, - {"type":"IF","name":"","addr":"(POB)","loc":"a,0:0,0:0", + ],"contsp": []}, + {"type":"IF","name":"","addr":"(UMB)","loc":"a,0:0,0:0", "condp": [ - {"type":"CCALL","name":"","addr":"(QOB)","loc":"a,0:0,0:0","dtypep":"(FB)","funcName":"_eval_phase__nba","funcp":"(PLB)","argsp": []} + {"type":"CCALL","name":"","addr":"(VMB)","loc":"a,0:0,0:0","dtypep":"(FB)","funcName":"_eval_phase__nba","funcp":"(SJB)","argsp": []} ], "thensp": [ - {"type":"ASSIGN","name":"","addr":"(ROB)","loc":"d,11:8,11:9","dtypep":"(FB)", + {"type":"ASSIGN","name":"","addr":"(WMB)","loc":"d,11:8,11:9","dtypep":"(FB)", "rhsp": [ - {"type":"CONST","name":"1'h1","addr":"(SOB)","loc":"d,11:8,11:9","dtypep":"(FB)"} + {"type":"CONST","name":"1'h1","addr":"(XMB)","loc":"d,11:8,11:9","dtypep":"(FB)"} ], "lhsp": [ - {"type":"VARREF","name":"__VnbaContinue","addr":"(TOB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(FMB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__VnbaContinue","addr":"(YMB)","loc":"d,11:8,11:9","dtypep":"(FB)","access":"WR","varp":"(IKB)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ],"elsesp": []} - ],"incsp": []} + ],"contsp": []} ],"finalsp": []}, - {"type":"CFUNC","name":"_eval_debug_assertions","addr":"(UOB)","loc":"d,11:8,11:9","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"UNLINKED","argsp": [],"initsp": [], + {"type":"CFUNC","name":"_eval_debug_assertions","addr":"(ZMB)","loc":"d,11:8,11:9","slow":false,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"UNLINKED","argsp": [],"initsp": [], "stmtsp": [ - {"type":"IF","name":"","addr":"(VOB)","loc":"d,15:10,15:13", + {"type":"IF","name":"","addr":"(ANB)","loc":"d,15:10,15:13", "condp": [ - {"type":"AND","name":"","addr":"(WOB)","loc":"d,15:10,15:13","dtypep":"(K)", + {"type":"AND","name":"","addr":"(BNB)","loc":"d,15:10,15:13","dtypep":"(K)", "lhsp": [ - {"type":"VARREF","name":"clk","addr":"(XOB)","loc":"d,15:10,15:13","dtypep":"(K)","access":"RD","varp":"(J)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"clk","addr":"(CNB)","loc":"d,15:10,15:13","dtypep":"(K)","access":"RD","varp":"(J)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ], "rhsp": [ - {"type":"CONST","name":"8'hfe","addr":"(YOB)","loc":"d,15:10,15:13","dtypep":"(ZOB)"} + {"type":"CONST","name":"8'hfe","addr":"(DNB)","loc":"d,15:10,15:13","dtypep":"(ENB)"} ]} ], "thensp": [ - {"type":"CSTMT","name":"","addr":"(APB)","loc":"d,15:10,15:13", + {"type":"CSTMT","name":"","addr":"(FNB)","loc":"d,15:10,15:13", "exprsp": [ - {"type":"TEXT","name":"","addr":"(BPB)","loc":"d,15:10,15:13","shortText":"Verilated::overWidthError(\"clk\");"} + {"type":"TEXT","name":"","addr":"(GNB)","loc":"d,15:10,15:13","shortText":"Verilated::overWidthError(\"clk\");"} ]} ],"elsesp": []} ],"finalsp": []}, - {"type":"CFUNC","name":"_ctor_var_reset","addr":"(CPB)","loc":"d,11:8,11:9","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"UNLINKED","argsp": [],"initsp": [], + {"type":"CFUNC","name":"_ctor_var_reset","addr":"(HNB)","loc":"d,11:8,11:9","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"UNLINKED","argsp": [],"initsp": [], "stmtsp": [ - {"type":"CRESET","name":"","addr":"(DPB)","loc":"d,15:10,15:13","constructing":true, + {"type":"CRESET","name":"","addr":"(INB)","loc":"d,15:10,15:13","constructing":true, "varrefp": [ - {"type":"VARREF","name":"clk","addr":"(EPB)","loc":"d,15:10,15:13","dtypep":"(K)","access":"WR","varp":"(J)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"clk","addr":"(JNB)","loc":"d,15:10,15:13","dtypep":"(K)","access":"WR","varp":"(J)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]}, - {"type":"CRESET","name":"","addr":"(FPB)","loc":"d,23:17,23:20","constructing":true, + {"type":"CRESET","name":"","addr":"(KNB)","loc":"d,23:17,23:20","constructing":true, "varrefp": [ - {"type":"VARREF","name":"t.cyc","addr":"(GPB)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.cyc","addr":"(LNB)","loc":"d,23:17,23:20","dtypep":"(R)","access":"WR","varp":"(Q)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]}, - {"type":"CRESET","name":"","addr":"(HPB)","loc":"d,24:9,24:10","constructing":true, + {"type":"CRESET","name":"","addr":"(MNB)","loc":"d,24:9,24:10","constructing":true, "varrefp": [ - {"type":"VARREF","name":"t.e","addr":"(IPB)","loc":"d,24:9,24:10","dtypep":"(M)","access":"WR","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"t.e","addr":"(NNB)","loc":"d,24:9,24:10","dtypep":"(M)","access":"WR","varp":"(L)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]}, - {"type":"CRESET","name":"","addr":"(JPB)","loc":"d,11:8,11:9","constructing":true, + {"type":"CRESET","name":"","addr":"(ONB)","loc":"d,11:8,11:9","constructing":true, "varrefp": [ - {"type":"VARREF","name":"__Vtrigprevexpr___TOP__clk__0","addr":"(KPB)","loc":"d,11:8,11:9","dtypep":"(K)","access":"WR","varp":"(N)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vtrigprevexpr___TOP__clk__0","addr":"(PNB)","loc":"d,11:8,11:9","dtypep":"(K)","access":"WR","varp":"(N)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ],"finalsp": []}, - {"type":"CUSE","name":"$unit","addr":"(LPB)","loc":"a,0:0,0:0","useType":"INT_FWD"} + {"type":"CUSE","name":"$unit","addr":"(QNB)","loc":"a,0:0,0:0","useType":"INT_FWD"} ]}, {"type":"PACKAGE","name":"$unit","addr":"(E)","loc":"a,0:0,0:0","origName":"__024unit","level":0,"modPublic":false,"inLibrary":true,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], "stmtsp": [ - {"type":"VAR","name":"__Venumtab_enum_next1","addr":"(JC)","loc":"d,17:12,17:16","dtypep":"(IC)","origName":"__Venumtab_enum_next1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":true,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"VSTATIC","varType":"MODULETEMP","dtypeName":"","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [], + {"type":"VAR","name":"__Venumtab_enum_next1","addr":"(CC)","loc":"d,17:12,17:16","dtypep":"(BC)","origName":"__Venumtab_enum_next1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":true,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"VSTATIC","varType":"MODULETEMP","dtypeName":"","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [], "valuep": [ - {"type":"INITARRAY","name":"","addr":"(MPB)","loc":"d,17:12,17:16","dtypep":"(IC)","initList":" [1]=(NPB) [3]=(OPB) [4]=(PPB)", + {"type":"INITARRAY","name":"","addr":"(RNB)","loc":"d,17:12,17:16","dtypep":"(BC)","initList":" [1]=(SNB) [3]=(TNB) [4]=(UNB)", "defaultp": [ - {"type":"CONST","name":"4'h0","addr":"(QPB)","loc":"d,17:12,17:16","dtypep":"(AC)"} + {"type":"CONST","name":"4'h0","addr":"(VNB)","loc":"d,17:12,17:16","dtypep":"(TB)"} ], "initsp": [ - {"type":"INITITEM","name":"","addr":"(NPB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(SNB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"4'h3","addr":"(RPB)","loc":"d,19:30,19:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(WNB)","loc":"d,19:30,19:31","dtypep":"(TB)"} ]}, - {"type":"INITITEM","name":"","addr":"(OPB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(TNB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"4'h4","addr":"(SPB)","loc":"d,20:30,20:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(XNB)","loc":"d,20:30,20:31","dtypep":"(TB)"} ]}, - {"type":"INITITEM","name":"","addr":"(PPB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(UNB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"4'h1","addr":"(TPB)","loc":"d,18:30,18:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(YNB)","loc":"d,18:30,18:31","dtypep":"(TB)"} ]} ]} ],"attrsp": []}, - {"type":"VAR","name":"__Venumtab_enum_prev1","addr":"(DJ)","loc":"d,17:12,17:16","dtypep":"(CJ)","origName":"__Venumtab_enum_prev1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":true,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"VSTATIC","varType":"MODULETEMP","dtypeName":"","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [], + {"type":"VAR","name":"__Venumtab_enum_prev1","addr":"(WI)","loc":"d,17:12,17:16","dtypep":"(VI)","origName":"__Venumtab_enum_prev1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":true,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"VSTATIC","varType":"MODULETEMP","dtypeName":"","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [], "valuep": [ - {"type":"INITARRAY","name":"","addr":"(UPB)","loc":"d,17:12,17:16","dtypep":"(CJ)","initList":" [1]=(VPB) [3]=(WPB) [4]=(XPB)", + {"type":"INITARRAY","name":"","addr":"(ZNB)","loc":"d,17:12,17:16","dtypep":"(VI)","initList":" [1]=(AOB) [3]=(BOB) [4]=(COB)", "defaultp": [ - {"type":"CONST","name":"4'h0","addr":"(YPB)","loc":"d,17:12,17:16","dtypep":"(AC)"} + {"type":"CONST","name":"4'h0","addr":"(DOB)","loc":"d,17:12,17:16","dtypep":"(TB)"} ], "initsp": [ - {"type":"INITITEM","name":"","addr":"(VPB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(AOB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"4'h4","addr":"(ZPB)","loc":"d,20:30,20:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(EOB)","loc":"d,20:30,20:31","dtypep":"(TB)"} ]}, - {"type":"INITITEM","name":"","addr":"(WPB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(BOB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"4'h1","addr":"(AQB)","loc":"d,18:30,18:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(FOB)","loc":"d,18:30,18:31","dtypep":"(TB)"} ]}, - {"type":"INITITEM","name":"","addr":"(XPB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(COB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"4'h3","addr":"(BQB)","loc":"d,19:30,19:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(GOB)","loc":"d,19:30,19:31","dtypep":"(TB)"} ]} ]} ],"attrsp": []}, - {"type":"VAR","name":"__Venumtab_enum_name1","addr":"(PM)","loc":"d,17:12,17:16","dtypep":"(OM)","origName":"__Venumtab_enum_name1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":true,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"VSTATIC","varType":"MODULETEMP","dtypeName":"","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [], + {"type":"VAR","name":"__Venumtab_enum_name1","addr":"(IM)","loc":"d,17:12,17:16","dtypep":"(HM)","origName":"__Venumtab_enum_name1","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":true,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"VSTATIC","varType":"MODULETEMP","dtypeName":"","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED","childDTypep": [],"delayp": [], "valuep": [ - {"type":"INITARRAY","name":"","addr":"(CQB)","loc":"d,17:12,17:16","dtypep":"(OM)","initList":" [1]=(DQB) [3]=(EQB) [4]=(FQB)", + {"type":"INITARRAY","name":"","addr":"(HOB)","loc":"d,17:12,17:16","dtypep":"(HM)","initList":" [1]=(IOB) [3]=(JOB) [4]=(KOB)", "defaultp": [ - {"type":"CONST","name":"\\\"\\\"","addr":"(GQB)","loc":"d,17:12,17:16","dtypep":"(RB)"} + {"type":"CONST","name":"\\\"\\\"","addr":"(LOB)","loc":"d,17:12,17:16","dtypep":"(RB)"} ], "initsp": [ - {"type":"INITITEM","name":"","addr":"(DQB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(IOB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"\\\"E01\\\"","addr":"(HQB)","loc":"d,17:12,17:16","dtypep":"(RB)"} + {"type":"CONST","name":"\\\"E01\\\"","addr":"(MOB)","loc":"d,17:12,17:16","dtypep":"(RB)"} ]}, - {"type":"INITITEM","name":"","addr":"(EQB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(JOB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"\\\"E03\\\"","addr":"(IQB)","loc":"d,17:12,17:16","dtypep":"(RB)"} + {"type":"CONST","name":"\\\"E03\\\"","addr":"(NOB)","loc":"d,17:12,17:16","dtypep":"(RB)"} ]}, - {"type":"INITITEM","name":"","addr":"(FQB)","loc":"d,17:12,17:16", + {"type":"INITITEM","name":"","addr":"(KOB)","loc":"d,17:12,17:16", "valuep": [ - {"type":"CONST","name":"\\\"E04\\\"","addr":"(JQB)","loc":"d,17:12,17:16","dtypep":"(RB)"} + {"type":"CONST","name":"\\\"E04\\\"","addr":"(OOB)","loc":"d,17:12,17:16","dtypep":"(RB)"} ]} ]} ],"attrsp": []}, - {"type":"SCOPE","name":"$unit","addr":"(KQB)","loc":"a,0:0,0:0","aboveScopep":"(Y)","aboveCellp":"(X)","modp":"(E)","varsp": [],"blocksp": [],"inlinesp": []}, - {"type":"CFUNC","name":"_ctor_var_reset","addr":"(LQB)","loc":"a,0:0,0:0","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"UNLINKED","argsp": [],"initsp": [], + {"type":"SCOPE","name":"$unit","addr":"(POB)","loc":"a,0:0,0:0","aboveScopep":"(Y)","aboveCellp":"(X)","modp":"(E)","varsp": [],"blocksp": [],"inlinesp": []}, + {"type":"CFUNC","name":"_ctor_var_reset","addr":"(QOB)","loc":"a,0:0,0:0","slow":true,"isStatic":false,"dpiExportDispatcher":false,"dpiExportImpl":false,"dpiImportPrototype":false,"dpiImportWrapper":false,"dpiContext":false,"isConstructor":false,"isDestructor":false,"isVirtual":false,"isCoroutine":false,"needProcess":false,"scopep":"UNLINKED","argsp": [],"initsp": [], "stmtsp": [ - {"type":"CRESET","name":"","addr":"(MQB)","loc":"d,17:12,17:16","constructing":true, + {"type":"CRESET","name":"","addr":"(ROB)","loc":"d,17:12,17:16","constructing":true, "varrefp": [ - {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(NQB)","loc":"d,17:12,17:16","dtypep":"(IC)","access":"WR","varp":"(JC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_next1","addr":"(SOB)","loc":"d,17:12,17:16","dtypep":"(BC)","access":"WR","varp":"(CC)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]}, - {"type":"CRESET","name":"","addr":"(OQB)","loc":"d,17:12,17:16","constructing":true, + {"type":"CRESET","name":"","addr":"(TOB)","loc":"d,17:12,17:16","constructing":true, "varrefp": [ - {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(PQB)","loc":"d,17:12,17:16","dtypep":"(CJ)","access":"WR","varp":"(DJ)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_prev1","addr":"(UOB)","loc":"d,17:12,17:16","dtypep":"(VI)","access":"WR","varp":"(WI)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]}, - {"type":"CRESET","name":"","addr":"(QQB)","loc":"d,17:12,17:16","constructing":true, + {"type":"CRESET","name":"","addr":"(VOB)","loc":"d,17:12,17:16","constructing":true, "varrefp": [ - {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(RQB)","loc":"d,17:12,17:16","dtypep":"(OM)","access":"WR","varp":"(PM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Venumtab_enum_name1","addr":"(WOB)","loc":"d,17:12,17:16","dtypep":"(HM)","access":"WR","varp":"(IM)","varScopep":"UNLINKED","classOrPackagep":"UNLINKED"} ]} ],"finalsp": []} ]} ], "filesp": [ - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck__Syms.cpp","addr":"(SQB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck__Syms.h","addr":"(TQB)","loc":"a,0:0,0:0","source":false,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck.h","addr":"(UQB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck.cpp","addr":"(VQB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root.h","addr":"(WQB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit.h","addr":"(XQB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__Slow.cpp","addr":"(YQB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0__Slow.cpp","addr":"(ZQB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0__Slow.cpp","addr":"(ARB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0.cpp","addr":"(BRB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0.cpp","addr":"(CRB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__Slow.cpp","addr":"(DRB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__DepSet_h########__0__Slow.cpp","addr":"(ERB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []} + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck__Syms.cpp","addr":"(XOB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck__Syms.h","addr":"(YOB)","loc":"a,0:0,0:0","source":false,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck.h","addr":"(ZOB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck.cpp","addr":"(APB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root.h","addr":"(BPB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit.h","addr":"(CPB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__Slow.cpp","addr":"(DPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0__Slow.cpp","addr":"(EPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0__Slow.cpp","addr":"(FPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0.cpp","addr":"(GPB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0.cpp","addr":"(HPB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__Slow.cpp","addr":"(IPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__DepSet_h########__0__Slow.cpp","addr":"(JPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []} ], "miscsp": [ {"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(CB)", "typesp": [ {"type":"BASICDTYPE","name":"logic","addr":"(K)","loc":"d,33:24,33:27","dtypep":"(K)","keyword":"logic","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(NC)","loc":"d,53:16,53:17","dtypep":"(NC)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(FRB)","loc":"d,17:17,17:18","dtypep":"(FRB)","keyword":"logic","range":"3:0","generic":true,"rangep": []}, - {"type":"ENUMDTYPE","name":"t.my_t","addr":"(GRB)","loc":"d,17:12,17:16","dtypep":"(GRB)","enum":true,"generic":false,"refDTypep":"(FRB)","childDTypep": [], + {"type":"BASICDTYPE","name":"logic","addr":"(GC)","loc":"d,53:16,53:17","dtypep":"(GC)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(KPB)","loc":"d,17:17,17:18","dtypep":"(KPB)","keyword":"logic","range":"3:0","generic":true,"rangep": []}, + {"type":"ENUMDTYPE","name":"t.my_t","addr":"(LPB)","loc":"d,17:12,17:16","dtypep":"(LPB)","enum":true,"generic":false,"refDTypep":"(KPB)","childDTypep": [], "itemsp": [ - {"type":"ENUMITEM","name":"E01","addr":"(HRB)","loc":"d,18:24,18:27","dtypep":"(AC)","rangep": [], + {"type":"ENUMITEM","name":"E01","addr":"(MPB)","loc":"d,18:24,18:27","dtypep":"(TB)","rangep": [], "valuep": [ - {"type":"CONST","name":"4'h1","addr":"(IRB)","loc":"d,18:30,18:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h1","addr":"(NPB)","loc":"d,18:30,18:31","dtypep":"(TB)"} ]}, - {"type":"ENUMITEM","name":"E03","addr":"(JRB)","loc":"d,19:24,19:27","dtypep":"(AC)","rangep": [], + {"type":"ENUMITEM","name":"E03","addr":"(OPB)","loc":"d,19:24,19:27","dtypep":"(TB)","rangep": [], "valuep": [ - {"type":"CONST","name":"4'h3","addr":"(KRB)","loc":"d,19:30,19:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h3","addr":"(PPB)","loc":"d,19:30,19:31","dtypep":"(TB)"} ]}, - {"type":"ENUMITEM","name":"E04","addr":"(LRB)","loc":"d,20:24,20:27","dtypep":"(AC)","rangep": [], + {"type":"ENUMITEM","name":"E04","addr":"(QPB)","loc":"d,20:24,20:27","dtypep":"(TB)","rangep": [], "valuep": [ - {"type":"CONST","name":"4'h4","addr":"(MRB)","loc":"d,20:30,20:31","dtypep":"(AC)"} + {"type":"CONST","name":"4'h4","addr":"(RPB)","loc":"d,20:30,20:31","dtypep":"(TB)"} ]} ]}, {"type":"BASICDTYPE","name":"integer","addr":"(R)","loc":"d,23:4,23:11","dtypep":"(R)","keyword":"integer","range":"31:0","generic":true,"rangep": []}, - {"type":"REFDTYPE","name":"my_t","addr":"(M)","loc":"d,24:4,24:8","dtypep":"(GRB)","generic":false,"typedefp":"UNLINKED","refDTypep":"(GRB)","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []}, + {"type":"REFDTYPE","name":"my_t","addr":"(M)","loc":"d,24:4,24:8","dtypep":"(LPB)","generic":false,"typedefp":"UNLINKED","refDTypep":"(LPB)","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []}, {"type":"BASICDTYPE","name":"string","addr":"(RB)","loc":"d,28:4,28:10","dtypep":"(RB)","keyword":"string","generic":true,"rangep": []}, - {"type":"UNPACKARRAYDTYPE","name":"","addr":"(IC)","loc":"d,17:12,17:16","dtypep":"(IC)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(GRB)","childDTypep": [], + {"type":"UNPACKARRAYDTYPE","name":"","addr":"(BC)","loc":"d,17:12,17:16","dtypep":"(BC)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(LPB)","childDTypep": [], "rangep": [ - {"type":"RANGE","name":"","addr":"(NRB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, + {"type":"RANGE","name":"","addr":"(SPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, "leftp": [ - {"type":"CONST","name":"32'h7","addr":"(ORB)","loc":"d,17:12,17:16","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(TPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ], "rightp": [ - {"type":"CONST","name":"32'h0","addr":"(PRB)","loc":"d,17:12,17:16","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(UPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ]} ]}, - {"type":"UNPACKARRAYDTYPE","name":"","addr":"(CJ)","loc":"d,17:12,17:16","dtypep":"(CJ)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(GRB)","childDTypep": [], + {"type":"UNPACKARRAYDTYPE","name":"","addr":"(VI)","loc":"d,17:12,17:16","dtypep":"(VI)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(LPB)","childDTypep": [], "rangep": [ - {"type":"RANGE","name":"","addr":"(QRB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, + {"type":"RANGE","name":"","addr":"(VPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, "leftp": [ - {"type":"CONST","name":"32'h7","addr":"(RRB)","loc":"d,17:12,17:16","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(WPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ], "rightp": [ - {"type":"CONST","name":"32'h0","addr":"(SRB)","loc":"d,17:12,17:16","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(XPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ]} ]}, - {"type":"UNPACKARRAYDTYPE","name":"","addr":"(OM)","loc":"d,17:12,17:16","dtypep":"(OM)","isCompound":true,"declRange":"[7:0]","generic":false,"refDTypep":"(RB)","childDTypep": [], + {"type":"UNPACKARRAYDTYPE","name":"","addr":"(HM)","loc":"d,17:12,17:16","dtypep":"(HM)","isCompound":true,"declRange":"[7:0]","generic":false,"refDTypep":"(RB)","childDTypep": [], "rangep": [ - {"type":"RANGE","name":"","addr":"(TRB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, + {"type":"RANGE","name":"","addr":"(YPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, "leftp": [ - {"type":"CONST","name":"32'h7","addr":"(URB)","loc":"d,17:12,17:16","dtypep":"(NC)"} + {"type":"CONST","name":"32'h7","addr":"(ZPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ], "rightp": [ - {"type":"CONST","name":"32'h0","addr":"(VRB)","loc":"d,17:12,17:16","dtypep":"(NC)"} + {"type":"CONST","name":"32'h0","addr":"(AQB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ]} ]}, - {"type":"REFDTYPE","name":"my_t","addr":"(VB)","loc":"d,52:12,52:16","dtypep":"(GRB)","generic":false,"typedefp":"UNLINKED","refDTypep":"(GRB)","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []}, {"type":"BASICDTYPE","name":"logic","addr":"(KB)","loc":"d,23:23,23:24","dtypep":"(KB)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, {"type":"VOIDDTYPE","name":"","addr":"(CB)","loc":"a,0:0,0:0","dtypep":"(CB)","generic":false}, {"type":"BASICDTYPE","name":"VlTriggerVec","addr":"(V)","loc":"d,11:8,11:9","dtypep":"(V)","keyword":"VlTriggerVec","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"QData","addr":"(KQ)","loc":"d,11:8,11:9","dtypep":"(KQ)","keyword":"QData","range":"63:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(HQ)","loc":"d,11:8,11:9","dtypep":"(HQ)","keyword":"logic","range":"63:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"QData","addr":"(NO)","loc":"d,11:8,11:9","dtypep":"(NO)","keyword":"QData","range":"63:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(KO)","loc":"d,11:8,11:9","dtypep":"(KO)","keyword":"logic","range":"63:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"bit","addr":"(P)","loc":"d,11:8,11:9","dtypep":"(P)","keyword":"bit","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"bit","addr":"(T)","loc":"d,11:8,11:9","dtypep":"(T)","keyword":"bit","range":"31:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(FB)","loc":"d,63:22,63:25","dtypep":"(FB)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(AC)","loc":"d,32:11,32:14","dtypep":"(AC)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(LC)","loc":"d,38:15,38:16","dtypep":"(LC)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(ZOB)","loc":"d,15:10,15:13","dtypep":"(ZOB)","keyword":"logic","range":"7:0","generic":true,"rangep": []} + {"type":"BASICDTYPE","name":"logic","addr":"(TB)","loc":"d,32:11,32:14","dtypep":"(TB)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(EC)","loc":"d,38:15,38:16","dtypep":"(EC)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(ENB)","loc":"d,15:10,15:13","dtypep":"(ENB)","keyword":"logic","range":"7:0","generic":true,"rangep": []} ]}, {"type":"CONSTPOOL","name":"","addr":"(D)","loc":"a,0:0,0:0", "modulep": [ - {"type":"MODULE","name":"@CONST-POOL@","addr":"(WRB)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], + {"type":"MODULE","name":"@CONST-POOL@","addr":"(BQB)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], "stmtsp": [ - {"type":"SCOPE","name":"TOP","addr":"(XRB)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(WRB)","varsp": [],"blocksp": [],"inlinesp": []} + {"type":"SCOPE","name":"TOP","addr":"(CQB)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(BQB)","varsp": [],"blocksp": [],"inlinesp": []} ]} ]} ]} diff --git a/test_regress/t/t_json_only_flat_vlvbound.out b/test_regress/t/t_json_only_flat_vlvbound.out index 9cc6b7b99..bf8cd428c 100644 --- a/test_regress/t/t_json_only_flat_vlvbound.out +++ b/test_regress/t/t_json_only_flat_vlvbound.out @@ -85,199 +85,197 @@ "lhsp": [ {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(OC)","loc":"d,18:10,18:11","dtypep":"(SB)","access":"WR","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"WHILE","name":"","addr":"(PC)","loc":"d,18:5,18:8", - "condp": [ - {"type":"GTS","name":"","addr":"(QC)","loc":"d,18:18,18:19","dtypep":"(RC)", - "lhsp": [ - {"type":"CONST","name":"32'sh7","addr":"(SC)","loc":"d,18:20,18:21","dtypep":"(NC)"} - ], - "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(TC)","loc":"d,18:16,18:17","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} - ]} - ], + {"type":"LOOP","name":"","addr":"(PC)","loc":"d,18:5,18:8","unroll":"default", "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(UC)","loc":"d,19:14,19:15","dtypep":"(RC)", - "rhsp": [ - {"type":"EQ","name":"","addr":"(VC)","loc":"d,19:31,19:33","dtypep":"(RC)", + {"type":"LOOPTEST","name":"","addr":"(QC)","loc":"d,18:16,18:17", + "condp": [ + {"type":"GTS","name":"","addr":"(RC)","loc":"d,18:18,18:19","dtypep":"(SC)", "lhsp": [ - {"type":"CONST","name":"2'h0","addr":"(WC)","loc":"d,19:34,19:39","dtypep":"(XC)"} + {"type":"CONST","name":"32'sh7","addr":"(TC)","loc":"d,18:20,18:21","dtypep":"(NC)"} ], "rhsp": [ - {"type":"SEL","name":"","addr":"(YC)","loc":"d,19:20,19:21","dtypep":"(XC)","widthConst":2,"declRange":"[15:0]","declElWidth":1, + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(UC)","loc":"d,18:16,18:17","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} + ]} + ]}, + {"type":"ASSIGN","name":"","addr":"(VC)","loc":"d,19:14,19:15","dtypep":"(SC)", + "rhsp": [ + {"type":"EQ","name":"","addr":"(WC)","loc":"d,19:31,19:33","dtypep":"(SC)", + "lhsp": [ + {"type":"CONST","name":"2'h0","addr":"(XC)","loc":"d,19:34,19:39","dtypep":"(YC)"} + ], + "rhsp": [ + {"type":"SEL","name":"","addr":"(ZC)","loc":"d,19:20,19:21","dtypep":"(YC)","widthConst":2,"declRange":"[15:0]","declElWidth":1, "fromp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__val","addr":"(ZC)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(OB)","varScopep":"(NB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__val","addr":"(AD)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(OB)","varScopep":"(NB)","classOrPackagep":"UNLINKED"} ], "lsbp": [ - {"type":"SEL","name":"","addr":"(AD)","loc":"d,19:22,19:23","dtypep":"(BD)","widthConst":4, + {"type":"SEL","name":"","addr":"(BD)","loc":"d,19:22,19:23","dtypep":"(CD)","widthConst":4, "fromp": [ - {"type":"MULS","name":"","addr":"(CD)","loc":"d,19:22,19:23","dtypep":"(NC)", + {"type":"MULS","name":"","addr":"(DD)","loc":"d,19:22,19:23","dtypep":"(NC)", "lhsp": [ - {"type":"CONST","name":"32'sh2","addr":"(DD)","loc":"d,19:23,19:24","dtypep":"(NC)"} + {"type":"CONST","name":"32'sh2","addr":"(ED)","loc":"d,19:23,19:24","dtypep":"(NC)"} ], "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(ED)","loc":"d,19:21,19:22","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(FD)","loc":"d,19:21,19:22","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} ]} ], "lsbp": [ - {"type":"CONST","name":"32'h0","addr":"(FD)","loc":"d,19:22,19:23","dtypep":"(GD)"} + {"type":"CONST","name":"32'h0","addr":"(GD)","loc":"d,19:22,19:23","dtypep":"(HD)"} ]} ]} ]} ], "lhsp": [ - {"type":"SEL","name":"","addr":"(HD)","loc":"d,19:10,19:11","dtypep":"(RC)","widthConst":1,"declRange":"[6:0]","declElWidth":1, + {"type":"SEL","name":"","addr":"(ID)","loc":"d,19:10,19:11","dtypep":"(SC)","widthConst":1,"declRange":"[6:0]","declElWidth":1, "fromp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(ID)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(JD)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"} ], "lsbp": [ - {"type":"SEL","name":"","addr":"(JD)","loc":"d,19:11,19:12","dtypep":"(KD)","widthConst":3, + {"type":"SEL","name":"","addr":"(KD)","loc":"d,19:11,19:12","dtypep":"(LD)","widthConst":3, "fromp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(LD)","loc":"d,19:11,19:12","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(MD)","loc":"d,19:11,19:12","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} ], "lsbp": [ - {"type":"CONST","name":"32'h0","addr":"(MD)","loc":"d,19:11,19:12","dtypep":"(GD)"} + {"type":"CONST","name":"32'h0","addr":"(ND)","loc":"d,19:11,19:12","dtypep":"(HD)"} ]} ]} - ],"timingControlp": []} - ], - "incsp": [ - {"type":"ASSIGN","name":"","addr":"(ND)","loc":"d,18:24,18:26","dtypep":"(SB)", + ],"timingControlp": []}, + {"type":"ASSIGN","name":"","addr":"(OD)","loc":"d,18:24,18:26","dtypep":"(SB)", "rhsp": [ - {"type":"ADD","name":"","addr":"(OD)","loc":"d,18:24,18:26","dtypep":"(GD)", + {"type":"ADD","name":"","addr":"(PD)","loc":"d,18:24,18:26","dtypep":"(HD)", "lhsp": [ - {"type":"CONST","name":"32'h1","addr":"(PD)","loc":"d,18:24,18:26","dtypep":"(GD)"} + {"type":"CONST","name":"32'h1","addr":"(QD)","loc":"d,18:24,18:26","dtypep":"(HD)"} ], "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(QD)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(RD)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"RD","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} ]} ], "lhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(RD)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"WR","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(SD)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"WR","varp":"(TB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"} ],"timingControlp": []} - ]}, - {"type":"ASSIGN","name":"","addr":"(SD)","loc":"d,21:5,21:11","dtypep":"(K)", + ],"contsp": []}, + {"type":"ASSIGN","name":"","addr":"(TD)","loc":"d,21:5,21:11","dtypep":"(K)", "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(TD)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(UD)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(UD)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(MB)","varScopep":"(LB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(VD)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(MB)","varScopep":"(LB)","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(VD)","loc":"d,24:14,24:15","dtypep":"(K)", + {"type":"ASSIGN","name":"","addr":"(WD)","loc":"d,24:14,24:15","dtypep":"(K)", "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(WD)","loc":"d,24:16,24:19","dtypep":"(K)","access":"RD","varp":"(MB)","varScopep":"(LB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(XD)","loc":"d,24:16,24:19","dtypep":"(K)","access":"RD","varp":"(MB)","varScopep":"(LB)","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"o_a","addr":"(XD)","loc":"d,24:10,24:13","dtypep":"(K)","access":"WR","varp":"(J)","varScopep":"(T)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"o_a","addr":"(YD)","loc":"d,24:10,24:13","dtypep":"(K)","access":"WR","varp":"(J)","varScopep":"(T)","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ]}, - {"type":"ALWAYS","name":"","addr":"(YD)","loc":"d,25:14,25:15","keyword":"always","isSuspendable":false,"needProcess":false,"sentreep": [], + {"type":"ALWAYS","name":"","addr":"(ZD)","loc":"d,25:14,25:15","keyword":"always","isSuspendable":false,"needProcess":false,"sentreep": [], "stmtsp": [ - {"type":"COMMENT","name":"Function: foo","addr":"(ZD)","loc":"d,25:16,25:19"}, - {"type":"ASSIGN","name":"","addr":"(AE)","loc":"d,25:20,25:23","dtypep":"(H)", + {"type":"COMMENT","name":"Function: foo","addr":"(AE)","loc":"d,25:16,25:19"}, + {"type":"ASSIGN","name":"","addr":"(BE)","loc":"d,25:20,25:23","dtypep":"(H)", "rhsp": [ - {"type":"VARREF","name":"i_b","addr":"(BE)","loc":"d,25:20,25:23","dtypep":"(H)","access":"RD","varp":"(I)","varScopep":"(S)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"i_b","addr":"(CE)","loc":"d,25:20,25:23","dtypep":"(H)","access":"RD","varp":"(I)","varScopep":"(S)","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(CE)","loc":"d,15:57,15:60","dtypep":"(H)","access":"WR","varp":"(XB)","varScopep":"(WB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(DE)","loc":"d,15:57,15:60","dtypep":"(H)","access":"WR","varp":"(XB)","varScopep":"(WB)","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"CRESET","name":"","addr":"(DE)","loc":"d,16:17,16:20","constructing":false, + {"type":"CRESET","name":"","addr":"(EE)","loc":"d,16:17,16:20","constructing":false, "varrefp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(EE)","loc":"d,16:17,16:20","dtypep":"(K)","access":"WR","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(FE)","loc":"d,16:17,16:20","dtypep":"(K)","access":"WR","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"} ]}, - {"type":"CRESET","name":"","addr":"(FE)","loc":"d,17:13,17:14","constructing":false, + {"type":"CRESET","name":"","addr":"(GE)","loc":"d,17:13,17:14","constructing":false, "varrefp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(GE)","loc":"d,17:13,17:14","dtypep":"(SB)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(HE)","loc":"d,17:13,17:14","dtypep":"(SB)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} ]}, - {"type":"ASSIGN","name":"","addr":"(HE)","loc":"d,18:11,18:12","dtypep":"(SB)", + {"type":"ASSIGN","name":"","addr":"(IE)","loc":"d,18:11,18:12","dtypep":"(SB)", "rhsp": [ - {"type":"CONST","name":"32'sh0","addr":"(IE)","loc":"d,18:12,18:13","dtypep":"(NC)"} + {"type":"CONST","name":"32'sh0","addr":"(JE)","loc":"d,18:12,18:13","dtypep":"(NC)"} ], "lhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(JE)","loc":"d,18:10,18:11","dtypep":"(SB)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(KE)","loc":"d,18:10,18:11","dtypep":"(SB)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"WHILE","name":"","addr":"(KE)","loc":"d,18:5,18:8", - "condp": [ - {"type":"GTS","name":"","addr":"(LE)","loc":"d,18:18,18:19","dtypep":"(RC)", - "lhsp": [ - {"type":"CONST","name":"32'sh7","addr":"(ME)","loc":"d,18:20,18:21","dtypep":"(NC)"} - ], - "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(NE)","loc":"d,18:16,18:17","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} - ]} - ], + {"type":"LOOP","name":"","addr":"(LE)","loc":"d,18:5,18:8","unroll":"default", "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(OE)","loc":"d,19:14,19:15","dtypep":"(RC)", - "rhsp": [ - {"type":"EQ","name":"","addr":"(PE)","loc":"d,19:31,19:33","dtypep":"(RC)", + {"type":"LOOPTEST","name":"","addr":"(ME)","loc":"d,18:16,18:17", + "condp": [ + {"type":"GTS","name":"","addr":"(NE)","loc":"d,18:18,18:19","dtypep":"(SC)", "lhsp": [ - {"type":"CONST","name":"2'h0","addr":"(QE)","loc":"d,19:34,19:39","dtypep":"(XC)"} + {"type":"CONST","name":"32'sh7","addr":"(OE)","loc":"d,18:20,18:21","dtypep":"(NC)"} ], "rhsp": [ - {"type":"SEL","name":"","addr":"(RE)","loc":"d,19:20,19:21","dtypep":"(XC)","widthConst":2,"declRange":"[15:0]","declElWidth":1, + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(PE)","loc":"d,18:16,18:17","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} + ]} + ]}, + {"type":"ASSIGN","name":"","addr":"(QE)","loc":"d,19:14,19:15","dtypep":"(SC)", + "rhsp": [ + {"type":"EQ","name":"","addr":"(RE)","loc":"d,19:31,19:33","dtypep":"(SC)", + "lhsp": [ + {"type":"CONST","name":"2'h0","addr":"(SE)","loc":"d,19:34,19:39","dtypep":"(YC)"} + ], + "rhsp": [ + {"type":"SEL","name":"","addr":"(TE)","loc":"d,19:20,19:21","dtypep":"(YC)","widthConst":2,"declRange":"[15:0]","declElWidth":1, "fromp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(SE)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(XB)","varScopep":"(WB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(UE)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(XB)","varScopep":"(WB)","classOrPackagep":"UNLINKED"} ], "lsbp": [ - {"type":"SEL","name":"","addr":"(TE)","loc":"d,19:22,19:23","dtypep":"(BD)","widthConst":4, + {"type":"SEL","name":"","addr":"(VE)","loc":"d,19:22,19:23","dtypep":"(CD)","widthConst":4, "fromp": [ - {"type":"MULS","name":"","addr":"(UE)","loc":"d,19:22,19:23","dtypep":"(NC)", + {"type":"MULS","name":"","addr":"(WE)","loc":"d,19:22,19:23","dtypep":"(NC)", "lhsp": [ - {"type":"CONST","name":"32'sh2","addr":"(VE)","loc":"d,19:23,19:24","dtypep":"(NC)"} + {"type":"CONST","name":"32'sh2","addr":"(XE)","loc":"d,19:23,19:24","dtypep":"(NC)"} ], "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(WE)","loc":"d,19:21,19:22","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(YE)","loc":"d,19:21,19:22","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} ]} ], "lsbp": [ - {"type":"CONST","name":"32'h0","addr":"(XE)","loc":"d,19:22,19:23","dtypep":"(GD)"} + {"type":"CONST","name":"32'h0","addr":"(ZE)","loc":"d,19:22,19:23","dtypep":"(HD)"} ]} ]} ]} ], "lhsp": [ - {"type":"SEL","name":"","addr":"(YE)","loc":"d,19:10,19:11","dtypep":"(RC)","widthConst":1,"declRange":"[6:0]","declElWidth":1, + {"type":"SEL","name":"","addr":"(AF)","loc":"d,19:10,19:11","dtypep":"(SC)","widthConst":1,"declRange":"[6:0]","declElWidth":1, "fromp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(ZE)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(BF)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"} ], "lsbp": [ - {"type":"SEL","name":"","addr":"(AF)","loc":"d,19:11,19:12","dtypep":"(KD)","widthConst":3, + {"type":"SEL","name":"","addr":"(CF)","loc":"d,19:11,19:12","dtypep":"(LD)","widthConst":3, "fromp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(BF)","loc":"d,19:11,19:12","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(DF)","loc":"d,19:11,19:12","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} ], "lsbp": [ - {"type":"CONST","name":"32'h0","addr":"(CF)","loc":"d,19:11,19:12","dtypep":"(GD)"} + {"type":"CONST","name":"32'h0","addr":"(EF)","loc":"d,19:11,19:12","dtypep":"(HD)"} ]} ]} - ],"timingControlp": []} - ], - "incsp": [ - {"type":"ASSIGN","name":"","addr":"(DF)","loc":"d,18:24,18:26","dtypep":"(SB)", + ],"timingControlp": []}, + {"type":"ASSIGN","name":"","addr":"(FF)","loc":"d,18:24,18:26","dtypep":"(SB)", "rhsp": [ - {"type":"ADD","name":"","addr":"(EF)","loc":"d,18:24,18:26","dtypep":"(GD)", + {"type":"ADD","name":"","addr":"(GF)","loc":"d,18:24,18:26","dtypep":"(HD)", "lhsp": [ - {"type":"CONST","name":"32'h1","addr":"(FF)","loc":"d,18:24,18:26","dtypep":"(GD)"} + {"type":"CONST","name":"32'h1","addr":"(HF)","loc":"d,18:24,18:26","dtypep":"(HD)"} ], "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(GF)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(IF)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} ]} ], "lhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(HF)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(JF)","loc":"d,18:23,18:24","dtypep":"(SB)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"} ],"timingControlp": []} - ]}, - {"type":"ASSIGN","name":"","addr":"(IF)","loc":"d,21:5,21:11","dtypep":"(K)", + ],"contsp": []}, + {"type":"ASSIGN","name":"","addr":"(KF)","loc":"d,21:5,21:11","dtypep":"(K)", "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(JF)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(LF)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(KF)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(VB)","varScopep":"(UB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(MF)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(VB)","varScopep":"(UB)","classOrPackagep":"UNLINKED"} ],"timingControlp": []}, - {"type":"ASSIGN","name":"","addr":"(LF)","loc":"d,25:14,25:15","dtypep":"(K)", + {"type":"ASSIGN","name":"","addr":"(NF)","loc":"d,25:14,25:15","dtypep":"(K)", "rhsp": [ - {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(MF)","loc":"d,25:16,25:19","dtypep":"(K)","access":"RD","varp":"(VB)","varScopep":"(UB)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(OF)","loc":"d,25:16,25:19","dtypep":"(K)","access":"RD","varp":"(VB)","varScopep":"(UB)","classOrPackagep":"UNLINKED"} ], "lhsp": [ - {"type":"VARREF","name":"o_b","addr":"(NF)","loc":"d,25:10,25:13","dtypep":"(K)","access":"WR","varp":"(L)","varScopep":"(U)","classOrPackagep":"UNLINKED"} + {"type":"VARREF","name":"o_b","addr":"(PF)","loc":"d,25:10,25:13","dtypep":"(K)","access":"WR","varp":"(L)","varScopep":"(U)","classOrPackagep":"UNLINKED"} ],"timingControlp": []} ]} ],"inlinesp": []} @@ -293,24 +291,24 @@ ]} ],"filesp": [], "miscsp": [ - {"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(OF)", + {"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(QF)", "typesp": [ - {"type":"BASICDTYPE","name":"logic","addr":"(RC)","loc":"d,18:18,18:19","dtypep":"(RC)","keyword":"logic","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(XC)","loc":"d,19:34,19:39","dtypep":"(XC)","keyword":"logic","range":"1:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(SC)","loc":"d,18:18,18:19","dtypep":"(SC)","keyword":"logic","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(YC)","loc":"d,19:34,19:39","dtypep":"(YC)","keyword":"logic","range":"1:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(H)","loc":"d,9:11,9:16","dtypep":"(H)","keyword":"logic","range":"15:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(K)","loc":"d,11:12,11:17","dtypep":"(K)","keyword":"logic","range":"6:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"integer","addr":"(SB)","loc":"d,17:5,17:12","dtypep":"(SB)","keyword":"integer","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(KD)","loc":"d,19:10,19:11","dtypep":"(KD)","keyword":"logic","range":"2:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(GD)","loc":"d,19:11,19:12","dtypep":"(GD)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(BD)","loc":"d,19:20,19:21","dtypep":"(BD)","keyword":"logic","range":"3:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(LD)","loc":"d,19:10,19:11","dtypep":"(LD)","keyword":"logic","range":"2:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(HD)","loc":"d,19:11,19:12","dtypep":"(HD)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(CD)","loc":"d,19:20,19:21","dtypep":"(CD)","keyword":"logic","range":"3:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(NC)","loc":"d,18:12,18:13","dtypep":"(NC)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"VOIDDTYPE","name":"","addr":"(OF)","loc":"a,0:0,0:0","dtypep":"(OF)","generic":false} + {"type":"VOIDDTYPE","name":"","addr":"(QF)","loc":"a,0:0,0:0","dtypep":"(QF)","generic":false} ]}, {"type":"CONSTPOOL","name":"","addr":"(D)","loc":"a,0:0,0:0", "modulep": [ - {"type":"MODULE","name":"@CONST-POOL@","addr":"(PF)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], + {"type":"MODULE","name":"@CONST-POOL@","addr":"(RF)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], "stmtsp": [ - {"type":"SCOPE","name":"@CONST-POOL@","addr":"(QF)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(PF)","varsp": [],"blocksp": [],"inlinesp": []} + {"type":"SCOPE","name":"@CONST-POOL@","addr":"(SF)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(RF)","varsp": [],"blocksp": [],"inlinesp": []} ]} ]} ]} diff --git a/test_regress/t/t_lint_removed_unused_loop_bad.out b/test_regress/t/t_lint_removed_unused_loop_bad.out index 44ebc7330..0874c3069 100644 --- a/test_regress/t/t_lint_removed_unused_loop_bad.out +++ b/test_regress/t/t_lint_removed_unused_loop_bad.out @@ -1,38 +1,42 @@ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:172:7: Loop condition is always false; body will never execute +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:169:7: Loop condition is always false : ... note: In instance 't.with_always' - 172 | while(0); + 169 | while(0); | ^~~~~ ... For warning description see https://verilator.org/warn/UNUSEDLOOP?v=latest ... Use "/* verilator lint_off UNUSEDLOOP */" and lint_on around source to disable this message. -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:155:7: Loop condition is always false; body will never execute +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:155:7: Loop condition is always false : ... note: In instance 't.non_parametrized_initial' 155 | while(0); | ^~~~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:114:7: Loop condition is always false; body will never execute +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:158:7: Loop condition is always false + : ... note: In instance 't.non_parametrized_initial' + 158 | do ; while(0); + | ^~ +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:114:7: Loop condition is always false 114 | while(always_zero < 0) begin | ^~~~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:156:7: Loop condition is always false; body will never execute +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:156:7: Loop condition is always false 156 | while(always_false); | ^~~~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:157:7: Loop condition is always false; body will never execute +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:157:7: Loop condition is always false 157 | while(always_zero < 0); | ^~~~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:174:7: Loop condition is always false; body will never execute - 174 | while(always_false) begin +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:171:7: Loop condition is always false + 171 | while(always_false) begin | ^~~~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:184:7: Loop condition is always false; body will never execute - 184 | while(always_zero) begin +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:181:7: Loop condition is always false + 181 | while(always_zero) begin | ^~~~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:188:7: Loop condition is always false; body will never execute - 188 | for (int i = 0; always_zero; i++) +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:185:7: Loop condition is always false + 185 | for (int i = 0; always_zero; i++) | ^~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:193:7: Loop condition is always false; body will never execute - 193 | for (int i = 0; i < always_zero; i++) +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:190:7: Loop condition is always false + 190 | for (int i = 0; i < always_zero; i++) | ^~~ %Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:136:7: Loop is not used and will be optimized out 136 | while(param_unused_while < always_zero) begin | ^~~~~ -%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:283:7: Loop is not used and will be optimized out - 283 | while (m_2_ticked); +%Warning-UNUSEDLOOP: t/t_lint_removed_unused_loop_bad.v:280:7: Loop is not used and will be optimized out + 280 | while (m_2_ticked); | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_lint_removed_unused_loop_bad.v b/test_regress/t/t_lint_removed_unused_loop_bad.v index 212869165..60462603c 100644 --- a/test_regress/t/t_lint_removed_unused_loop_bad.v +++ b/test_regress/t/t_lint_removed_unused_loop_bad.v @@ -155,10 +155,7 @@ module non_parametrized_initial; while(0); while(always_false); while(always_zero < 0); - - // inlined - no warning - do begin - end while(0); + do ; while(0); // unrolled - no warning for (int i = 0; i < 1; i++); diff --git a/test_regress/t/t_nba_mixed_update_clocked.py b/test_regress/t/t_nba_mixed_update_clocked.py index 5b4c97c80..6e944f0f7 100755 --- a/test_regress/t/t_nba_mixed_update_clocked.py +++ b/test_regress/t/t_nba_mixed_update_clocked.py @@ -18,7 +18,7 @@ test.execute() test.file_grep(test.stats, r'NBA, variables using ShadowVar scheme\s+(\d+)', 1) test.file_grep(test.stats, r'NBA, variables using ShadowVarMasked scheme\s+(\d+)', 2) test.file_grep(test.stats, r'NBA, variables using FlagUnique scheme\s+(\d+)', 1) -test.file_grep(test.stats, r'Optimizations, Unrolled Loops\s+(\d+)', 0) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled loops\s+(\d+)', 0) test.file_grep_not(test.stats, r'Warnings, Suppressed BLKANDNBLK') test.passes() diff --git a/test_regress/t/t_nba_mixed_update_comb.py b/test_regress/t/t_nba_mixed_update_comb.py index b0c605c48..689445088 100755 --- a/test_regress/t/t_nba_mixed_update_comb.py +++ b/test_regress/t/t_nba_mixed_update_comb.py @@ -18,7 +18,7 @@ test.execute() test.file_grep(test.stats, r'NBA, variables using ShadowVar scheme\s+(\d+)', 1) test.file_grep(test.stats, r'NBA, variables using ShadowVarMasked scheme\s+(\d+)', 2) test.file_grep(test.stats, r'NBA, variables using FlagUnique scheme\s+(\d+)', 1) -test.file_grep(test.stats, r'Optimizations, Unrolled Loops\s+(\d+)', 0) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled loops\s+(\d+)', 0) test.file_grep(test.stats, r'Warnings, Suppressed BLKANDNBLK\s+(\d+)', 2) test.passes() diff --git a/test_regress/t/t_unroll_nested_unroll.py b/test_regress/t/t_unroll_nested_unroll.py index ed5147555..c47ce67e5 100755 --- a/test_regress/t/t_unroll_nested_unroll.py +++ b/test_regress/t/t_unroll_nested_unroll.py @@ -17,7 +17,7 @@ test.compile(v_flags2=['+define+TEST_FULL', '--stats']) test.execute(expect_filename=test.golden_filename) -test.file_grep(test.stats, r'Optimizations, Unrolled Iterations\s+(\d+)', 11) -test.file_grep(test.stats, r'Optimizations, Unrolled Loops\s+(\d+)', 4) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled iterations\s+(\d+)', 107) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled loops\s+(\d+)', 27) test.passes() diff --git a/test_regress/t/t_unroll_pragma_disable.py b/test_regress/t/t_unroll_pragma_disable.py index 62b1b7832..d385bac05 100755 --- a/test_regress/t/t_unroll_pragma_disable.py +++ b/test_regress/t/t_unroll_pragma_disable.py @@ -17,6 +17,7 @@ test.compile(verilator_flags2=['--unroll-count 4 --unroll-stmts 9999 --stats -DT make_top_shell=False, make_main=False) -test.file_grep(test.stats, r'Optimizations, Unrolled Loops\s+(\d+)', 1) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Pragma unroll_disable\s+(\d+)', 4) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled loops\s+(\d+)', 0) test.passes() diff --git a/test_regress/t/t_unroll_pragma_full.py b/test_regress/t/t_unroll_pragma_full.py index 6018f47de..2c836b347 100755 --- a/test_regress/t/t_unroll_pragma_full.py +++ b/test_regress/t/t_unroll_pragma_full.py @@ -17,6 +17,7 @@ test.compile(verilator_flags2=['--unroll-count 4 --unroll-stmts 9999 --stats -DT make_top_shell=False, make_main=False) -test.file_grep(test.stats, r'Optimizations, Unrolled Loops\s+(\d+)', 5) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled loops\s+(\d+)', 9) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled iterations\s+(\d+)', 45) test.passes() diff --git a/test_regress/t/t_unroll_pragma_none.py b/test_regress/t/t_unroll_pragma_none.py index 34fedcad9..d1393ef61 100755 --- a/test_regress/t/t_unroll_pragma_none.py +++ b/test_regress/t/t_unroll_pragma_none.py @@ -17,6 +17,9 @@ test.compile(verilator_flags2=['--unroll-count 4 --unroll-stmts 9999 --stats -DT make_top_shell=False, make_main=False) -test.file_grep(test.stats, r'Optimizations, Unrolled Loops\s+(\d+)', 3) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled loops\s+(\d+)', 3) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled iterations\s+(\d+)', 9) +test.file_grep(test.stats, + r'Optimizations, Loop unrolling, Failed - reached --unroll-count\s+(\d+)', 2) test.passes() diff --git a/test_regress/t/t_unroll_stmt.out b/test_regress/t/t_unroll_stmt.out new file mode 100644 index 000000000..50d32c577 --- /dev/null +++ b/test_regress/t/t_unroll_stmt.out @@ -0,0 +1,34 @@ +loop_0 0 +loop_0 1 +loop_0 2 +loop_1 0 5 +loop_1 2 6 +loop_1 4 7 +loop_1 6 8 +loop_1 8 9 +loop_2 0 5 +loop_2 1 5 +loop_2 2 5 +loop_2 3 5 +loop_2 4 5 +loop_3 4 0 +loop_3 3 0 +loop_3 2 0 +loop_3 1 0 +loop_3 0 0 +loop_4 +loop_5 1 +loop_5 2 +loop_5 3 +loop_5 4 +loop_5 5 +loop_5 6 +loop_5 7 +loop_6 0 +loop_6 1 +loop_6 2 +loop_6 3 +loop_6 4 +loop_6 5 +stopping loop_6 +*-* All Finished *-* diff --git a/test_regress/t/t_unroll_stmt.py b/test_regress/t/t_unroll_stmt.py new file mode 100755 index 000000000..428b44f21 --- /dev/null +++ b/test_regress/t/t_unroll_stmt.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +# DESCRIPTION: Verilator: Verilog Test driver/expect definition +# +# Copyright 2025 by Wilson Snyder. This program is free software; you +# can redistribute it and/or modify it under the terms of either the GNU +# Lesser General Public License Version 3 or the Perl Artistic License +# Version 2.0. +# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 + +import vltest_bootstrap + +test.scenarios('vlt_all') + +test.compile(verilator_flags2=["--binary", "--stats"]) + +test.execute(expect_filename=test.golden_filename) + +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Failed - contains fork\s+(\d+)', 0) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Failed - infinite loop\s+(\d+)', 0) +test.file_grep(test.stats, + r'Optimizations, Loop unrolling, Failed - loop test in sub-statement\s+(\d+)', 0) +test.file_grep(test.stats, + r'Optimizations, Loop unrolling, Failed - reached --unroll-count\s+(\d+)', 0) +test.file_grep(test.stats, + r'Optimizations, Loop unrolling, Failed - reached --unroll-stmts\s+(\d+)', 0) +test.file_grep(test.stats, + r'Optimizations, Loop unrolling, Failed - unknown loop condition\s+(\d+)', 0) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Pragma unroll_disable\s+(\d+)', 0) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled loops\s+(\d+)', 6) +test.file_grep(test.stats, r'Optimizations, Loop unrolling, Unrolled iterations\s+(\d+)', 40) + +test.passes() diff --git a/test_regress/t/t_unroll_stmt.v b/test_regress/t/t_unroll_stmt.v new file mode 100644 index 000000000..659d9b3e9 --- /dev/null +++ b/test_regress/t/t_unroll_stmt.v @@ -0,0 +1,67 @@ +// DESCRIPTION: Verilator: Verilog Test module +// +// This file ONLY is placed under the Creative Commons Public Domain, for +// any use, without warranty, 2025 by Wilson Snyder. +// SPDX-License-Identifier: CC0-1.0 + +module t; + + int static_loop_cond; + + function logic f_loop_cond(); + return ++static_loop_cond < 8; + endfunction + + initial begin + // Basic loop + for (int i = 0; i < 3; ++i) begin : loop_0 + $display("loop_0 %0d", i); + end + // Loop with 2 init/step + for (int i = 0, j = 5; i < j; i += 2, j += 1) begin : loop_1 + $display("loop_1 %0d %0d", i, j); + end + // While loop with non-trivial init + begin + automatic int i = 0; + automatic int j = 5; // Not a variable + while (i < j) begin : loop_2 + $display("loop_2 %0d %0d", i++, j); + end + end + // Do loop with non-trivial init + begin + automatic int i = 5; + automatic int j = 0; // Not a variable + do begin : loop_3 + $display("loop_3 %0d %0d", --i, j); + end while (i > j); + end + // Do loop that executes once - replaced by V3Const, not unrolled + do begin: loop_4 + $display("loop_4"); + end while(0); + // Loop with inlined function as condition + static_loop_cond = 0; + while (f_loop_cond()) begin : loop_5 + $display("loop_5 %0d", static_loop_cond); + end + // Self disabling loop in via 'then' branch of 'if' + begin + automatic logic found = 0; + for (int i = 0; i < 10; ++i) begin : loop_6 + if (!found) begin + $display("loop_6 %0d", i); + if (i == $c32("5")) begin // Unknown condition + $display("stopping loop_6"); // This line is important + found = 1; + end + end + end + end + // Done + $write("*-* All Finished *-*\n"); + $finish; + end + +endmodule diff --git a/test_regress/t/t_xml_debugcheck.out b/test_regress/t/t_xml_debugcheck.out index ab466cf4d..7222baf6a 100644 --- a/test_regress/t/t_xml_debugcheck.out +++ b/test_regress/t/t_xml_debugcheck.out @@ -53,14 +53,6 @@ - - - - - - - - @@ -520,80 +512,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1596,11 +1518,11 @@ - - - - + + + + @@ -1639,11 +1561,11 @@ - - - - + + + + @@ -1684,7 +1606,7 @@ - + @@ -1695,7 +1617,7 @@ - + @@ -1828,7 +1750,6 @@ - diff --git a/test_regress/t/t_xml_debugcheck.py b/test_regress/t/t_xml_debugcheck.py index c88859559..463ac7aeb 100755 --- a/test_regress/t/t_xml_debugcheck.py +++ b/test_regress/t/t_xml_debugcheck.py @@ -26,8 +26,8 @@ test.files_identical(out_filename, test.golden_filename, 'logfile') test.file_grep(out_filename, r'') # for and +test.file_grep(out_filename, r'') # for and test.file_grep(out_filename, r' signed=') # for test.file_grep(out_filename, r' func=') # for diff --git a/test_regress/t/t_xml_flat_vlvbound.out b/test_regress/t/t_xml_flat_vlvbound.out index 423317b9d..915788897 100644 --- a/test_regress/t/t_xml_flat_vlvbound.out +++ b/test_regress/t/t_xml_flat_vlvbound.out @@ -73,14 +73,14 @@ - - - - - - - + + + + + + + @@ -103,8 +103,6 @@ - - @@ -113,7 +111,7 @@ - + @@ -139,14 +137,14 @@ - - - - - - - + + + + + + + @@ -169,8 +167,6 @@ - - @@ -179,7 +175,7 @@ - +