• PROCESS cannot have a sensitivity list when WAIT is employed.
• Three flavours of WAIT statements are:
– WAIT UNTIL
– WAIT ON
– WAIT FOR
Syntax
WAIT UNTIL signal_condition;
• The WAIT UNTIL statement accepts only one signal, thus being more appropriate for synchronous code than asynchronous.
• Since the PROCESS has no sensitivity list in this case, WAIT UNTIL must be the first statement in the PROCESS.
• The PROCESS will be executed every time the condition is met.
Example ( 8-bit register )
PROCESS -- no sensitivity list
BEGIN
WAIT UNTIL (clk'EVENT AND clk='1');
IF (rst='1') THEN
op <= "00000000";
ELSIF (clk'EVENT AND clk='1') THEN
op <= inp;
END IF;
END PROCESS;
Output and Inference
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBIonVlV_x6jVXztMijFmoHbp7N-_G76X1Ybmhf5ASYrUEIZnBgDy8KjQ998R5FZx7QszR8Uid0piJK-O52WpJCuHSvYqLn3DPWoKHTJR78kFUqo-PJsFA0hJC30b4Jmcmj9RpAHyXvmYZ/s320/8+bit+outp.png)
Syntax
WAIT ON signal1 [, signal2, ... ];
• The WAIT ON statement accepts multiple signals.
• The PROCESS is put on hold until any of the signals listed changes.
Example ( 8-bit register )
PROCESS
BEGIN
WAIT ON clk, rst;
IF (rst='1') THEN
op <= "00000000";
ELSIF (clk'EVENT AND clk='1') THEN
op <= inp;
END IF;
END PROCESS;
Output and Inference
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUdLLtD2TDZtBk0-1s34XFEJWLR_TmvjJAw0DcSm7MJ10sKtN93Tew6YKPIfACBNZxPMyZyXfAbHLapaHRrHEymAEejG-db0-gk9lVzwMRa_SWEJGq-M_z5SONuECt5ZIhu9idKd8ZLdaX/s320/output+2.png)
DFF revisited with WAIT!
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY dff IS
PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC);
END dff;
ARCHITECTURE dff OF dff IS
BEGIN
PROCESS
BEGIN
WAIT ON rst, clk;
IF (rst='1') THEN
q <= '0';
ELSIF (clk'EVENT AND clk='1') THEN
q <= d;
END IF;
END PROCESS;
END dff;
Output and Inference
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzQLIFFTxFCuAYH0kqaXTsk3A-Lh6ByDdHjnHmQEOLReS1M9C3K7wEBBXQx1ODNllUwASQxbocr__XD6uBfEB6Uh9P9OA3J9OMy8vNIQEoeAG8E53eot5pNIVVY_B3uyvrMRvco6Ua94B2/s320/output+3.png)
Syntax
WAIT FOR time;
• WAIT FOR is intended for simulation only
(waveform generation for test-benches)
information shared by www.irvs.info