一种系统验证仿真方法、系统、设备以及介质与流程

文档序号:30842788发布日期:2022-07-23 01:07阅读:85来源:国知局
一种系统验证仿真方法、系统、设备以及介质与流程

1.本发明涉及芯片仿真领域,具体涉及一种系统验证仿真方法、系统、设备以及存储介质。


背景技术:

2.随着工艺技术以及应用领域的不断发展,芯片的复杂度不断提高,相对应的,对于仿真验证工作的要求也在不断提高。不但需要进行仿真验证的功能点越来越繁复,而且验证周期的要求越来越严格。
3.现有的芯片设计流程中,分为前端设计(逻辑设计)和后端设计(物理设计)两个阶段。前端设计主要是以通过硬件描述语言(如verilog)来实现芯片的逻辑功能,而代码描述的正确性主要就是通过对这些代码(或是由这些代码生成的网表)的仿真验证来实现的。在标准的仿真验证流程中,需要确保的前端设计涉及到的逻辑功能的功能点,都需要通过构造相应的仿真场景,证实前段设计逻辑功能的正确性。
4.对复杂度较高的系统进行仿真验证,随机验证是一个重要的步骤,可以在尽可能减少人力的前提下覆盖更多复杂甚至是预期外的场景。随机化激励可以仅用几行代码就能产生大量的激励数据,通过为设计提供随机激励信号来扩大验证的测试空间。但是,当设计规模很大且非常复杂时,随机验证空间会变得近乎无限,于是需要给随机化过程施加一定的约束,使其按照约束生成随机化的激励,即让它生成的随机化的激励更多地落在有效的区域或者边界内,以更快地达到功能覆盖率的要求。因此,随机约束的选择也决定了随机验证的效率。约束过于宽泛会造成随机出来的场景大部分都是没有意义的,约束过于严格又会限制随机出的场景类型。
5.在现有的仿真验证中,定向验证一般是基于覆盖率驱动的,既通过分析对于功能点覆盖(或者关键代码行的覆盖)的情况来构造特定的激励来进行定向验证。而随着待验证芯片的规模不断扩大,为了提高效率,缩短验证周期,更多的随机验证被引入到基于覆盖率驱动的验证中来。通过对于覆盖率情况的分析,添加不同的随机约束来构造更多的验证场景。然后,对于随机验证无法覆盖到的功能点,再构造特定的定向验证。
6.在现在主流的验证流程中,对于随机约束的选择还是更多依赖工程师对每次随机仿真验证的过程进行监控和分析,依照随机验证的进展来手动调整每次的随机约束,这样的做法虽然保证了不会有额外的时间和仿真资源的浪费,但其效率和准确性完全依赖于工程师,并且随着系统复杂性和规模的增长,面临的挑战也越来越大。
7.为了在有限的人力资源下缩短验证周期,就需要提高随机验证的并行度,即使用更多的资源同时启动多个仿真验证环境进行仿真,为了提高随机验证场景的多样性,不同的验证环境会采用不同的随机约束。然后通过人工或者编写自动化脚本判断是否结束仿真,并收集汇总验证结果进行分析。
8.现有的并行仿真的方法的缺点一是自动化程度不足,随机约束的选择和切换还是得工程师手动修改和重启仿真;二是验证结果的汇总会有滞后性,因为每一个仿真验证过
程的整体覆盖率的真实情况,需要验证结束之后才会汇总统计,而每一个验证环境的验证结束时间通常区别很大。这样的话,如果需要根据当前并行的随机验证的执行情况,来决定下一轮要启动的随机验证的随机约束选择,就必须等到所有验证都结束,这就降低了效率。


技术实现要素:

9.有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种系统验证仿真方法,包括以下步骤:
10.为每一个仿真验证环境配置随机约束;
11.根据配置的随机约束启动每一个仿真验证环境中的仿真验证过程并将覆盖率记录到对应的覆盖率结果文件中;
12.周期性扫描每一个覆盖率结果文件;
13.响应于覆盖率结果文件中的覆盖率未达到预设值,更新对应的仿真验证环境的随机约束;
14.响应于覆盖率结果文件中的覆盖率达到预设值,结束对应的仿真验证环境中的仿真验证过程。
15.在一些实施例中,还包括:
16.响应于检测到仿真验证过程中出现异常,将对应的异常信息记录到状态记录文件中。
17.在一些实施例中,响应于覆盖率结果文件中的覆盖率未达到预设值,更新对应的仿真验证环境的随机约束,进一步包括:
18.响应于检测到覆盖率结果文件中的覆盖率未达到预设值且超过预设时间段未更新,利用预设算法更新对应的仿真验证环境的随机约束;
19.将更新后的随机约束记录到随机约束文件中。
20.在一些实施例中,还包括:
21.响应于接收到统一终止指令,将所有的仿真验证过程终止。
22.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种系统验证仿真系统,包括:
23.配置模块,配置为每一个仿真验证环境配置随机约束;
24.启动模块,配置为根据配置的随机约束启动每一个仿真验证环境中的仿真验证过程并将覆盖率记录到对应的覆盖率结果文件中;
25.扫描模块,配置为周期性扫描每一个覆盖率结果文件;
26.更新模块,配置为响应于覆盖率结果文件中的覆盖率未达到预设值,更新对应的仿真验证环境的随机约束;
27.结束模块,配置为响应于覆盖率结果文件中的覆盖率达到预设值,结束对应的仿真验证环境中的仿真验证过程。
28.在一些实施例中,还包括异常处理模块,配置为:
29.响应于检测到仿真验证过程中出现异常,将对应的异常信息记录到状态记录文件中。
30.在一些实施例中,更新模块还配置为:
31.响应于检测到覆盖率结果文件中的覆盖率未达到预设值且超过预设时间段未更新,利用预设算法更新对应的仿真验证环境的随机约束;
32.将更新后的随机约束记录到随机约束文件中。
33.在一些实施例中,还包括终止模块,配置为:
34.响应于接收到统一终止指令,将所有的仿真验证过程终止。
35.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
36.至少一个处理器;以及
37.存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种系统验证仿真方法的步骤。
38.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种系统验证仿真方法的步骤。
39.本发明具有以下有益技术效果之一:本发明提出的方案能够并行进行多个仿真环境的仿真,能依据自定义的规则让各个验证环境自动化切换随机约束,在提高自动化程度的同时提高并行仿真验证的效率,从而达到缩短验证周期和芯片研发周期的目的。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
41.图1为本发明的实施例提供的系统验证仿真方法的流程示意图;
42.图2为本发明的实施例提供的系统验证仿真方法的流程框图;
43.图3为本发明的实施例提供的用于系统验证仿真的系统的结构示意图;
44.图4为本发明的实施例提供的计算机设备的结构示意图;
45.图5为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
46.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
47.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
48.根据本发明的一个方面,本发明的实施例提出一种系统验证仿真方法,如图1所示,其可以包括步骤:
49.s1,为每一个仿真验证环境配置随机约束;
50.s2,根据配置的随机约束启动每一个仿真验证环境中的仿真验证过程并将覆盖率记录到对应的覆盖率结果文件中;
51.s3,周期性扫描每一个覆盖率结果文件;
52.s4,响应于覆盖率结果文件中的覆盖率未达到预设值,更新对应的仿真验证环境的随机约束;
53.s5,响应于覆盖率结果文件中的覆盖率达到预设值,结束对应的仿真验证环境中的仿真验证过程。
54.本发明提出的方案能够并行进行多个仿真环境的仿真,能依据自定义的规则让各个验证环境自动化切换随机约束,在提高自动化程度的同时提高并行仿真验证的效率,从而达到缩短验证周期和芯片研发周期的目的。
55.在一些实施例中,s1,为每一个仿真验证环境配置随机约束,具体的,如图2所示,可以统一调用配置脚本并按照初始配置的不同随机约束启动每个仿真验证环境,每一个仿真验证环境均有一个随机约束文件,该文件按照规定好的格式和顺序放置各项随机约束的值,当仿真验证环境需要时就通过读取该文件内容来获得随机约束,并按照该随机约束生成随机激励进行后面的仿真验证。
56.在一些实施例中,s2,根据配置的随机约束启动每一个仿真验证环境中的仿真验证过程并将覆盖率记录到对应的覆盖率结果文件中,具体的,如图2所示,每个仿真验证环境都会有一个对应的覆盖率结果文件,并且,每当仿真验证中出现新的覆盖率目标达成,就会更新该文件。
57.在一些实施例中,还包括:
58.响应于检测到仿真验证过程中出现异常,将对应的异常信息记录到状态记录文件中。
59.具体的,如图2所示,为了实现控制管理的自动化,需要实现仿真验证过程状态的统一记录,每个仿真验证环境都会有一个对应的状态记录文件,当仿真因为各种原因(包括仿真出现错误、系统异常等等)终止时,需要将信息写入该文件;反之,则需要周期性地将仿真时间等信息写入文件,周期长短可以根据实际情况而定,一般来说不应超过s3中的预设扫描周期长度。
60.在一些实施例中,响应于覆盖率结果文件中的覆盖率未达到预设值,更新对应的仿真验证环境的随机约束,进一步包括:
61.响应于检测到覆盖率结果文件中的覆盖率未达到预设值且超过预设时间段未更新,利用预设算法更新对应的仿真验证环境的随机约束;
62.将更新后的随机约束记录到随机约束文件中。
63.具体的,如图2所示,可以利用随机约束更新模块判断是否需要更新、以及如何更新随机约束。如果覆盖率超过一定的时间一直没有增长,就可以判断对应的随机约束需要更新,这个时间长短依据所有仿真验证过程的覆盖率增长情况动态调整(因为覆盖率的增长速度肯定是随着覆盖率的增加而越来越慢的)。而如何更新随机约束,可以采用各种不同的算法实现,最简单的就是遍历,每次更新都换一个所有仿真验证过程都没使用过的随机约束赋值。
64.在一些实施例中,还包括:
65.响应于接收到统一终止指令,将所有的仿真验证过程终止。
66.具体的,相对于传统上人工启动和管理多个并行仿真验证过程,本发明要实现一
个简单的控制管理程序,对并行的每个仿真验证过程进行控制管理,并在整个仿真过程中一直保持运行状态。具体功能包括:可以统一调用配置脚本并按照初始配置的不同随机约束启动每个仿真验证环境;周期性地扫描各个仿真过程对应的覆盖率结果文件,并将覆盖率结果和对应的随机约束值发送给随机约束更新模块,并按照得到的反馈结果修改对应的随机约束文件;按照需求将新生成的随机约束写入对应的仿真验证环境的随机约束文件;周期性地扫描各个状态记录文件,当发现出现仿真过程异常终止时,显示或发送提示信息给验证人员处理(其它仿真过程继续进行);在需要时,可以统一终止所有的仿真验证过程,终止前会对所有仿真验证过程的覆盖率和状态文件进行一遍扫描,并汇总信息输出。
67.本发明针对大规模芯片的随机仿真验证,提出一种高自动化的多随机验证环境并行仿真方法,统一规范各个仿真验证过程的随机约束输入和仿真结果输出,并通过自动化的汇总收集覆盖率结果作为依据,动态地更新各个仿真验证过程的随机约束,从而实现在提高自动化程度的同时提高多随机验证的并行仿真效率。
68.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种用于系统验证仿真的系统400,如图3所示,包括:
69.配置模块401,配置为每一个仿真验证环境配置随机约束;
70.启动模块402,配置为根据配置的随机约束启动每一个仿真验证环境中的仿真验证过程并将覆盖率记录到对应的覆盖率结果文件中;
71.扫描模块403,配置为周期性扫描每一个覆盖率结果文件;
72.更新模块404,配置为响应于覆盖率结果文件中的覆盖率未达到预设值,更新对应的仿真验证环境的随机约束;
73.结束模块405,配置为响应于覆盖率结果文件中的覆盖率达到预设值,结束对应的仿真验证环境中的仿真验证过程。
74.在一些实施例中,还包括异常处理模块,配置为:
75.响应于检测到仿真验证过程中出现异常,将对应的异常信息记录到状态记录文件中。
76.在一些实施例中,更新模块404还配置为:
77.响应于检测到覆盖率结果文件中的覆盖率未达到预设值且超过预设时间段未更新,利用预设算法更新对应的仿真验证环境的随机约束;
78.将更新后的随机约束记录到随机约束文件中。
79.在一些实施例中,还包括终止模块,配置为:
80.响应于接收到统一终止指令,将所有的仿真验证过程终止。
81.基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机设备501,包括:
82.至少一个处理器520;以及
83.存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种系统验证仿真方法的步骤。
84.基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种系统验证仿真方法的步骤。
85.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
86.此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
87.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
88.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
89.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
90.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
91.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
92.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1