diff --git a/src/V3Sched.cpp b/src/V3Sched.cpp index d2fd08832..098beece2 100644 --- a/src/V3Sched.cpp +++ b/src/V3Sched.cpp @@ -396,17 +396,18 @@ void createFinal(AstNetlist* netlistp, const LogicClasses& logicClasses) { //============================================================================ // Helper that creates virtual interface trigger resets -std::vector addVirtIfaceTriggerAssignments( - AstNetlist* netlistp, const VirtIfaceTriggers& virtIfaceTriggers, uint32_t vifTriggerIndex, - uint32_t vifMemberTriggerIndex, const TriggerKit& trigKit, const std::string& tag) { +std::vector +addVirtIfaceTriggerAssignments(AstNetlist* netlistp, const VirtIfaceTriggers& virtIfaceTriggers, + uint32_t vifTriggerIndex, uint32_t vifMemberTriggerIndex, + const TriggerKit& trigKit, const std::string& tag) { AstScope* const scopeTopp = netlistp->topScopep()->scopep(); std::vector gateVscps; for (const auto& p : virtIfaceTriggers.m_memberTriggers) { // Create an "already fired" gate variable for this VIF trigger. // This prevents the same trigger from re-firing on subsequent convergence // iterations when the VIF member is written with the same value. - const std::string gateName = "__Vvif_" + tag + "_fired_" - + p.first.m_ifacep->name() + "_" + p.first.m_memberp->name(); + const std::string gateName = "__Vvif_" + tag + "_fired_" + p.first.m_ifacep->name() + "_" + + p.first.m_memberp->name(); AstVarScope* const gatep = scopeTopp->createTemp(gateName, 1); gateVscps.push_back(gatep); trigKit.addGatedExtraTriggerAssignment(p.second, vifMemberTriggerIndex, gatep); @@ -531,9 +532,9 @@ IcoResult createInputCombLoop(AstNetlist* netlistp, AstCFunc* const initFuncp, if (dpiExportTriggerVscp) { trigKit.addExtraTriggerAssignment(dpiExportTriggerVscp, dpiExportTriggerIndex); } - const auto icoGateVscps = addVirtIfaceTriggerAssignments( - netlistp, virtIfaceTriggers, firstVifTriggerIndex, firstVifMemberTriggerIndex, trigKit, - "ico"); + const auto icoGateVscps + = addVirtIfaceTriggerAssignments(netlistp, virtIfaceTriggers, firstVifTriggerIndex, + firstVifMemberTriggerIndex, trigKit, "ico"); // Remap sensitivities remapSensitivities(logic, trigKit.mapVec()); @@ -814,12 +815,8 @@ void createEval(AstNetlist* netlistp, // if (v3Global.opt.profExec()) funcp->addStmtsp(AstCStmt::profExecSectionPush(flp, "eval")); // Clear the VIF trigger gate flags so triggers can fire in this eval - for (AstVarScope* const gatep : icoGateVscps) { - funcp->addStmtsp(util::setVar(gatep, 0)); - } - for (AstVarScope* const gatep : actGateVscps) { - funcp->addStmtsp(util::setVar(gatep, 0)); - } + for (AstVarScope* const gatep : icoGateVscps) { funcp->addStmtsp(util::setVar(gatep, 0)); } + for (AstVarScope* const gatep : actGateVscps) { funcp->addStmtsp(util::setVar(gatep, 0)); } // Start with the ico loop, if any if (icoLoop) funcp->addStmtsp(icoLoop); @@ -990,9 +987,9 @@ void schedule(AstNetlist* netlistp) { if (dpiExportTriggerVscp) { trigKit.addExtraTriggerAssignment(dpiExportTriggerVscp, dpiExportTriggerIndex); } - const auto actGateVscps = addVirtIfaceTriggerAssignments( - netlistp, virtIfaceTriggers, firstVifTriggerIndex, firstVifMemberTriggerIndex, trigKit, - "act"); + const auto actGateVscps + = addVirtIfaceTriggerAssignments(netlistp, virtIfaceTriggers, firstVifTriggerIndex, + firstVifMemberTriggerIndex, trigKit, "act"); if (v3Global.opt.stats()) V3Stats::statsStage("sched-create-triggers"); // Note: Experiments so far show that running the Act (or Ico) regions on diff --git a/src/V3SchedTrigger.cpp b/src/V3SchedTrigger.cpp index 13c84c5b8..2b4ad1219 100644 --- a/src/V3SchedTrigger.cpp +++ b/src/V3SchedTrigger.cpp @@ -427,7 +427,7 @@ void TriggerKit::addExtraTriggerAssignment(AstVarScope* vscp, uint32_t index, bo } void TriggerKit::addGatedExtraTriggerAssignment(AstVarScope* vscp, uint32_t index, - AstVarScope* gatep) const { + AstVarScope* gatep) const { index += m_nSenseWords * WORD_SIZE; const uint32_t wordIndex = index / WORD_SIZE; const uint32_t bitIndex = index % WORD_SIZE; diff --git a/test_regress/t/t_interface_virtual_sched_ico_loop.py b/test_regress/t/t_interface_virtual_sched_ico_loop.py old mode 100644 new mode 100755