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

    文章

    6867

    浏览量

    88800
  • 仿真
    +关注

    关注

    50

    文章

    4036

    浏览量

    133395
  • DUT
    DUT
    +关注

    关注

    0

    文章

    189

    浏览量

    12330

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

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

收藏 人收藏

    评论

    相关推荐

    怎么创建时序约束

    我是一个新鲜的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 1315次阅读

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

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

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

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

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

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

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

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

    如何使用随机模拟技术和神经网络讲解随机机会约束的规划问题

    为更有效地求解随机机会约束规划问题,提出一种基于克隆选择算法( CSA) 、随机模拟技术及神经网络的混合智能算法。采用随机模拟技术产生随机
    发表于 11-27 15:02 8次下载
    如何使用<b class='flag-5'>随机</b>模拟技术和神经网络讲解<b class='flag-5'>随机</b>机会<b class='flag-5'>约束</b>的规划问题

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

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

    创建输入输出接口时序约束的窍门

    时序约束中的 set_input_delay/set_output_delay 约束一直是一个难点,无论是概念、约束值的计算,还是最终的路径分析,每一次都要费一番脑子。Vivado为方便用户
    的头像 发表于 08-02 09:54 2466次阅读
    <b class='flag-5'>创建</b>输入输出接口时序<b class='flag-5'>约束</b>的窍门

    简述SystemVerilog的随机约束方法

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

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

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

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

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

    SystemVerilog的随机约束方法

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

    SV约束随机化总结

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