Ok you are right, the processes without sensitivity list have to run at the
start. But why have to run the processes with sensitivity list?
So that they can update their outputs to match the *initial* value
of their inputs. Initialisation of a VHDL signal (either its
default initialisation, or an explicit initialisation in its
declaration) happens *before* simulation begins, and does not
cause an event on the signal. If processes sensitive to those
signals did not run at the start, their outputs would keep
their initial values rather than the values that the process
computes from the initial values of its inputs.
Once the first set of process runs occurs, it typically
causes events on the processes' outputs and therefore
triggers another round of process execution. In this way,
the entire model network of processes and signals reaches
its correct stable initial values at time zero.
SystemVerilog has given itself some interesting problems
precisely because Verilog does NOT work in this way. When
true initialisation (before time 0) was added to SystemVerilog,
it did not play well with Verilog processes that typically have
a "sensitivity" event control at their start, and therefore
stall until there is an event on one of their inputs.
--
Jonathan Bromley, Consultant
DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services
Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
(e-mail address removed)
http://www.MYCOMPANY.com
The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.