摘要:1)在导入uvm_pkg文件时,会自动创建UVM_root所例化的对象UVM_top,UVM顶层的类会提供run_test()方法充当UVM世界的核心角色,通过UVM_top调用run_test()方法。 2)在环境中输入run_test来启动UVM验证平台,run_test语句会创建一个my_ca
阅读全文
摘要:任务与函数的重载 SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数/任务: 重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现出的行为依然是子类的行为。 fact
阅读全文
摘要:UVM类库地图按照UVM的核心机制将地图进行了分块: 1.核心基类 2.工厂类factory 3.事务类transaction和序列类sequence 4.结构创建类structure creation 5.环境组件类environment component 6.通信管道类channel 7.信息
阅读全文
摘要:UVM类继承关系 在前一篇文章的简单的UVM框架Testbench中,我们曾提到继承自uvm_component的类可以作为UVM树的节点,有与验证平台一样的生命周期;继承自uvm_object的类生命周期短于验证平台,通常作为一些临时部件类或传递的信息类等。其实,uvm_component本身也是
阅读全文
摘要:uvm_void :是始祖类,人如其名,其中不包含任何函数和类 uvm_obect : 比较基础的类,包含一些比较基础的常用函数,如 Copy 函数、Clone 函数、Compare 函数、Print 函数 可以在环境任一位置创建和销毁 uvm_component : uvm_component 类
阅读全文
摘要:X::type_id::create是如何创建实例的 当利用factory机制创建实例的时候,往往使用X::type_id::create(name, parent)来创建实例,比如 function void MyEnv::build_phase(uvm_phase phase); super.b
阅读全文
摘要:UVM中类的例化用new和create有什么不同?什么时候可以用new?什么时候该用create? new是OOP自带属性,create是UVM override属性,可以理解成create比new更进阶。 create是用factory模式来construct对象,在factory中注册过的uvm
阅读全文
摘要:用法的区别 `uvm_info("apb_trans", this.sprint(), UVM_LOW) this.print // Function: print // // The print method deep-prints this object's properties in a fo
阅读全文
摘要:| phase | 函数/任务 | 执行顺序 | 功能| | | | | | |build |函数 |自顶向下 |1.create UVM tree,instance all the components.2.config_db::set, get interface.var | |connect
阅读全文
摘要:工厂机制 factory机制 1、registration(utils) 2、construction(create) 3、override 4、field automation 一般来说运用factory的步骤可分为: 将类注册到工厂 在例化前设置覆盖对象和类型(可选) 创建对象 为什么要使用fa
阅读全文
摘要:书本上的一般写法: `ifndef MY_DRIVER__SV `define MY_DRIVER__SV class my_driver extends uvm_driver#(my_transaction); virtual my_if vif; `uvm_component_utils(my_
阅读全文
摘要:class my_agent extends uvm_agent; my_driver apb_drv; apb_drv=my_driver::type_id::create("drv", this); apb_drv.seq_item_port.connect(sqr.seq_item_expor
阅读全文
摘要:1.uvm_object和uvm_compoent类 1.1 派生自uvm_object的类 除了派生自uvm_component类之外的类,几乎所有的类都派生自uvm_object。 uvm_transaction、uvm_sequence_item、uvm_sequence 1.2 派生自uvm
阅读全文
摘要:field automation机制相关的宏 最简单的uvm_field系列宏有如下几种: `define uvm_field_int(ARG,FLAG) `define uvm_field_real(ARG,FLAG) `define uvm_field_enum(T,ARG,FLAG) `def
阅读全文
摘要:在引入my_mointor时,在my_transaction中加入了my_print函数;在引入reference model时,加入了my_copy函数;在引入scoreboard时,加入了my_compare函数。上述三个函数虽然各自不同,但是对于不同的transaction来说,都是类似的:它
阅读全文
摘要:UVM使用的是一种树形结构。但是在一个实际应用的UVM验证平台中,通常来说,树根是一个基于uvm_test派生的类。真正的测试用例都是基于base_test派生的一个类。 //base_test.sv 4 class base_test extends uvm_test; 5 6 my_env en
阅读全文
摘要:5.1 phase机制 *5.1.1 task phase与function phase UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类,一类是function phase,如build_phase、connect_phase等,这些phase都不耗费仿
阅读全文
摘要:set_config与get_config get_config_int这种写法最初来自OVM中,UVM继承了这种写法,并在此基础上发展出了config_db。set_config与get_config依然是UVM标准的一部分,并没有过时。 使用set_config_int来代替uvm_config
阅读全文
摘要:uvm event 用法 1. //文件a: uvm_event event1;//定义 event1=uvm_event_pool::get_global("event1");//例化 //条件: event1.trigger(); //文件b: uvm_event event1;//定义 eve
阅读全文
摘要:UVM中有两种特殊的端口:analysis_port和analysis_export。这两者其实与put和get系列端口类似,都用于传递transaction。它们的区别是: 第一,默认情况下,一个analysis_port(analysis_export)可以连接多个IMP,也就是说,analys
阅读全文