Timingmodel Wait
Timingmodel Wait
Start
Start Simulation
Simulation
Delay
Update
Update Signals
Signals Execute
Execute Processes
Processes
4/10/2007 End
End Simulation
Simulation
<1>
DSD,USIT,GGSIPU
Delay Types
Input Outpu
dela t
y <1>
4/10/2007 DSD,USIT,GGSIPU
Delta Delay
Output
Output <=
<= NOT
NOT Input;
Input;
--
-- Output
Output assumes
assumes new
new value
value in
in one
one delta
delta cycle
cycle
Supports a model of concurrent VHDL process execution
Order in which processes are executed by simulator does not
affect simulation output
B
1 AND
ANDgate
gateevaluated
evaluatedfirst:
first:
NAND
NANDgate
gateevaluated
evaluatedfirst:
first: IN:
IN:1->0
1->0
IN:
IN:1->0
1->0 A:
A: 0->1
0->1
A:
A: 0->1
0->1 C:
C: 0->1
0->1
B:
B: 1->0
1->0 B:
B: 1->0
1->0 <1>
4/10/2007 DSD,USIT,GGSIPU
C: 0->0
C: 0->0 C:
C: 1->0
1->0
Delta Delay
An Example with Delta Delay
B
1
Using
Usingdelta
deltadelay
delayscheduling
scheduling
Time Delta Event
0 ns 1 IN: 1->0
eval INVERTER
2 A: 0->1
eval NAND, AND
3 B: 1->0
C: 0->1
eval AND
4/10/2007 DSD,USIT,GGSIPU
4 C: 1->0
<1>
1 ns
Transport Delay
Input Output
Input
Output
4/10/2007 DSD,USIT,GGSIPU <1>
0 5 10 15 20 25 30
35
Inertial delay model
Example:
Z <= reject 4ns inertial A after 10 ns;
Output
Input
Output
0 5 10 15 20 25 30
4/10/2007 35
DSD,USIT,GGSIPU <1>
Note: the REJECT feature is new to VHDL 1076-1993
4/10/2007 DSD,USIT,GGSIPU <1>
Signal Waveforms
For example:
Phase1 <= ‘0’, ‘1’ after 8ns, ‘0’ after 13 ns, ‘1’ after 50 ns;
A more general syntax:
Examples:-
1. wait on A, B, C;
2. wait until A= B;
3. wait for10 ns;
4. wait on clock for20 ns;
5. wait until SUM >100 for50 ms;
– the process suspends for a maximum of 50 ms until
the value of signal SUM is greater than 100. – If the
Boolean condition is not satisfied for 50 ms, the process
resumes from the statement following the wait
statement
4/10/2007 DSD,USIT,GGSIPU <1>
6. wait on clock until SUM> 100;
–continue to wait if SUM <= 100 the process suspends
for a maximum of 50 ms until the value of signal SUM
is greater than 100.
–If the Boolean condition is not satisfied for 50 ms, the
process resumes from the statement following the wait
statement
WAIT0 : process
begin
wait on DATA;
sig_A <= DATA;
wait for 0 ns;
sig_B <= Sig_A;
end process;
The format:
null;