UVM验证培训——factory:实用的UVM机制

路科验证官网:路科验证 - 专注于数字芯片验证的系统思想和前沿工程领域

EETOP路科首页: EETOP - 路科验证 - IC验证培训

CSDN路科首页:CSDN - 路科验证 - IC验证培训

UVM鼓励工程师创建模块化、可复用的测试平台。UVM通过TLM接口,把一个组件及其他与之相连的组件隔离开来,以此实现模块化。只要transaction类型相同,模块化的功能允许sequence 连接到任何适配的driver上。也允许多种覆盖率收集器通过分析接口连接到monitor上。这种模块化的功能,使得搭建环境的工程师可以把库中的各种组件进行混合匹配,最终组合放到DUT的配置环境中。这对于验证工程师当然是非常有用的。

很多时候验证工程师需要很多环境,这些环境大体上很相似,只在一些小的方面稍有不同。每个环境有其特定的用途,同时他们的大多数组件都是完全相同的。那么,我们如何做到共享其通用的部分、定制其独特的部分呢?当然,这是OOP(面向对象编程)的基本特点,OOP语言实现这种功能并不难。但是,我们要说的是UVM,因为UVM又将这种实现方法进一步简化了。

一个经验浅的OOP程序员可能会直接在环境中实例化组件,如下:

Env的实例化也类似:

对于验证工程师,当testbench能正确运行transaction时,我们可能想要改变一些东西,比如看看当在transaction流里插入错误会发生什么。为了做到这一点,可以创建一个新的driver,派生my_driver类得到my_err_driver,并在环境中将其实例化。OOP能让我们实现这一点,派生my_env类,并如下图一样重载build_phase()方法。

这样的话,两个环境的不同之处仅仅是driver的类型。因为my_err_driver是从my_driver派生得到,所以他们有相同的接口,而且driver和squencer之间的连接也是相同的。所以我们就不用重复其他代码了。类似的,我们可以派生my_test,以使用新的env:

篇幅有限,路科原文链接如下:

factory:实用的UVM机制

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值