• 正文
  • 相关推荐
申请入驻 产业图谱

我的第三个UVM代码——把testcase与driver分开

2020/10/27
171
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

《我的第二个 UVM 代码——连接 interface》中直接在 testcase 里驱动 interface,当代码越来越多,需要考虑把环境拆分成多个小的环境,便于修改和维护。

如下图,定义一个 driver,并例化在 testcase 里。把 interface 连接到 driver 里的 virtual interface,在 driver 里 toggle interface,实现协议功能。

第一步,在 build_phase 里连接 virtual interface。分两次,tb 到 testcase,再从 testcase 里取出 interface 转存到 driver。如下图。注意,get 和 set 的路径是由几个参数共同组成的。例如,null、uvm_test_top、u_intf 组成了 uvm_test_top.u_intf。又如,this(uvm_test_top)、my_driver、u_intf 组成了 uvm_test_top.my_driver.u_intf。

在编译时可以加入+UVM_CONFIG_DB_TRACE 来打印 config_db 的 set 和 get 的详细信息。

第二步,在 driver 的 main_phase 里驱动 virtual interface。这一步与

《我的第二个 UVM 代码——连接 interface》没什么区别,只是把代码从 testcase 里移到 driver 里而已。

第三步,编译仿真。仿真命令(以 irun 为例)、波形、环境层次关系(verdi)如下。

实验代码:

https://github.com/chenfengrugao/uvm_lab

总结:在本示例中没有 env、agent、sequencer、sequence 等组件,属于一个简化的验证环境,主要是由于分步演示的需要。侧面也说明 UVM 是一个灵活的验证架构,可以根据自己的需要进行裁剪。

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录