You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello @martinwhitaker
Would a .vvp file work for you ?
This is a chip level simulation w/ lotsa modules... when the abend occurs, there is really no information about what register(s) are getting processed / asserted. Are there any runtime options that would display a little more information about what signal(s) are looked at ?
I looked at the iverilog source code in the file delay.cc (line 667)... that small proc has some interesting comments about needing a fix...
thx
Is appears as if you have a multi-bit register and the Rise time is different from the Fall time, the assert will trigger...
Refer to the file vpp\delay.cc, starting at line 652:
/* Given the scheduled output time, create an output event. */
vvp_time64_t use_delay = delay_from_edge(cur_vec4_.value(0),
bit.value(0),
out_at);
/* FIXME: This bases the edge delay on only the least
bit. This is WRONG! I need to find all the possible delays,
and schedule an event for each partial change. Hard! */
for (unsigned idx = 1 ; idx < bit.size() ; idx += 1) {
vvp_time64_t tmp = delay_from_edge(cur_vec4_.value(idx),
bit.value(idx),
out_at);
/* If the current and new bit values match then no delay
* is needed for this bit. */
if (cur_vec4_.value(idx) == bit.value(idx)) continue;
assert(tmp == use_delay);
}
cur_vec4_ = bit;
schedule_generic(this, use_delay, false);
using iverilog v12.0 and Linux RHEL 7
Compiling VVP ...
... VVP file version 12.0 (stable)
Compile cleanup...
... 9733 functors (net_fun pool=786432 bytes)
3442 logic
89 bufif
4 resolv
2133 signals
... 7026 filters (net_fil pool=1048576 bytes)
... 183719 opcodes (4423680 bytes)
... 7403 nets
... 9764 vvp_nets (1048544 bytes)
... 0 arrays (0 words)
... 17 memories
12 logic (111000 words)
5 real (90 words)
... 1096 scopes
... 0.355774 seconds, 82188.0/24008.0/2716.0 KBytes size/rss/shared
Running ...
...execute EndOfCompile callbacks
...propagate initialization events
vvp12: delay.cc:667: virtual void vvp_fun_modpath::recv_vec4(vvp_net_ptr_t, const vvp_vector4_t&, vvp_context_t): Assertion `tmp == use_delay' failed.
Abort (core dumped)
The text was updated successfully, but these errors were encountered: