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

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

3天内不再提示

UVM高级应用

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

说明:这部分内容比较零散,且很多不好理解,所以这里只能选择性介绍一些内容。

使用interface代替driver部分功能

方法:

  • 在interface中可以定义任务与函数,也可以使用always语句和initial语句,也可以实例化其他interface。可用其做一些低层次的转换, 如8b10b转换、 曼彻斯特编码等。这些转换动作是与transaction完全无关的。

好处:

  • 让driver从底层繁杂的数据处理中解脱出来, 更加专注于处理高层数据
  • 有更多的数据出现在interface中, 这会对调试起到很大的帮助(因为interface中的信号在波形文件中有记录的)

可变时钟的三种需求及对应实现方法

  • 在不同测试用例之间时钟频率不同, 但是在同一测试用例中保持不变
    • 例如:HDMI协议中会依据图像分辨率采用不同的时钟
    • 方法一:将时钟独立成一个文件,通过include不同的时钟实现
    • 方法二:在测试用例中使用config_db的set方法设置一个变量,然后在时钟实现的地方使用get方法获取该变量,将其作为时钟周期。
  • 在同一个测试用例中存在时钟频率变换的情况
    • 例如:PLL过渡期前和过渡期后的时钟是不一样的
    • 方法一:在测试用例中使用config_db的set方法随着时间不同为时钟周期变量设置不同值。
  • 既关心过渡期前后的时钟, 也关心PLL在过渡期的行为,即要求时钟变量不止是简单的可变,而且是正弦变化的。
    • 例如:关心PLL过渡期内时钟行为,实际工作中时钟频率也是存在一定抖动的
    • 方法一:建立一个clk的interface,然后通过config_db将对clk的驱动放在一个时钟component中,这样的话,要实现任意对clk的驱动只需要重载这个时钟component即可。

layer sequence的引入

以太网包、IP包、 UDP包、 TCP包,数据是层层封装的,为了提高测试用例的可重用性,方法有:

  • 方法一: sequence中调用子sequence ——将与ip相关的代码写成一个函数, 而与mac相关的代码写成另外一个函数, 将这些基本的函数放在base_sequence中。在新建测试用例时, 从base_sequence派生新的sequence, 并调用之前写好的函数。---- 感觉更适合并列关系的测试用例
  • 方法二: 使用layer sequence ——一个sequence负责产生ip_transaction, 另外sequence负责产生my_transaction, 前者将产生的ip_transaction交给后者。--- 感觉更适合包含关系的测试用例

layer sequence的示例

图片

聚合参数的优势与问题

优势:

  • 可以将interface也放入此聚合参数类中
  • 使用聚合类减少了config_db::set的使用, 也会大大降低出错的概率

问题:

  • 本质上是将一些属于某个uvm_component的变量变成对所有的uvm_component可见
  • 在一定程度上降低了验证平台的可重用性

总结:

  • 在参数聚合程度/粒度上需要权衡:更好方便的使用vs代码可重用性
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HDMI接口
    +关注

    关注

    1

    文章

    124

    浏览量

    33995
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19126
  • PLL电路
    +关注

    关注

    0

    文章

    92

    浏览量

    6391
  • TCP通信
    +关注

    关注

    0

    文章

    146

    浏览量

    4210
收藏 人收藏

    评论

    相关推荐

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

    验证的基本常识,将会散落在各个章节之间。UVM的一些高级功能,如何灵活地使用sequence机制、factory机制等。如何编写代码才能保证可重用性。可重用性是目前IC界提及最多的几个词汇之一,它包含
    发表于 12-01 15:09

    什么是uvm_reg_field?

    uvm_reg_field是什么
    发表于 12-17 06:10

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

    原文链接:https://zhuanlan.zhihu.com/p/345775995大家好,我是一哥,上章内容主要讲述两个内容,芯片验证以及验证计划。那本章我们主要讲述的内容有介绍什么是uvm
    发表于 01-21 16:00

    什么是uvmuvm的特点有哪些呢

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

    谈谈UVM中的uvm_info打印

      uvm_info宏的定义如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VERBOSITY
    发表于 03-17 16:41

    UVM中seq.start()和default_sequence执行顺序

      1. 问题  假如用以下两种方式启动sequence,方法1用sequence的start()方法启动seq1,方法2用UVM的default_sequence机制启动seq2。那么seq1
    发表于 04-04 17:15

    基于UVM的验证平台设计研究

    基于UVM的验证平台设计研究_王国军
    发表于 01-07 19:00 4次下载

    Modelsim uvm库编译及执行

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

    UVM实战教材资料分享

    UVM实战教材资料分享。
    发表于 05-05 15:51 17次下载

    什么是UVM environment?

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

    UVM学习笔记(一)

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

    UVM driver和sequencer的通信

    sequencer生成激励数据,并将其传递给driver执行。UVM类库提供了uvm_sequencer基类,其参数为request和response数据类型。
    的头像 发表于 06-07 11:58 1598次阅读
    <b class='flag-5'>UVM</b> driver和sequencer的通信

    UVMuvm_config_db机制背后的大功臣

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

    UVMuvm_config_db机制背后的大功臣

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

    一文详解UVM设计模式

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