Subject: Re: [sv-ec] final block proposal to SV-EC.
From: Steven Sharp (sharp@cadence.com)
Date: Mon Jan 27 2003 - 18:31:50 PST
I have an issue with the statement
"Since final blocks cannot have any delay, they execute as a single thread."
I assume that this is an attempt to say that the final block will not suspend
during execution. However, the final block can write to variables, which
may have fanout. A simulator may execute fanout of a variable immediately
as part of updating its value. Preventing this requires either not doing
such optimizations anywhere, or treating writes to variables in final blocks
differently from other writes to variables. The first impacts performance,
and the second requires writing special case code, which is an implementation
and maintenance burden.
The statement is false anyway, since the final block can contain a fork-join
as long as the subprocesses contain no delays. This would require running
multiple threads, and might require suspending the final block thread until
the child processes complete.
I also have an issue with the statement
"The ordering of execution of multiple final blocks is deterministic, but
arbitrary."
What is the intended meaning of this statement? As written, it is simply
true, since all software is deterministic (even if we don't always understand
the conditions that led to its behavior). It doesn't even mean that the
order will be repeatable from run to run, since it could be deterministic
but based on the current system clock time or how many runs have been done.
How could you distinguish this from the order being nondeterministic?
Steven Sharp
sharp@cadence.com
This archive was generated by hypermail 2b28 : Mon Jan 27 2003 - 18:32:26 PST