Re: [sv-ec] final block scheduling

From: Steven Sharp <sharp_at_.....>
Date: Mon Aug 29 2005 - 15:37:18 PDT
My opinion matches Arturo's and Gord's.  Once the last statement in the
last final block executes, the simulator must exit.  Any $strobes scheduled
from the final blocks aren't going to happen.

You might as well use $display instead of $strobe anyway.  You aren't going
to get any further changes to the signal values after the $display, because
the simulator will exit before those happen also.  If you wanted to see what
the values would have been at the end of the cycle if you hadn't done a
$finish, then you are going to have to wait until after the end of the
cycle to do the $finish, just as you have been.  Final blocks aren't designed
to change that.

Note that the same issue would come up with a nonblocking assignment in
a final block, which is similarly useless.  This gets ruled out because
the 1364 LRM says that NBAs are illegal in functions.  It neglects to
make $strobe illegal in functions.  There are probably other similar
cases.  For example, does the P1800 LRM say that fork/join_none is
illegal in functions?  This is another construct that technically produces
no blocking delay, but can schedule things off in the future (that won't
ever happen if scheduled from a final block).

Steven Sharp
sharp@cadence.com
Received on Mon Aug 29 15:37:39 2005

This archive was generated by hypermail 2.1.8 : Mon Aug 29 2005 - 15:40:38 PDT