- 博客(17)
- 收藏
- 关注
原创 【验证实际问题记录】2.怎么把仿真命令行的参数传递到验证环境?
使用uvm_cmdline_processor,把仿真命令行的参数传递到验证环境.
2024-11-20 15:30:39
376
原创 【学习记录丨UVM】2.2UVM的树形结构
了解下就好,可主要理解UVM真正的树根uvm_top,和为什么不直接以uvm_test_top为树根的原因。
2024-11-11 20:12:11
802
原创 【学习记录丨UVM】2.1uvm_component 与uvm_object
看看了解一下就欧了,都是文字介绍。可以注意一下clone函数就好了。
2024-11-11 17:27:01
1320
原创 【学习记录丨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
1218
1
原创 【学习记录丨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
1402
原创 【学习记录丨UVM】1.9field_automation机制
UVM的field_automation机制是为了方便用户对事务进行print, copy, 打包,比较,记录等一系列功能而建立的一套服务机制。简单来说就是可以使用UVM内建函数对事务进行处理。前文示例中出现的my_print,my_copy,my_compare等函数都可以使用uvm_field系列宏实现。
2024-10-16 15:18:10
2266
原创 【学习记录丨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
517
原创 【学习记录丨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
2579
原创 【学习记录丨UVM】1.5监测器monitor
验证平台需要监测DUT的行为,实现这一功能的组件是monitor。driver负责给DUT提供驱动,而monitor是收集DUT的数据,并交给后续组件。v。
2024-10-10 09:42:21
563
原创 【学习记录丨UVM】1.4环境env
前文在driver中使用宏加入factory机制时,有提到在top_tb中使用一个语句就能替换掉左侧原来的实例化和main_phase的显式调用。如下图。验证平台往往还有monitor,scoreboard等其他组件,那这些组件的实例化要在哪里进行呢?怎么办呢?dengdengdengdeng噔噔噔噔~,我们可以引入一个容器!在这个容器里实例化driver,monitor等组件,然后run_test()时把这个容器class作为传递的参数。
2024-10-09 16:16:43
1272
原创 【学习记录丨UVM】1.3信息包/事务/交易transaction
transaction是UVM中信息交互的基本单元。可以理解为信息包,信息帧。举例:物理协议中的数据交换都是以帧或者数据包为单位的,在帧/数据包中定义好了各项信息参数。在UVM验证中transaction就是在模拟这个帧/数据包。
2024-10-09 10:53:21
602
原创 【问答丨UVM】1.为什么function后边都有一个void关键字,然后才是函数名?
在某些情况下,即使函数有返回值,如果你不需要使用这个返回值,你可以在调用该函数时使用 `void'()` 来忽略返回值,这样可以避免编译器警告,使得仿真日志更加清晰。在UVM(Universal Verification Methodology)中,`function` 关键字用于定义一个函数,它可以返回一个值。在UVM中,使用 `void` 或者 `void'()` 是一种良好的编程实践,它有助于代码的可读性和维护性。这表明该函数仅用于执行某些操作,而不返回任何结果。
2024-10-09 09:40:30
333
原创 【学习记录丨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
1031
原创 【学习记录丨UVM】1.2驱动器driver(1)——最简单的driver及其实例化
UVM是一个库,其中的driver等组件都是派生(extends)自UVM库中的类(class)。类中通过 function 和 task 实现组件功能。下边这张图展示了UVM常用的类之间的派生关系。可以看到构建验证平台的大都是继承自uvm_component。
2024-10-08 11:13:33
1996
原创 【学习记录丨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
1221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人