Make eval loop construction more unified and the output more readable
This commit is contained in:
parent
89743aae5d
commit
2cba167634
|
|
@ -402,10 +402,7 @@ class EmitCModel final : public EmitCFunc {
|
|||
puts(topModNameProtected + "__" + protect("_eval_settle") + "(&(vlSymsp->TOP));\n");
|
||||
puts("}\n");
|
||||
|
||||
if (v3Global.opt.profExec()) {
|
||||
puts("vlSymsp->__Vm_executionProfilerp->configure();\n");
|
||||
puts("VL_EXEC_TRACE_ADD_RECORD(vlSymsp).sectionPush(\"eval\");\n");
|
||||
}
|
||||
if (v3Global.opt.profExec()) puts("vlSymsp->__Vm_executionProfilerp->configure();\n");
|
||||
|
||||
puts("VL_DEBUG_IF(VL_DBG_MSGF(\"+ Eval\\n\"););\n");
|
||||
puts(topModNameProtected + "__" + protect("_eval") + "(&(vlSymsp->TOP));\n");
|
||||
|
|
@ -413,7 +410,6 @@ class EmitCModel final : public EmitCFunc {
|
|||
putsDecoration("// Evaluate cleanup\n");
|
||||
puts("Verilated::endOfEval(vlSymsp->__Vm_evalMsgQp);\n");
|
||||
|
||||
if (v3Global.opt.profExec()) puts("VL_EXEC_TRACE_ADD_RECORD(vlSymsp).sectionPop();\n");
|
||||
puts("}\n");
|
||||
}
|
||||
|
||||
|
|
|
|||
623
src/V3Sched.cpp
623
src/V3Sched.cpp
|
|
@ -87,14 +87,6 @@ std::vector<const AstSenTree*> getSenTreesUsedBy(const std::vector<const LogicBy
|
|||
return result;
|
||||
}
|
||||
|
||||
AstAssign* setVar(AstVarScope* vscp, uint32_t val) {
|
||||
FileLine* const flp = vscp->fileline();
|
||||
AstVarRef* const refp = new AstVarRef{flp, vscp, VAccess::WRITE};
|
||||
AstConst* const valp = new AstConst{flp, AstConst::DTyped{}, vscp->dtypep()};
|
||||
valp->num().setLong(val);
|
||||
return new AstAssign{flp, refp, valp};
|
||||
};
|
||||
|
||||
void remapSensitivities(const LogicByScope& lbs,
|
||||
std::unordered_map<const AstSenTree*, AstSenTree*> senTreeMap) {
|
||||
for (const auto& pair : lbs) {
|
||||
|
|
@ -114,6 +106,175 @@ void invertAndMergeSenTreeMap(
|
|||
}
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// Code generation utility functions
|
||||
|
||||
AstAssign* setVar(AstVarScope* vscp, uint32_t val) {
|
||||
FileLine* const flp = vscp->fileline();
|
||||
AstVarRef* const refp = new AstVarRef{flp, vscp, VAccess::WRITE};
|
||||
AstConst* const valp = new AstConst{flp, AstConst::DTyped{}, vscp->dtypep()};
|
||||
valp->num().setLong(val);
|
||||
return new AstAssign{flp, refp, valp};
|
||||
}
|
||||
|
||||
AstNodeStmt* incrementVar(AstVarScope* vscp) {
|
||||
FileLine* const flp = vscp->fileline();
|
||||
AstVarRef* const wrefp = new AstVarRef{flp, vscp, VAccess::WRITE};
|
||||
AstVarRef* const rrefp = new AstVarRef{flp, vscp, VAccess::READ};
|
||||
AstConst* const onep = new AstConst{flp, AstConst::DTyped{}, vscp->dtypep()};
|
||||
onep->num().setLong(1);
|
||||
return new AstAssign{flp, wrefp, new AstAdd{flp, rrefp, onep}};
|
||||
}
|
||||
|
||||
AstNodeStmt* callVoidFunc(AstCFunc* funcp) {
|
||||
AstCCall* const callp = new AstCCall{funcp->fileline(), funcp};
|
||||
callp->dtypeSetVoid();
|
||||
return callp->makeStmt();
|
||||
}
|
||||
|
||||
AstNodeStmt* checkIterationLimit(AstNetlist* netlistp, const string& name, AstVarScope* counterp,
|
||||
AstCFunc* trigDumpp) {
|
||||
FileLine* const flp = netlistp->fileline();
|
||||
|
||||
// If we exceeded the iteration limit, die
|
||||
const uint32_t limit = v3Global.opt.convergeLimit();
|
||||
AstVarRef* const counterRefp = new AstVarRef{flp, counterp, VAccess::READ};
|
||||
AstConst* const constp = new AstConst{flp, AstConst::DTyped{}, counterp->dtypep()};
|
||||
constp->num().setLong(limit);
|
||||
AstNodeExpr* const condp = new AstGt{flp, counterRefp, constp};
|
||||
AstIf* const ifp = new AstIf{flp, condp};
|
||||
ifp->branchPred(VBranchPred::BP_UNLIKELY);
|
||||
AstTextBlock* const blockp = new AstTextBlock{flp};
|
||||
ifp->addThensp(blockp);
|
||||
FileLine* const locp = netlistp->topModulep()->fileline();
|
||||
const string& file = VIdProtect::protect(locp->filename());
|
||||
const string& line = cvtToStr(locp->lineno());
|
||||
const auto add = [&](const string& text) { blockp->addText(flp, text, true); };
|
||||
add("#ifdef VL_DEBUG\n");
|
||||
blockp->addNodesp(callVoidFunc(trigDumpp));
|
||||
add("#endif\n");
|
||||
add("VL_FATAL_MT(\"" + V3OutFormatter::quoteNameControls(file) + "\", " + line + ", \"\", ");
|
||||
add("\"" + name + " region did not converge.\");\n");
|
||||
|
||||
return ifp;
|
||||
}
|
||||
|
||||
AstNodeStmt* profExecSectionPush(FileLine* flp, const string& name) {
|
||||
return new AstCStmt{flp, "VL_EXEC_TRACE_ADD_RECORD(vlSymsp).sectionPush(\"" + name + "\");\n"};
|
||||
}
|
||||
|
||||
AstNodeStmt* profExecSectionPop(FileLine* flp) {
|
||||
return new AstCStmt{flp, "VL_EXEC_TRACE_ADD_RECORD(vlSymsp).sectionPop();\n"};
|
||||
}
|
||||
|
||||
struct EvalLoop {
|
||||
// Flag set to true during the first iteration of the loop
|
||||
AstVarScope* firstIterp;
|
||||
// The loop continuation flag (set to true to loop again)
|
||||
AstVarScope* continuep = nullptr;
|
||||
// The loop itself and statements around it
|
||||
AstNodeStmt* stmtsp = nullptr;
|
||||
};
|
||||
|
||||
// Create an eval loop with all the trimmings.
|
||||
EvalLoop createEvalLoop(AstNetlist* netlistp, //
|
||||
const std::string& tag, // Tag for current phase
|
||||
const string& name, // Name of current phase
|
||||
bool slow, // Should create slow functions
|
||||
AstVarScope* trigp, // The trigger vector
|
||||
AstCFunc* dumpFuncp, // Trigger dump function for debugging only
|
||||
AstNodeStmt* innerp, // The inner loop, if any
|
||||
AstNodeStmt* phasePrepp, // Prep statements run before checking triggers
|
||||
AstNodeStmt* phaseWorkp // The work to do if anything triggered
|
||||
) {
|
||||
const std::string varPrefix = "__V" + tag;
|
||||
AstScope* const scopeTopp = netlistp->topScopep()->scopep();
|
||||
FileLine* const flp = netlistp->fileline();
|
||||
|
||||
// We wrap the prep/cond/work in a function for readability
|
||||
AstCFunc* const phaseFuncp = makeTopFunction(netlistp, "_eval_phase__" + tag, slow);
|
||||
{
|
||||
// The execute flag
|
||||
AstVarScope* const executeFlagp = scopeTopp->createTemp(varPrefix + "Execute", 1);
|
||||
executeFlagp->varp()->noReset(true);
|
||||
|
||||
// Add the preparatory statements
|
||||
phaseFuncp->addStmtsp(phasePrepp);
|
||||
|
||||
// Check if any triggers are fired, save the result
|
||||
AstCMethodHard* const callp
|
||||
= new AstCMethodHard{flp, new AstVarRef{flp, trigp, VAccess::READ}, "any"};
|
||||
callp->dtypeSetBit();
|
||||
phaseFuncp->addStmtsp(
|
||||
new AstAssign{flp, new AstVarRef{flp, executeFlagp, VAccess::WRITE}, callp});
|
||||
|
||||
// Add the work
|
||||
AstIf* const ifp = new AstIf{flp, new AstVarRef{flp, executeFlagp, VAccess::READ}};
|
||||
ifp->addThensp(phaseWorkp);
|
||||
phaseFuncp->addStmtsp(ifp);
|
||||
|
||||
// The function returns ture iff it did run the work
|
||||
phaseFuncp->rtnType("bool");
|
||||
phaseFuncp->addStmtsp(
|
||||
new AstCReturn{flp, new AstVarRef{flp, executeFlagp, VAccess::READ}});
|
||||
}
|
||||
|
||||
// The result statements
|
||||
AstNodeStmt* stmtps = nullptr;
|
||||
|
||||
// Prof-exec section push
|
||||
if (v3Global.opt.profExec()) stmtps = profExecSectionPush(flp, "loop " + tag);
|
||||
|
||||
const auto addVar = [&](const std::string& name, int width, uint32_t initVal) {
|
||||
AstVarScope* const vscp = scopeTopp->createTemp("__V" + tag + name, width);
|
||||
vscp->varp()->noReset(true);
|
||||
stmtps = AstNode::addNext(stmtps, setVar(vscp, initVal));
|
||||
return vscp;
|
||||
};
|
||||
|
||||
// The iteration counter
|
||||
AstVarScope* const counterp = addVar("IterCount", 32, 0);
|
||||
// The first iteration flag
|
||||
AstVarScope* const firstIterFlagp = addVar("FirstIteration", 1, 1);
|
||||
// The continuation flag
|
||||
AstVarScope* const continueFlagp = addVar("Continue", 1, 1);
|
||||
|
||||
// The loop
|
||||
{
|
||||
AstWhile* const loopp
|
||||
= new AstWhile{flp, new AstVarRef{flp, continueFlagp, VAccess::READ}};
|
||||
|
||||
// Check the iteration limit (aborts if exceeded)
|
||||
loopp->addStmtsp(checkIterationLimit(netlistp, name, counterp, dumpFuncp));
|
||||
// Increment the iteration counter
|
||||
loopp->addStmtsp(incrementVar(counterp));
|
||||
|
||||
// Reset continuation flag
|
||||
loopp->addStmtsp(setVar(continueFlagp, 0));
|
||||
|
||||
// Execute the inner loop
|
||||
loopp->addStmtsp(innerp);
|
||||
|
||||
// Call the phase function to execute the current work. If we did
|
||||
// work, then need to loop again, so set the continuation flag
|
||||
AstCCall* const callp = new AstCCall{flp, phaseFuncp};
|
||||
callp->dtypeSetBit();
|
||||
AstIf* const ifp = new AstIf{flp, callp};
|
||||
ifp->addThensp(setVar(continueFlagp, 1));
|
||||
loopp->addStmtsp(ifp);
|
||||
|
||||
// Clear the first iteration flag
|
||||
loopp->addStmtsp(setVar(firstIterFlagp, 0));
|
||||
|
||||
stmtps->addNext(loopp);
|
||||
}
|
||||
|
||||
// Prof-exec section pop
|
||||
if (v3Global.opt.profExec()) stmtps->addNext(profExecSectionPop(flp));
|
||||
|
||||
return {firstIterFlagp, continueFlagp, stmtps};
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// Split large function according to --output-split-cfuncs
|
||||
|
||||
|
|
@ -249,9 +410,7 @@ void orderSequentially(AstCFunc* funcp, const LogicByScope& lbs) {
|
|||
subFuncp->slow(funcp->slow());
|
||||
scopep->addBlocksp(subFuncp);
|
||||
// Call it from the top function
|
||||
AstCCall* const callp = new AstCCall{scopep->fileline(), subFuncp};
|
||||
callp->dtypeSetVoid();
|
||||
funcp->addStmtsp(callp->makeStmt());
|
||||
funcp->addStmtsp(callVoidFunc(subFuncp));
|
||||
return subFuncp;
|
||||
};
|
||||
const VNUser1InUse user1InUse; // AstScope -> AstCFunc: the sub-function for the scope
|
||||
|
|
@ -340,13 +499,12 @@ struct TriggerKit {
|
|||
// No VL_UNCOPYABLE(TriggerKit) as causes C++20 errors on MSVC
|
||||
|
||||
// Utility that assigns the given index trigger to fire when the given variable is zero
|
||||
void addFirstIterationTriggerAssignment(AstVarScope* counterp, uint32_t index) const {
|
||||
FileLine* const flp = counterp->fileline();
|
||||
void addFirstIterationTriggerAssignment(AstVarScope* flagp, uint32_t index) const {
|
||||
FileLine* const flp = flagp->fileline();
|
||||
AstVarRef* const vrefp = new AstVarRef{flp, m_vscp, VAccess::WRITE};
|
||||
AstCMethodHard* const callp = new AstCMethodHard{flp, vrefp, "set"};
|
||||
callp->addPinsp(new AstConst{flp, index});
|
||||
callp->addPinsp(
|
||||
new AstEq{flp, new AstVarRef{flp, counterp, VAccess::READ}, new AstConst{flp, 0}});
|
||||
callp->addPinsp(new AstVarRef{flp, flagp, VAccess::READ});
|
||||
callp->dtypeSetVoid();
|
||||
m_funcp->stmtsp()->addHereThisAsNext(callp->makeStmt());
|
||||
}
|
||||
|
|
@ -378,6 +536,8 @@ struct EvalKit {
|
|||
AstCFunc* const m_dumpp = nullptr;
|
||||
// The AstCFunc that evaluates the region's logic
|
||||
AstCFunc* const m_funcp = nullptr;
|
||||
// Is this kit used/required?
|
||||
bool empty() const { return !m_funcp; }
|
||||
};
|
||||
|
||||
// Create an AstSenTree that is sensitive to the given trigger index. Must not exist yet!
|
||||
|
|
@ -399,17 +559,6 @@ AstSenTree* createTriggerSenTree(AstNetlist* netlistp, AstVarScope* const vscp,
|
|||
return resultp;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// Utility for creating profiling statements
|
||||
|
||||
AstNodeStmt* profExecSectionPush(FileLine* flp, const string& name) {
|
||||
return new AstCStmt{flp, "VL_EXEC_TRACE_ADD_RECORD(vlSymsp).sectionPush(\"" + name + "\");\n"};
|
||||
};
|
||||
|
||||
AstNodeStmt* profExecSectionPop(FileLine* flp) {
|
||||
return new AstCStmt{flp, "VL_EXEC_TRACE_ADD_RECORD(vlSymsp).sectionPop();\n"};
|
||||
};
|
||||
|
||||
//============================================================================
|
||||
// Utility for extra trigger allocation
|
||||
|
||||
|
|
@ -586,9 +735,7 @@ const TriggerKit createTriggers(AstNetlist* netlistp, AstCFunc* const initFuncp,
|
|||
const auto add = [&](const string& text) { blockp->addText(flp, text, true); };
|
||||
add("#ifdef VL_DEBUG\n");
|
||||
add("if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) {\n");
|
||||
AstCCall* const callp = new AstCCall{flp, dumpp};
|
||||
callp->dtypeSetVoid();
|
||||
blockp->addNodesp(callp->makeStmt());
|
||||
blockp->addNodesp(callVoidFunc(dumpp));
|
||||
add("}\n");
|
||||
add("#endif\n");
|
||||
}
|
||||
|
|
@ -601,116 +748,6 @@ const TriggerKit createTriggers(AstNetlist* netlistp, AstCFunc* const initFuncp,
|
|||
return {vscp, funcp, dumpp, map};
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// EvalLoop contains elements of an evaluation loop created by makeEvalLoop()
|
||||
|
||||
struct EvalLoop {
|
||||
// Loop iteration counter for enforcing the converge limit
|
||||
AstVarScope* counterp = nullptr;
|
||||
// The loop condition
|
||||
AstVarScope* continuep = nullptr;
|
||||
// The loop itself and statements around it
|
||||
AstNodeStmt* stmtsp = nullptr;
|
||||
};
|
||||
|
||||
//============================================================================
|
||||
// Helpers to construct an evaluation loop.
|
||||
|
||||
AstNodeStmt* buildLoop(AstNetlist* netlistp, AstVarScope* const condp,
|
||||
const std::function<void(AstWhile*)>& build) //
|
||||
{
|
||||
AstTopScope* const topScopep = netlistp->topScopep();
|
||||
AstScope* const scopeTopp = topScopep->scopep();
|
||||
FileLine* const flp = scopeTopp->fileline();
|
||||
// Initialize the loop condition variable to true
|
||||
AstNodeStmt* const resp = setVar(condp, 1);
|
||||
// Add the loop
|
||||
AstWhile* const loopp = new AstWhile{flp, new AstVarRef{flp, condp, VAccess::READ}};
|
||||
resp->addNext(loopp);
|
||||
// Clear the loop condition variable in the loop
|
||||
loopp->addStmtsp(setVar(condp, 0));
|
||||
// Build the body
|
||||
build(loopp);
|
||||
// Done
|
||||
return resp;
|
||||
};
|
||||
|
||||
EvalLoop makeEvalLoop(AstNetlist* netlistp, const string& tag, const string& name,
|
||||
AstVarScope* trigVscp, AstCFunc* trigDumpp,
|
||||
std::function<AstNodeStmt*()> computeTriggers,
|
||||
std::function<AstNodeStmt*()> makeBody) {
|
||||
UASSERT_OBJ(trigVscp->dtypep()->basicp()->isTriggerVec(), trigVscp, "Not TRIGGERVEC");
|
||||
AstTopScope* const topScopep = netlistp->topScopep();
|
||||
AstScope* const scopeTopp = topScopep->scopep();
|
||||
FileLine* const flp = scopeTopp->fileline();
|
||||
|
||||
AstVarScope* const counterp = scopeTopp->createTemp("__V" + tag + "IterCount", 32);
|
||||
counterp->varp()->noReset(true);
|
||||
|
||||
AstVarScope* const continuep = scopeTopp->createTemp("__V" + tag + "Continue", 1);
|
||||
continuep->varp()->noReset(true);
|
||||
|
||||
AstNodeStmt* nodep = nullptr;
|
||||
if (v3Global.opt.profExec()) nodep = profExecSectionPush(flp, "loop " + tag);
|
||||
nodep = AstNode::addNext(nodep, setVar(counterp, 0));
|
||||
nodep->addNext(buildLoop(netlistp, continuep, [&](AstWhile* loopp) {
|
||||
// Compute triggers
|
||||
loopp->addStmtsp(computeTriggers());
|
||||
// Invoke body if triggered
|
||||
{
|
||||
AstVarRef* const refp = new AstVarRef{flp, trigVscp, VAccess::READ};
|
||||
AstCMethodHard* const callp = new AstCMethodHard{flp, refp, "any"};
|
||||
callp->dtypeSetBit();
|
||||
AstIf* const ifp = new AstIf{flp, callp};
|
||||
loopp->addStmtsp(ifp);
|
||||
ifp->addThensp(setVar(continuep, 1));
|
||||
|
||||
// If we exceeded the iteration limit, die
|
||||
{
|
||||
const uint32_t limit = v3Global.opt.convergeLimit();
|
||||
AstVarRef* const counterRefp = new AstVarRef{flp, counterp, VAccess::READ};
|
||||
AstConst* const constp = new AstConst{flp, AstConst::DTyped{}, counterp->dtypep()};
|
||||
constp->num().setLong(limit);
|
||||
AstNodeExpr* const condp = new AstGt{flp, counterRefp, constp};
|
||||
AstIf* const failp = new AstIf{flp, condp};
|
||||
failp->branchPred(VBranchPred::BP_UNLIKELY);
|
||||
ifp->addThensp(failp);
|
||||
AstTextBlock* const blockp = new AstTextBlock{flp};
|
||||
failp->addThensp(blockp);
|
||||
FileLine* const locp = netlistp->topModulep()->fileline();
|
||||
const string& file = VIdProtect::protect(locp->filename());
|
||||
const string& line = cvtToStr(locp->lineno());
|
||||
const auto add = [&](const string& text) { blockp->addText(flp, text, true); };
|
||||
add("#ifdef VL_DEBUG\n");
|
||||
AstCCall* const newcallp = new AstCCall{flp, trigDumpp};
|
||||
newcallp->dtypeSetVoid();
|
||||
blockp->addNodesp(newcallp->makeStmt());
|
||||
add("#endif\n");
|
||||
add("VL_FATAL_MT(\"" + V3OutFormatter::quoteNameControls(file) + "\", " + line
|
||||
+ ", \"\", ");
|
||||
add("\"" + name + " region did not converge.\");\n");
|
||||
}
|
||||
|
||||
// Increment iteration count
|
||||
{
|
||||
AstVarRef* const wrefp = new AstVarRef{flp, counterp, VAccess::WRITE};
|
||||
AstVarRef* const rrefp = new AstVarRef{flp, counterp, VAccess::READ};
|
||||
AstConst* const onep = new AstConst{flp, AstConst::DTyped{}, counterp->dtypep()};
|
||||
onep->num().setLong(1);
|
||||
ifp->addThensp(new AstAssign{flp, wrefp, new AstAdd{flp, rrefp, onep}});
|
||||
}
|
||||
|
||||
// Add body
|
||||
ifp->addThensp(makeBody());
|
||||
}
|
||||
}));
|
||||
|
||||
if (v3Global.opt.profExec()) nodep->addNext(profExecSectionPop(flp));
|
||||
|
||||
return {counterp, continuep, nodep};
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// Order the combinational logic to create the settle loop
|
||||
|
||||
void createSettle(AstNetlist* netlistp, AstCFunc* const initFuncp, SenExprBuilder& senExprBulider,
|
||||
|
|
@ -752,24 +789,20 @@ void createSettle(AstNetlist* netlistp, AstCFunc* const initFuncp, SenExprBuilde
|
|||
splitCheck(stlFuncp);
|
||||
|
||||
// Create the eval loop
|
||||
const auto& loop = makeEvalLoop(
|
||||
netlistp, "stl", "Settle", trig.m_vscp, trig.m_dumpp,
|
||||
[&]() { // Trigger
|
||||
AstCCall* const callp = new AstCCall{stlFuncp->fileline(), trig.m_funcp};
|
||||
callp->dtypeSetVoid();
|
||||
return callp->makeStmt();
|
||||
},
|
||||
[&]() { // Body
|
||||
AstCCall* const callp = new AstCCall{stlFuncp->fileline(), stlFuncp};
|
||||
callp->dtypeSetVoid();
|
||||
return callp->makeStmt();
|
||||
});
|
||||
const EvalLoop stlLoop = createEvalLoop( //
|
||||
netlistp, "stl", "Settle", /* slow: */ true, trig.m_vscp, trig.m_dumpp,
|
||||
// Inner loop statements
|
||||
nullptr,
|
||||
// Prep statements: Compute the current 'stl' triggers
|
||||
callVoidFunc(trig.m_funcp),
|
||||
// Work statements: Invoke the 'stl' function
|
||||
callVoidFunc(stlFuncp));
|
||||
|
||||
// Add the first iteration trigger to the trigger computation function
|
||||
trig.addFirstIterationTriggerAssignment(loop.counterp, firstIterationTrigger);
|
||||
trig.addFirstIterationTriggerAssignment(stlLoop.firstIterp, firstIterationTrigger);
|
||||
|
||||
// Add the eval loop to the top function
|
||||
funcp->addStmtsp(loop.stmtsp);
|
||||
funcp->addStmtsp(stlLoop.stmtsp);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
|
|
@ -841,24 +874,19 @@ AstNode* createInputCombLoop(AstNetlist* netlistp, AstCFunc* const initFuncp,
|
|||
splitCheck(icoFuncp);
|
||||
|
||||
// Create the eval loop
|
||||
const auto& loop = makeEvalLoop(
|
||||
netlistp, "ico", "Input combinational", trig.m_vscp, trig.m_dumpp,
|
||||
[&]() { // Trigger
|
||||
AstCCall* const callp = new AstCCall{icoFuncp->fileline(), trig.m_funcp};
|
||||
callp->dtypeSetVoid();
|
||||
return callp->makeStmt();
|
||||
},
|
||||
[&]() { // Body
|
||||
AstCCall* const callp = new AstCCall{icoFuncp->fileline(), icoFuncp};
|
||||
callp->dtypeSetVoid();
|
||||
return callp->makeStmt();
|
||||
});
|
||||
const EvalLoop icoLoop = createEvalLoop( //
|
||||
netlistp, "ico", "Input combinational", /* slow: */ false, trig.m_vscp, trig.m_dumpp,
|
||||
// Inner loop statements
|
||||
nullptr,
|
||||
// Prep statements: Compute the current 'ico' triggers
|
||||
callVoidFunc(trig.m_funcp),
|
||||
// Work statements: Invoke the 'ico' function
|
||||
callVoidFunc(icoFuncp));
|
||||
|
||||
// Add the first iteration trigger to the trigger computation function
|
||||
trig.addFirstIterationTriggerAssignment(loop.counterp, firstIterationTrigger);
|
||||
trig.addFirstIterationTriggerAssignment(icoLoop.firstIterp, firstIterationTrigger);
|
||||
|
||||
// Return the eval loop itself
|
||||
return loop.stmtsp;
|
||||
return icoLoop.stmtsp;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
|
|
@ -906,146 +934,139 @@ void createEval(AstNetlist* netlistp, //
|
|||
) {
|
||||
FileLine* const flp = netlistp->fileline();
|
||||
|
||||
// Create the active eval loop
|
||||
const EvalLoop actLoop = createEvalLoop( //
|
||||
netlistp, "act", "Active", /* slow: */ false, actKit.m_vscp, actKit.m_dumpp,
|
||||
// Inner loop statements
|
||||
nullptr,
|
||||
// Prep statements
|
||||
[&]() {
|
||||
// Compute the current 'act' triggers
|
||||
AstNodeStmt* const stmtsp = callVoidFunc(actKit.m_triggerComputep);
|
||||
// Commit trigger awaits from the previous iteration
|
||||
if (AstCCall* const commitp = timingKit.createCommit(netlistp)) {
|
||||
stmtsp->addNext(commitp->makeStmt());
|
||||
}
|
||||
//
|
||||
return stmtsp;
|
||||
}(),
|
||||
// Work statements
|
||||
[&]() {
|
||||
// Compute the 'pre' triggers
|
||||
AstNodeStmt* const workp
|
||||
= createTriggerAndNotCall(flp, preTrigsp, actKit.m_vscp, nbaKit.m_vscp);
|
||||
// Latch the 'act' triggers under the 'nba' triggers
|
||||
workp->addNext(createTriggerSetCall(flp, nbaKit.m_vscp, actKit.m_vscp));
|
||||
// Resume triggered timing schedulers
|
||||
if (AstCCall* const resumep = timingKit.createResume(netlistp)) {
|
||||
workp->addNext(resumep->makeStmt());
|
||||
}
|
||||
// Invoke the 'act' function
|
||||
workp->addNext(callVoidFunc(actKit.m_funcp));
|
||||
//
|
||||
return workp;
|
||||
}());
|
||||
|
||||
// Create the NBA eval loop, which is the default top level loop.
|
||||
EvalLoop topLoop = createEvalLoop( //
|
||||
netlistp, "nba", "NBA", /* slow: */ false, nbaKit.m_vscp, nbaKit.m_dumpp,
|
||||
// Inner loop statements
|
||||
actLoop.stmtsp,
|
||||
// Prep statements
|
||||
nullptr,
|
||||
// Work statements
|
||||
[&]() {
|
||||
AstNodeStmt* workp = nullptr;
|
||||
// Latch the 'nba' trigger flags under the following region's trigger flags
|
||||
if (!obsKit.empty()) {
|
||||
workp = createTriggerSetCall(flp, obsKit.m_vscp, nbaKit.m_vscp);
|
||||
} else if (!reactKit.empty()) {
|
||||
workp = createTriggerSetCall(flp, reactKit.m_vscp, nbaKit.m_vscp);
|
||||
}
|
||||
// Invoke the 'nba' function
|
||||
workp = AstNode::addNext(workp, callVoidFunc(nbaKit.m_funcp));
|
||||
// Clear the 'nba' triggers
|
||||
workp->addNext(createTriggerClearCall(flp, nbaKit.m_vscp));
|
||||
//
|
||||
return workp;
|
||||
}());
|
||||
|
||||
// If the NBA event exists, trigger it in 'nba'
|
||||
if (AstVarScope* const nbaEventp = netlistp->nbaEventp()) {
|
||||
AstVarScope* const nbaEventTriggerp = netlistp->nbaEventTriggerp();
|
||||
UASSERT(nbaEventTriggerp, "NBA event trigger var should exist");
|
||||
netlistp->nbaEventp(nullptr);
|
||||
netlistp->nbaEventTriggerp(nullptr);
|
||||
|
||||
AstIf* const ifp = new AstIf{flp, new AstVarRef{flp, nbaEventTriggerp, VAccess::READ}};
|
||||
ifp->addThensp(setVar(topLoop.continuep, 1));
|
||||
ifp->addThensp(setVar(nbaEventTriggerp, 0));
|
||||
AstCMethodHard* const firep
|
||||
= new AstCMethodHard{flp, new AstVarRef{flp, nbaEventp, VAccess::WRITE}, "fire"};
|
||||
firep->dtypeSetVoid();
|
||||
ifp->addThensp(firep->makeStmt());
|
||||
// actLoop.stmtsp happens to be the head of the loop body inside the NBA loop...
|
||||
actLoop.stmtsp->addNext(ifp);
|
||||
}
|
||||
|
||||
if (!obsKit.empty()) {
|
||||
// Create the Observed eval loop, which becomes the top level loop.
|
||||
topLoop = createEvalLoop( //
|
||||
netlistp, "obs", "Observed", /* slow: */ false, obsKit.m_vscp, obsKit.m_dumpp,
|
||||
// Inner loop statements
|
||||
topLoop.stmtsp,
|
||||
// Prep statements
|
||||
nullptr,
|
||||
// Work statements
|
||||
[&]() {
|
||||
AstNodeStmt* workp = nullptr;
|
||||
// Latch the Observed trigger flags under the Reactive trigger flags
|
||||
if (!reactKit.empty()) {
|
||||
workp = createTriggerSetCall(flp, reactKit.m_vscp, obsKit.m_vscp);
|
||||
}
|
||||
// Invoke the 'obs' function
|
||||
workp = AstNode::addNext(workp, callVoidFunc(obsKit.m_funcp));
|
||||
// Clear the 'obs' triggers
|
||||
workp->addNext(createTriggerClearCall(flp, obsKit.m_vscp));
|
||||
//
|
||||
return workp;
|
||||
}());
|
||||
}
|
||||
|
||||
if (!reactKit.empty()) {
|
||||
// Create the Reactive eval loop, which becomes the top level loop.
|
||||
topLoop = createEvalLoop( //
|
||||
netlistp, "react", "Reactive", /* slow: */ false, reactKit.m_vscp, reactKit.m_dumpp,
|
||||
// Inner loop statements
|
||||
topLoop.stmtsp,
|
||||
// Prep statements
|
||||
nullptr,
|
||||
// Work statements
|
||||
[&]() {
|
||||
// Invoke the 'react' function
|
||||
AstNodeStmt* const workp = callVoidFunc(reactKit.m_funcp);
|
||||
// Clear the 'react' triggers
|
||||
workp->addNext(createTriggerClearCall(flp, reactKit.m_vscp));
|
||||
return workp;
|
||||
}());
|
||||
}
|
||||
|
||||
// Now that we have build the loops, create the main 'eval' function
|
||||
AstCFunc* const funcp = makeTopFunction(netlistp, "_eval", false);
|
||||
netlistp->evalp(funcp);
|
||||
|
||||
if (v3Global.opt.profExec()) funcp->addStmtsp(profExecSectionPush(flp, "eval"));
|
||||
|
||||
// Start with the ico loop, if any
|
||||
if (icoLoop) funcp->addStmtsp(icoLoop);
|
||||
|
||||
// Create the active eval loop
|
||||
const auto& activeEvalLoop = makeEvalLoop(
|
||||
netlistp, "act", "Active", actKit.m_vscp, actKit.m_dumpp,
|
||||
[&]() { // Trigger
|
||||
AstNodeStmt* resultp = nullptr;
|
||||
|
||||
// Compute the current triggers
|
||||
{
|
||||
AstCCall* const trigsp = new AstCCall{flp, actKit.m_triggerComputep};
|
||||
trigsp->dtypeSetVoid();
|
||||
resultp = AstNode::addNext(resultp, trigsp->makeStmt());
|
||||
}
|
||||
|
||||
// Commit trigger awaits from the previous iteration
|
||||
if (AstCCall* const commitp = timingKit.createCommit(netlistp)) {
|
||||
resultp = AstNode::addNext(resultp, commitp->makeStmt());
|
||||
}
|
||||
|
||||
return resultp;
|
||||
},
|
||||
[&]() { // Body
|
||||
// Compute the pre triggers
|
||||
AstNodeStmt* resultp
|
||||
= createTriggerAndNotCall(flp, preTrigsp, actKit.m_vscp, nbaKit.m_vscp);
|
||||
// Latch the active trigger flags under the NBA trigger flags
|
||||
resultp = AstNode::addNext(resultp,
|
||||
createTriggerSetCall(flp, nbaKit.m_vscp, actKit.m_vscp));
|
||||
// Resume triggered timing schedulers
|
||||
if (AstCCall* const resumep = timingKit.createResume(netlistp)) {
|
||||
resultp = AstNode::addNext(resultp, resumep->makeStmt());
|
||||
}
|
||||
// Invoke body function
|
||||
{
|
||||
AstCCall* const callp = new AstCCall{flp, actKit.m_funcp};
|
||||
callp->dtypeSetVoid();
|
||||
resultp = AstNode::addNext(resultp, callp->makeStmt());
|
||||
}
|
||||
|
||||
return resultp;
|
||||
});
|
||||
|
||||
// Create the NBA eval loop. This uses the Active eval loop in the trigger section.
|
||||
const auto& nbaEvalLoop = makeEvalLoop(
|
||||
netlistp, "nba", "NBA", nbaKit.m_vscp, nbaKit.m_dumpp,
|
||||
[&]() { // Trigger
|
||||
// Reset NBA triggers
|
||||
AstNodeStmt* resultp = createTriggerClearCall(flp, nbaKit.m_vscp);
|
||||
// Run the Active eval loop
|
||||
resultp = AstNode::addNext(resultp, activeEvalLoop.stmtsp);
|
||||
return resultp;
|
||||
},
|
||||
[&]() { // Body
|
||||
AstCCall* const callp = new AstCCall{flp, nbaKit.m_funcp};
|
||||
callp->dtypeSetVoid();
|
||||
AstNodeStmt* resultp = callp->makeStmt();
|
||||
// Latch the NBA trigger flags under the following region's trigger flags
|
||||
AstVarScope* const nextVscp = obsKit.m_vscp ? obsKit.m_vscp : reactKit.m_vscp;
|
||||
if (nextVscp) {
|
||||
resultp = AstNode::addNext(resultp,
|
||||
createTriggerSetCall(flp, nextVscp, nbaKit.m_vscp));
|
||||
}
|
||||
return resultp;
|
||||
});
|
||||
|
||||
// If the NBA event exists, trigger it in 'nba'
|
||||
if (netlistp->nbaEventp()) {
|
||||
UASSERT(netlistp->nbaEventTriggerp(), "NBA event trigger var should exist");
|
||||
AstIf* const ifp
|
||||
= new AstIf{flp, new AstVarRef{flp, netlistp->nbaEventTriggerp(), VAccess::READ}};
|
||||
ifp->addThensp(setVar(nbaEvalLoop.continuep, 1));
|
||||
ifp->addThensp(setVar(netlistp->nbaEventTriggerp(), 0));
|
||||
AstCMethodHard* const firep = new AstCMethodHard{
|
||||
flp, new AstVarRef{flp, netlistp->nbaEventp(), VAccess::WRITE}, "fire"};
|
||||
firep->dtypeSetVoid();
|
||||
ifp->addThensp(firep->makeStmt());
|
||||
activeEvalLoop.stmtsp->addNext(ifp);
|
||||
netlistp->nbaEventp(nullptr);
|
||||
netlistp->nbaEventTriggerp(nullptr);
|
||||
}
|
||||
|
||||
AstNodeStmt* topEvalLoopp = nbaEvalLoop.stmtsp;
|
||||
|
||||
if (obsKit.m_funcp) {
|
||||
// Create the Observed eval loop. This uses the NBA eval loop in the trigger section.
|
||||
topEvalLoopp
|
||||
= makeEvalLoop(
|
||||
netlistp, "obs", "Observed", obsKit.m_vscp, obsKit.m_dumpp,
|
||||
[&]() { // Trigger
|
||||
// Reset Observed triggers
|
||||
AstNodeStmt* resultp = createTriggerClearCall(flp, obsKit.m_vscp);
|
||||
// Run the NBA eval loop
|
||||
resultp = AstNode::addNext(resultp, topEvalLoopp);
|
||||
return resultp;
|
||||
},
|
||||
[&]() { // Body
|
||||
AstCCall* const callp = new AstCCall{flp, obsKit.m_funcp};
|
||||
callp->dtypeSetVoid();
|
||||
AstNodeStmt* resultp = callp->makeStmt();
|
||||
// Latch the Observed trigger flags under the Reactive trigger flags
|
||||
if (reactKit.m_vscp) {
|
||||
resultp = AstNode::addNext(
|
||||
resultp, createTriggerSetCall(flp, reactKit.m_vscp, obsKit.m_vscp));
|
||||
}
|
||||
return resultp;
|
||||
})
|
||||
.stmtsp;
|
||||
}
|
||||
|
||||
if (reactKit.m_funcp) {
|
||||
// Create the Reactive eval loop. This uses the previous eval loop in the trigger section.
|
||||
topEvalLoopp = makeEvalLoop(
|
||||
netlistp, "react", "Reactive", reactKit.m_vscp, reactKit.m_dumpp,
|
||||
[&]() { // Trigger
|
||||
// Reset Reactive triggers
|
||||
AstNodeStmt* resultp = createTriggerClearCall(flp, reactKit.m_vscp);
|
||||
// Run the previous eval loop
|
||||
resultp = AstNode::addNext(resultp, topEvalLoopp);
|
||||
return resultp;
|
||||
},
|
||||
[&]() { // Body
|
||||
auto* const callp = new AstCCall{flp, reactKit.m_funcp};
|
||||
callp->dtypeSetVoid();
|
||||
return callp->makeStmt();
|
||||
})
|
||||
.stmtsp;
|
||||
}
|
||||
funcp->addStmtsp(topEvalLoopp);
|
||||
// Execute the top level eval loop
|
||||
funcp->addStmtsp(topLoop.stmtsp);
|
||||
|
||||
// Add the Postponed eval call
|
||||
if (postponedFuncp) {
|
||||
AstCCall* const callp = new AstCCall{flp, postponedFuncp};
|
||||
callp->dtypeSetVoid();
|
||||
funcp->addStmtsp(callp->makeStmt());
|
||||
}
|
||||
if (postponedFuncp) funcp->addStmtsp(callVoidFunc(postponedFuncp));
|
||||
|
||||
if (v3Global.opt.profExec()) funcp->addStmtsp(profExecSectionPop(flp));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
@ -1061,7 +1082,7 @@ void schedule(AstNetlist* netlistp) {
|
|||
};
|
||||
|
||||
// Step 0. Prepare timing-related logic and external domains
|
||||
auto timingKit = prepareTiming(netlistp);
|
||||
TimingKit timingKit = prepareTiming(netlistp);
|
||||
|
||||
// Step 1. Gather and classify all logic in the design
|
||||
LogicClasses logicClasses = gatherLogicClasses(netlistp);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
<map from="PStVCQ" to="__PVT__secret_r"/>
|
||||
<map from="PSfqS0" to="__PVT__t__DOT__secret_inst"/>
|
||||
<map from="PSS0mv" to="__VactContinue"/>
|
||||
<map from="PSb9ZF" to="__VactExecute"/>
|
||||
<map from="PSF5NB" to="__VactIterCount"/>
|
||||
<map from="PSScAO" to="__VactTriggered"/>
|
||||
<map from="PSx9Nt" to="__Vconfigure"/>
|
||||
|
|
@ -23,6 +24,7 @@
|
|||
<map from="PSIv2l" to="__Vdpiimwrap_dpii_a_task_TOP__t__DOT__secret_inst"/>
|
||||
<map from="PS76My" to="__Vfunc_dpii_a_func__0__Vfuncout"/>
|
||||
<map from="PSPVnC" to="__VnbaContinue"/>
|
||||
<map from="PSo9XV" to="__VnbaExecute"/>
|
||||
<map from="PSEtOH" to="__VnbaIterCount"/>
|
||||
<map from="PSmzsT" to="__VnbaTriggered"/>
|
||||
<map from="PSHzgK" to="__VpreTriggered"/>
|
||||
|
|
@ -38,6 +40,8 @@
|
|||
<map from="PSEZzj" to="_eval_final"/>
|
||||
<map from="PSABAY" to="_eval_initial"/>
|
||||
<map from="PSjoVa" to="_eval_nba"/>
|
||||
<map from="PS0BBP" to="_eval_phase__act"/>
|
||||
<map from="PSfNDT" to="_eval_phase__nba"/>
|
||||
<map from="PSBUJ6" to="_eval_settle"/>
|
||||
<map from="PS0mmd" to="_eval_static"/>
|
||||
<map from="PS9gCw" to="_eval_triggers__act"/>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -79,6 +79,7 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___eval_settle
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:97
|
||||
|
|
@ -89,11 +90,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#} Committing processes waiting for @([event] t.ec.e):
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:111
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:97
|
||||
|
|
@ -118,6 +121,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:97
|
||||
|
|
@ -132,6 +136,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:97
|
||||
-V{t#,#} Suspending process waiting for @(posedge t::ClkClass.clk) at t/t_timing_class.v:98
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:98
|
||||
|
|
@ -140,7 +145,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:98
|
||||
|
|
@ -149,11 +156,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:98
|
||||
|
|
@ -183,6 +192,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:98
|
||||
|
|
@ -191,7 +201,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:98
|
||||
|
|
@ -200,11 +212,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:98
|
||||
|
|
@ -228,6 +242,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:98
|
||||
|
|
@ -242,6 +257,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:98
|
||||
-V{t#,#} Suspending process waiting for @(posedge t::ClkClass.clk) at t/t_timing_class.v:99
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -250,7 +266,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -259,11 +277,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -293,6 +313,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -309,6 +330,7 @@
|
|||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aEventClass::__VnoInFunc_sleep
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -325,9 +347,11 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2_t___nba_sequent__TOP__t__0
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aEventClass::__VnoInFunc_inc_trig_count
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -344,11 +368,13 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -378,6 +404,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:99
|
||||
|
|
@ -400,6 +427,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:99
|
||||
-V{t#,#} Suspending process waiting for @(posedge t::ClkClass.clk) at t/t_timing_class.v:100
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:37
|
||||
|
|
@ -416,7 +444,9 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:100
|
||||
|
|
@ -433,11 +463,13 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:100
|
||||
|
|
@ -472,6 +504,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:257
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aForkDelayClass::__VnoInFunc_do_delay
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:100
|
||||
|
|
@ -488,7 +521,9 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:100
|
||||
|
|
@ -505,11 +540,13 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:100
|
||||
|
|
@ -539,6 +576,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:100
|
||||
|
|
@ -561,6 +599,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:100
|
||||
-V{t#,#} Suspending process waiting for @(posedge t::ClkClass.clk) at t/t_timing_class.v:101
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:37
|
||||
|
|
@ -577,7 +616,9 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
|
|
@ -594,11 +635,13 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:37
|
||||
-V{t#,#} Suspending process waiting for @([event] t::EventClass.e) at t/t_timing_class.v:37
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
|
|
@ -629,6 +672,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
|
|
@ -656,6 +700,7 @@
|
|||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aWaitClass::__VnoInFunc_await
|
||||
-V{t#,#} Suspending process waiting for @([true] ((32'sh4 == t::WaitClass.a) & (32'sh10 < t::WaitClass.b))) at t/t_timing_class.v:58
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
|
|
@ -668,9 +713,11 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2_t___nba_sequent__TOP__t__0
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aEventClass::__VnoInFunc_inc_trig_count
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
|
|
@ -683,11 +730,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
|
|
@ -712,6 +761,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
|
|
@ -729,6 +779,7 @@
|
|||
-V{t#,#} - Process waiting at t/t_timing_class.v:101
|
||||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:101
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -737,7 +788,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -746,11 +799,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -772,6 +827,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -780,7 +836,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -789,11 +847,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -814,6 +874,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -822,7 +883,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -831,11 +894,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -857,6 +922,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:58
|
||||
|
|
@ -875,6 +941,7 @@
|
|||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aLocalWaitClass::__VnoInFunc_await____Vfork_1__1
|
||||
-V{t#,#} Awaiting join of fork at: t/t_timing_class.v:74
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:75
|
||||
|
|
@ -883,7 +950,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:75
|
||||
|
|
@ -892,11 +961,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:75
|
||||
|
|
@ -917,6 +988,7 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:75
|
||||
|
|
@ -925,7 +997,9 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:75
|
||||
|
|
@ -934,11 +1008,13 @@
|
|||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:75
|
||||
|
|
@ -972,6 +1048,7 @@
|
|||
-V{t#,#}+ Vt_timing_debug2_t___eval_initial__TOP__t__6____Vfork_1__0
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aAssignDelayClass::__VnoInFunc_do_assign
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} Suspended processes waiting for dynamic trigger evaluation:
|
||||
-V{t#,#} - Process waiting at t/t_timing_class.v:75
|
||||
|
|
@ -987,17 +1064,21 @@
|
|||
-V{t#,#} Process forked at t/t_timing_class.v:75 finished
|
||||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:74
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
|
|
@ -1005,6 +1086,7 @@
|
|||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aForkClass::~
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
|
|
@ -1022,22 +1104,27 @@
|
|||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:224
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
|
|
@ -1057,22 +1144,27 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
|
|
@ -1089,22 +1181,27 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
|
|
@ -1121,23 +1218,28 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aAssignDelayClass::~
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
|
|
@ -1152,22 +1254,27 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_timing_debug2::eval_step
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
|
|
@ -1184,17 +1291,21 @@
|
|||
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
|
||||
-V{t#,#} No suspended processes waiting for dynamic trigger evaluation
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_final
|
||||
-V{t#,#}+ Vt_timing_debug2_t__03a__03aDelay40::~
|
||||
|
|
|
|||
|
|
@ -15,26 +15,33 @@ internalsDump:
|
|||
-V{t#,#}+ Vt_verilated_debug___024root___eval_settle
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_triggers__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+++++TOP Evaluate Vt_verilated_debug::eval_step
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_debug_assertions
|
||||
-V{t#,#}+ Eval
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_triggers__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___dump_triggers__act
|
||||
-V{t#,#} 'act' region trigger index 0 is active: @(posedge clk)
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_triggers__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_nba
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___nba_sequent__TOP__0
|
||||
*-* All Finished *-*
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_phase__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_triggers__act
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___dump_triggers__act
|
||||
-V{t#,#} No triggers active
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_phase__nba
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
-V{t#,#}+ Vt_verilated_debug___024root___eval_final
|
||||
|
|
|
|||
|
|
@ -625,8 +625,8 @@
|
|||
<textblock loc="d,10,8,10,9">
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<stmtexpr loc="d,10,8,10,9">
|
||||
<ccall loc="d,10,8,10,9" dtype_id="7" func="_dump_triggers__act"/>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_dump_triggers__act"/>
|
||||
</stmtexpr>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
|
|
@ -1527,8 +1527,69 @@
|
|||
</begin>
|
||||
</if>
|
||||
</cfunc>
|
||||
<cfunc loc="a,0,0,0,0" name="_eval">
|
||||
<cfunc loc="a,0,0,0,0" name="_eval_phase__act">
|
||||
<var loc="d,10,8,10,9" name="__VpreTriggered" dtype_id="6" vartype="VlTriggerVec" origName="__VpreTriggered"/>
|
||||
<var loc="d,10,8,10,9" name="__VactExecute" dtype_id="3" vartype="bit" origName="__VactExecute"/>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_eval_triggers__act"/>
|
||||
</stmtexpr>
|
||||
<assign loc="a,0,0,0,0" dtype_id="9">
|
||||
<cmethodhard loc="a,0,0,0,0" name="any" dtype_id="9">
|
||||
<varref loc="a,0,0,0,0" name="__VactTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
<varref loc="a,0,0,0,0" name="__VactExecute" dtype_id="9"/>
|
||||
</assign>
|
||||
<if loc="a,0,0,0,0">
|
||||
<varref loc="a,0,0,0,0" name="__VactExecute" dtype_id="9"/>
|
||||
<begin>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<cmethodhard loc="a,0,0,0,0" name="andNot" dtype_id="7">
|
||||
<varref loc="a,0,0,0,0" name="__VpreTriggered" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VactTriggered" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VnbaTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
</stmtexpr>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<cmethodhard loc="a,0,0,0,0" name="thisOr" dtype_id="7">
|
||||
<varref loc="a,0,0,0,0" name="__VnbaTriggered" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VactTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
</stmtexpr>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_eval_act"/>
|
||||
</stmtexpr>
|
||||
</begin>
|
||||
</if>
|
||||
<creturn loc="a,0,0,0,0">
|
||||
<varref loc="a,0,0,0,0" name="__VactExecute" dtype_id="9"/>
|
||||
</creturn>
|
||||
</cfunc>
|
||||
<cfunc loc="a,0,0,0,0" name="_eval_phase__nba">
|
||||
<var loc="d,10,8,10,9" name="__VnbaExecute" dtype_id="3" vartype="bit" origName="__VnbaExecute"/>
|
||||
<assign loc="a,0,0,0,0" dtype_id="9">
|
||||
<cmethodhard loc="a,0,0,0,0" name="any" dtype_id="9">
|
||||
<varref loc="a,0,0,0,0" name="__VnbaTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
<varref loc="a,0,0,0,0" name="__VnbaExecute" dtype_id="9"/>
|
||||
</assign>
|
||||
<if loc="a,0,0,0,0">
|
||||
<varref loc="a,0,0,0,0" name="__VnbaExecute" dtype_id="9"/>
|
||||
<begin>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_eval_nba"/>
|
||||
</stmtexpr>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<cmethodhard loc="a,0,0,0,0" name="clear" dtype_id="7">
|
||||
<varref loc="a,0,0,0,0" name="__VnbaTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
</stmtexpr>
|
||||
</begin>
|
||||
</if>
|
||||
<creturn loc="a,0,0,0,0">
|
||||
<varref loc="a,0,0,0,0" name="__VnbaExecute" dtype_id="9"/>
|
||||
</creturn>
|
||||
</cfunc>
|
||||
<cfunc loc="a,0,0,0,0" name="_eval">
|
||||
<var loc="d,10,8,10,9" name="__VnbaIterCount" dtype_id="5" vartype="bit" origName="__VnbaIterCount"/>
|
||||
<var loc="d,10,8,10,9" name="__VnbaContinue" dtype_id="3" vartype="bit" origName="__VnbaContinue"/>
|
||||
<assign loc="d,10,8,10,9" dtype_id="5">
|
||||
|
|
@ -1539,22 +1600,43 @@
|
|||
<const loc="d,10,8,10,9" name="1'h1" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<while loc="d,10,8,10,9">
|
||||
<while loc="a,0,0,0,0">
|
||||
<begin>
|
||||
</begin>
|
||||
<begin>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaContinue" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VnbaContinue" dtype_id="9"/>
|
||||
</begin>
|
||||
<begin>
|
||||
<if loc="a,0,0,0,0">
|
||||
<lt loc="a,0,0,0,0" dtype_id="9">
|
||||
<const loc="a,0,0,0,0" name="32'h64" dtype_id="14"/>
|
||||
<varref loc="a,0,0,0,0" name="__VnbaIterCount" dtype_id="5"/>
|
||||
</lt>
|
||||
<begin>
|
||||
<textblock loc="a,0,0,0,0">
|
||||
<text loc="a,0,0,0,0"/>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_dump_triggers__nba"/>
|
||||
</stmtexpr>
|
||||
<text loc="a,0,0,0,0"/>
|
||||
<text loc="a,0,0,0,0"/>
|
||||
<text loc="a,0,0,0,0"/>
|
||||
</textblock>
|
||||
</begin>
|
||||
</if>
|
||||
<assign loc="d,10,8,10,9" dtype_id="5">
|
||||
<add loc="d,10,8,10,9" dtype_id="5">
|
||||
<ccast loc="d,10,8,10,9" dtype_id="14">
|
||||
<const loc="d,10,8,10,9" name="32'h1" dtype_id="14"/>
|
||||
</ccast>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaIterCount" dtype_id="5"/>
|
||||
</add>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaIterCount" dtype_id="5"/>
|
||||
</assign>
|
||||
<assign loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="1'h0" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<cmethodhard loc="a,0,0,0,0" name="clear" dtype_id="7">
|
||||
<varref loc="a,0,0,0,0" name="__VnbaTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
</stmtexpr>
|
||||
<assign loc="d,10,8,10,9" dtype_id="5">
|
||||
<const loc="d,10,8,10,9" name="32'h0" dtype_id="14"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactIterCount" dtype_id="5"/>
|
||||
|
|
@ -1563,98 +1645,27 @@
|
|||
<const loc="d,10,8,10,9" name="1'h1" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<while loc="d,10,8,10,9">
|
||||
<while loc="a,0,0,0,0">
|
||||
<begin>
|
||||
</begin>
|
||||
<begin>
|
||||
<varref loc="d,10,8,10,9" name="__VactContinue" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VactContinue" dtype_id="9"/>
|
||||
</begin>
|
||||
<begin>
|
||||
<assign loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="1'h0" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_eval_triggers__act"/>
|
||||
</stmtexpr>
|
||||
<if loc="d,10,8,10,9">
|
||||
<cmethodhard loc="d,10,8,10,9" name="any" dtype_id="9">
|
||||
<varref loc="d,10,8,10,9" name="__VactTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
<begin>
|
||||
<assign loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="1'h1" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<if loc="d,10,8,10,9">
|
||||
<lt loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="32'h64" dtype_id="14"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactIterCount" dtype_id="5"/>
|
||||
</lt>
|
||||
<begin>
|
||||
<textblock loc="d,10,8,10,9">
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<stmtexpr loc="d,10,8,10,9">
|
||||
<ccall loc="d,10,8,10,9" dtype_id="7" func="_dump_triggers__act"/>
|
||||
</stmtexpr>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
</textblock>
|
||||
</begin>
|
||||
</if>
|
||||
<assign loc="d,10,8,10,9" dtype_id="5">
|
||||
<add loc="d,10,8,10,9" dtype_id="5">
|
||||
<ccast loc="d,10,8,10,9" dtype_id="14">
|
||||
<const loc="d,10,8,10,9" name="32'h1" dtype_id="14"/>
|
||||
</ccast>
|
||||
<varref loc="d,10,8,10,9" name="__VactIterCount" dtype_id="5"/>
|
||||
</add>
|
||||
<varref loc="d,10,8,10,9" name="__VactIterCount" dtype_id="5"/>
|
||||
</assign>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<cmethodhard loc="a,0,0,0,0" name="andNot" dtype_id="7">
|
||||
<varref loc="a,0,0,0,0" name="__VpreTriggered" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VactTriggered" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VnbaTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
</stmtexpr>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<cmethodhard loc="a,0,0,0,0" name="thisOr" dtype_id="7">
|
||||
<varref loc="a,0,0,0,0" name="__VnbaTriggered" dtype_id="9"/>
|
||||
<varref loc="a,0,0,0,0" name="__VactTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
</stmtexpr>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_eval_act"/>
|
||||
</stmtexpr>
|
||||
</begin>
|
||||
</if>
|
||||
</begin>
|
||||
</while>
|
||||
<if loc="d,10,8,10,9">
|
||||
<cmethodhard loc="d,10,8,10,9" name="any" dtype_id="9">
|
||||
<varref loc="d,10,8,10,9" name="__VnbaTriggered" dtype_id="9"/>
|
||||
</cmethodhard>
|
||||
<begin>
|
||||
<assign loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="1'h1" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<if loc="d,10,8,10,9">
|
||||
<lt loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="32'h64" dtype_id="14"/>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaIterCount" dtype_id="5"/>
|
||||
<if loc="a,0,0,0,0">
|
||||
<lt loc="a,0,0,0,0" dtype_id="9">
|
||||
<const loc="a,0,0,0,0" name="32'h64" dtype_id="14"/>
|
||||
<varref loc="a,0,0,0,0" name="__VactIterCount" dtype_id="5"/>
|
||||
</lt>
|
||||
<begin>
|
||||
<textblock loc="d,10,8,10,9">
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<stmtexpr loc="d,10,8,10,9">
|
||||
<ccall loc="d,10,8,10,9" dtype_id="7" func="_dump_triggers__nba"/>
|
||||
<textblock loc="a,0,0,0,0">
|
||||
<text loc="a,0,0,0,0"/>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_dump_triggers__act"/>
|
||||
</stmtexpr>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<text loc="d,10,8,10,9"/>
|
||||
<text loc="a,0,0,0,0"/>
|
||||
<text loc="a,0,0,0,0"/>
|
||||
<text loc="a,0,0,0,0"/>
|
||||
</textblock>
|
||||
</begin>
|
||||
</if>
|
||||
|
|
@ -1663,13 +1674,32 @@
|
|||
<ccast loc="d,10,8,10,9" dtype_id="14">
|
||||
<const loc="d,10,8,10,9" name="32'h1" dtype_id="14"/>
|
||||
</ccast>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaIterCount" dtype_id="5"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactIterCount" dtype_id="5"/>
|
||||
</add>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaIterCount" dtype_id="5"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactIterCount" dtype_id="5"/>
|
||||
</assign>
|
||||
<assign loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="1'h0" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<if loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="9" func="_eval_phase__act"/>
|
||||
<begin>
|
||||
<assign loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="1'h1" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VactContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
</begin>
|
||||
</if>
|
||||
</begin>
|
||||
</while>
|
||||
<if loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="9" func="_eval_phase__nba"/>
|
||||
<begin>
|
||||
<assign loc="d,10,8,10,9" dtype_id="9">
|
||||
<const loc="d,10,8,10,9" name="1'h1" dtype_id="9"/>
|
||||
<varref loc="d,10,8,10,9" name="__VnbaContinue" dtype_id="9"/>
|
||||
</assign>
|
||||
<stmtexpr loc="a,0,0,0,0">
|
||||
<ccall loc="a,0,0,0,0" dtype_id="7" func="_eval_nba"/>
|
||||
</stmtexpr>
|
||||
</begin>
|
||||
</if>
|
||||
</begin>
|
||||
|
|
@ -1812,8 +1842,8 @@
|
|||
<basicdtype loc="d,10,8,10,9" id="6" name="VlTriggerVec"/>
|
||||
<basicdtype loc="d,10,8,10,9" id="18" name="QData" left="63" right="0"/>
|
||||
<basicdtype loc="d,10,8,10,9" id="17" name="logic" left="63" right="0"/>
|
||||
<basicdtype loc="d,10,8,10,9" id="5" name="bit" left="31" right="0"/>
|
||||
<basicdtype loc="d,10,8,10,9" id="3" name="bit"/>
|
||||
<basicdtype loc="d,10,8,10,9" id="5" name="bit" left="31" right="0"/>
|
||||
<basicdtype loc="d,60,22,60,25" id="9" name="logic" left="31" right="0"/>
|
||||
<basicdtype loc="d,31,11,31,14" id="11" name="logic" left="31" right="0"/>
|
||||
<basicdtype loc="d,37,17,37,21" id="13" name="logic" left="31" right="0"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue