摘要:任务与函数的重载 SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数/任务: 重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现出的行为依然是子类的行为。 fact
阅读全文
摘要:在一个父类与子类中: 在父类中有一个变量,在子类中有一个不一样的变量; 在父类和子类中都有一个virtual的且同名的函数; 如果将子类句柄赋值给父类句柄时: 在父类句柄中引用一个变量时,会先从子类里面找,如果找不到再到父类里面找。 父类与子类中的变量和函数没有任何关系。 虚方法:
阅读全文
摘要:soft表示的是软约束,如果在一个约束块中使用soft,那么表示这个约束块相比于没有使用soft的约束块(硬约束块)的优先级要低。 在constraint中的约束表达,可以使用soft修饰,当该约束和其他非soft约束冲突时,soft修饰的约束会失效。 要注意的是除了soft软约束块外,所有的约束块
阅读全文
摘要: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_
阅读全文