- 博客(10)
- 问答 (1)
- 收藏
- 关注
原创 driver怎么将response返回给sequence
driver将数据包下发dut后,先构造一个rsp,再获取req的id信息,最后将rsp反馈给sequence1. 通过seq_item_port.item_done(rsp)返回response。当存在多个response时,将response作为item_done参数的方式就不适用了,由于一个transaction只能对应一个item_done,所以使用多次item_done(rsp)是会出错的。
2024-02-06 18:02:57
1419
原创 uvm driver的port为什么连接的是sequencer的export而不是imp
因为在uvm源码中,sequencer的export本质是imp。
2024-01-16 08:53:11
427
原创 uvm_run_test()
验证平台的top层只是充当了一个容纳所有组件的容器,通过调用uvm库中的run_test函数启动环境,run_test函数内部会索引到顶层uvm_root,调用真正的run_test函数,所以在top层进行vif set的时候,用的路径是null,uvm_test_top.env,用的都是uvm自身的树形结构。uvm有自己的顶层uvm_root,是一个componet,提供了一些像run_test()这样的方法,它在uvm_pkg中例化,uvm_root例化的uvm_top,是唯一一个顶层类。
2024-01-05 08:30:56
979
原创 uvm_objection机制
验证平台一般会在test层通过config_db的方式指定要执行的default_seq,在启动seq的时候,会执行start函数,uvm_sequence_base中的虚函数start()调用了pre_start()→pre_body()→body()→post_body()→post_start() 函数。其中用得最多的是第二种,这种方式是UVM提倡的方式。如果用的是UVM-1.2,则可以在new函数中打开objection的开关,UVM将会自动控制objection的raise和drop;
2024-01-04 15:00:19
1084
2
原创 timescale用法
在verilog中是没有默认timescale的,一个没有指定timescale的verilog模块就有可能错误的继承了前面编译模块的无效timescale参数,在多个模块嵌套使用的时候,可能就会出现时间刻度被取代的情况,从而出现仿真结束时间与"设置值不符的现象"。时间精度:就是模块仿真时间和延时的精确程序,比如:定义时间精度为10ns,那么仿真就可以精确地模拟到10ns级别的时间与信号变化关系,而8ns或者18ns是不可能做到的, 时序中所有的延时至多也只能精确到10ns。timescale是。
2023-12-29 14:33:30
1897
空空如也
systemVerilog有偿辅导,请求帮助!!
2021-11-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人