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.comReceived 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