0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UVM学习笔记(三)

冬至子 来源:多读点书 作者:夕文x 2023-05-26 14:46 次阅读

第2章一个简单的UVM验证平台

2.4 UVM的终极大作:sequence

2.4.1 在验证平台中加入sequencer

sequence机制作用:用于产生激励。其分为两部分,一是sequence,二是sequencer。

在定义driver时指明此driver要驱动的transaction的类型,这样定义的好处是可以直接使用uvm_driver中的某些 预先定义好的成员变量 ,如uvm_driver中有成员变量 req ,它的类型就是传递给uvm_driver的参数。由此带来的变化如下:(不需要定义中间变量tr了)

图片

2.4.2 sequence机制

三者关系:

1.jpg

每一个sequence都有一个body任务,当一个sequence启动之后,会自动执行body中的代码。body中uvm_do这个宏的作用如下:

  1. 创建一个my_transaction的实例m_trans;
  2. 将其随机化;
  3. 最终将其送给sequencer。

如果不使用uvm_do宏,也可以直接使用start_item与finish_item的方式产生transaction。

sequencer负责协调sequence和driver的请求

  • sequencer和driver之间
    • 将两者连接:drv.seq_item_port.connect(sqr.seq_item_export);
    • 在driver中通过get_next_item任务来得到一个新的req,并且驱动它,驱动完成后调用item_done通知sequencer(完成握手)。
    • 图片
  • sequencer和sequence之间:
    • sequence中的uvm_do宏发送transaction后,会一直等待,直到driver返回item_done信号
    • 在某个component(如my_sequencer、 my_env)的main_phase中启动这个sequence,即可让sequence向sequencer发送transaction。
    • 图片
    • 图片

get_next_item和try_next_item的比较

  • get_next_item是阻塞的,它会一直等到有新的transaction才会返回;
  • try_next_item则是非阻塞的,它尝试着询问sequencer是否有新的transaction,如果有,则得到此transaction,否则就直接返回。其行为更加接近真实driver的行为

2.4.3 default_sequence的使用

引入default_sequence的原因:

  • 在某个component的build_phase阶段使用config_db与default sequence替代了在某个component的main_phase阶段利用seq.start(i_agt.sqr)启动sequence,将objection与sequence完全联系起来,增加了可移植性。

如何使用default_sequence:

  • 方法一:在某个component(如my_env)的build_phase中设置如下代码
  • 图片
  • 方法二:在top_tb中设置
  • 图片

使用default_sequence时 如何提起和撤销objection

  • 因为在sequencer在启动default_sequence时,uvm_sequence的内置变量starting_phase会自动执行如下内容:
  • 图片
  • 所以可以在sequence中使用借助starting_phase来提起和撤销objection。
  • 图片

2.5 建造测试用例

2.5.1 加入base_test

对my_env进一步封装,添加一些公司个性化内容,举例如下:

  • 在report_phase中根据UVM_ERROR的数量来打印不同的信息。它在main_phase结束之后执行。
  • 设置整个验证平台的超时退出时间
  • 通过config_db设置验证平台中某些参数的值

2.5.2 UVM中测试用例的启动

通过传递参数变量值启动的原因:

  • 保证后加的测试用例不影响已经建好的测试用例

如何使用:

  • 定义不同的base_test,让run_test()使用缺省模式,然后通过在命令中传递参数变量来实现一次编译执行多个用例,如下:
  • +UVM_TEST_NAME=my_case0
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19167
  • sequence
    +关注

    关注

    0

    文章

    23

    浏览量

    2840
收藏 人收藏

    评论

    相关推荐

    新手学习System Verilog & UVM指南

    新手学习SystemVerilog & UVM指南 从刚接触System Verilog以及后来的VMM,OVM,UVM已经有很多年了,随着电子工业的逐步发展,国内对验证人才的需求也会急剧
    发表于 03-11 16:24

    IC验证"为什么要学习UVM呢"

    目前市面上基于SystemVerilog的验证主要有种:VMM(Verification Methodology Manual),这是Synopsys在2006年推出的,在初期是闭源的。当OVM
    发表于 12-01 15:09

    数字IC验证之“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载中...

    uvm的特点以及uvm为用户提供了哪些资源?什么是uvm呢?uvm是通用验证方法学的缩写,是为验证服务的,uvm是基于systemveri
    发表于 01-21 16:00

    什么是uvmuvm的特点有哪些呢

    大家好,我是一哥,上章内容我们介绍什么是uvmuvm的特点以及uvm为用户提供了哪些资源?本章内容我们来看一看一个典型的uvm验证平台应该是什么样子的,来看一个典型的
    发表于 02-14 06:46

    谈谈UVM中的uvm_info打印

    uvm_info的个参数。  ID是作为message的标记(tag)。  MSG就是真正要打印的message文本。  VERBOSITY用于传递uvm\_verbosity枚举类型的数字。当
    发表于 03-17 16:41

    UVM之sequence/item见解 sequencer特性及应用(下)

    _SEQ_ARB_WEIGHTED;UVM_SEQ_ARB_RANDOM ;UVM_SEQ_ARB_STRICT_FIFO等。出其中种需要特别区分外其它的模式可以满足绝大多数的仲裁需求。
    的头像 发表于 02-19 10:14 4793次阅读
    谈<b class='flag-5'>UVM</b>之sequence/item见解 sequencer特性及应用(下)

    Modelsim uvm库编译及执行

    第一句话是设置uvm环境变量,指定uvm的dpi位置。 第二句话是创建work工作目录。 第句话是编译源文件,并且通过-L指定几个编译库。 第句是执行仿真,调用
    的头像 发表于 12-01 11:25 3866次阅读
    Modelsim <b class='flag-5'>uvm</b>库编译及执行

    计算机级嵌入式学习笔记

    计算机级嵌入式学习笔记)-- 嵌入式系统硬件组成
    发表于 10-20 16:06 14次下载
    计算机<b class='flag-5'>三</b>级嵌入式<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(<b class='flag-5'>三</b>)

    开关电源学习笔记 --- 目录

    — Buck-Boost变换器的基本原理二.DC-DC变换器的电感设计开关电源学习笔记4 — DC-DC变换器的储能电感设计之电磁学知识储备开关电源学习笔记5 — DC-DC变换器的
    发表于 10-22 09:36 35次下载
    开关电源<b class='flag-5'>学习</b><b class='flag-5'>笔记</b> --- 目录

    STM32F103学习笔记 串口通信

    STM32F103学习笔记 串口通信
    发表于 11-25 09:06 71次下载
    STM32F103<b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>三</b>   串口通信

    什么是UVM environment?

    UVM environment**包含多个可重用的验证组件,并根据test case的需求进行相应的配置。例如,UVM environment可能具有多个agent(对应不同的interface)、scoreboard、functional coverage collec
    的头像 发表于 03-21 11:35 1076次阅读
    什么是<b class='flag-5'>UVM</b> environment?

    UVM学习笔记(一)

    driver应该派生自uvm_driver,而uvm_driver派生自uvm_component。
    的头像 发表于 05-26 14:38 1372次阅读
    <b class='flag-5'>UVM</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(一)

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-20 17:28 1407次阅读

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-29 16:57 1274次阅读

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY[1]中单例模式的补充,分析静态类的使用,UVM中资源池的
    的头像 发表于 08-06 10:38 1763次阅读
    一文详解<b class='flag-5'>UVM</b>设计模式