SystemVerilog Instance Worlds
When generating an UVM testbench and in particular the DUT - testbench communication it is helpful to understand the differences between the two different "instance worlds" of SystemVerilog and the order in which things are created.
SystemVerilog Simulation Steps or Phases
A SystemVerilog simulation consists of three steps or phases (not to be confused with UVM phases): compilation, elaboration and run-time.
Static Instance World
Many SystemVerilog component instances are created during elaboration before the simulation begins. Once simulation begins instances of these components are neither created nor destroyed but remain throughout the simulation. We refer to this as the static instance world. Components that belong to this world are module instances, interface instance, checker instances, primitive instances and the top level of the design hierarchy. 
Dynamic Instance World
Component instances that may be created and destroyed during simulation (the SystemVerilog run phase) belong to what is referred to as the dynamic instance world. Components that belong to this world are classes. There is an exception to this however. Class methods and properties that are eclared as static are created prior to runtime. They are, however, created after the component instances of the static world. This exception is often used to reate and initialize class properties (including class objects) before simulation. This is referred to as static initialization. The UVM factory is an example of an object that is statically initialized.
During Elaboration:
1. Component instances of the static world
2. Static methods and static properties of classes
During run-time:
1. Class instances

SystemVerilog一般提供了四种不同实例之间的通信手段或连接:
ports,pointers, Verilog hierarchical paths, and shared variables,For class based testbenches ports may not be used.
Hierarchical paths are not recommended. Pointers are the common means used. Shared variables may be used in limited areas.
建议共享变量只能用于初始化或状态类型有沟通当信息读写之间明确的关系。

SV creation order的更多相关文章

  1. Chrome-Console( Command Line API Reference)

    来源于:https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference The Comma ...

  2. Inside TSQL Querying - Chapter 1. Logical Query Processing

    Logical Query Processing Phases Summary (8) SELECT (9) DISTINCT (11) <TOP_specification> <s ...

  3. spring mvc 介绍

    Spring MVC Tutorial tag. * * If you do not want to deal with the intricities of the noscript * secti ...

  4. delphi 的一些注意点和知识点

    关于Delphi中产生的文件    编辑阶段: pas/单元文件,dpk/组件包文件,dpr/工程文件,dfm/窗体文件    编译阶段: dcu/单元编译文件,dcp/Delphi Compile ...

  5. flask框架詳解

    https://www.cnblogs.com/sss4/p/8097653.html 前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form. ...

  6. 以太坊如何使用CPU挖矿?

    CPU挖掘 你可以用电脑的中央处理器(CPU)挖以太币.自从GPU矿工的效率高出两个数量级,它就不再盈利了.然而你可以用CPU挖掘在Morden测试网或私有链上挖矿,以便创建你测试合约和交易所需要的以 ...

  7. Oracle12c版本中未归档隐藏参数

    In this post, I will give a list of all undocumented parameters in Oracle 12.1.0.1c. Here is a query ...

  8. Oracle11g版本中未归档隐藏参数

    In this post, I will give a list of all undocumented parameters in Oracle 11g. Here is a query to se ...

  9. PythonWEB框架之Flask

    前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenType....): Tornado: ...

随机推荐

  1. Java面试常被问到的题目+解答

    第一,anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 不行,对于匿名内部类,看到的一句话说的 ...

  2. QT .pro文件的学习收获

    1. 载pro文件预定义宏: CONFIG(debug,debug|release){ DEFINES+=__DEBUG__ }else{ DEFINES+=__RELEASE__ macx:DEST ...

  3. [poj2234]Matces Game_博弈论

    Matches Game poj-2234 题目大意:n堆石子的Nim游戏,anti-SG. 注释:$1\le n\le 20$. 想法:用Colon定理即可.具体见:小约翰的游戏 最后,附上丑陋的代 ...

  4. Ubuntu 16.04安装Insight实现汇编的调试

    由于Ubuntu从9.04开始就把Insight从APT源中删除,所以使用APT无法安装,而且<Assembly Language Step By Step, for Linux!>此书讲 ...

  5. 3、Java并发性和多线程-多线程的代价

    以下内容转自http://ifeve.com/costs-of-multithreading/: 从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价.不要仅仅为了使用多线程而使用多 ...

  6. ubuntu 安装 swift

    第一步 安装mysql和mysql的python支持 apt-get install python-mysqldb mysql-server 第二步 配置mysql vim /etc/mysql/my ...

  7. Linux配置hugepage

    对于内存较大的Oracle数据库server,配置HugePage是非常有必要的,以下是配置Huge的步骤: 我的环境: OS:CentOS release 6.4 (Final) Oracle:11 ...

  8. 一段shell脚本

    //根据入参增加nginx反向代理#!/bin/bash#set -x log_path="./proc/logs/shellExecute.log"log_path_back=& ...

  9. Android 布局属性大全

    常用属性汇总: android:hint          设置EditText为空时输入的提示信息 android:gravity        对该view内容的限定:靠上 下 左 右 andro ...

  10. 深入理解7816(3)-----关于T=0 【转】

    本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0102vcyp.html 深入理解7816(3)-----关于T=0 卡片和终端之间的数据传输是通过命令响应 ...