UVM验证
文章平均质量分 88
爱喝小米粥~
Stay hungry, stay foolish.
展开
-
UVM寄存器模型(中):reg_field读写函数、随机化、set()
reg_field的读写函数首先明确,reg_field的读写函数的意思是下面介绍的函数是用于读写软件寄存器模型中reg_field的值的,并非读写硬件DUT的寄存器,切记。set():设置m_desiredset()函数修改的是寄存器模型中调用该函数的uvm_reg_field的m_desired(期望值),并且根据configure()时配置的m_access(访问类型)来给m_desired赋值(函数中case…endcase中间的内容),同时将value值更新为最新的m_desir原创 2024-07-10 15:52:53 · 1174 阅读 · 0 评论 -
UVM寄存器模型(上):reg_field的内部结构与复位函数详解
重点关注四个变量:value:唯一一个没有被local修饰的值类型,即寄存器模型可以直接访问,也是唯一一个用rand修饰的字段,用于对寄存器模型里的reg进行randomize后存储随机值,同时也是我们对寄存器模型收集覆盖率所sample的值,value与m_desired关系密切m_mirrored(镜像值):存放我们认为此时DUT里寄存器的实际值。m_desired(期望值):存放我们期望DUT寄存器被赋予的值。m_reset[“HARD”](复位值):存放硬复位值。原创 2024-07-10 10:16:28 · 1093 阅读 · 0 评论 -
sequence与sequence_item创建、挂载的比较与详解
对于一个seq来说,内部即可以包含子seq,也可以包含item,所以总结一下在一个seq中创建和发送二者的异同。结论:对首先明确一下类的层级关系:尽管在实例对象的层次上,seq包含item,但在类的层次上,item类是seq的父类。原创 2024-07-09 11:20:46 · 1756 阅读 · 0 评论 -
UVM中不同级别的组件的创建方式:root、UVM_test_top
UVM中创建组件的方式有多种,按照组件的等级不同,总结不同的创建方法将组件按等级分为:组件类型 组件等级其他 普通run_test( )是UVM的入口,位于uvm_global.svh文件中。该函数的真正的定义位于uvm_root类中。uvm_global.svh将uvm_root : : run_test( )封装成了一个全局可见的函数,方便直接调用。原创 2024-06-25 16:56:01 · 521 阅读 · 0 评论 -
UVM中工厂机制详解(下):工厂创建对象的过程
其中的关键就在于静态变量。my_driver类是继承于uvm_component类的,也就是说最后调用了了 uvm_component_registry::creat_component()type_id代表当前已经参数化过的类:uvm_component_registry#(my_driver,“my_driver”)它会被替换为 `m_uvm_component_registry_internal(my_driver,my_driver)原创 2024-06-25 15:26:25 · 655 阅读 · 0 评论 -
UVM中event资源池详解
首先,明确一下继承关系:uvm_object_string_pool是参数类, 通过传入参数T来创建关于类型T的全局唯一资源池(单例)原创 2024-06-21 23:06:35 · 420 阅读 · 0 评论