Hi,
I am new to VHDL and really don't understand the need for delata delays
in concurrent statements. I, infact understand the need for delta
delays in "process" statements. Are delta delays applicable only in
"process" statements?
Delta delay affects every assignment to a signal.
A concurrent signal assignment is a process. Take,
for example:
architecture foo of bar is
signal a,b,c: bit;
begin
a <= b and c;
end;
The concurrent assignment "a <= b and c;" is EXACTLY
equivalent to the process
process(b,c) begin
a <= b and c;
end process;
which, in its turn, is exactly equivalent to
process begin
a <= b and c;
wait on b,c;
end process;
In all three cases, the signal assignment suffers a delta delay.
Delta delays allow a discrete-event simulator to be deterministic
without the need for (explicit) mutual exclusion mechanisms.
As Verilog shows, it is possible to define a simulator in which
some signal assignments do NOT suffer delta delays, and yet
retain deterministic behaviour if the user is careful enough.
The delta delay mechanism is available in Verilog, through
nonblocking assignment, and is effectively essential when
writing clock-synchronous descriptions. I say "effectively
essential" because there are other ways to write clock-
synchronous models, without using nonblocking
assignment; but they are extremely clumsy and
error-prone.
--
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.