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

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

3天内不再提示

创建约束随机测试目标

芯片验证工程师 来源:芯片验证工程师 2023-06-17 14:06 次阅读

为了实现验证目标,测试用例开发者需要控制测试激励的生成以覆盖特定的场景。测试用例开发者可以用下面这些方法控制测试激励的创建:

添加约束条件来控制单个数据项。

使用UVM sequences来控制多个数据项的顺序。这种方法提供了更多的灵活性和控制。

约束数据项

默认情况下,sequencers会生成完全随机的数据项。测试用例编写者可以控制生成的数据项数量,并向数据项添加约束。为了约束数据项,需要:

识别验证组件中的数据项类和它们的字段。

创建一个数据项类的派生,增加或覆盖默认约束。

在测试用例中,调整环境以使用新定义的数据项。

使用命令行选项指定测试用例名称来运行仿真

ebcde712-0c4b-11ee-962d-dac502259ad0.png

ebdb03b6-0c4b-11ee-962d-dac502259ad0.png

数据项类的定义

派生类中的几个字段来自于DUT规格。例如,一个帧(frame)应该有一个payload被发送到DUT。其他字段的存在是为了帮助测试用例开发者控制激励数据的生成。例如,字段parity_type不被发送到DUT,但它允许测试用例开发者轻松地指定和控制奇偶分布。这样的控制字段被称为 "旋钮knobs"

验证组件的文档应该列出数据项的旋钮、它们的作用和合法范围。

数据项约束可以来自DUT的规范,例如一个合法的帧必须有不等于0的error_bits_c。数据项中不同类型的约束对数据项的生成进行约束。例如,在约束块default_parity_type中,奇偶校验位被约束为90%合法(good parity)和10%非法(bad parity)

创建一个特定的测试用例

在测试用例中,用户可能希望改变数据项的生成方式。例如,测试用例开发者可能希望有short delays,这可以通过派生一个新的数据项类并根据需要添加约束或其他类成员来实现。

ebf1a562-0c4b-11ee-962d-dac502259ad0.png

UVM类库的factory机制可以用来将派生类(short_delay_frame)引入到环境中。

ec01b182-0c4b-11ee-962d-dac502259ad0.png

调用factory函数set_type_override_by_type(),指示环境使用short-delay帧。有时,测试用例可能想向某一个接口发送特殊的流量,同时继续向其他接口发送常规流量。这可以通过在一个UVM组件中使用set_inst_override_by_type()来实现。

set_inst_override_by_type("uart_env0.master.sequencer.*",
uart_frame::get_type(), short_delay_frame::get_type());


通配符也可以用来覆盖一些组件的实例,例如:

set_inst_override_by_type("uart_env*.master.sequencer.*",
uart_frame::get_type(), short_delay_frame::get_type());

责任编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6512

    浏览量

    87601
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132162
  • DUT
    DUT
    +关注

    关注

    0

    文章

    180

    浏览量

    11998

原文标题:创建约束随机测试用例

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OPC为何无创建约束变量选项?

    本帖最后由 hxfengyy 于 2016-10-24 17:11 编辑 OPC为何无创建约束变量选项?还缺什么软件没有安装,请大虾们指导,QQ:235411750
    发表于 10-24 17:07

    怎么创建时序约束

    我是一个新鲜的FPGA,当我创建时序约束时,有一些东西错了。NgdBuild:455 - 逻辑网'Adc_Toplevel_Adc1 / Adc_Frm_inst / IntFrmClk_n'有多个
    发表于 06-08 10:18

    设计验证中的随机约束

    随机约束在现代集成电路验证中已得到国际IC 设计业界的普遍认可,并逐渐开始普及。与传统的定向测试比较,它在验证效率、验证覆盖率等方面具有诸多优势。最新公布的Sys
    发表于 12-14 09:54 13次下载

    如何创建目标数据库

    如何创建目标数据库 在文您将学习创建目标数据库和所有与发起方数据库不存在依赖关系的 Service Broker 目标
    发表于 03-26 11:54 1271次阅读

    基于约束修补的多目标优化算法

    针对传统的优化算法求解多目标动态环境经济调度( MODEED)模型时极难获得高质量的可行解,且收敛速度慢等问题,根据MODEED模型约束特征,设计了一种约束修补策略;然后将该策略嵌入非支配排序算法
    发表于 01-05 14:31 0次下载

    如何为密集的高约束PCB设计创建和管理约束

    本视频将会概述基本的约束管理概念,并演示如何为密集的高约束 PCB 设计创建和管理约束
    的头像 发表于 05-17 06:01 1686次阅读
    如何为密集的高<b class='flag-5'>约束</b>PCB设计<b class='flag-5'>创建</b>和管理<b class='flag-5'>约束</b>

    如何创建和管理约束密集型、高度约束的PCB设计

    这个视频概述基本约束管理的概念和演示了如何创建和管理约束密集、高度受限的PCB设计。
    的头像 发表于 11-07 07:08 2511次阅读

    PADS约束管理系统创建、审查和验证PCB设计约束

    垫标准+和垫专业使用的强大和易于使用的约束管理系统创建、评审和验证PCB设计约束
    的头像 发表于 11-04 07:02 1490次阅读

    高速列车多目标约束横向半主动控制算法

    高速列车多目标约束横向半主动控制算法
    发表于 06-29 14:44 4次下载

    鉴源论坛 · 观模丨浅谈随机测试

    随机测试是一种使用随机、相互独立的程序输入来对计算机程序进行测试的黑盒软件测试(在完全忽略程序内部实现细节的情况下进行
    的头像 发表于 11-18 10:14 941次阅读
    鉴源论坛 · 观模丨浅谈<b class='flag-5'>随机</b><b class='flag-5'>测试</b>

    简述SystemVerilog的随机约束方法

    上一篇文章介绍了SystemVerilog的各种随机化方法,本文将在其基础上引入SystemVerilog的随机约束方法(constraints)。通过使用随机
    的头像 发表于 01-21 17:03 1587次阅读

    SystemVerilog中“软约束”与“硬约束”的应用示例

    示例中采用的是“硬约束”,因为定义在类中的约束随机时指定的内嵌约束“矛盾”,所以导致约束解析器解析随机
    发表于 03-15 16:56 2790次阅读

    约束随机验证的效果真的比直接用例测试好吗?

    当介绍uvm验证时大家肯定都看过上面类似的图片,以展示受约束随机验证相比直接用例测试如何具有先进性。
    的头像 发表于 04-10 11:13 770次阅读

    SystemVerilog的随机约束方法

    上一篇文章《暗藏玄机的SV随机化》介绍了SystemVerilog的各种随机化方法,本文将在其基础上引入SystemVerilog的随机约束方法(constraints)。通过使用
    的头像 发表于 09-24 12:15 474次阅读

    SV约束随机化总结

    constraint 约束随机化类中的变量 在main_phase 之前就已经提前产生一个变量的随机值。 用法:一般在类中定义一个rand 类型的变量, 然后根据需求写约束
    的头像 发表于 12-14 14:30 244次阅读
    SV<b class='flag-5'>约束</b><b class='flag-5'>随机</b>化总结