From 603f4c615a0630f7a17170cf461f7e77234f70db Mon Sep 17 00:00:00 2001 From: Geza Lore Date: Mon, 29 Sep 2025 16:25:25 +0200 Subject: [PATCH] Improve Loop unrolling (#6480) (#6493) This patch implements #6480. All loop statements are represented using AstLoop and AstLoopTest. This necessitates rework of the loop unroller to handle loops of arbitrary form. To enable this, I have split the old unroller used for 'generate for' statements and moved it into V3Param, and subsequently rewrote V3Unroll to handle the new representation. V3Unroll can now unroll more complex loops, including with loop conditions containing multiple variable references or inlined functions. Handling the more generic code also requires some restrictions. If a loop contains any of the following, it cannot be unrolled: - A timing control that might suspend the loop - A non-inlined call to a non-pure function These constructs can change the values of variables in the loop, so are generally not safe to unroll if they are present. (We could still unroll if all the variables needed for unrolling are automatic, however we don't do that right now.) These restrictions seem ok in the benchmark suite, where the new unroller can generally unroll many more loops than before. --- src/CMakeLists.txt | 1 + src/Makefile_obj.in | 1 + src/V3AssertPre.cpp | 21 +- src/V3AstNodeStmt.h | 88 +- src/V3AstNodes.cpp | 51 +- src/V3Begin.cpp | 14 +- src/V3Cfg.cpp | 8 +- src/V3CfgBuilder.cpp | 41 +- src/V3CfgLiveVariables.cpp | 2 +- src/V3Clean.cpp | 3 +- src/V3Const.cpp | 79 +- src/V3Coverage.cpp | 36 +- src/V3Delayed.cpp | 2 +- src/V3EmitCFunc.h | 46 +- src/V3EmitV.cpp | 35 +- src/V3EmitXml.cpp | 21 +- src/V3Gate.cpp | 6 +- src/V3Life.cpp | 28 +- src/V3LinkInc.cpp | 24 +- src/V3LinkJump.cpp | 64 +- src/V3LinkParse.cpp | 16 +- src/V3Param.cpp | 10 +- src/V3Premit.cpp | 22 +- src/V3Randomize.cpp | 15 +- src/V3Reloop.cpp | 10 +- src/V3Sched.cpp | 19 +- src/V3SchedVirtIface.cpp | 8 +- src/V3Simulate.h | 108 +- src/V3Split.cpp | 3 +- src/V3Task.cpp | 15 - src/V3Timing.cpp | 12 +- src/V3Unroll.cpp | 769 +++--- src/V3Unroll.h | 20 +- src/V3UnrollGen.cpp | 323 +++ src/V3Width.cpp | 16 +- src/Verilator.cpp | 2 +- src/verilog.y | 49 +- test_regress/t/t_cover_line.out | 12 +- test_regress/t/t_cover_line_cc.info.out | 14 +- test_regress/t/t_cover_line_trace.out | 1236 ++++----- test_regress/t/t_func_const_bad.out | 2 +- test_regress/t/t_interface_virtual_unsup.out | 9 +- test_regress/t/t_interface_virtual_unsup.v | 2 +- test_regress/t/t_json_only_debugcheck.out | 2243 ++++++++--------- test_regress/t/t_json_only_flat_vlvbound.out | 204 +- .../t/t_lint_removed_unused_loop_bad.out | 36 +- .../t/t_lint_removed_unused_loop_bad.v | 5 +- test_regress/t/t_nba_mixed_update_clocked.py | 2 +- test_regress/t/t_nba_mixed_update_comb.py | 2 +- test_regress/t/t_unroll_nested_unroll.py | 4 +- test_regress/t/t_unroll_pragma_disable.py | 3 +- test_regress/t/t_unroll_pragma_full.py | 3 +- test_regress/t/t_unroll_pragma_none.py | 5 +- test_regress/t/t_unroll_stmt.out | 34 + test_regress/t/t_unroll_stmt.py | 32 + test_regress/t/t_unroll_stmt.v | 67 + test_regress/t/t_xml_debugcheck.out | 99 +- test_regress/t/t_xml_debugcheck.py | 4 +- test_regress/t/t_xml_flat_vlvbound.out | 36 +- 59 files changed, 3151 insertions(+), 2891 deletions(-) create mode 100644 src/V3UnrollGen.cpp create mode 100644 test_regress/t/t_unroll_stmt.out create mode 100755 test_regress/t/t_unroll_stmt.py create mode 100644 test_regress/t/t_unroll_stmt.v 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 @@ - +