| |
SystemVerilog Instance Worlds
在生成UVM测试平台,特别是DUT - 测试平台之间通信时,了解SystemVerilog的两个不同“实例领域”之间的差异以及创建事物的顺序是有帮助的。
SystemVerilog Simulation Steps or Phases
SystemVerilog仿真包含三个步骤或阶段(不要与UVM phase混淆):compilation, elaboration and run-time。
【此处需一幅图】
Compilation是解析和分析代码的地方。
Elaboration是将设计组件绑定在一起的过程。除其他外,Elaboration包括创建实例化,计算参数值,解析分层名称和连接nets。通常在引用compilation and elaboration阶段时,它们不会被区分,但通常直接被称为compilation。换句话说,“编译时错误”可能指的是run-time阶段之前的任何时间的错误。
Run-time被认为是仿真实际执行或运行过程执行、仿真时间提前等。
诸如“prior to simulation”或“before simulation”之类的短语通常用于指代在run-time之前,然而,“during simulation”发生的编译和细化步骤,以指代run-time步骤或阶段。
Static Instance World
在仿真开始之前,在elaboration期间会创建许多SystemVerilog组件实例。一旦仿真开始,这些组件的实例既不会再次被创建也不会被破坏,而是会在整个仿真过程中被保持。我们将此称为静态实例领域。属于这个领域的组件是模块实例,接口实例,checker instances,primitive instances和设计层次结构的顶层模块实例。
Dynamic Instance World
在仿真期间可能创建和销毁的组件实例(SystemVerilog run phase)属于所谓的动态实例领域。属于这个领域的组件是classes。
但是有一个例外。声明为static的Class methods and properties 在runtime之前创建。但是,它们【声明为static的class methods和properties】是在静态领域的组件实例之后创建的。
这个例外通常用于在仿真之前创建和初始化 class properties(包括class objects)。这称为静态初始化。UVM factory是静态初始化的对象的一个示例。
Order of Creation
两个实例领域的组件按以下顺序创建:
【此处需一幅图】
在Elaboration期间:
1.静态领域的组件实例
2.Static methods and static properties of classes
在run-time期间:
1.Class instances