由于VHDL语言中wait语句有多种不同的应用格式,在讨论wait语句的合并之前,有必要先引入wait语句的标准格式的定义。
  定义(wait语句的标准格式):给定一条wait 语句w,则w对应的标准格式w'应满足:w'的敏感信号子句和条件子句中分别显式列出w的敏感信号和w唤醒进程的条件。
  根据这一定义以及VHDL语言中wait语句的含义,wait语句的标准格式或者是包括敏感信号子句和条件子句,或者只有条件子句。
  表6.4给出了常见的各种wait 语句及其对应的标准格式,其中S,S_1,S_2为信号,V为变量。
  表6.4 各种wait语句的标准格式
一般wait语句w 对应的标准格式w'
wait on S; wait on S until TRUE;
wait until (S = 1); wait on S until (S=1);
wait on S_1 until (S_2 = 1); wait on S_1, S_2 until (S_2 = 1);
wait until (V = 1); wait until FALSE;

  下面我们在提到wait语句时,如果不特别说明,一般均指其标准格式。
  对于含多条wait语句的进程语句P,我们希望用一条wait语句来代替该进程语句中的所有wait语句,产生一个具有和进程P相同行为的进程P'。也就是说,当且仅当原进程语句中wait语句满足条件恢复执行时,合并后的wait语句才会恢复执行。并且,合并后的wait语句应该放在进程P'的什么位置,也是需要研究的。
  事实上,一个进程被挂起时,总是停在某一条wait语句处。因此,对于合并后的wait语句而言,需要增加一些信息,以便知道当前进程停留在哪一条wait语句处。为此,引入一个VHDL变量CW (Current Wait),来记录当前进程的挂起位置。并且,将进程中原来的wait语句从1开始编号,0则表示进程的开始。因此, CW的范围从0到进程P中的wait语句数。进程P开始执行时,CW=0,当P在第i个wait语句被挂起时,CW=i。
  假定进程中有n个wait语句,每个wait语句的敏感信号列表为Si,条件子句为Ci,这样进程第i个wait语句执行条件是Si有事件并且Ci满足条件。令W为合并后的wait语句,其标准格式为 wait S until C, 则:

  从中可以看出显式的敏感事件列表实际上不需要,因条件子句已经蕴涵了敏感事件列表。其中CW=0表示模拟开始时,进程执行的情况。我们将合并后的wait语句称为合并wait语句。
  在我们给出的例子中:
    wait on M unitl (not M); -- CW = 1
    wait on N, M until (N or M) -- CW = 2
  这样,相应的合并wait语句是:
    wait unitl (( CW = 0 ) or
          ((CW = 1 ) and ( not M ) and M'event ) or
          ((CW = 2 ) and ( N or M ) and ( N'event or M'event ) ) );