开始时激活所有进程由初始生成进程节点时自动形成。在初始化完成之后,以后的各模拟周期中只有被激活的进程才能运行。这时,使用信号的当前值,以及外部信号相应时刻的激励值。
模拟激励数据可以由VHDL语言作为一个Entity描述,称为测试基准(Test Bench)。其描述方法与其它实体完全一样,主要用信号赋值语句表示输入波形数据。被模拟的电路作为它的一个例化元件调用。但为了方便用户,模拟器本身一般也可以用文件形式或图形形式建立和施加激励波形数据。当有作为测试基准时测试基准本身作为主模块,而当使用其它形式动态施加激励波形数据时,顶层的Entity描述即为主模块。这样整个电路的描述可以看成有主模块和它所引用的各级子模块组成的。
总体模拟算法与逻辑模拟相类似,每一个模拟周期中,包含有信号更新和元件模块计算两部分。信号更新时处理决断信号。决断信号是具有多个驱动源的信号。在每个驱动源求得新的信号值之后,还不是真正的有效值,称为驱动值。需要在所有的驱动源都求得新的驱动值之后,执行决断函数,求出决断信号的有效值。在模拟过程中,对决断信号各个驱动源进行信号赋值(信号赋值语句或模块调用中的输出端口的信号传送)时,建立该信号的临时事件,把求得的驱动值记录下来。在每一个模拟周期,当更新该信号的状态值时,取出各驱动源的驱动值,执行决断函数求出其有效值。
简单信号和复合信号都可以是决断信号。复合决断信号的有效值是各个子元素有效值的集合。复合决断信号的决断函数中应该指明各子元素如何根据各驱动源的相应元素的驱动值求出该元素的有效值。但是一旦一个复合信号被说明是一个决断信号,即使子元素本身又被说明是一个决断信号,该子元素的决断信号说明也是无效的,只能服从复合信号所指明的决断函数。而如果复合信号本身不是决断信号,则其子元素的决断信号说明是有效的。
|