针对相互依赖的成员变量的随机约束方法技术

技术编号:33439113 阅读:16 留言:0更新日期:2022-05-19 00:26
本发明专利技术公开了一种针对相互依赖的成员变量的随机约束方法,包含如下步骤:获取若干成员变量,若干成员变量派生于DUT的配置对象;在若干成员变量内增加接口方法;对若干成员变量进行分层处理,获得分层数据,用于使能或关闭不同层次的成员变量的随机约束;根据分层数据进行使能或关闭不同层次的成员变量的随机约束,完成若干成员变量的随机约束的求解。本发明专利技术将随机约束求解过程进行了分层,使得彼此之间相互关联的随机变量的依赖关系变得更加清晰,帮助验证开发人员对随机约束过程的理解,从而降低对验证过程中出现的问题进行调试的难度。难度。难度。

【技术实现步骤摘要】
针对相互依赖的成员变量的随机约束方法


[0001]本专利技术涉及芯片验证
,特别涉及一种针对相互依赖的成员变量的随机约束方法。

技术介绍

[0002]在芯片验证工作中,我们往往需要对RTL(Register Transfer Level,寄存器传输级)设计的配置对象或者施加的输入激励进行随机,然后运行相应的测试用例以期望通过随机发现一些RTL设计中潜在的问题。而这里的随机,并不是完全的随机,需要约束限制其随机的值在合法的区间范围,以使得RTL设计模块工作在正常的状态或者得到有效合法的输入激励,否则我们可能会得到无效的配置或激励,那么运行测试用例则失去了测试验证该RTL设计的意义。(这里的有效合法值,指的是符合RTL设计规则的区间值,这里的正常的工作状态,指的是符合RTL设计规则的工作模式状态)如图1所示,可以看到,我们对配置对象config和输入激励sequence进行随机,以配置DUT在随机的工作状态,以及施加给DUT一个随机的激励来仿真测试。
[0003]实现对上述配置对象或输入激励进行随机约束和求解控制的现有方案如下:(这里的求解控制,指的是对产生随机值的约束过程进行控制,比如对随机约束语句的顺序进行控制,从而求解得到一个合法的值。)通常随机约束是通过以下两种方式实现的:使用SystemVerilog随机约束语句实现,比如randomize with {

}。
[0004]使用UVM的随机约束语句宏函数实现,比如`uvm_do_with。
[0005]对于随机约束的求解过程的控制,可以使用如下两种方式实现:使用 solve A before B 实现对约束求解的先后顺序的控制,对于一些EDA工具来说,还可以使用$void()方法。
[0006]使用 soft 约束关键字实现对默认约束语句的重载。
[0007]虽然现有方案可行,但存在以下一些缺陷:(1)往往一个测试用例中会包含成百上千的随机变量,同时伴随着成百上千个随机约束块,因此当对上述彼此之间存在相互关联的成员变量或者说有先后的依赖关系的变量进行随机时,使用现有方案的随机约束方法,虽然EDA工具依然能够产生相应的随机约束结果,但是这会使得验证开发人员难以把握所有可能产生的约束空间,从而给验证调试工作造成困难,或者说由于非法的随机约束结果带来没有意义的输出结果,从而白白浪费开发验证人员的时间。
[0008](2)因为现有方案中无法按照实际项目的需求对随机约束进行顺序的指定,因此就不能对这些约束程序块的求解结果进行重用,或者说不能保存随机约束过程中已经产生的随机结果,从而增加了随机约束的控制和问题调试过程的难度。
[0009](3)如果彼此之间关联的成员变量较多,那么很可能会引入过多的随机约束的求解控制语句 solve A before B ,那么很可能会导致求解过程的失败,从而最终导致随机
过程的失败,而且一旦失败,由于随机变量之间依赖关系复杂,定位问题起来非常困难。
[0010]因此,对于在面对比较复杂的激励随机约束的情况时,现有方案显得力不从心,迫切需要有一种新的技术方案来避免上述缺陷。
[0011]
技术实现思路

[0012]根据本专利技术实施例,提供了一种针对相互依赖的成员变量的随机约束方法,包含如下步骤:获取若干成员变量,若干成员变量派生于DUT的配置对象;在若干成员变量内增加接口方法;对若干成员变量进行分层处理,获得分层数据,用于使能或关闭不同层次的成员变量的随机约束;根据分层数据进行使能或关闭不同层次的成员变量的随机约束,完成若干成员变量的随机约束的求解。
[0013]进一步,对若干成员变量进行分层处理,获得分层数据具体为:对若干成员变量按照类型进行分类,获得第一层成员变量、第二层成员变量以及第三层成员变量。
[0014]进一步,根据分层数据进行使能或关闭不同层次的成员变量的随机约束具体为:根据第一层成员变量、第二层成员变量以及第三层成员变量进行使能或关闭不同层次的成员变量的随机约束。
[0015]进一步,根据第一层成员变量进行使能或关闭对不同层次的成员变量的随机约束包含如下子步骤:使能第一层成员变量的随机约束;关闭第二层成员变量和第三层成员变量的随机约束;调用接口方法,对随机前的若干成员变量回调;调用随机化方法,对第一层成员变量进行随机,获得第一层成员变量的合法随机值。
[0016]进一步,根据第二层成员变量进行使能或关闭不同层次的成员变量的随机约束包含如下子步骤:关闭第一层成员变量和第三层成员变量的随机约束;使能第二层成员变量的随机约束;调用随机化方法,对第二层成员变量进行随机,获得第二层成员变量的合法随机值。
[0017]进一步,根据第三层成员变量进行使能或关闭不同层次的成员变量的随机约束包含如下子步骤:关闭第一层成员变量和第二层成员变量的随机约束;使能第三层成员变量的随机约束;调用随机化方法,对第三层成员变量进行随机,获得第三层成员变量的合法随机值。
[0018]调用接口方法,对随机后的若干成员变量回调。
[0019]根据本专利技术实施例的针对相互依赖的成员变量的随机约束方法,具备以下有效效果:(1)将随机约束求解过程进行了分层,使得彼此之间相互关联的随机变量的依赖关系变得更加清晰,帮助验证开发人员对随机约束过程的理解,从而降低对验证过程中出现的问题进行调试的难度。
[0020](2)即使一个测试用例中可能会包含成百上千的随机变量,同时伴随着成百上千个随机约束块,也不要紧。因为这些随机约束求解过程已经被有效的进行分层,因此不会出现使得验证开发人员以把握所有可能产生的约束空间的问题。
[0021](3)可以很容易的按照实际项目的需求对随机约束进行顺序的指定,因此也就能做到对这些约束程序块的求解结果进行重用,即保存随机约束过程中已经产生的随机结果,从而做到了对随机约束的控制,因而降低了问题调试过程的难度。
[0022](4)不再借助随机约束的求解控制语句 solve A before B ,因此不存在随机求解失败带来的问题定位难的问题。
[0023]要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并 且意图在于提供要求保护的技术的进一步说明。
[0024]附图说明
[0025]图1为基于UVM的典型验证平台架构中的随机约束示例图。
[0026]图2为根据本专利技术实施例针对相互依赖的成员变量的随机约束方法的流程图。
[0027]图3为根据本专利技术实施例针对相互依赖的成员变量的随机约束方法的成员变量的随机约束分层结构示例图。
[0028]图4为根据本专利技术实施例针对相互依赖的成员变量的随机约束方法的第一子步骤流程图。
[0029]图5为根据本专利技术实施例针对相互依赖的成员变量的随机约束方法的第二子步骤流程图。
[0030]图6为根据本专利技术实施例针对相互依赖的成员变量的随机约束方法的第三子步骤流程图。
[0031]具体实施方式<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对相互依赖的成员变量的随机约束方法,其特征在于,包含如下步骤:获取若干成员变量,所述若干成员变量派生于DUT的配置对象;在所述若干成员变量内增加接口方法;对所述若干成员变量进行分层处理,获得分层数据,用于使能或关闭不同层次的所述成员变量的随机约束;根据所述分层数据进行使能或关闭不同层次的所述成员变量的随机约束,完成所述若干成员变量的随机约束的求解。2.如权利要求1所述针对相互依赖的成员变量的随机约束方法,其特征在于,对所述若干成员变量进行分层处理,获得分层数据具体为:对所述若干成员变量按照类型进行分类,获得第一层成员变量、第二层成员变量以及第三层成员变量。3.如权利要求2所述针对相互依赖的成员变量的随机约束方法,其特征在于,根据所述分层数据进行使能或关闭不同层次的所述成员变量的随机约束具体为:根据所述第一层成员变量、第二层成员变量以及第三层成员变量进行使能或关闭不同层次的所述成员变量的随机约束。4.如权利要求3所述针对相互依赖的成员变量的随机约束方法,其特征在于,根据所述第一层成员变量进行使能或关闭对不同层次的所述成员变量的随...

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

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

1