This patch adds IEEE-1800 compliant scheduling support for the Inactive scheduling region used for #0 delays. Implementing this requires that **all** IEEE-1800 active region events are placed in the internal 'act' section. This has simulation performance implications. It prevents some optimizations (e.g. V3LifePost), which reduces single threaded performance. It also reduces the available work and parallelism in the internal 'nba' section, which reduced the effectiveness of multi-threading severely. Performance impact on RTLMeter when using scheduling adjusted to support proper #0 delays is ~10-20% slowdown in single-threaded mode, and ~100% (2x slower) with --threads 4. To avoid paying this performance penalty unconditionally, the scheduling is only adjusted if either: 1. The input contains a statically known #0 delay 2. The input contains a variable #x delay unknown at compile time If no #0 is present, but #x variable delays are, a ZERODLY warning is issued advising the use of '--no-sched-zero-delay' which is a promise by the user that none of the variable delays will evaluate to a zero delay at run-time. This warning is turned off if '--sched-zero-delay' is explicitly given. This is similar to the '--timing' option. If '--no-sched-zero-delay' was used at compile time, then executing a zero delay will fail at runtime. A ZERODLY warning is also issued if a static #0 if found, but the user specified '--no-sched-zero-delay'. In this case the scheduling is not adjusted to support #0, so executing it will fail at runtime. Presumably the user knows it won't be executed. The intended behaviour with all this is the following: No #0, no #var in the design (#constant is OK) -> Same as current behaviour, scheduling not adjusted, same code generated as before Has static #0 and '--no-sched-zero-delay' is NOT given: -> No warnings, scheduling adjusted so it just works, runs slow Has static #0 and '--no-sched-zero-delay' is given: -> ZERODLY on the #0, scheduling not adjusted, fails at runtime if hit No static #0, but has #var and no option is given: -> ZERODLY on the #var advising use of '--no-sched-zero-delay' or '--sched-zero-delay' (similar to '--timing'), scheduling adjusted assuming it can be a zero delay and it just works No static #0, but has #var and '--no-sched-zero-delay' is given: -> No warning, scheduling not adjusted, fails at runtime if zero delay No static #0, but has #var and '--sched-zero-delay' is given: -> No warning, scheduling adjusted so it just works
This commit is contained in:
parent
a0b89dde8e
commit
505d33b35a
|
|
@ -487,6 +487,7 @@ detailed descriptions of these arguments.
|
|||
--runtime-debug Enable model runtime debugging
|
||||
--savable Enable model save-restore
|
||||
--sc Create SystemC output
|
||||
--sched-zero-delay Specify #0 delay support
|
||||
--no-skip-identical Disable skipping identical output
|
||||
--stats Create statistics file
|
||||
--stats-vars Provide statistics on variables
|
||||
|
|
|
|||
|
|
@ -1594,6 +1594,21 @@ Summary:
|
|||
|
||||
Specifies SystemC output mode; see also :vlopt:`--cc` option.
|
||||
|
||||
.. option:: --sched-zero-delay
|
||||
|
||||
Specifies if the generated code should support ``#0`` delays with full IEEE
|
||||
1800 standard scheduling semantics. Full ``#0`` support has a simulation
|
||||
performance cost. If :vlopt:`--sched-zero-delay` is used, the generated code
|
||||
will fully support ``#0`` delays. If :vlopt:`--no-sched-zero-delay` is used,
|
||||
the generated code will not support ``#0` delays, and simulation will fail
|
||||
at runtime if a ``#0`` delay is executed. If no option is given, Verilator
|
||||
will generate code with proper ``#0`` support if the input contains either a
|
||||
``#0``, or a ``#(expression)`` with a delay value unknown at compile time.
|
||||
|
||||
Option :vlopt:`--no-sched-zero-delay` can be used if the input contains
|
||||
``#0`` delays, but they are known to be not executed at runtime. This can
|
||||
improve simulation performance.
|
||||
|
||||
.. option:: --skip-identical
|
||||
|
||||
.. option:: --no-skip-identical
|
||||
|
|
|
|||
|
|
@ -121,11 +121,6 @@ as well as all flavors of ``fork``.
|
|||
Compiling a Verilated design that uses these features requires a compiler
|
||||
with C++20 coroutine support, e.g. Clang 5, GCC 10, or newer.
|
||||
|
||||
``#0`` delays cause Verilator to issue the :option:`ZERODLY` warning, as
|
||||
they work differently than described in the LRM. They do not schedule
|
||||
process resumption in the Inactive region, though the process will get
|
||||
resumed in the same time slot.
|
||||
|
||||
Rising/falling/turn-off delays are currently unsupported and cause the
|
||||
:option:`RISEFALLDLY` warning.
|
||||
|
||||
|
|
|
|||
|
|
@ -2592,6 +2592,21 @@ List Of Warnings
|
|||
|
||||
.. option:: ZERODLY
|
||||
|
||||
Since version 5.046:
|
||||
|
||||
Issued if neither :vlopt:`--sched-zero-delay`, nor
|
||||
:vlopt:`--sched-zero-delay` is used on the command line, and the input does
|
||||
not contain a compile time known ``#0`` delay, but does contain a
|
||||
``#(expressin)`` where the delay value cannot be determined at compile time.
|
||||
Passing :vlopt:`--no-sched-zero-delay` can improve runtime performance if
|
||||
variable delays are all known to be non-zero at runtime.
|
||||
|
||||
Also issued if :vlopt:`--no-sched-zero-delay` is used on the command line,
|
||||
but the input contains a compile time known ``#0`` delay. This is safe to
|
||||
ignore if the reported delay is known to be not executed at runtime.
|
||||
|
||||
Before version 5.046:
|
||||
|
||||
Warns that `#0` delays do not schedule the process to be resumed in the
|
||||
Inactive region. Such processes do get resumed in the same time slot
|
||||
somewhere in the Active region. Issued only if Verilator is run with the
|
||||
|
|
|
|||
|
|
@ -67,19 +67,6 @@ void VlDelayScheduler::resume() {
|
|||
resumed = true;
|
||||
}
|
||||
|
||||
if (!m_zeroDelayed.empty()) {
|
||||
// First, we need to move the coroutines out of the queue, as a resumed coroutine can
|
||||
// suspend on #0 again, adding itself to the queue, which can result in reallocating the
|
||||
// queue mid-iteration.
|
||||
// We swap with the m_zeroDlyResumed field to keep the allocated buffer.
|
||||
m_zeroDlyResumed.swap(m_zeroDelayed);
|
||||
for (auto&& handle : m_zeroDlyResumed) handle.resume();
|
||||
m_zeroDlyResumed.clear();
|
||||
resumed = true;
|
||||
// We are now in the Active region, so any coroutines added to m_zeroDelayed in the
|
||||
// meantime will have to wait until the next Inactive region.
|
||||
}
|
||||
|
||||
if (!resumed) {
|
||||
if (m_context.time() == 0) {
|
||||
// Nothing was scheduled at time 0, but resume() got called due to --x-initial-edge
|
||||
|
|
@ -92,6 +79,12 @@ void VlDelayScheduler::resume() {
|
|||
}
|
||||
}
|
||||
|
||||
void VlDelayScheduler::resumeZeroDelay() {
|
||||
m_zeroDelayesSwap.swap(m_zeroDelayed);
|
||||
for (VlCoroutineHandle& handle : m_zeroDelayesSwap) handle.resume();
|
||||
m_zeroDelayesSwap.clear();
|
||||
}
|
||||
|
||||
uint64_t VlDelayScheduler::nextTimeSlot() const {
|
||||
if (!m_queue.empty()) return m_queue.cbegin()->first;
|
||||
if (m_zeroDelayed.empty())
|
||||
|
|
|
|||
|
|
@ -170,9 +170,8 @@ class VlDelayScheduler final {
|
|||
VerilatedContext& m_context;
|
||||
VlDelayedCoroutineQueue m_queue; // Coroutines to be restored at a certain simulation time
|
||||
std::vector<VlCoroutineHandle> m_zeroDelayed; // Coroutines waiting for #0
|
||||
std::vector<VlCoroutineHandle> m_zeroDlyResumed; // Coroutines that waited for #0 and are
|
||||
// to be resumed. Kept as a field to avoid
|
||||
// reallocation.
|
||||
// Coroutines that waited for #0 and are being resumed now. As member to avoid reallocations
|
||||
std::vector<VlCoroutineHandle> m_zeroDelayesSwap;
|
||||
|
||||
public:
|
||||
// CONSTRUCTORS
|
||||
|
|
@ -181,6 +180,8 @@ public:
|
|||
// METHODS
|
||||
// Resume coroutines waiting for the current simulation time
|
||||
void resume();
|
||||
// Resume coroutines waiting for #0
|
||||
void resumeZeroDelay();
|
||||
// Returns the simulation time of the next time slot (aborts if there are no delayed
|
||||
// coroutines)
|
||||
uint64_t nextTimeSlot() const;
|
||||
|
|
@ -188,9 +189,10 @@ public:
|
|||
bool empty() const { return m_queue.empty() && m_zeroDelayed.empty(); }
|
||||
// Are there coroutines to resume at the current simulation time?
|
||||
bool awaitingCurrentTime() const {
|
||||
return (!m_queue.empty() && (m_queue.cbegin()->first <= m_context.time()))
|
||||
|| !m_zeroDelayed.empty();
|
||||
return (!m_queue.empty() && (m_queue.cbegin()->first <= m_context.time()));
|
||||
}
|
||||
// Are there coroutines to resume in the inactive region after a #0 delay?
|
||||
bool awaitingZeroDelay() const { return !m_zeroDelayed.empty(); }
|
||||
#ifdef VL_DEBUG
|
||||
void dump() const;
|
||||
#endif
|
||||
|
|
@ -217,14 +219,6 @@ public:
|
|||
};
|
||||
|
||||
const VlDelayPhase phase = (delay == 0) ? VlDelayPhase::INACTIVE : VlDelayPhase::ACTIVE;
|
||||
#ifdef VL_DEBUG
|
||||
if (phase == VlDelayPhase::INACTIVE) {
|
||||
VL_WARN_MT(filename, lineno, VL_UNKNOWN,
|
||||
"Encountered #0 delay. #0 scheduling support is incomplete and the "
|
||||
"process will be resumed before combinational logic evaluation.");
|
||||
}
|
||||
#endif
|
||||
|
||||
return Awaitable{process, m_queue,
|
||||
m_zeroDelayed, m_context.time() + delay,
|
||||
phase, VlFileLineDebug{filename, lineno}};
|
||||
|
|
|
|||
|
|
@ -821,6 +821,7 @@ public:
|
|||
RNG_SET_RANDSTATE,
|
||||
SCHED_ANY_TRIGGERED,
|
||||
SCHED_AWAITING_CURRENT_TIME,
|
||||
SCHED_AWAITING_ZERO_DELAY,
|
||||
SCHED_READY,
|
||||
SCHED_COMMIT,
|
||||
SCHED_MOVE_TO_RESUME_QUEUE,
|
||||
|
|
@ -831,6 +832,7 @@ public:
|
|||
SCHED_EVALUATION,
|
||||
SCHED_POST_UPDATE,
|
||||
SCHED_RESUME,
|
||||
SCHED_RESUME_ZERO_DELAY,
|
||||
SCHED_RESUMPTION,
|
||||
SCHED_TRIGGER,
|
||||
UNPACKED_ASSIGN,
|
||||
|
|
@ -954,6 +956,7 @@ inline std::ostream& operator<<(std::ostream& os, const VCMethod& rhs) {
|
|||
{RNG_SET_RANDSTATE, "__Vm_rng.set_randstate", false}, \
|
||||
{SCHED_ANY_TRIGGERED, "anyTriggered", false}, \
|
||||
{SCHED_AWAITING_CURRENT_TIME, "awaitingCurrentTime", true}, \
|
||||
{SCHED_AWAITING_ZERO_DELAY, "awaitingZeroDelay", true}, \
|
||||
{SCHED_READY, "ready", false}, \
|
||||
{SCHED_COMMIT, "commit", false}, \
|
||||
{SCHED_MOVE_TO_RESUME_QUEUE, "moveToResumeQueue", false}, \
|
||||
|
|
@ -964,6 +967,7 @@ inline std::ostream& operator<<(std::ostream& os, const VCMethod& rhs) {
|
|||
{SCHED_EVALUATION, "evaluation", false}, \
|
||||
{SCHED_POST_UPDATE, "postUpdate", false}, \
|
||||
{SCHED_RESUME, "resume", false}, \
|
||||
{SCHED_RESUME_ZERO_DELAY, "resumeZeroDelay", false}, \
|
||||
{SCHED_RESUMPTION, "resumption", false}, \
|
||||
{SCHED_TRIGGER, "trigger", false}, \
|
||||
{UNPACKED_ASSIGN, "assign", false}, \
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ class V3Global final {
|
|||
bool m_usesProbDist = false; // Uses $dist_*
|
||||
bool m_usesStdPackage = false; // Design uses the std package
|
||||
bool m_usesTiming = false; // Design uses timing constructs
|
||||
bool m_usesZeroDelay = false; // Design uses #0 delay (or non-constant delay)
|
||||
bool m_hasForceableSignals = false; // Need to apply V3Force pass
|
||||
bool m_hasSystemCSections = false; // Has AstSystemCSection that need to be emitted
|
||||
bool m_useParallelBuild = false; // Use parallel build for model
|
||||
|
|
@ -200,6 +201,8 @@ public:
|
|||
void setUsesStdPackage() { m_usesStdPackage = true; }
|
||||
bool usesTiming() const { return m_usesTiming; }
|
||||
void setUsesTiming() { m_usesTiming = true; }
|
||||
bool usesZeroDelay() const { return m_usesZeroDelay; }
|
||||
void setUsesZeroDelay() { m_usesZeroDelay = true; }
|
||||
bool hasForceableSignals() const { return m_hasForceableSignals; }
|
||||
void setHasForceableSignals() { m_hasForceableSignals = true; }
|
||||
bool hasSystemCSections() const VL_MT_SAFE { return m_hasSystemCSections; }
|
||||
|
|
|
|||
|
|
@ -1716,6 +1716,7 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc,
|
|||
m_outFormatOk = true;
|
||||
m_systemC = true;
|
||||
});
|
||||
DECL_OPTION("-sched-zero-delay", OnOff, &m_schedZeroDelay);
|
||||
DECL_OPTION("-skip-identical", OnOff, &m_skipIdentical);
|
||||
DECL_OPTION("-stats", OnOff, &m_stats);
|
||||
DECL_OPTION("-stats-vars", CbOnOff, [this](bool flag) {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,7 @@ private:
|
|||
bool m_relativeIncludes = false; // main switch: --relative-includes
|
||||
bool m_reportUnoptflat = false; // main switch: --report-unoptflat
|
||||
bool m_savable = false; // main switch: --savable
|
||||
VOptionBool m_schedZeroDelay; // main switch: --sched-zero-delay
|
||||
bool m_stdPackage = true; // main switch: --std-package
|
||||
bool m_stdWaiver = true; // main switch: --std-waiver
|
||||
bool m_structsPacked = false; // main switch: --structs-packed
|
||||
|
|
@ -491,6 +492,7 @@ public:
|
|||
bool underlineZero() const { return m_underlineZero; }
|
||||
bool systemC() const VL_MT_SAFE { return m_systemC; }
|
||||
bool savable() const VL_MT_SAFE { return m_savable; }
|
||||
VOptionBool schedZeroDelay() const { return m_schedZeroDelay; }
|
||||
bool stats() const { return m_stats; }
|
||||
bool statsVars() const { return m_statsVars; }
|
||||
bool stdPackage() const { return m_stdPackage; }
|
||||
|
|
|
|||
|
|
@ -132,7 +132,8 @@ EvalLoop createEvalLoop(
|
|||
const string& name, // Name of current phase
|
||||
bool slow, // Should create slow functions
|
||||
const TriggerKit& trigKit, // The trigger kit
|
||||
AstVarScope* trigp, // The trigger vector - may be nullptr if no triggers
|
||||
AstVarScope* trigp, // The trigger vector - may be nullptr if no triggers or using 'condp'
|
||||
AstNodeExpr* condp, // Explicit condition that must be true to run 'phaseWorkp'
|
||||
AstNodeStmt* innerp, // The inner loop, if any
|
||||
AstNodeStmt* phasePrepp, // Prep statements run before checking triggers
|
||||
AstNodeStmt* phaseWorkp, // The work to do if anything triggered
|
||||
|
|
@ -141,9 +142,11 @@ EvalLoop createEvalLoop(
|
|||
// and must be unmodified otherwise.
|
||||
std::function<AstNodeStmt*(AstVarScope*)> phaseExtra = [](AstVarScope*) { return nullptr; } //
|
||||
) {
|
||||
// All work is under a trigger, so if there are no triggers, there is
|
||||
// nothing to do besides executing the inner loop.
|
||||
if (!trigp) return {nullptr, innerp};
|
||||
UASSERT(!trigp || !condp, "Cannot use both 'trigp' and 'condp' in 'createEvalLoop'");
|
||||
|
||||
// All work is under a trigger or condition, so if there are none,
|
||||
// there is nothing to do besides executing the inner loop.
|
||||
if (!trigp && !condp) return {nullptr, innerp};
|
||||
|
||||
const std::string varPrefix = "__V" + tag;
|
||||
AstScope* const scopeTopp = netlistp->topScopep()->scopep();
|
||||
|
|
@ -161,9 +164,10 @@ EvalLoop createEvalLoop(
|
|||
|
||||
// If there is work in this phase, execute it if any triggers fired
|
||||
if (phaseWorkp) {
|
||||
// Check if any triggers are fired, save the result
|
||||
AstNodeExpr* const lhsp = new AstVarRef{flp, executeFlagp, VAccess::WRITE};
|
||||
AstNodeExpr* const rhsp = trigKit.newAnySetCall(trigp);
|
||||
// If using explicit condition, that directly determines whether to execute,
|
||||
// otherwise check if any triggers are fired
|
||||
AstNodeExpr* const rhsp = condp ? condp : trigKit.newAnySetCall(trigp);
|
||||
phaseFuncp->addStmtsp(new AstAssign{flp, lhsp, rhsp});
|
||||
|
||||
// Add the work
|
||||
|
|
@ -216,8 +220,8 @@ EvalLoop createEvalLoop(
|
|||
AstLoop* const loopp = new AstLoop{flp};
|
||||
stmtps->addNext(loopp);
|
||||
|
||||
// Check the iteration limit (aborts if exceeded)
|
||||
AstNodeStmt* const dumpCallp = trigKit.newDumpCall(trigp, tag, false);
|
||||
// Check the iteration limit (aborts if exceeded). Dump triggers if using triggers.
|
||||
AstNodeStmt* dumpCallp = trigp ? trigKit.newDumpCall(trigp, tag, false) : nullptr;
|
||||
loopp->addStmtsp(util::checkIterationLimit(netlistp, name, counterp, dumpCallp));
|
||||
// Increment the iteration counter
|
||||
loopp->addStmtsp(util::incrementVar(counterp));
|
||||
|
|
@ -442,7 +446,10 @@ void createSettle(AstNetlist* netlistp, AstCFunc* const initFuncp, SenExprBuilde
|
|||
|
||||
// Create the eval loop
|
||||
const EvalLoop stlLoop = createEvalLoop( //
|
||||
netlistp, "stl", "Settle", /* slow: */ true, trigKit, trigKit.vscp(),
|
||||
netlistp, "stl", "Settle", /* slow: */ true, trigKit,
|
||||
// Use trigger
|
||||
trigKit.vscp(), nullptr,
|
||||
// Explicit condition
|
||||
// Inner loop statements
|
||||
nullptr,
|
||||
// Prep statements: Compute the current 'stl' triggers
|
||||
|
|
@ -550,7 +557,9 @@ AstNode* createInputCombLoop(AstNetlist* netlistp, AstCFunc* const initFuncp,
|
|||
|
||||
// Create the eval loop
|
||||
const EvalLoop icoLoop = createEvalLoop( //
|
||||
netlistp, "ico", "Input combinational", /* slow: */ false, trigKit, trigKit.vscp(),
|
||||
netlistp, "ico", "Input combinational", /* slow: */ false, trigKit,
|
||||
// Use trigger
|
||||
trigKit.vscp(), nullptr,
|
||||
// Inner loop statements
|
||||
nullptr,
|
||||
// Prep statements: Compute the current 'ico' triggers
|
||||
|
|
@ -595,13 +604,18 @@ void createEval(AstNetlist* netlistp, //
|
|||
) {
|
||||
FileLine* const flp = netlistp->fileline();
|
||||
|
||||
// Grab the delay scheduler variable, if any
|
||||
AstVarScope* const delaySchedVscp = timingKit.getDelayScheduler(netlistp);
|
||||
|
||||
// 'createResume' consumes the contents that 'createReady' needs, so do the right order
|
||||
AstCCall* const timingReadyp = timingKit.createReady(netlistp);
|
||||
AstCCall* const timingResumep = timingKit.createResume(netlistp);
|
||||
|
||||
// Create the active eval loop
|
||||
EvalLoop topLoop = createEvalLoop( //
|
||||
netlistp, "act", "Active", /* slow: */ false, trigKit, actKit.m_vscp,
|
||||
netlistp, "act", "Active", /* slow: */ false, trigKit,
|
||||
// Use trigger
|
||||
actKit.m_vscp, nullptr,
|
||||
// Inner loop statements
|
||||
nullptr,
|
||||
// Prep statements
|
||||
|
|
@ -640,9 +654,54 @@ void createEval(AstNetlist* netlistp, //
|
|||
return workp;
|
||||
}());
|
||||
|
||||
// Create if there are any delays, so we can check at runtime if a #0 is unexpected
|
||||
if (delaySchedVscp) {
|
||||
topLoop = createEvalLoop( //
|
||||
netlistp, "inact", "Inactive", /* slow: */ false, trigKit,
|
||||
// Use explicit condition
|
||||
nullptr,
|
||||
[&]() {
|
||||
// Run if any zero delays are pending
|
||||
AstNodeExpr* const callp
|
||||
= new AstCMethodHard{flp, new AstVarRef{flp, delaySchedVscp, VAccess::READ},
|
||||
VCMethod::SCHED_AWAITING_ZERO_DELAY};
|
||||
callp->dtypeSetBit();
|
||||
return callp;
|
||||
}(),
|
||||
// Inner loop statements
|
||||
topLoop.stmtsp,
|
||||
// Prep statements
|
||||
nullptr,
|
||||
// Work statements
|
||||
[&]() -> AstNodeStmt* {
|
||||
if (v3Global.usesZeroDelay()) {
|
||||
// Resume processes watiting for #0 delay
|
||||
AstCMethodHard* const callp = new AstCMethodHard{
|
||||
flp, new AstVarRef{flp, delaySchedVscp, VAccess::READWRITE},
|
||||
VCMethod::SCHED_RESUME_ZERO_DELAY};
|
||||
callp->dtypeSetVoid();
|
||||
return callp->makeStmt();
|
||||
} else {
|
||||
// Assumption was that the design doesn't use #0 delays.
|
||||
// Die at run-time if it does.
|
||||
AstCStmt* const stmtp = new AstCStmt{flp};
|
||||
const FileLine* const locp = netlistp->topModulep()->fileline();
|
||||
const std::string& file = VIdProtect::protect(locp->filename());
|
||||
const std::string& line = std::to_string(locp->lineno());
|
||||
stmtp->add(
|
||||
"VL_FATAL_MT(\"" + V3OutFormatter::quoteNameControls(file) + "\", " + line
|
||||
+ ", \"\", \"ZERODLY: Design Verilated with '--no-sched-zero-delay', "
|
||||
+ "but #0 delay executed at runtime\");");
|
||||
return stmtp;
|
||||
}
|
||||
}());
|
||||
}
|
||||
|
||||
// Create the NBA eval loop, which is the default top level loop.
|
||||
topLoop = createEvalLoop( //
|
||||
netlistp, "nba", "NBA", /* slow: */ false, trigKit, nbaKit.m_vscp,
|
||||
netlistp, "nba", "NBA", /* slow: */ false, trigKit,
|
||||
// Use trigger
|
||||
nbaKit.m_vscp, nullptr,
|
||||
// Inner loop statements
|
||||
topLoop.stmtsp,
|
||||
// Prep statements
|
||||
|
|
@ -687,7 +746,9 @@ void createEval(AstNetlist* netlistp, //
|
|||
if (!obsKit.empty()) {
|
||||
// Create the Observed eval loop, which becomes the top level loop.
|
||||
topLoop = createEvalLoop( //
|
||||
netlistp, "obs", "Observed", /* slow: */ false, trigKit, obsKit.m_vscp,
|
||||
netlistp, "obs", "Observed", /* slow: */ false, trigKit,
|
||||
// Use trigger
|
||||
obsKit.m_vscp, nullptr,
|
||||
// Inner loop statements
|
||||
topLoop.stmtsp,
|
||||
// Prep statements
|
||||
|
|
@ -711,7 +772,9 @@ void createEval(AstNetlist* netlistp, //
|
|||
if (!reactKit.empty()) {
|
||||
// Create the Reactive eval loop, which becomes the top level loop.
|
||||
topLoop = createEvalLoop( //
|
||||
netlistp, "react", "Reactive", /* slow: */ false, trigKit, reactKit.m_vscp,
|
||||
netlistp, "react", "Reactive", /* slow: */ false, trigKit,
|
||||
// Use trigger
|
||||
reactKit.m_vscp, nullptr,
|
||||
// Inner loop statements
|
||||
topLoop.stmtsp,
|
||||
// Prep statements
|
||||
|
|
|
|||
|
|
@ -329,6 +329,8 @@ public:
|
|||
// Remaps external domains using the specified trigger map
|
||||
std::map<const AstVarScope*, std::vector<AstSenTree*>> remapDomains(
|
||||
const std::unordered_map<const AstSenTree*, AstSenTree*>& trigMap) const VL_MT_DISABLED;
|
||||
// Get the delay scheduler variable
|
||||
AstVarScope* getDelayScheduler(AstNetlist* const netlistp) VL_MT_DISABLED;
|
||||
// Creates a timing resume call (if needed, else returns null)
|
||||
AstCCall* createResume(AstNetlist* const netlistp) VL_MT_DISABLED;
|
||||
// Creates a timing ready call (if needed, else returns null)
|
||||
|
|
|
|||
|
|
@ -354,7 +354,14 @@ LogicRegions partition(LogicByScope& clockedLogic, LogicByScope& combinationalLo
|
|||
|
||||
for (V3GraphVertex& vtx : graphp->vertices()) {
|
||||
if (const auto lvtxp = vtx.cast<SchedLogicVertex>()) {
|
||||
LogicByScope& lbs = lvtxp->color() ? result.m_act : result.m_nba;
|
||||
// Move to 'act'/'nba' based on coloring by default ...
|
||||
bool toAct = lvtxp->color();
|
||||
// ... however, if a #0 delay is possible, then the 'inact' region is required,
|
||||
// in which case **EVERYTHING** that is not a Post block needs to go to 'act'.
|
||||
// This severely limits downstream optimizations (e.g. V3LifePost), and severely
|
||||
// reduces available parallelism in 'nba' for multi-threaded execution.
|
||||
if (v3Global.usesZeroDelay() && !VN_IS(lvtxp->logicp(), AlwaysPost)) toAct = true;
|
||||
LogicByScope& lbs = toAct ? result.m_act : result.m_nba;
|
||||
AstNode* const logicp = lvtxp->logicp();
|
||||
logicp->unlinkFrBack();
|
||||
lbs.add(lvtxp->scopep(), lvtxp->senTreep(), logicp);
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@ AstCCall* TimingKit::createResume(AstNetlist* const netlistp) {
|
|||
AstIf* dlyShedIfp = nullptr;
|
||||
for (auto& p : m_lbs) {
|
||||
AstActive* const activep = p.second;
|
||||
// Hack to ensure that #0 delays will be executed after any other `act` events.
|
||||
// Just handle delayed coroutines last.
|
||||
// Resume time delays last. For no particular reason other than
|
||||
// that's what we used to do prior to proper #0 support.
|
||||
AstVarRef* const schedrefp = VN_AS(
|
||||
VN_AS(VN_AS(activep->stmtsp(), StmtExpr)->exprp(), CMethodHard)->fromp(), VarRef);
|
||||
|
||||
|
|
@ -113,6 +113,19 @@ AstCCall* TimingKit::createResume(AstNetlist* const netlistp) {
|
|||
return callp;
|
||||
}
|
||||
|
||||
AstVarScope* TimingKit::getDelayScheduler(AstNetlist* const netlistp) {
|
||||
for (auto& p : m_lbs) {
|
||||
AstActive* const ap = p.second;
|
||||
// TODO: this triple VN_AS expression is ridiculous
|
||||
AstVarRef* const schedrefp
|
||||
= VN_AS(VN_AS(VN_AS(ap->stmtsp(), StmtExpr)->exprp(), CMethodHard)->fromp(), VarRef);
|
||||
AstVarScope* const vscp = schedrefp->varScopep();
|
||||
if (vscp->dtypep()->basicp()->isDelayScheduler()) return vscp;
|
||||
}
|
||||
// None found. Design doesn't use any time delays
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// Creates a timing ready call (if needed, else returns null)
|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ AstNodeStmt* checkIterationLimit(AstNetlist* netlistp, const string& name, AstVa
|
|||
AstNodeExpr* const condp = new AstGt{flp, counterRefp, constp};
|
||||
AstIf* const ifp = new AstIf{flp, condp};
|
||||
ifp->branchPred(VBranchPred::BP_UNLIKELY);
|
||||
ifp->addThensp(dumpCallp);
|
||||
if (dumpCallp) ifp->addThensp(dumpCallp);
|
||||
AstCStmt* const stmtp = new AstCStmt{flp};
|
||||
ifp->addThensp(stmtp);
|
||||
const FileLine* const locp = netlistp->topModulep()->fileline();
|
||||
|
|
|
|||
107
src/V3Timing.cpp
107
src/V3Timing.cpp
|
|
@ -66,10 +66,12 @@
|
|||
|
||||
#include "V3Const.h"
|
||||
#include "V3EmitV.h"
|
||||
#include "V3Global.h"
|
||||
#include "V3Graph.h"
|
||||
#include "V3MemberMap.h"
|
||||
#include "V3SenExprBuilder.h"
|
||||
#include "V3SenTree.h"
|
||||
#include "V3Stats.h"
|
||||
#include "V3UniqueNames.h"
|
||||
|
||||
#include <queue>
|
||||
|
|
@ -475,6 +477,8 @@ class TimingControlVisitor final : public VNVisitor {
|
|||
int m_forkCnt = 0; // Number of forks inside a module
|
||||
bool m_underJumpBlock = false; // True if we are inside of a jump-block
|
||||
bool m_underProcedure = false; // True if we are under an always or initial
|
||||
bool m_hasStaticZeroDelay = false; // True if we have a static #0 delay
|
||||
std::vector<FileLine*> m_unknownDelayFlps; // Locations of AstDelay with non-constant value
|
||||
|
||||
// Unique names
|
||||
V3UniqueNames m_dlyforkNames{"__Vdlyfork"}; // Names for temp AssignW vars
|
||||
|
|
@ -501,6 +505,11 @@ class TimingControlVisitor final : public VNVisitor {
|
|||
SenTreeFinder m_finder{m_netlistp}; // Sentree finder and uniquifier
|
||||
SenExprBuilder* m_senExprBuilderp = nullptr; // Sens expression builder for current m_scope
|
||||
|
||||
// Stats
|
||||
size_t m_statZeroDelays = 0; // Number of statically known #0 delays
|
||||
size_t m_statConstDelays = 0; // Number of statically known #const (non-zero) delays
|
||||
size_t m_statVariableDelays = 0; // Number of delays with value unknown at compile time
|
||||
|
||||
// METHODS
|
||||
// Transform an assignment with an intra timing control into a timing control with the
|
||||
// assignment under it
|
||||
|
|
@ -916,27 +925,69 @@ class TimingControlVisitor final : public VNVisitor {
|
|||
UASSERT_OBJ(!nodep->isCycleDelay(), nodep,
|
||||
"Cycle delays should have been handled in V3AssertPre");
|
||||
FileLine* const flp = nodep->fileline();
|
||||
AstNodeExpr* valuep = V3Const::constifyEdit(nodep->lhsp()->unlinkFrBack());
|
||||
AstConst* const constp = VN_CAST(valuep, Const);
|
||||
if (!constp || !constp->isZero()) {
|
||||
// Scale the delay
|
||||
const double timescaleFactor = calculateTimescaleFactor(nodep, nodep->timeunit());
|
||||
if (valuep->dtypep()->skipRefp()->isDouble()) {
|
||||
valuep = new AstRToIRoundS{
|
||||
flp, new AstMulD{flp, valuep,
|
||||
new AstConst{flp, AstConst::RealDouble{}, timescaleFactor}}};
|
||||
valuep->dtypeSetBitSized(64, VSigning::UNSIGNED);
|
||||
} else {
|
||||
valuep->dtypeSetBitSized(64, VSigning::UNSIGNED);
|
||||
valuep = new AstMul{flp, valuep,
|
||||
new AstConst{flp, AstConst::Unsized64{},
|
||||
static_cast<uint64_t>(timescaleFactor)}};
|
||||
}
|
||||
} else if (constp->num().is1Step()) {
|
||||
|
||||
AstNodeExpr* valuep = nodep->lhsp()->unlinkFrBack();
|
||||
if (VN_IS(valuep, Const) && VN_AS(valuep, Const)->num().is1Step()) {
|
||||
// #1step special case
|
||||
VL_DO_DANGLING(valuep->deleteTree(), valuep);
|
||||
valuep = new AstConst{flp, AstConst::Unsized64{}, 1};
|
||||
valuep->dtypeSetBitSized(64, VSigning::UNSIGNED);
|
||||
} else {
|
||||
// Scale the delay
|
||||
const double timescaleFactorD = calculateTimescaleFactor(nodep, nodep->timeunit());
|
||||
if (valuep->dtypep()->skipRefp()->isDouble()) {
|
||||
AstConst* const tsfp = new AstConst{flp, AstConst::RealDouble{}, timescaleFactorD};
|
||||
valuep = new AstMulD{flp, valuep, tsfp};
|
||||
valuep = new AstRToIRoundS{flp, valuep};
|
||||
valuep->dtypeSetBitSized(64, VSigning::UNSIGNED);
|
||||
} else {
|
||||
valuep->dtypeSetBitSized(64, VSigning::UNSIGNED);
|
||||
const uint64_t timescaleFactorU = static_cast<uint64_t>(timescaleFactorD);
|
||||
AstConst* const tsfp = new AstConst{flp, AstConst::Unsized64{}, timescaleFactorU};
|
||||
valuep = new AstMul{flp, valuep, tsfp};
|
||||
}
|
||||
// Simplify
|
||||
valuep = V3Const::constifyEdit(valuep);
|
||||
}
|
||||
|
||||
// Statistics
|
||||
if (valuep->isZero()) {
|
||||
++m_statZeroDelays;
|
||||
} else if (VN_IS(valuep, Const)) {
|
||||
++m_statConstDelays;
|
||||
} else {
|
||||
++m_statVariableDelays;
|
||||
}
|
||||
|
||||
// Decide scheduling support for #0
|
||||
if (v3Global.opt.schedZeroDelay().isSetTrue()) {
|
||||
// User said to schedule for #0 support, nothing else to do
|
||||
v3Global.setUsesZeroDelay();
|
||||
} else if (v3Global.opt.schedZeroDelay().isSetFalse()) {
|
||||
// User said to schedule without #0 support. Still warn if a static #0 delay exists
|
||||
if (valuep->isZero()) {
|
||||
nodep->v3warn(
|
||||
ZERODLY,
|
||||
"Static #0 delay exists, but '--no-sched-zero-delay' was given.\n"
|
||||
<< nodep->warnMore() //
|
||||
<< "... Can proceed, but this will fail at runtime if executed.");
|
||||
}
|
||||
} else {
|
||||
// User did not express preference, decide based on presence of delays
|
||||
if (valuep->isZero()) {
|
||||
// Statically known #0 delay exists, schedule for #0 support
|
||||
v3Global.setUsesZeroDelay();
|
||||
m_hasStaticZeroDelay = true;
|
||||
// Don't warn on variable delays, as no point
|
||||
m_unknownDelayFlps.clear();
|
||||
} else if (!VN_IS(valuep, Const)) {
|
||||
// Delay is not known at compiile time. Conservatively schedule for #0 support,
|
||||
// but warn if no static #0 delays used as performance might be improved
|
||||
v3Global.setUsesZeroDelay();
|
||||
if (!m_hasStaticZeroDelay) m_unknownDelayFlps.push_back(nodep->fileline());
|
||||
}
|
||||
}
|
||||
|
||||
// Replace self with a 'co_await dlySched.delay(<valuep>)'
|
||||
AstCMethodHard* const delayMethodp = new AstCMethodHard{
|
||||
flp, new AstVarRef{flp, getCreateDelayScheduler(), VAccess::WRITE},
|
||||
|
|
@ -1320,8 +1371,28 @@ public:
|
|||
explicit TimingControlVisitor(AstNetlist* nodep)
|
||||
: m_netlistp{nodep} {
|
||||
iterate(nodep);
|
||||
|
||||
// If there is no static #0 in the design, but an unknown delay was found,
|
||||
// and the user did not specify preference, then warn on all unknown delays
|
||||
// as we will be assuming they can be #0, which can cause performance degradation.
|
||||
for (FileLine* const flp : m_unknownDelayFlps) {
|
||||
flp->v3warn(ZERODLY,
|
||||
"Value of # delay control statically unknown. Assuming it can be #0.\n"
|
||||
<< flp->warnMore() //
|
||||
<< "... If all # delays are non-zero at runtime,\n"
|
||||
<< flp->warnMore() //
|
||||
<< "... use '--no-sched-zero-delay' for improved performance.\n"
|
||||
<< flp->warnMore() //
|
||||
<< "... If a real #0 is expected at runtime,\n"
|
||||
<< flp->warnMore() //
|
||||
<< "... use '--sched-zero-delay' to suppress this warning.");
|
||||
}
|
||||
}
|
||||
~TimingControlVisitor() override {
|
||||
V3Stats::addStat("Timing, known #0 delays", m_statZeroDelays);
|
||||
V3Stats::addStat("Timing, known #const delays", m_statConstDelays);
|
||||
V3Stats::addStat("Timing, unknown #variable delays", m_statVariableDelays);
|
||||
}
|
||||
~TimingControlVisitor() override = default;
|
||||
};
|
||||
|
||||
//######################################################################
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ module t;
|
|||
real rtim1;
|
||||
real rtim2;
|
||||
|
||||
// verilator lint_off ZERODLY
|
||||
initial begin
|
||||
tim1 = 2;
|
||||
tim2 = 3;
|
||||
|
|
@ -31,5 +32,6 @@ module t;
|
|||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
// verilator lint_on ZERODLY
|
||||
|
||||
endmodule
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
%Warning-ZERODLY: t/t_flag_sched_zero_delay_none_bad.v:12:5: Value of # delay control statically unknown. Assuming it can be #0.
|
||||
: ... If all # delays are non-zero at runtime,
|
||||
: ... use '--no-sched-zero-delay' for improved performance.
|
||||
: ... If a real #0 is expected at runtime,
|
||||
: ... use '--sched-zero-delay' to suppress this warning.
|
||||
12 | #a;
|
||||
| ^
|
||||
... For warning description see https://verilator.org/warn/ZERODLY?v=latest
|
||||
... Use "/* verilator lint_off ZERODLY */" and lint_on around source to disable this message.
|
||||
%Warning-ZERODLY: t/t_flag_sched_zero_delay_none_bad.v:14:5: Value of # delay control statically unknown. Assuming it can be #0.
|
||||
: ... If all # delays are non-zero at runtime,
|
||||
: ... use '--no-sched-zero-delay' for improved performance.
|
||||
: ... If a real #0 is expected at runtime,
|
||||
: ... use '--sched-zero-delay' to suppress this warning.
|
||||
14 | #a;
|
||||
| ^
|
||||
%Error: Exiting due to
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of either the GNU Lesser General Public License Version 3
|
||||
# or the Perl Artistic License Version 2.0.
|
||||
# SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
|
||||
test.scenarios('vlt')
|
||||
|
||||
test.compile(verilator_flags2=["--binary"], fails=True, expect_filename=test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it
|
||||
// under the terms of either the GNU Lesser General Public License Version 3
|
||||
// or the Perl Artistic License Version 2.0.
|
||||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
module top;
|
||||
int a = 1;
|
||||
initial begin
|
||||
#a;
|
||||
a=2;
|
||||
#a;
|
||||
end
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
%Warning-ZERODLY: t/t_flag_sched_zero_delay_off_bad.v:10:11: Static #0 delay exists, but '--no-sched-zero-delay' was given.
|
||||
: ... Can proceed, but this will fail at runtime if executed.
|
||||
10 | initial #0;
|
||||
| ^
|
||||
... For warning description see https://verilator.org/warn/ZERODLY?v=latest
|
||||
... Use "/* verilator lint_off ZERODLY */" and lint_on around source to disable this message.
|
||||
%Error: Exiting due to
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of either the GNU Lesser General Public License Version 3
|
||||
# or the Perl Artistic License Version 2.0.
|
||||
# SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
|
||||
test.scenarios('vlt')
|
||||
|
||||
test.compile(verilator_flags2=["--binary", "--no-sched-zero-delay"],
|
||||
fails=True,
|
||||
expect_filename=test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it
|
||||
// under the terms of either the GNU Lesser General Public License Version 3
|
||||
// or the Perl Artistic License Version 2.0.
|
||||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
module top;
|
||||
initial #0;
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
%Warning-ZERODLY: t/t_flag_sched_zero_delay_off_run.v:17:9: Static #0 delay exists, but '--no-sched-zero-delay' was given.
|
||||
: ... Can proceed, but this will fail at runtime if executed.
|
||||
17 | #0;
|
||||
| ^
|
||||
... For warning description see https://verilator.org/warn/ZERODLY?v=latest
|
||||
... Use "/* verilator lint_off ZERODLY */" and lint_on around source to disable this message.
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of either the GNU Lesser General Public License Version 3
|
||||
# or the Perl Artistic License Version 2.0.
|
||||
# SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
|
||||
test.scenarios('vlt')
|
||||
|
||||
test.compile(verilator_flags2=[
|
||||
"--timing", "--main", "--exe", "--no-skip-identical", "--no-sched-zero-delay", "-Wno-fatal"
|
||||
],
|
||||
expect_filename=test.golden_filename)
|
||||
|
||||
test.execute(check_finished=True)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it
|
||||
// under the terms of either the GNU Lesser General Public License Version 3
|
||||
// or the Perl Artistic License Version 2.0.
|
||||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
module top;
|
||||
int n = 0;
|
||||
initial begin
|
||||
repeat (5) begin
|
||||
#10;
|
||||
$display("%02t tick", $time);
|
||||
++n;
|
||||
if (n > 5) begin
|
||||
#0; // Will not execute
|
||||
$stop;
|
||||
end
|
||||
end
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
%Error-ZERODLY: t/t_flag_sched_zero_delay_off_bad.v:9: Design Verilated with '--no-sched-zero-delay', but #0 delay executed at runtime
|
||||
Aborting...
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of either the GNU Lesser General Public License Version 3
|
||||
# or the Perl Artistic License Version 2.0.
|
||||
# SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
|
||||
test.scenarios('vlt')
|
||||
|
||||
test.top_filename = "t_flag_sched_zero_delay_off_bad.v"
|
||||
|
||||
test.compile(verilator_flags2=["--binary", "--no-sched-zero-delay", "-Wno-fatal"])
|
||||
|
||||
test.execute(fails=True, expect_filename=test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of either the GNU Lesser General Public License Version 3
|
||||
# or the Perl Artistic License Version 2.0.
|
||||
# SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
|
||||
test.scenarios('vlt')
|
||||
|
||||
test.compile(verilator_flags2=["--binary", "--sched-zero-delay"])
|
||||
|
||||
test.execute(check_finished=True)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it
|
||||
// under the terms of either the GNU Lesser General Public License Version 3
|
||||
// or the Perl Artistic License Version 2.0.
|
||||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
module top;
|
||||
initial begin
|
||||
#0;
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
endmodule
|
||||
|
|
@ -11,7 +11,7 @@ import vltest_bootstrap
|
|||
|
||||
test.scenarios('simulator')
|
||||
|
||||
test.compile(verilator_flags2=["--binary"])
|
||||
test.compile(verilator_flags2=["--binary", "--no-sched-zero-delay"])
|
||||
|
||||
test.execute()
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
0 Waiting for 'a'
|
||||
5 Waiting for 'a'
|
||||
5 a= 1 b=11
|
||||
15 Waiting for 'a'
|
||||
15 a= 2 b=12
|
||||
25 Waiting for 'a'
|
||||
25 a= 3 b=13
|
||||
35 Waiting for 'a'
|
||||
35 a= 4 b=14
|
||||
45 Waiting for 'a'
|
||||
45 a= 5 b=15
|
||||
55 Waiting for 'a'
|
||||
55 a= 6 b=16
|
||||
65 Waiting for 'a'
|
||||
65 a= 7 b=17
|
||||
75 Waiting for 'a'
|
||||
75 a= 8 b=18
|
||||
85 Waiting for 'a'
|
||||
85 a= 9 b=19
|
||||
95 Waiting for 'a'
|
||||
95 a=10 b=20
|
||||
*-* All Finished *-*
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of either the GNU Lesser General Public License Version 3
|
||||
# or the Perl Artistic License Version 2.0.
|
||||
# SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
|
||||
test.scenarios('simulator')
|
||||
|
||||
test.compile(verilator_flags2=["--binary", "--stats"])
|
||||
|
||||
test.execute(expect_filename=test.golden_filename)
|
||||
|
||||
test.file_grep(test.stats, r'Timing, known #0 delays\s+(\d+)', 1)
|
||||
test.file_grep(test.stats, r'Timing, known #const delays\s+(\d+)', 2)
|
||||
test.file_grep(test.stats, r'Timing, unknown #variable delays\s+(\d+)', 0)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it
|
||||
// under the terms of either the GNU Lesser General Public License Version 3
|
||||
// or the Perl Artistic License Version 2.0.
|
||||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
`define stop $stop
|
||||
`define check(got ,exp) do if ((got) !== (exp)) begin $write("%%Error: %s:%0d: time=%t got='h%x exp='h%x\n", `__FILE__,`__LINE__, $time, (got), (exp)); `stop; end while(0)
|
||||
|
||||
module top;
|
||||
|
||||
logic clk = 0;
|
||||
always #5 clk = ~clk;
|
||||
|
||||
int a = 0;
|
||||
int b;
|
||||
|
||||
always begin
|
||||
$display("%2t Waiting for 'a'", $time);
|
||||
@a;
|
||||
b = a + 10;
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
++a;
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
#0;
|
||||
$display("%2t a=%2d b=%2d", $time, a, b);
|
||||
`check(b, a + 10);
|
||||
end
|
||||
|
||||
initial begin
|
||||
#99;
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
@ -92,6 +92,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -105,6 +106,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -204,6 +206,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -220,6 +223,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -302,6 +306,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -316,6 +321,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -360,6 +366,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -374,6 +381,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -466,6 +474,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -482,6 +491,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -575,6 +585,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -590,6 +601,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -677,6 +689,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -691,6 +704,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -736,6 +750,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -750,6 +765,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -849,6 +865,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -865,6 +882,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -947,6 +965,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -961,6 +980,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1005,6 +1025,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1019,6 +1040,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1111,6 +1133,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1127,6 +1150,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1209,6 +1233,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1223,6 +1248,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1305,6 +1331,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1319,6 +1346,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1363,6 +1391,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1377,6 +1406,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1469,6 +1499,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1485,6 +1516,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1567,6 +1599,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1581,6 +1614,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1625,6 +1659,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1639,6 +1674,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1748,6 +1784,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1764,6 +1801,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1808,6 +1846,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1822,6 +1861,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1907,6 +1947,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1921,6 +1962,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1966,6 +2008,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -1980,6 +2023,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2079,6 +2123,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2095,6 +2140,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2177,6 +2223,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2191,6 +2238,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2235,6 +2283,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2249,6 +2298,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2336,6 +2386,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2350,6 +2401,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2442,6 +2494,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2458,6 +2511,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2540,6 +2594,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2554,6 +2609,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2598,6 +2654,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2612,6 +2669,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2704,6 +2762,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2720,6 +2779,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2802,6 +2862,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2816,6 +2877,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2915,6 +2977,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2930,6 +2993,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -2974,6 +3038,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -2988,6 +3053,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3087,6 +3153,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3103,6 +3170,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3185,6 +3253,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3199,6 +3268,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3243,6 +3313,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3257,6 +3328,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3349,6 +3421,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3365,6 +3438,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3454,6 +3528,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3468,6 +3543,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3512,6 +3588,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3526,6 +3603,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3618,6 +3696,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3634,6 +3713,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3716,6 +3796,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3730,6 +3811,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3774,6 +3856,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3788,6 +3871,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3880,6 +3964,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -3896,6 +3981,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -3989,6 +4075,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -4004,6 +4091,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -4087,6 +4175,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_nba
|
||||
|
|
@ -4101,6 +4190,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug1___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -171,6 +172,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -188,6 +190,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -245,6 +248,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -262,6 +266,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -335,6 +340,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -352,6 +358,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -441,6 +448,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -468,6 +476,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -559,6 +568,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -584,6 +594,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -652,6 +663,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -677,6 +689,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -768,6 +781,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -793,6 +807,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -884,6 +899,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -907,6 +923,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -980,6 +997,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -997,6 +1015,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1044,6 +1063,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1061,6 +1081,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1107,6 +1128,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1124,6 +1146,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1195,6 +1218,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1212,6 +1236,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1258,6 +1283,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1275,6 +1301,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1364,6 +1391,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1378,6 +1406,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1418,6 +1447,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1432,6 +1462,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1499,6 +1530,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1513,6 +1545,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1552,6 +1585,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1566,6 +1600,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1605,6 +1640,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1619,6 +1655,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1656,6 +1693,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1670,6 +1708,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -1709,6 +1748,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_nba
|
||||
|
|
@ -1723,6 +1763,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_debug2___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
@ -161,6 +162,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___eval_nba
|
||||
|
|
@ -175,6 +177,7 @@
|
|||
-V{t#,#} No 'act' region triggers active
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_orInto__act_vec_vec
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_anySet__act
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___eval_phase__inact
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___eval_phase__nba
|
||||
-V{t#,#}+ Vt_timing_eval_act___024root___trigger_anySet__act
|
||||
-V{t#,#}End-of-eval cleanup
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import vltest_bootstrap
|
|||
|
||||
test.scenarios('simulator')
|
||||
|
||||
test.compile(verilator_flags2=["--binary"])
|
||||
test.compile(verilator_flags2=["--binary", "--no-sched-zero-delay"])
|
||||
|
||||
test.execute(expect_filename=test.golden_filename)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import vltest_bootstrap
|
|||
|
||||
test.scenarios('simulator')
|
||||
|
||||
test.compile(verilator_flags2=["--binary"])
|
||||
test.compile(verilator_flags2=["--binary", "--no-sched-zero-delay"])
|
||||
|
||||
test.execute(expect_filename=test.golden_filename)
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,6 @@ test.scenarios('simulator')
|
|||
|
||||
test.compile(verilator_flags2=["--exe --main --timing"])
|
||||
|
||||
test.execute(fails=True, expect_filename=test.golden_filename)
|
||||
test.execute(check_finished=True)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -4,23 +4,28 @@
|
|||
// SPDX-FileCopyrightText: 2022 Antmicro Ltd
|
||||
// SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
module t;
|
||||
module top;
|
||||
logic v;
|
||||
int num;
|
||||
time t;
|
||||
|
||||
initial begin
|
||||
num = 1;
|
||||
#1;
|
||||
if (v) $stop;
|
||||
num = 21;
|
||||
t = $time;
|
||||
// Zero delay should postpone the execution and resume it after
|
||||
// evaluating combinational logic which would update `v`. However,
|
||||
// currently we can't postpone the resumption in the current timeframe
|
||||
// past the combinatorial logic evaluation as that is intertwined with
|
||||
// NBA evaluation and partitioned for multithreading. This causes `v`
|
||||
// to not have its value updated despite being checked after #0 delay.
|
||||
#0 if (v) $finish;
|
||||
$stop;
|
||||
#0;
|
||||
if (!v) $stop;
|
||||
if (t != $time) $stop;
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
|
||||
always_comb v = (num == 21);
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
%Warning: t/t_timing_zerodly_unsup.v:22: Encountered #0 delay. #0 scheduling support is incomplete and the process will be resumed before combinational logic evaluation.
|
||||
%Error: t/t_timing_zerodly_unsup.v:23: Verilog $stop
|
||||
Aborting...
|
||||
|
|
@ -11,7 +11,7 @@ import vltest_bootstrap
|
|||
|
||||
test.scenarios('simulator')
|
||||
|
||||
test.compile(verilator_flags2=["--binary"])
|
||||
test.compile(verilator_flags2=["--binary", "--no-sched-zero-delay"])
|
||||
|
||||
test.execute()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue