芯片验证测试用例随机约束的管理和重用方法、存储介质技术

技术编号:33438318 阅读:18 留言:0更新日期:2022-05-19 00:26
本发明专利技术公开了一种芯片验证测试用例随机约束的管理和重用方法,包含如下步骤:创建随机约束的基类;将配置对象的数据成员传递到该基类中;对基类进行派生,获取若干独立的封装类;创建随机约束的类队列,各个封装类通过调用接口加入类队列;创建包含随机约束的配置对象的基类;基于配置对象的基类创建配置对象,并声明例化封装类和随机约束的类队列,调用随机约束的接口方法将需要的封装类加入随机约束的类队列,最终实现配置对象的随机约束求解。本发明专利技术能够根据项目需要,由验证开发人员通过方便地调用随机约束的开关接口方法,轻松得到目标随机约束的合法区间值,从而实现对随机约束程序块的管理控制和代码的重用,大大提升了项目开发效率。升了项目开发效率。升了项目开发效率。

【技术实现步骤摘要】
芯片验证测试用例随机约束的管理和重用方法、存储介质


[0001]本专利技术涉及芯片验证
,特别涉及一种芯片验证测试用例随机约束的管理和重用方法和存储介质。

技术介绍

[0002]在芯片验证工作中,往往需要对RTL(Register Transfer Level,寄存器传输级)设计的配置对象或者施加的输入激励进行随机,然后运行相应的测试用例以期望通过随机发现一些RTL设计中潜在的问题。但并不是完全的随机,需要约束限制其随机的值在合法的区间范围(符合RTL设计规则的区间值),以使得RTL设计模块工作在正常的状态(符合RTL设计规则的工作模式状态)或者得到有效合法的输入激励,否则可能会得到无效的配置或激励,那么运行测试用例则失去了测试验证该RTL设计的意义。
[0003]在基于UVM的典型验证平台架构中的随机约束的过程中,对配置对象config和输入激励sequence进行随机,以配置DUT(Device Under Test,被测器件)在随机的工作状态,并施加给DUT一个随机的激励来仿真测试。
[0004]示例如下:DUT的配置对象dut_config,其中主要的成员有三个:(1)DUT的工作模式dut_mode,是一个枚举数据类型。(2)DUT的访问地址addr,位宽为32位。(3)DUT访问数据宽度size,整型,配合addr来进行使用。
[0005]进而,对上述三个成员变量增加随机约束,采用三个随机约束程序块:(1)dut_mode_c,用来对DUT的工作模式进行约束,指定其随机后的dut_mode合法值为DUT_MODE1或DUT_MODE2。(2)addr_permit_c,用来对DUT的有效访问地址进行约束,且根据DUT的工作模式的不同,其访问地址的合法区间范围会有所不同。(3)addr_prohibit_c,用来对DUT的无效访问地址进行约束,且只有DUT在DUT_MODE1工作模式下,该约束才会生效。
[0006]通常在对DUT进行验证时,会配置多种不同的配置对象,以使得该DUT工作在不同的场景下,从而更全面地对DUT进行验证,因此一个很常见的开发需求是增删或修改上述三个随机约束程序块。
[0007]针对上述情况,现有技术中采用的方案是对上述配置对象dut_config_constraint类进行派生,产生其子类,如dut_config_constraint2,再在该子类中重新编写随机约束程序块,然后使用UVM的factory机制的重载功能,用子类dut_config_constraint2来替换其父类dut_config_constraint,从而实现对原先的随机约束的增删或修改。
[0008]测试用例的build_phase中使用UVM的factory机制的重载功能,例如通过调用set_type_override_by_type方法,来实现对其父类dut_config_constraint的替换,从而最终实现对原先的随机约束的增删或修改。
[0009]但是现有技术中存在如下两个缺陷:(1)不能实现对随机约束程序块的控制管理和重用。
[0010]现有技术中的配置对象dut_config_constraint2的代码,即使改动很小,但是依然不得不将dut_config_constraint的随机约束程序块的代码几乎重新写一遍,麻烦且容易出错。因为一个测试用例中往往会包含成百上千的随机变量,同时伴随着成百上千个随机约束块,如果采用派生子类并使用UVM的factory机制的重载功能来实现对随机约束对象的替换,需要将几乎所有的随机约束程序块重新写一遍,这是非常耗时费力的事情。对于复杂的芯片验证项目来说,这大大降低了验证开发工作的效率,甚至影响项目的推进进度。
[0011](2)不能实现对随机约束程序块的控制和管理。
[0012]现有技术中配置对象的随机约束块如果有很多,即如果将过多的随机约束块都写到一个类文件里,编写和理解都将非常困难,会增加后续的问题调试难度。
[0013]
技术实现思路

[0014]根据本专利技术实施例,提供了一种芯片验证测试用例随机约束的管理和重用方法,随机约束包含若干随机子约束,用于约束芯片验证测试用例的配置对象的成员变量,包含如下步骤:创建随机约束的基类,基类为参数化类;将配置对象的数据成员作为参数传递到随机约束的基类中;对随机约束的基类进行派生,获取若干独立的封装类,各个封装类中封装对应的随机子约束;创建随机约束的类队列,类队列包含调用接口,各个封装类通过调用接口加入类队列;创建配置对象的基类,配置对象包含随机约束,用于声明配置对象的成员变量和随机约束的基类的数据类型;基于配置对象的基类创建配置对象,并声明例化封装类和随机约束的类队列,调用随机约束的接口方法将需要的封装类加入随机约束的类队列,最终实现配置对象的随机约束求解。
[0015]优选地,将配置对象的数据成员作为参数传递到随机约束的基类中时,采用set_item函数使随机约束的基类中的成员变量与配置对象的成员变量的值保持同步。
[0016]优选地,创建随机约束的类队列时,在随机约束的基类中声明随机约束的类队列的数据类型。
[0017]优选地,创建配置对象的基类时,创建递归同步指令,用于对随机约束的类队列中的成员变量进行递归同步。
[0018]优选地,调用需要的封装类加入随机约束的类队列后,同步随机约束的类队列和配置对象的基类的类队列,以使递归同步指令顺利执行。
[0019]根据本专利技术又一实施例,提供了一种具有处理器可执行的非易失的程序代码的存储介质,程序代码使处理器运行上述芯片验证测试用例随机约束的管理和重用方法。
[0020]根据本专利技术实施例的芯片验证测试用例随机约束的管理和重用方法、存储介质,能够根据项目需要,由验证开发人员通过方便地调用随机约束的开关接口方法,轻松得到目标随机约束的合法区间值,从而实现对随机约束程序块的管理控制和代码的重用,大大
提升了项目开发效率。
[0021]要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并 且意图在于提供要求保护的技术的进一步说明。
[0022]附图说明
[0023]图1为根据本专利技术实施例芯片验证测试用例随机约束的管理和重用方法的方法流程图。
[0024]具体实施方式
[0025]以下将结合附图,详细描述本专利技术的优选实施例,对本专利技术做进一步阐述。
[0026]首先,将结合图1描述根据本专利技术实施例的芯片验证测试用例随机约束的管理和重用方法,用于芯片验证中对配置对象构建随机约束中,其应用场景很广。
[0027]如图1所示,本专利技术实施例的芯片验证测试用例随机约束的管理和重用方法,随机约束包含若干随机子约束,用于约束芯片验证测试用例的配置对象的成员变量,具有如下步骤:具体地,如图1所示,在步骤S1中,创建随机约束的基类policy_base,基类为参数化类。
[0028]具体地,如图1所示,在步骤S2本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种芯片验证测试用例随机约束的管理和重用方法,所述随机约束包含若干随机子约束,用于约束芯片验证测试用例的配置对象的成员变量,其特征在于,包含如下步骤:创建所述随机约束的基类,所述基类为参数化类;将所述配置对象的数据成员作为参数传递到所述随机约束的基类中;对所述随机约束的基类进行派生,获取若干独立的封装类,各个所述封装类中封装对应的所述随机子约束;创建所述随机约束的类队列,所述类队列包含调用接口,各个所述封装类通过所述调用接口加入所述类队列;创建所述配置对象的基类,所述配置对象包含所述随机约束,用于声明所述配置对象的成员变量和所述随机约束的基类的数据类型;基于配置对象的基类创建配置对象,并声明例化封装类和随机约束的类队列,调用随机约束的接口方法将需要的封装类加入随机约束的类队列,最终实现配置对象的随机约束求解。2.如权利要求1所述芯片验证测试用例随机约束的管理和重用方法,其特征在于,将所述配置对象的数据成员作为参数传递...

【专利技术属性】
技术研发人员:马骁
申请(专利权)人:杭州云合智网技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1