Optimize timing-delayed queue (#4584). (#4669)

This commit is contained in:
Wilson Snyder 2023-11-11 10:04:10 -05:00 committed by GitHub
parent f3ae4b8786
commit 9a0254a118
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 11287 additions and 138 deletions

View File

@ -16,6 +16,7 @@ Verilator 5.019 devel
* Support compilation with precompiled headers with Make and GCC or CLang.
* Change include of systemc instead of systemc.h (#4622) (#4623). [Chih-Mao Chen]
This may require that SystemC programs add 'using namespace sc_core', 'using namespace sc_dt'.
* Optimize timing-delayed queue (#4584). [qrqiuren]
**Minor:**

View File

@ -53,27 +53,19 @@ void VlCoroutineHandle::dump() const {
//======================================================================
// VlDelayScheduler:: Methods
#ifdef VL_DEBUG
void VlDelayScheduler::VlDelayedCoroutine::dump() const {
VL_DBG_MSGF(" Awaiting time %" PRIu64 ": ", m_timestep);
m_handle.dump();
}
#endif
void VlDelayScheduler::resume() {
#ifdef VL_DEBUG
VL_DEBUG_IF(dump(); VL_DBG_MSGF(" Resuming delayed processes\n"););
#endif
while (awaitingCurrentTime()) {
if (m_queue.front().m_timestep != m_context.time()) {
if (m_queue.begin()->first != m_context.time()) {
VL_FATAL_MT(__FILE__, __LINE__, "",
"%Error: Encountered process that should've been resumed at an "
"earlier simulation time. Missed a time slot?");
}
// Move max element in the heap to the end
std::pop_heap(m_queue.begin(), m_queue.end());
VlCoroutineHandle handle = std::move(m_queue.back().m_handle);
m_queue.pop_back();
// Remove earliest handle
VlCoroutineHandle handle = std::move(m_queue.begin()->second);
m_queue.erase(m_queue.begin());
handle.resume();
}
}
@ -82,7 +74,7 @@ uint64_t VlDelayScheduler::nextTimeSlot() const {
if (empty()) {
VL_FATAL_MT(__FILE__, __LINE__, "", "%Error: There is no next time slot scheduled");
}
return m_queue.front().m_timestep;
return m_queue.begin()->first;
}
#ifdef VL_DEBUG
@ -91,7 +83,10 @@ void VlDelayScheduler::dump() const {
VL_DBG_MSGF(" No delayed processes:\n");
} else {
VL_DBG_MSGF(" Delayed processes:\n");
for (const auto& susp : m_queue) susp.dump();
for (const auto& susp : m_queue) {
VL_DBG_MSGF(" Awaiting time %" PRIu64 ": ", susp.first);
susp.second.dump();
}
}
}
#endif

View File

@ -36,7 +36,7 @@
# endif
# include <experimental/coroutine>
namespace std {
using namespace experimental; // Bring std::experimental into the std namespace
using namespace experimental; // Bring std::experimental into the std namespace
}
#else
# if defined __clang__ && defined __GLIBCXX__ && !defined __cpp_impl_coroutine
@ -44,7 +44,7 @@
# endif
# include <coroutine>
# if __clang_major__ < 14
namespace std { // Bring coroutine library into std::experimental, as Clang < 14 expects it to be there
namespace std { // Bring coroutine library into std::experimental, as Clang < 14 expects it to be there
namespace experimental {
using namespace std;
}
@ -154,19 +154,8 @@ public:
class VlDelayScheduler final {
// TYPES
struct VlDelayedCoroutine {
uint64_t m_timestep; // Simulation time when the coroutine should be resumed
VlCoroutineHandle m_handle; // The suspended coroutine to be resumed
// Comparison operator for std::push_heap(), std::pop_heap()
bool operator<(const VlDelayedCoroutine& other) const {
return m_timestep > other.m_timestep;
}
#ifdef VL_DEBUG
void dump() const;
#endif
};
using VlDelayedCoroutineQueue = std::vector<VlDelayedCoroutine>;
// Time-sorted queue of timestamps and handles
using VlDelayedCoroutineQueue = std::multimap<const uint64_t, VlCoroutineHandle>;
// MEMBERS
VerilatedContext& m_context;
@ -186,7 +175,7 @@ public:
bool empty() const { return m_queue.empty(); }
// Are there coroutines to resume at the current simulation time?
bool awaitingCurrentTime() const {
return !empty() && m_queue.front().m_timestep <= m_context.time();
return !empty() && m_queue.begin()->first <= m_context.time();
}
#ifdef VL_DEBUG
void dump() const;
@ -202,9 +191,7 @@ public:
bool await_ready() const { return false; } // Always suspend
void await_suspend(std::coroutine_handle<> coro) {
queue.push_back({delay, VlCoroutineHandle{coro, process, fileline}});
// Move last element to the proper place in the max-heap
std::push_heap(queue.begin(), queue.end());
queue.emplace(delay, VlCoroutineHandle{coro, process, fileline});
}
void await_resume() const {}
};

View File

@ -83,8 +83,8 @@
-V{t#,#} Awaiting time 3: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 3: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
@ -148,9 +148,9 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 6: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 7: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -192,9 +192,9 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 7: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 9: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:17
@ -230,8 +230,8 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 9: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -288,9 +288,9 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 12: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 13: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:13
@ -360,9 +360,9 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 12: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 12: Process waiting at t/t_timing_sched.v:50
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 13: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50
@ -408,8 +408,8 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 13: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 15: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:17
@ -587,8 +587,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 21: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -644,8 +644,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 24: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:13
@ -688,8 +688,8 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 24: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -731,8 +731,8 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 27: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:17
@ -867,8 +867,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 31: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17
@ -985,9 +985,9 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 34: Process waiting at t/t_timing_sched.v:50
-V{t#,#} Awaiting time 36: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 37: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 37: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50
-V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:50
@ -1102,8 +1102,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 39: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -1208,8 +1208,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 43: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 45: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 45: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17
@ -1287,8 +1287,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 45: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -1424,8 +1424,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 51: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -1481,8 +1481,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 54: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
@ -1525,8 +1525,8 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 57: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17
@ -1635,8 +1635,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 57: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -1778,8 +1778,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 63: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -1835,8 +1835,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 67: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 67: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:13
@ -1882,8 +1882,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 67: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 69: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17
@ -2056,8 +2056,8 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 75: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#}+ Vt_timing_debug1___024root___eval_act
@ -2182,15 +2182,15 @@
-V{t#,#}+ Vt_timing_debug1___024root___timing_commit
-V{t#,#}+ Vt_timing_debug1___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:50
-V{t#,#} Awaiting time 79: Process waiting at t/t_timing_sched.v:17
-V{t#,#} Awaiting time 88: Process waiting at t/t_timing_sched.v:13
-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:50
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:52
*-* All Finished *-*
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10
-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50
-V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:50
-V{t#,#}+ Vt_timing_debug1___024root___eval_act

View File

@ -110,13 +110,13 @@
-V{t#,#} Awaiting time 5: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 10: Process waiting at t/t_timing_class.v:173
-V{t#,#} Awaiting time 10: Process waiting at t/t_timing_class.v:247
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:257
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:119
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:252
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:257
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
@ -173,22 +173,22 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 10: Process waiting at t/t_timing_class.v:247
-V{t#,#} Awaiting time 10: Process waiting at t/t_timing_class.v:173
-V{t#,#} Awaiting time 10: Process waiting at t/t_timing_class.v:247
-V{t#,#} Awaiting time 10: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:119
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:252
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:257
-V{t#,#} Awaiting time 10: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:119
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:247
-V{t#,#} Process forked at t/t_timing_class.v:246 finished
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:173
-V{t#,#}+ Vt_timing_debug2_t__03a__03aDelay10::__VnoInFunc_do_sth_else
-V{t#,#}+ Vt_timing_debug2_t__03a__03aDelay20::__VnoInFunc_do_delay
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:247
-V{t#,#} Process forked at t/t_timing_class.v:246 finished
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
@ -230,14 +230,14 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 15: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:252
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:174
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:119
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:252
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:257
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:174
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
@ -294,22 +294,22 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:252
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:119
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:174
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:252
-V{t#,#} Awaiting time 20: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:257
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:174
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:119
-V{t#,#}+ Vt_timing_debug2_t__03a__03aEventClass::__VnoInFunc_wake
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:252
-V{t#,#}+ Vt_timing_debug2_t__03a__03aForkDelayClass::new
-V{t#,#}+ Vt_timing_debug2_t__03a__03aForkDelayClass::_ctor_var_reset
-V{t#,#} Process forked at t/t_timing_class.v:251 finished
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:119
-V{t#,#}+ Vt_timing_debug2_t__03a__03aEventClass::__VnoInFunc_wake
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
@ -396,10 +396,10 @@
-V{t#,#} Awaiting time 25: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:257
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:174
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
@ -488,21 +488,21 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:174
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:257
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:174
-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:257
-V{t#,#}+ Vt_timing_debug2_t__03a__03aForkDelayClass::__VnoInFunc_do_delay
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:174
-V{t#,#}+ Vt_timing_debug2_t__03a__03aDelay20::__VnoInFunc_do_sth_else
-V{t#,#}+ Vt_timing_debug2_t__03a__03aDelay40::__VnoInFunc_do_delay
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:257
-V{t#,#}+ Vt_timing_debug2_t__03a__03aForkDelayClass::__VnoInFunc_do_delay
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
@ -566,12 +566,12 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 35: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
@ -661,12 +661,12 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:120
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 40: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:120
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
@ -752,11 +752,11 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 45: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
@ -817,11 +817,11 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:122
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 50: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:122
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
@ -865,11 +865,11 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 60: Process waiting at t/t_timing_class.v:123
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
@ -912,11 +912,11 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 60: Process waiting at t/t_timing_class.v:123
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 60: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:123
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
@ -980,9 +980,9 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 65: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:76
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
@ -1025,17 +1025,13 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:76
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:238
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:76
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 70: Process waiting at t/t_timing_class.v:175
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:76
-V{t#,#} Process forked at t/t_timing_class.v:76 finished
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:238
-V{t#,#} Process forked at t/t_timing_class.v:256 finished
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:250
@ -1047,6 +1043,10 @@
-V{t#,#}+ Vt_timing_debug2_t__03a__03aNoDelay::__VnoInFunc_do_sth_else
-V{t#,#}+ Vt_timing_debug2_t___eval_initial__TOP__t__6____Vfork_1__0
-V{t#,#}+ Vt_timing_debug2_t__03a__03aAssignDelayClass::__VnoInFunc_do_assign
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:76
-V{t#,#} Process forked at t/t_timing_class.v:76 finished
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
@ -1094,15 +1094,15 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_commit
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 75: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 75: Process waiting at t/t_timing_class.v:224
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 75: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:190
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:224
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:224
-V{t#,#}+ Vt_timing_debug2___024root___eval_act
-V{t#,#}+ Vt_timing_debug2___024root___eval_phase__act
-V{t#,#}+ Vt_timing_debug2___024root___eval_triggers__act
@ -1134,8 +1134,8 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:136
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:190
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 80: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:136
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:190
@ -1211,8 +1211,8 @@
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 90: Process waiting at t/t_timing_class.v:190
-V{t#,#} Awaiting time 90: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 100: Process waiting at t/t_timing_class.v:231
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:190
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
@ -1248,8 +1248,8 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 95: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 100: Process waiting at t/t_timing_class.v:231
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:131
-V{t#,#}+ Vt_timing_debug2_t__03a__03aClkClass::__VnoInFunc_flip
@ -1283,8 +1283,8 @@
-V{t#,#}+ Vt_timing_debug2___024root___timing_resume
-V{t#,#} Delayed processes:
-V{t#,#} Awaiting time 100: Process waiting at t/t_timing_class.v:231
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Awaiting time 100: Process waiting at t/t_timing_class.v:131
-V{t#,#} Awaiting time 101: Process waiting at t/t_timing_class.v:274
-V{t#,#} Resuming delayed processes
-V{t#,#} Resuming: Process waiting at t/t_timing_class.v:231
*-* All Finished *-*

File diff suppressed because it is too large Load Diff

25
test_regress/t/t_timing_osc.pl Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env perl
if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
#
# Copyright 2023 by Wilson Snyder. This program is free software; you
# can redistribute it and/or modify it under the terms of either the GNU
# Lesser General Public License Version 3 or the Perl Artistic License
# Version 2.0.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
scenarios(simulator => 1);
compile(
verilator_flags2 => ["--exe --main --timing --trace"],
make_main => 0,
);
execute(
check_finished => 1,
);
vcd_identical($Self->trace_filename, $Self->{golden_filename});
ok(1);
1;

View File

@ -0,0 +1,72 @@
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2023 by Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0
`define STRINGIFY(x) `"x`"
module tb_osc;
timeunit 1s;
timeprecision 1fs;
logic dco_out;
bhv_dco dco (
// Inputs
.coarse_cw(8.0),
.medium_cw(8.0),
.fine_cw(32.0),
// Outputs
.rf_out(dco_out)
);
initial begin
$dumpfile(`STRINGIFY(`TEST_DUMPFILE));
$dumpvars;
`ifdef TEST_BENCHMARK
#200ns;
`else
#3ns;
`endif
$write("*-* All Finished *-*\n");
$finish;
end
endmodule
module bhv_dco (
input real coarse_cw,
input real medium_cw,
input real fine_cw,
output logic rf_out
);
parameter realtime coarse_ofst = 600ps;
parameter realtime coarse_res = 60ps;
parameter realtime medium_ofst = 130ps;
parameter realtime medium_res = 6ps;
parameter realtime fine_ofst = 70ps;
parameter realtime fine_res = 0.2ps;
timeunit 1s;
timeprecision 1fs;
realtime coarse_delay, medium_delay, fine_delay, jitter;
assign coarse_delay = 0.5 * (coarse_cw * coarse_res + coarse_ofst );
assign medium_delay = 0.5 * (medium_cw * medium_res + medium_ofst );
assign fine_delay = 0.5 * ( fine_cw * fine_res + fine_ofst + jitter);
assign jitter = 0;
logic coarse_out, medium_out, fine_out;
initial coarse_out = 0;
always @ (fine_out) coarse_out <= #coarse_delay ~fine_out;
assign #medium_delay medium_out = ~coarse_out;
assign #fine_delay fine_out = ~medium_out;
assign #50ps rf_out = fine_out;
endmodule

View File

@ -1,6 +1,5 @@
$version Generated by VerilatedVcd $end
$timescale 1ps $end
$scope module TOP $end
$scope module t $end
$var wire 32 * CLK_PERIOD [31:0] $end
@ -87,10 +86,3 @@ b00000000000000000000000000000101 +
1%
1'
0(
0)
#105
1(
#110
1'
0(
1)

View File

@ -36,10 +36,11 @@ module t;
while (b) begin
c = ~c;
-> ev ;
-> ev;
#CLK_PERIOD;
end
$write("[%0t] Done\n", $time);
$write("*-* All Finished *-*\n");
$finish;
end

View File

@ -1,5 +1,5 @@
$date
Fri Mar 31 18:34:51 2023
Sun Nov 5 12:08:16 2023
$end
$version
@ -94,10 +94,3 @@ $end
0$
1)
1'
0&
#105
1$
#110
0$
1&
1)