一 双向和三态问题
任何具有多个驱动器的信号,都需要使用网(net)来建模。网是唯一能够同时解决不同状态和强度驱动同一信号效果的构造。net的行为由内置解析函数定义,该函数使用net上所有驱动器的值和强度。每当其中一个驱动器发生变化时,就会调用该函数来生成解析值。该函数在细化阶段(即仿真开始之前)创建,并基于网类型(如wand、wor、tri1等)来确定。
对变量的过程赋值遵循简单的规则:最后写入的值有效。不允许对网进行过程赋值,因为无法表示你所赋的值应如何与其他驱动器进行解析。同样,也无法表示过程赋值在另一个连续赋值接管之前应保持多久的有效期。
基于类的测试平台不能有连续赋值,因为类是动态创建的对象,不允许有像连续赋值这样的结构构造。虽然一个类可以读取网的解析值,但它只能对变量进行过程赋值。因此,测试平台需要创建一个变量,该变量被连续赋值给一个线网(wire)。
在此示例中,对于基于类的测试平台,会对bus_reg进行过程赋值,而bus则具有解析信号的值。
二 竞态条件和时钟块
如果建模不正确