
UVM学习
文章平均质量分 89
羊村咩咩侠
这个作者很懒,什么都没留下…
展开
-
【学习记录丨UVM】2.2UVM的树形结构
了解下就好,可主要理解UVM真正的树根uvm_top,和为什么不直接以uvm_test_top为树根的原因。原创 2024-11-11 20:12:11 · 818 阅读 · 0 评论 -
【学习记录丨UVM】2.1uvm_component 与uvm_object
看看了解一下就欧了,都是文字介绍。可以注意一下clone函数就好了。原创 2024-11-11 17:27:01 · 1365 阅读 · 0 评论 -
【学习记录丨UVM】1.11建造测试用例
uvm_do_with 是uvm_do系列宏中的一个,用于在随机化时提供对某些字段的约束。这里的举例代码中出现了report_phase,在report_phase中根据UVM_ERROR的数量来打印不同的信息。在前边例子中,通过设置default_sequence的方式来启动my_sequence,加入现在有另一个my_sequence2,那么如何在不影响my_sequence的前提下启动my_sequence2呢?top_tb中的run_test的参数也要从my_env变成base_test,原创 2024-10-24 15:25:07 · 1246 阅读 · 0 评论 -
【学习记录丨UVM】1.10UVM的终极大作:sequence
/factory注册endclasssequencer派生自uvm_sequencer。uvm_sequencer是一个参数化的类,其参数是my_transaction,即该sequencer产生的transaction类型。sequencer负责产生transaction,driver负责接收transaction。前边的例子中,my_driver直接派生自uvm_driver,原创 2024-10-18 09:26:38 · 1427 阅读 · 0 评论 -
【学习记录丨UVM】1.9field_automation机制
UVM的field_automation机制是为了方便用户对事务进行print, copy, 打包,比较,记录等一系列功能而建立的一套服务机制。简单来说就是可以使用UVM内建函数对事务进行处理。前文示例中出现的my_print,my_copy,my_compare等函数都可以使用uvm_field系列宏实现。原创 2024-10-16 15:18:10 · 2323 阅读 · 0 评论 -
【学习记录丨UVM】1.8记分板scoreboard
/声明3个tr:exp,act,tmpbit result;forkwhile(1) begin//从referencce_model的ap中获得tr//tr放入队列endwhile(1) begin//从o_agt(的mon)中获得DUT的tr//my_compare是my_transaction的函数",UVM_LOW);原创 2024-10-15 16:22:18 · 541 阅读 · 0 评论 -
【学习记录丨UVM】1.7参考模型reference_model
验证平台各个组件之间的信息传递都是基于transaction的。reference_model的作用是实现和DUT相同的功能,并将输出传递给scoreboard组件与真实dut的输出进行比较。简单示例my_model结构并不复杂。但是其中重要的是,其中my_transaction的传递方式。my_model是从i_agt获得my_transaction,并把my_transaction传递给scoreboard。在UVM中,通常使用TLM实现component之间transaction级通信。原创 2024-10-15 10:23:11 · 2662 阅读 · 0 评论 -
【学习记录丨UVM】1.6代理人agent
driver和monitor处理同一协议,uvm中通常将二者封装在一起,成为一个agent。原创 2024-10-12 10:27:12 · 1322 阅读 · 0 评论 -
【学习记录丨UVM】1.5监测器monitor
验证平台需要监测DUT的行为,实现这一功能的组件是monitor。driver负责给DUT提供驱动,而monitor是收集DUT的数据,并交给后续组件。v。原创 2024-10-10 09:42:21 · 582 阅读 · 0 评论 -
【学习记录丨UVM】1.4环境env
前文在driver中使用宏加入factory机制时,有提到在top_tb中使用一个语句就能替换掉左侧原来的实例化和main_phase的显式调用。如下图。验证平台往往还有monitor,scoreboard等其他组件,那这些组件的实例化要在哪里进行呢?怎么办呢?dengdengdengdeng噔噔噔噔~,我们可以引入一个容器!在这个容器里实例化driver,monitor等组件,然后run_test()时把这个容器class作为传递的参数。原创 2024-10-09 16:16:43 · 1289 阅读 · 0 评论 -
【学习记录丨UVM】1.3信息包/事务/交易transaction
transaction是UVM中信息交互的基本单元。可以理解为信息包,信息帧。举例:物理协议中的数据交换都是以帧或者数据包为单位的,在帧/数据包中定义好了各项信息参数。在UVM验证中transaction就是在模拟这个帧/数据包。原创 2024-10-09 10:53:21 · 631 阅读 · 0 评论 -
【学习记录丨UVM】1.2驱动器driver(2)—— 引入factory、objection机制和interface
《UVM白皮书》关于driver的介绍一、加入factory机制1. 加入factory机制的driver引入factory机制后,能够实现自动实例化class,并能正常调用其中的task&function。下边是最简单driver的代码,只要在a_driver中加入红框中的内容就引入了factory机制。引入factory机制:在声明一个新的class后,使用`uvm_component_utils()宏。`uvm_component_utils()宏 能够把 新原创 2024-10-08 16:52:06 · 1048 阅读 · 0 评论 -
【学习记录丨UVM】1.2驱动器driver(1)——最简单的driver及其实例化
UVM是一个库,其中的driver等组件都是派生(extends)自UVM库中的类(class)。类中通过 function 和 task 实现组件功能。下边这张图展示了UVM常用的类之间的派生关系。可以看到构建验证平台的大都是继承自uvm_component。原创 2024-10-08 11:13:33 · 2030 阅读 · 0 评论 -
【学习记录丨UVM】1.1接口interface
config_db的set和get函数都有4个参数。它们的第3个参数必须完全一致,第4个参数,set的表示要传递给driver的interface是哪个,get的表示把接收到的interface传递给自己的哪个变量。set的第2个参数表示路径索引,也即uvm_test_top(top_tb中UVM-run_test创建的固定名实例)set和get函数都是静态函数,所以使用双冒号::。原创 2024-09-27 17:42:42 · 1265 阅读 · 0 评论