> Postponed can help with the ordering of things when there's an event, but
> it can't do anything about the first time the process runs at the start
> of simulation, and that's when the assertion fails.
The spec treats both cases: postponed are executed once all normal
processes catched in the wait during simulation start, at time 0 and,
secondly, prior to time advance (you call it event case). So, if you
have a single assignment
process begin
singleton <= generate_x_value;
wait;
end process;
Since this process generates an event and postponed processes start
after it suspends in the wait, for both of these reasons your postponed
assertion
assert postponed check(singleton)
must work as postponed.
Postponed assertion has only one flaw because start case is treated
specifically. Executing postponed once all processes started, as opposed
to time advance event, creates situation that there are delta frames to
be executed, yet, specification forces your postponed to run once
simulation starts. This requires an ugly workaround,
http://computer-programming-forum.com/42-vhdl/3edcb21668330593.htm
HardLook at that workaround and note that your workaround is not that
ugly. I would live with your workaround. Yet, IMO, no workarounds are
needed in your case since postponed must do its job. That is why I am
asking.