本章介绍了模拟验证的概念和算法。 学习本章,要从计算机如何模仿一个真实电路的运行过程着手研究。着重掌握逻辑模拟和VHDL模拟的模型和算法,并通过对这两种模拟算法的学习,理解模拟算法的基本着眼点。从而读者在今后遇到其他级别的模拟器,或者遇到算法不同的其他模拟器,可以举一反三,较快地理解新的模拟器的原理和算法。
  所谓模拟验证,是指对实际数字系统加以抽象,提取其模型,将其输入计算机。然后将外部激励信号施加于此模型,通过观察模型在外部激励信号作用下的反应判断该数字系统是否实现了预期的功能。
  要首先了解逻辑模拟的概念。进而掌握逻辑模拟技术和VHDL模拟技术。在学习的时候,要把握内部模型及模拟方法的关系,另外对比逻辑模拟和VHDL模拟的共同点。读者应参照所举的例子,自己找几个例子,按照算法规定的步骤,把模拟过程走一遍,就可以较深入地体现模拟算法的本质。要注意算法如何体现电路动作的并行性,如何体现选择追踪思想。
  逻辑模拟的内部模型和模拟算法是本章的重点。要求同学切实掌握。其中事件驱动模拟算法是应用最广泛的算法,而且许多其他级别的模拟器也常常是在该算法的基础上发展而来。我们可以看到,本章介绍的VHDL模拟算法就是在逻辑模拟算法的基础上发展而来的。
  事件驱动模拟算法的两个最基本的要素是模拟周期的概念和事项处理表的安排和处理过程。抓住这两点就抓住了关键,可以深入理解算法的核心。要真正理解事件和事项处理的概念及其作用。要掌握事项处理冲突和惯性延迟冲突如何通过事项处理表解决。
  VHDL模拟与逻辑模拟有很大的联系。VHDL模拟的核心使进程的处理。进程与逻辑电路中的元件有着相类似的性质,进程之间由信号进行数据交换。所以VHDL模拟以进程为基础实现模拟驱动。同样有信号更新和处理事项处理组成的模拟周期。但进程的执行比逻辑电路中的元件计算复杂得多。同学们要掌握进程的基本概念,即进程在WAIT语句的控制下实现激活与挂起。层次式模拟的关键是一个元件模块在多个不同的地方调用,使得在模拟过程中对于不同调用路径该元件状态和相关信号的值不同,因而有路径问题以及全局信号、局部信号的概念。
  本章仅仅以逻辑模拟和VHDL模拟为例,介绍模拟模型和模拟算法。模拟算法适于模拟模型密切相关的,并根据模拟模型设计模拟算法。事件驱动类算法适合于信号传播的特性。对于其他类型的模拟模型,要用不同的方法。相信同学们在学习完本章之后,能够举一反三,根据模型的特点,根据硬件的相关知识,能够理解其他的模拟算法和模拟过程,或者在必要的时候自己设计合适的模拟算法。
  模拟验证有着广泛的应用,但也有严重的缺点。它的局限性在于:模拟器的功能值时表现在某彝族外部激励信号作用下电路的行为,至于加什么样的外部信号以及在该外部激励信号作用下系统反应的正确与否,完全由设计者自己决定。因此,很难保证电路再经过模拟之后,功能就一定正确。形式验证则正好在这一点上尤其独特之处。因而两者相辅相成,不可或缺。形式验证将在第6章介绍。