uvm实战_第2章

目录

2.2 只有drv的验证平台

2.2.1最简单的验证平台

 2.2.2加入factory机制

2.2.3加入objection机制 

2.2.4加入virtual interface

 2.3为验证平台加入各种组件

2.3.1加入transaction

2.3.2加入env 

2.3.3加入monitor 

2.3.4加入agent

2.3.5加入reference model

 2.3.6加入score_board

2.3.7加入field_automation机制

2.4sequence

2.4.1在验证平台中加入sequencer

2.4.2sequence机制

生命周期:

`uvm_do();

sequencer的作用:

drv与sqr建立联系: 

seq与sqr建立联系:

2.4.3default_sequence的使用 

default_sequence使用方法:

如何提起和撤销objection:

 2.5建造测试用例

2.5.1加入base_test


2.2 只有drv的验证平台

2.2.1最简单的验证平台

使用uvm的第一条原则:验证平台中所有的组件应该派生自uvm中的类。

driver = new("driver",this);

new函数中要求指明两个参数:name和parent

可以简单的认为实现一个driver等于实现其main_phase

`uvm_info("my_driver","data is drived",UVM_LOW);

有三个参数:

第一个是字符串 ,用于信息归类

第二个是字符串,用于打印的内容

第三个是冗余级别,冗余度越低,越重要,越会被打印。

 2.2.2加入factory机制

`uvm_component_utils(my_driver)

通过使用上述宏命令将driver登记在uvm内部的一个表中

这张表是factory实现的基础

run_test("driver");

run_test会创建一个driver实例,并且自动调用其main_phase函数 

请记住:所有派生自uvm_component机器派生类的类都应该使用 `uvm_component_utils注册

2.2.3加入objection机制 

uvm中通过objection机制类控制验证平台的关闭

在函数(一般是main_phase函数)内使用

task main_phase(uvm_phase phase);

phase.raise_objection(this);

......

phase.drop_objection(this);

endtask

raise_phase必须在main_phase中第一个消耗仿真时间的语句之前

2.2.4加入virtual interface

消除绝对路径,提高代码可重用性和可移植性

 使用config_db将top_tb 中的 inf 和 验证平台的 v_inf 对应起来

uvm_config_db#(virtual my_if)::set(null,"uvm_test_top","vif",input_if);

uvm_config_db#(virtual my_if)::get(this,"","vif",vif);

uvm_config_db:

set和get都有四个参数:

前两个参数是字符串,代表发送到的位置,

第三个参数是标志位,set和get必须保持一致

第四个参数:在set中表示传递的值(内容),在get中表示接收值的变量;

 2.3为验证平台加入各种组件

2.3.1加入transaction

transaction使用 `uvm_object_utils 宏进行注册

这表明transaction和是driver不一样的uvm类 

 post_randomize()函数是SV提供的一个回调函数,当randomize()函数被调用后,会无条件调用该函数。

2.3.2加入env 

run_test()虽然强大,但是只能例化一个实例

run_test()相当于在top_tb结构层次之外建立一个新的结构层次

 在此基础上,为了存储众多的组件类,新建一个容器类env

new()函数的两个参数:name,parent;就有用了

name表示名字,parent表示父节点,实现路径的传递

2.3.3加入monitor 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值