CN117034821B - 用于芯片设计前端仿真验证的回归验证方法及介质 - Google Patents
用于芯片设计前端仿真验证的回归验证方法及介质 Download PDFInfo
- Publication number
- CN117034821B CN117034821B CN202311298055.0A CN202311298055A CN117034821B CN 117034821 B CN117034821 B CN 117034821B CN 202311298055 A CN202311298055 A CN 202311298055A CN 117034821 B CN117034821 B CN 117034821B
- Authority
- CN
- China
- Prior art keywords
- regression
- longest
- verification
- regression verification
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012795 verification Methods 0.000 title claims abstract description 269
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000004088 simulation Methods 0.000 title claims abstract description 89
- 238000013461 design Methods 0.000 title claims abstract description 39
- 238000012360 testing method Methods 0.000 claims abstract description 88
- 238000013515 script Methods 0.000 claims abstract description 50
- 238000003860 storage Methods 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 34
- 238000012938 design process Methods 0.000 claims description 27
- 238000012546 transfer Methods 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012731 temporal analysis Methods 0.000 claims description 2
- 238000000700 time series analysis Methods 0.000 claims description 2
- 238000013468 resource allocation Methods 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000010200 validation analysis Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000007619 statistical method Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012300 Sequence Analysis Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000009960 carding Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000001558 permutation test Methods 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/27—Regression, e.g. linear or logistic regression
Abstract
本申请涉及计算机技术领域,提供一种用于芯片设计前端仿真验证的回归验证方法及介质。方法包括:确定与第一项目相关联的第一阶段和第一系统复杂度;基于第一阶段和第一系统复杂度,确定与第一项目相关联的第一回归验证配置;基于第一回归验证配置,生成第一回归验证脚本;执行第一回归验证脚本从而得到第一回归验证结果,在执行过程中基于第一回归验证配置所包括的所述单个用例最大重跑数量和所述单个用例最长仿真时间选择性地重跑第一测试用例。如此均衡优化资源配置。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于芯片设计前端仿真验证的回归验证方法及介质。
背景技术
在芯片设计环节,需要通过芯片验证尽量确保芯片设计的正确性,这样后续在芯片生成环节才能有助于确保生产出来的芯片符合设计目的和预期功能。在芯片设计开发过程中,需要频繁的改动代码、添加功能、修复错误以及可能更新验证环境等,而为了验证工作尽量完备,需要进行回归验证也就是将已经验证通过的验证用例在新的代码、新的环境下重新测试。随着芯片开发项目进展,往往需要在兼顾新的功能、新的环境的同时也要运行旧版本代码的回归验证,这样涉及到不同版本代码之间的差异和稳定性问题,还可能涉及到不同开发人员、不同验证人员的切换,并且还受到有限的项目资源的限制例如用于运行验证用例的算力资源和存储资源是有限的。这些因素使得难以在芯片设计环节进行大量的回归测试来对芯片前端设计的功能和性能进行验证。
为此,本申请提供了一种用于芯片设计前端仿真验证的回归验证方法及介质,用于解决现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种用于芯片设计前端仿真验证的回归验证方法。所述回归验证方法包括:确定与第一项目相关联的第一阶段和第一系统复杂度,其中,与所述第一项目相关联的芯片设计过程基于代码完成度被划分为多个阶段,所述第一阶段属于所述多个阶段且与所述第一项目的当前完成度对应,所述第一系统复杂度基于与所述第一项目相关联的芯片功能确定;基于所述第一阶段和所述第一系统复杂度,确定与所述第一项目相关联的第一回归验证配置,其中,所述第一回归验证配置包括单个用例最大重跑数量、单次提交任务数量、单个用例最长仿真时间、最长回归时间,所述第一回归验证配置所包括的所述单个用例最大重跑数量和单次提交任务数量基于所述第一阶段单方面地确定,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间基于所述第一阶段和所述第一系统复杂度共同确定;基于所述第一回归验证配置,生成第一回归验证脚本,其中,所述第一回归验证脚本指示在第一寄存器传输级代码和第一环境代码下按照所述第一回归验证配置运行第一测试用例;执行所述第一回归验证脚本从而得到第一回归验证结果,其中,在执行所述第一回归验证脚本的过程中基于所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单个用例最长仿真时间选择性地重跑所述第一测试用例。
通过本申请的第一方面,通过与所述第一项目相关联的第一回归验证配置,实现了生成第一回归验证脚本用于在第一寄存器传输级代码和第一环境代码下按照所述第一回归验证配置运行第一测试用例,不仅针对第一测试用例实现了精细化的资源管理控制,而且在宏观层面上根据项目不同阶段来均衡优化资源配置以及根据系统复杂度来均衡优化资源配置的有关细节从而提供了深度定制化内容。这样使得图1所示的回归验证方法可以结合具体应用场景、具体项目需要以及具体可用资源情况来设计出均衡优化后的回归验证解决方案,从而可以有效地应对在芯片设计前端仿真验证中回归验证面临的被提交不同版本代码的管理问题、大量回归验证受到有限资源限制的问题以及下载波形和打印报告的需要。
在本申请的第一方面的一种可能的实现方式中,所述回归验证方法还包括:在执行所述第一回归验证脚本的过程中,记录在所述第一寄存器传输级代码和所述第一环境代码下按照所述第一回归验证配置初次运行所述第一测试用例的第一运行结果和第一运行时间,当所述第一运行结果为不通过时,比较所述第一运行时间和所述第一回归验证配置所包括的所述单个用例最长仿真时间从而确定是否重跑所述第一测试用例。
在本申请的第一方面的一种可能的实现方式中,所述回归验证方法还包括:在执行所述第一回归验证脚本的过程中,记录所述第一测试用例的不通过次数,比较所述不通过次数和所述单个用例最大重跑数量从而确定是否重跑所述第一测试用例。
在本申请的第一方面的一种可能的实现方式中,所述多个阶段包括初期阶段、中期阶段和后期阶段,当所述第一阶段是所述初期阶段时,所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单次提交任务数量分别是第一单个用例最大重跑数量和第一单次提交任务数量,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单次提交任务数量分别是第二单个用例最大重跑数量和第二单次提交任务数量,其中,所述第一单个用例最大重跑数量小于所述第二单个用例最大重跑数量,所述第一单次提交任务数量小于所述第二单次提交任务数量。
在本申请的第一方面的一种可能的实现方式中,当所述第一阶段是所述初期阶段时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第一单个用例最长仿真时间和第一最长回归时间,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第二单个用例最长仿真时间和第二最长回归时间,其中,所述第一单个用例最长仿真时间大于所述第二单个用例最长仿真时间,所述第一最长回归时间大于所述第二最长回归时间。
在本申请的第一方面的一种可能的实现方式中,与所述第一项目相关联的所述芯片设计过程在所述初期阶段的代码完成度小于与所述第一项目相关联的所述芯片设计过程在所述中期阶段的代码完成度,与所述第一项目相关联的所述芯片设计过程在所述中期阶段的代码完成度小于与所述第一项目相关联的所述芯片设计过程在所述后期阶段的代码完成度。
在本申请的第一方面的一种可能的实现方式中,所述第一系统复杂度是系统级、子系统级、模块级或者单元级,当所述第一系统复杂度是所述系统级时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第三单个用例最长仿真时间和第三最长回归时间,当所述第一系统复杂度是所述模块级或者所述单元级时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第四单个用例最长仿真时间和第四最长回归时间,所述第三单个用例最长仿真时间大于所述第四单个用例最长仿真时间,所述第三最长回归时间大于所述第四最长回归时间。
在本申请的第一方面的一种可能的实现方式中,所述回归验证方法还包括:至少在执行所述第一回归验证脚本之前,递归下载所述第一寄存器传输级代码和所述第一环境代码到第一文件目录,然后在所述第一文件目录下执行所述第一回归验证脚本,当所述第一寄存器传输级代码是最新代码时所述第一文件目录是当前目录,当所述第一寄存器传输级代码是非最新代码时所述第一为文件目录是与所述第一寄存器传输级代码对应的新建目录。
在本申请的第一方面的一种可能的实现方式中,在执行所述第一回归验证脚本的过程中,记录所述第一测试用例的运行时间并且监测计算集群负载情况,根据所记录的所述第一测试用例的运行时间和所监测的所述计算集群负载情况,提交所述第一测试用例到所述计算集群中的给定节点。
在本申请的第一方面的一种可能的实现方式中,所述回归验证方法还包括:至少在执行所述第一回归验证脚本之前,基于所述第一阶段确定所述第一项目的存储资源优先级和算力资源优先级;基于所述第一项目的算力资源优先级分配用于执行所述第一回归验证脚本的算力资源;基于所述第一项目的存储资源优先级分配用于存储所述第一回归验证结果的存储资源。
在本申请的第一方面的一种可能的实现方式中,所述多个阶段包括初期阶段、中期阶段和后期阶段,当所述第一阶段是所述初期阶段时,所述第一项目的存储资源优先级和算力资源优先级分别是第一存储资源优先级和第一算力资源优先级,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一项目的存储资源优先级和算力资源优先级分别是第二存储资源优先级和第二算力资源优先级,其中,所述第一存储资源优先级高于所述第二存储资源优先级,所述第一算力资源优先级低于所述第二算力资源优先级。
在本申请的第一方面的一种可能的实现方式中,所述第一回归验证结果的存储资源还用于与所述第一回归验证结果相关联的报告打印和波形下载。
在本申请的第一方面的一种可能的实现方式中,所述第一项目的存储资源优先级还基于所述第一项目的时序分析需求确定。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种用于芯片设计前端仿真验证的回归验证方法的流程示意图;
图2为本申请实施例提供的在芯片设计过程中使用图1所示的回归验证方法的示意图;
图3为本申请实施例提供的一种使用图1所示的回归验证方法的计算机系统的示意图;
图4为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种用于芯片设计前端仿真验证的回归验证方法的流程示意图。如图1所示,所述回归验证方法包括以下步骤。
步骤S102:确定与第一项目相关联的第一阶段和第一系统复杂度,其中,与所述第一项目相关联的芯片设计过程基于代码完成度被划分为多个阶段,所述第一阶段属于所述多个阶段且与所述第一项目的当前完成度对应,所述第一系统复杂度基于与所述第一项目相关联的芯片功能确定。
步骤S104:基于所述第一阶段和所述第一系统复杂度,确定与所述第一项目相关联的第一回归验证配置,其中,所述第一回归验证配置包括单个用例最大重跑数量、单次提交任务数量、单个用例最长仿真时间、最长回归时间,所述第一回归验证配置所包括的所述单个用例最大重跑数量和单次提交任务数量基于所述第一阶段单方面地确定,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间基于所述第一阶段和所述第一系统复杂度共同确定。
步骤S106:基于所述第一回归验证配置,生成第一回归验证脚本,其中,所述第一回归验证脚本指示在第一寄存器传输级代码和第一环境代码下按照所述第一回归验证配置运行第一测试用例。
步骤S108:执行所述第一回归验证脚本从而得到第一回归验证结果,其中,在执行所述第一回归验证脚本的过程中基于所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单个用例最长仿真时间选择性地重跑所述第一测试用例。
图1所示的回归验证方法用于芯片设计前端仿真验证。芯片设计过程一般从了解客户需求开始,进行系统设计和功能分配,接着先用硬件描述语言进行功能性描述得到硬件描述语言代码,再转化成寄存器传输级代码。寄存器传输级代码用于对芯片设计进行硬件结构描述,代表了逻辑电路图。寄存器传输级代码可以经过综合转换成门级网表,门级网表可以被转换成集成电路版图并用于后续的芯片制造。其中,芯片设计过程中需要频繁地更新寄存器传输级代码,也就是需要对芯片设计的寄存器转换级描述进行频繁的迭代。寄存器传输级代码从寄存器的角度表达数据的处理过程,后续可以通过综合工具综合成具体电路结构,也就是用于综合并生成门级网表,其包括了对寄存器和组合逻辑的数据流描述。在芯片开发过程中,当发生增删功能、修改功能、修改错误等,都要提交新的版本的寄存器传输级代码,也就需要频繁地对寄存器传输级代码进行更新。另外,芯片开发通常采用分项目进行的方式,每个项目对应了不同业务模块或者不同功能的寄存器传输级代码,这种分项目进行的方式在设计复杂度较高的芯片如系统级芯片中广泛采用。因此,不同的项目各自的开发人员可能各自提交不同的代码版本。为了在芯片设计环节尽可能地验证芯片设计的正确性,需要覆盖尽量大的验证空间,为此需要提交大量的回归验证。回归验证一般指的是用已经验证通过的测试用例重新测试一下新版本的代码。已经验证通过的测试用例是在旧版本的代码下验证通过。芯片开发人员为了增删功能、修改功能、修改错误等,提交了新版本的代码,还可能改动了验证环境;通过提交回归验证可以确保芯片设计中的错误已经得到正确修改,另外,新版本的代码可能引入了新的错误,或者使得原本在旧版本的代码下验证通过的测试用例现在无法通过。另外,对于分项目进行的芯片开发方式,设计人员提交的新版本的代码可能包含新的功能或者新的业务模块,而旧版本的代码对应的是既有功能或者既有业务模块,考虑到芯片内部的模块和功能之间的协作关系和互联关系,有可能也需要用已经验证通过的测试用例重新测试一下新版本的代码。为此,在实现尽量完备的验证工作的需求下,芯片设计前端仿真验证涉及到大规模的回归测试或者回归验证,也就是用已经验证通过的测试用例对新版本的代码(相对于该测试用例已经验证过的版本而言是新版本,不一定是当前最新版本)进行验证。并且,为了覆盖尽量大的验证空间,在验证环境和测试用例上一般采用受约束的随机测试方式,通过随机生成的测试用例和随机内容以及每次仿真中产生的随机激励来试图检测出新的错误。因此,在芯片设计前端仿真验证中回归验证面临提交的不同版本代码的管理问题,还面临大量回归验证受到有限资源限制的问题,还面临下载波形和打印报告的需要。下面结合本申请具体实施例详细说明图1所示的回归验证方法如何应对这些挑战。
参阅上述各个步骤,在步骤S102,确定与第一项目相关联的第一阶段和第一系统复杂度。芯片设计过程可以包含多个项目节点,这些项目节点之间可能是并行的关系也可能是串行关系。通过推进项目进展,从一个项目节点进展到另一个项目节点。芯片开发人员或者验证人员提交大量回归验证的时间点或者事件触发点,是难以预计的,可能是出于增删功能、修改功能、修改错误等需要,也可能是出于环境代码的变化、验证方法学的变化、验证工具的变化等,也可能是出于其它原因。上面提到,提交大量的回归验证,需要占用有限的计算机资源来运行测试用例和监控结果,还可能需要占用资源进行波形下载和报告打印,并且,用于回归验证的测试用例可能是针对特定的代码版本和环境版本也就可能涉及到不同版本代码的回归。为了能有效地应对芯片设计过程中回归验证的各种挑战,图1所示的回归验证方法在步骤S102中确定与第一项目相关联的第一阶段和第一系统复杂度。这里,与所述第一项目相关联的芯片设计过程基于代码完成度被划分为多个阶段,所述第一阶段属于所述多个阶段且与所述第一项目的当前完成度对应,所述第一系统复杂度基于与所述第一项目相关联的芯片功能确定。因此,通过确定与第一项目相关联的第一阶段和第一系统复杂度,可以在后续步骤中实现根据项目不同阶段来均衡优化资源配置。这是考虑到项目的不同阶段,也即基于代码完成度划分的多个阶段,各自对回归验证的资源需求存在不同。例如基于代码完成度,可以将代码完成度85%、代码完成度99%还有代码完成度100%划分为不同阶段。在不同阶段对回归验证的资源需求程度不同。一般来说,在初期阶段也即项目进展初期,关注点在于针对各项功能的测试用例是否通过,通常不需要提交大量的回归验证。在后期阶段也即项目进展后期,例如代码完成度99%,关注点在于通过大量随机化测试用例来覆盖尽量大的验证范围和检测未知错误,因此需要提交大量的回归验证。相对的,基于代码完成度划分的多个阶段,各自也对时序分析、波形下载和报告打印等有不同的需求。另外,通过确定与第一项目相关联的第一阶段和第一系统复杂度,还可以在后续步骤中实现根据系统复杂度来均衡优化资源配置。这是考虑到与所述第一项目相关联的芯片功能可能具有不同的代码复杂度,为此需要进行相应的回归验证配置,从而充分利用有限的计算资源和存储资源。
继续参阅图1,在步骤S104,基于所述第一阶段和所述第一系统复杂度,确定与所述第一项目相关联的第一回归验证配置。其中,所述第一回归验证配置包括单个用例最大重跑数量、单次提交任务数量、单个用例最长仿真时间、最长回归时间,所述第一回归验证配置所包括的所述单个用例最大重跑数量和单次提交任务数量基于所述第一阶段单方面地确定,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间基于所述第一阶段和所述第一系统复杂度共同确定。上面提到,通过确定与第一项目相关联的第一阶段和第一系统复杂度,有助于实现根据项目不同阶段来均衡优化资源配置以及实现根据系统复杂度来均衡优化资源配置。所述第一回归验证配置包括单个用例最大重跑数量、单次提交任务数量、单个用例最长仿真时间、最长回归时间。其中,单个用例最大重跑数量代表了单个测试用例在未通过的情况下重跑的最大次数,这个参数如果设为1则意味着该测试用例一旦未通过则不会再次重跑。单次提交任务数量代表了能同时提交的回归验证的任务数量。单个用例最长仿真时间代表了单个测试用例在特定代码版本和环境版本下运行的最长仿真时间。最长回归时间则代表了整个回归验证测试的最长持续时间。所述第一回归验证配置的这些参数,用于在资源管理控制的层面来对回归验证进行约束。具体地,通过将某个测试用例的重跑次数或者过去不通过的记录与单个用例最大重跑数量进行比对,可以在超出后停止回归验证并释放仿真资源;通过限制单次提交任务数量也可以避免浪费存储空间;通过限制最长回归时间也可以在超出后停止回归验证并释放仿真资源;通过限制单个用例最长仿真时间也可以避免在单个测试用例上浪费太多仿真资源。因此,通过第一回归验证配置可以在宏观上实现资源的精细化管理控制,还可以结合与第一项目相关联的第一阶段和第一系统复杂度,从而实现对不同阶段、不同系统复杂度的深度定制,从而达到使用有限的资源充分满足回归验证需要的目的。
继续参阅图1,在步骤S106,基于所述第一回归验证配置,生成第一回归验证脚本。其中,所述第一回归验证脚本指示在第一寄存器传输级代码和第一环境代码下按照所述第一回归验证配置运行第一测试用例。然后,在步骤S108,执行所述第一回归验证脚本从而得到第一回归验证结果。其中,在执行所述第一回归验证脚本的过程中基于所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单个用例最长仿真时间选择性地重跑所述第一测试用例。这里,在执行所述第一回归验证脚本的过程中,对于第一测试用例的回归验证结果,可能是通过也可能是不通过,而不通过的时候重跑第一测试用例则会带来额外的资源占用。为此,基于所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单个用例最长仿真时间选择性地重跑所述第一测试用例,体现了上述的在宏观上实现资源的精细化管理控制。应当理解的是,当所述第一测试用例的测试记录不满足所述单个用例最大重跑数量的要求,例如所述第一测试用例的重跑数量超过了该阈值也即所述单个用例最大重跑数量,则意味着不重跑第一测试用例;相对的,当所述第一测试用例的测试记录不满足所述单个用例最长仿真时间,例如所述第一测试用例的仿真时间超过了该阈值也即所述单个用例最长仿真时间,则意味着不重跑第一测试用例。因此,只有当第一测试用例既没有超过所述单个用例最大重跑数量也没有超过所述单个用例最长仿真时间,这时候才可以考虑重跑第一测试用例。因此实现了对第一测试用例的资源控制管理方面进行精细化设定。并且,所述第一回归验证配置所包括的所述单个用例最大重跑数量和单次提交任务数量基于所述第一阶段单方面地确定,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间基于所述第一阶段和所述第一系统复杂度共同确定。如此,不仅实现了对第一测试用例的资源控制管理方面进行精细化设定,而且还结合了宏观层面上实现根据项目不同阶段来均衡优化资源配置以及实现根据系统复杂度来均衡优化资源配置的有关细节。总之,图1所示的回归验证方法用于芯片设计前端仿真验证,通过与所述第一项目相关联的第一回归验证配置,实现了生成第一回归验证脚本用于在第一寄存器传输级代码和第一环境代码下按照所述第一回归验证配置运行第一测试用例,不仅针对第一测试用例实现了精细化的资源管理控制,而且在宏观层面上根据项目不同阶段来均衡优化资源配置以及根据系统复杂度来均衡优化资源配置的有关细节从而提供了深度定制化内容。这样使得图1所示的回归验证方法可以结合具体应用场景、具体项目需要以及具体可用资源情况来设计出均衡优化后的回归验证解决方案,从而可以有效地应对在芯片设计前端仿真验证中回归验证面临的被提交不同版本代码的管理问题、大量回归验证受到有限资源限制的问题以及下载波形和打印报告的需要。第一寄存器传输级代码也可以理解为芯片前端硬件描述语言代码,用于构建寄存器传输级用例,例如构建寄存器模型的测试用例还有构建待测设计等。第一环境代码用于构建验证环境。
图2为本申请实施例提供的在芯片设计过程中使用图1所示的回归验证方法的示意图。如图2所示,芯片设计过程包括多个节点,在节点A 202之后,并行地进行节点B 204和节点C 205,然后再汇合到节点D 206,在节点D 206之后进行节点E 208。芯片设计过程可以包含多个项目节点,这些项目节点之间可能是并行的关系也可能是串行关系。通过推进项目进展,从一个项目节点进展到另一个项目节点。图2所示的多个节点之间的关系仅为示例性。芯片开发人员或者验证人员提交大量回归验证的时间点或者事件触发点,是难以预计的,可能是出于增删功能、修改功能、修改错误等需要,也可能是出于环境代码的变化、验证方法学的变化、验证工具的变化等,也可能是出于其它原因。上面提到,提交大量的回归验证,需要占用有限的计算机资源来运行测试用例和监控结果,还可能需要占用资源进行波形下载和报告打印,并且,用于回归验证的测试用例可能是针对特定的代码版本和环境版本也就可能涉及到不同版本代码的回归。以图2为例,在节点B 204提交回归验证,可以采用图2所示的步骤,包括步骤S210:确定与节点B 204相关联的阶段和系统复杂度;S212:确定与节点B 204相关联的回归验证配置,生成回归验证脚本;S214:执行与节点B 204相关联的回归验证脚本得到回归验证结果。相对的,在节点C 205提交回归验证,可以采用图2所示的步骤,包括S220:确定与节点C 205相关联的阶段和系统复杂度;S222:确定与节点C 205相关联的回归验证配置,生成回归验证脚本;S224:执行与节点C 205相关联的回归验证脚本得到回归验证结果。在图2所示的多节点构成的芯片设计过程,可以参考图2所示的细节在节点B 204和节点C 205进行回归验证,具体细节还可以进一步参考图1所示的回归验证方法,在此不再赘述。应当理解的是,节点B 204和节点C 205各自代表了同一个芯片设计过程中的不同项目节点,图1所示的种用于芯片设计前端仿真验证的回归验证方法,其中提及的第一项目可以是指代节点B 204或者节点C 205。可以看出,通过为每个项目节点提供可深度定制的回归验证配置以及生成回归验证脚本,有助于灵活地结合芯片设计过程的具体构成来提供回归验证解决方案。例如,节点B 204可以是芯片上模拟部分的设计,节点C 205可以是芯片上数字部分的设计。通过分别进行节点B 204和节点C 205,也就分别完成了芯片上的模拟部分和数字部分的设计,然后再汇合到节点D 206进行数模混合设计。芯片设计过程可以根据实际需要拆解成任意可能的项目节点的组合,而这些项目节点上各自都可能存在大量回归验证的需要。通过为每个项目节点提供可深度定制的回归验证配置以及生成回归验证脚本,特别是根据项目不同阶段来均衡优化资源配置以及根据系统复杂度来均衡优化资源配置,可以随着项目进展在不同项目节点上提供均衡优化后的回归验证解决方案。
图3为本申请实施例提供的一种使用图1所示的回归验证方法的计算机系统的示意图。如图3所示,管理平台302用于从代码版本库306下载和递归不同代码版本,还用于从测试用例库308下载测试用例,这样可以实现一键运行回归验证脚本并且递归下载特定版本代码和验证环境,简化了整体回归验证过程。管理平台302还与后台统计分析模块304通信地连接,这样可以将测试用例的运行结果,如重跑次数、仿真时间等,通过后台统计分析模块304进行记录和统计分析,从而帮助管理平台302进行资源管理控制。管理平台302还与计算集群310连接,测试用例被提交到计算集群310进行仿真验证。管理平台302还可以通过计算集群310来生成满足一定约束条件的随机化测试用例用于进行随机化回归验证。管理平台302还与波形下载模块312连接,用于提供波形下载和存储下载好的波形文件的服务。管理平台302还与报告打印模块314连接,用于提供报告打印服务。并且,后台统计分析模块304所搜集和统计分析的信息可以用于生成作为参考依据的回归验证报告。
参阅图1、图2和图3,通过与所述第一项目相关联的第一回归验证配置,实现了生成第一回归验证脚本用于在第一寄存器传输级代码和第一环境代码下按照所述第一回归验证配置运行第一测试用例,不仅针对第一测试用例实现了精细化的资源管理控制,而且在宏观层面上根据项目不同阶段来均衡优化资源配置以及根据系统复杂度来均衡优化资源配置的有关细节从而提供了深度定制化内容。这样使得图1所示的回归验证方法可以结合具体应用场景、具体项目需要以及具体可用资源情况来设计出均衡优化后的回归验证解决方案,从而可以有效地应对在芯片设计前端仿真验证中回归验证面临的被提交不同版本代码的管理问题、大量回归验证受到有限资源限制的问题以及下载波形和打印报告的需要。
在一种可能的实施方式中,所述回归验证方法还包括:在执行所述第一回归验证脚本的过程中,记录在所述第一寄存器传输级代码和所述第一环境代码下按照所述第一回归验证配置初次运行所述第一测试用例的第一运行结果和第一运行时间,当所述第一运行结果为不通过时,比较所述第一运行时间和所述第一回归验证配置所包括的所述单个用例最长仿真时间从而确定是否重跑所述第一测试用例。在一些实施例中,所述回归验证方法还包括:在执行所述第一回归验证脚本的过程中,记录所述第一测试用例的不通过次数,比较所述不通过次数和所述单个用例最大重跑数量从而确定是否重跑所述第一测试用例。如此通过选择性地重跑第一测试用例,实现了精细化的资源控制管理。
在一种可能的实施方式中,所述多个阶段包括初期阶段、中期阶段和后期阶段,当所述第一阶段是所述初期阶段时,所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单次提交任务数量分别是第一单个用例最大重跑数量和第一单次提交任务数量,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单次提交任务数量分别是第二单个用例最大重跑数量和第二单次提交任务数量,其中,所述第一单个用例最大重跑数量小于所述第二单个用例最大重跑数量,所述第一单次提交任务数量小于所述第二单次提交任务数量。在一些实施例中,当所述第一阶段是所述初期阶段时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第一单个用例最长仿真时间和第一最长回归时间,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第二单个用例最长仿真时间和第二最长回归时间,其中,所述第一单个用例最长仿真时间大于所述第二单个用例最长仿真时间,所述第一最长回归时间大于所述第二最长回归时间。在一些实施例中,与所述第一项目相关联的所述芯片设计过程在所述初期阶段的代码完成度小于与所述第一项目相关联的所述芯片设计过程在所述中期阶段的代码完成度,与所述第一项目相关联的所述芯片设计过程在所述中期阶段的代码完成度小于与所述第一项目相关联的所述芯片设计过程在所述后期阶段的代码完成度。如此实现了根据不同阶段均衡优化资源配置,也就是根据项目不同阶段均衡优化资源配置。芯片项目通常包含多个项目节点,如基于代码完成度划分的多个阶段,在不同阶段对回归验证的资源需求程度不同。在项目初期阶段,关注点在于针对各项功能的测试用例是否通过,通常不需提交大量回归验证;对于项目初期阶段,可以配置单个用例最大重跑数量为一个或者较少次数,并且减少单次提交任务数量;同时为了保证每个测试用例能够完整运行,提高单个用例最长仿真时间和最长回归时间。相对的,在项目后期阶段,关注点在于提高随机范围和提交大规模的随机回归验证;对于项目后期阶段,可以配置单个用例最大重跑数量为较多次数,这样有助于让更多的随机场景错误能够通过多次重跑被检测到,还可以提高单个用例最长仿真时间来增强随机化测试的效果。另外,对于多个项目并行开展的情况,可以通过对不同项目定制化配置回归验证配置,使得不太紧急的项目不会抢占过多资源,而将更多资源留给急需的项目,提升整体效率。
在一种可能的实施方式中,所述第一系统复杂度是系统级、子系统级、模块级或者单元级,当所述第一系统复杂度是所述系统级时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第三单个用例最长仿真时间和第三最长回归时间,当所述第一系统复杂度是所述模块级或者所述单元级时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第四单个用例最长仿真时间和第四最长回归时间,所述第三单个用例最长仿真时间大于所述第四单个用例最长仿真时间,所述第三最长回归时间大于所述第四最长回归时间。芯片项目会根据功能拆分为不同级别,包括但不限于:系统级、子系统级、模块级还有单元级。不同级别的代码复杂度差别很大,系统级的代码量远远高于模块级的代码量,可以相对提高系统级的单个用例最长仿真时间、最长回归时间等配置,对于单元模块级可以降低相应配置,限制计算资源和存储资源的分配。另外,根据每个级别所处的验证阶段,可动态调整回归配置。
在一种可能的实施方式中,所述回归验证方法还包括:至少在执行所述第一回归验证脚本之前,递归下载所述第一寄存器传输级代码和所述第一环境代码到第一文件目录,然后在所述第一文件目录下执行所述第一回归验证脚本,当所述第一寄存器传输级代码是最新代码时所述第一文件目录是当前目录,当所述第一寄存器传输级代码是非最新代码时所述第一为文件目录是与所述第一寄存器传输级代码对应的新建目录。如此,可以在当前文件夹下回归,或者新建目录下载版本库中代码运行特定代码回归并通过回归文件列表简化操作。
在一种可能的实施方式中,在执行所述第一回归验证脚本的过程中,记录所述第一测试用例的运行时间并且监测计算集群负载情况,根据所记录的所述第一测试用例的运行时间和所监测的所述计算集群负载情况,提交所述第一测试用例到所述计算集群中的给定节点。如此,根据测试用例前次运行时间,以及当前服务器集群负载情况,调配提交集群,优化仿真资源,提高回归效率。
在一种可能的实施方式中,所述回归验证方法还包括:至少在执行所述第一回归验证脚本之前,基于所述第一阶段确定所述第一项目的存储资源优先级和算力资源优先级;基于所述第一项目的算力资源优先级分配用于执行所述第一回归验证脚本的算力资源;基于所述第一项目的存储资源优先级分配用于存储所述第一回归验证结果的存储资源。在一些实施例中,所述多个阶段包括初期阶段、中期阶段和后期阶段,当所述第一阶段是所述初期阶段时,所述第一项目的存储资源优先级和算力资源优先级分别是第一存储资源优先级和第一算力资源优先级,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一项目的存储资源优先级和算力资源优先级分别是第二存储资源优先级和第二算力资源优先级,其中,所述第一存储资源优先级高于所述第二存储资源优先级,所述第一算力资源优先级低于所述第二算力资源优先级。在一些实施例中,所述第一回归验证结果的存储资源还用于与所述第一回归验证结果相关联的报告打印和波形下载。在一些实施例中,所述第一项目的存储资源优先级还基于所述第一项目的时序分析需求确定。如此,基于所述第一阶段确定所述第一项目的存储资源优先级和算力资源优先级,实现了算力资源和存储资源的均衡优化配置。并且,基于代码完成度划分的多个阶段,对算力资源和存储资源存在不同的偏好。一般来说,项目初期阶段,发生在刚梳理完成芯片需求之后,确定了芯片架构和设计方案;在项目初期阶段,代码刚刚开始写,此时各功能点均不稳定,此时不需大量回归验证。相对的,在项目中后期也即所述中期阶段或者所述后期阶段,此时代码已完成大多部分,各功能点、面积、功耗等均已经较为确定,一般此时已经可以交付后端同步启动。因此,在所述中期阶段或者所述后期阶段,应大量提交前端验证回归,提升功能覆盖率、代码覆盖率,回归验证也应大面积通过,并且可能需要探索不同工艺条件下的性能表现。因此,通过所述第一存储资源优先级高于所述第二存储资源优先级,所述第一算力资源优先级低于所述第二算力资源优先级,实现了算力资源和存储资源的均衡优化配置。另外,也实现了报告打印和波形下载方面的优化配置。项目的时序分析需求意味着某些项目可能需要存储和打印出来波形图进行更复杂的时序分析,这些可以通过定制化回归验证配置实现。
图4是本申请实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图4的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器430也可用于存储程序代码和数据,以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (15)
1.一种用于芯片设计前端仿真验证的回归验证方法,其特征在于,所述回归验证方法包括:
确定与第一项目相关联的第一阶段和第一系统复杂度,其中,与所述第一项目相关联的芯片设计过程基于代码完成度被划分为多个阶段,所述第一阶段属于所述多个阶段且与所述第一项目的当前完成度对应,所述第一系统复杂度基于与所述第一项目相关联的芯片功能确定;
基于所述第一阶段和所述第一系统复杂度,确定与所述第一项目相关联的第一回归验证配置,其中,所述第一回归验证配置包括单个用例最大重跑数量、单次提交任务数量、单个用例最长仿真时间、最长回归时间,所述第一回归验证配置所包括的所述单个用例最大重跑数量和单次提交任务数量基于所述第一阶段单方面地确定,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间基于所述第一阶段和所述第一系统复杂度共同确定;
基于所述第一回归验证配置,生成第一回归验证脚本,其中,所述第一回归验证脚本指示在第一寄存器传输级代码和第一环境代码下按照所述第一回归验证配置运行第一测试用例;
执行所述第一回归验证脚本从而得到第一回归验证结果,其中,在执行所述第一回归验证脚本的过程中基于所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单个用例最长仿真时间选择性地重跑所述第一测试用例。
2.根据权利要求1所述的回归验证方法,其特征在于,所述回归验证方法还包括:在执行所述第一回归验证脚本的过程中,记录在所述第一寄存器传输级代码和所述第一环境代码下按照所述第一回归验证配置初次运行所述第一测试用例的第一运行结果和第一运行时间,当所述第一运行结果为不通过时,比较所述第一运行时间和所述第一回归验证配置所包括的所述单个用例最长仿真时间从而确定是否重跑所述第一测试用例。
3.根据权利要求2所述的回归验证方法,其特征在于,所述回归验证方法还包括:在执行所述第一回归验证脚本的过程中,记录所述第一测试用例的不通过次数,比较所述不通过次数和所述单个用例最大重跑数量从而确定是否重跑所述第一测试用例。
4.根据权利要求1所述的回归验证方法,其特征在于,所述多个阶段包括初期阶段、中期阶段和后期阶段,当所述第一阶段是所述初期阶段时,所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单次提交任务数量分别是第一单个用例最大重跑数量和第一单次提交任务数量,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一回归验证配置所包括的所述单个用例最大重跑数量和所述单次提交任务数量分别是第二单个用例最大重跑数量和第二单次提交任务数量,其中,所述第一单个用例最大重跑数量小于所述第二单个用例最大重跑数量,所述第一单次提交任务数量小于所述第二单次提交任务数量。
5.根据权利要求4所述的回归验证方法,其特征在于,当所述第一阶段是所述初期阶段时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第一单个用例最长仿真时间和第一最长回归时间,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第二单个用例最长仿真时间和第二最长回归时间,其中,所述第一单个用例最长仿真时间大于所述第二单个用例最长仿真时间,所述第一最长回归时间大于所述第二最长回归时间。
6.根据权利要求4所述的回归验证方法,其特征在于,与所述第一项目相关联的所述芯片设计过程在所述初期阶段的代码完成度小于与所述第一项目相关联的所述芯片设计过程在所述中期阶段的代码完成度,与所述第一项目相关联的所述芯片设计过程在所述中期阶段的代码完成度小于与所述第一项目相关联的所述芯片设计过程在所述后期阶段的代码完成度。
7.根据权利要求1所述的回归验证方法,其特征在于,所述第一系统复杂度是系统级、子系统级、模块级或者单元级,当所述第一系统复杂度是所述系统级时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第三单个用例最长仿真时间和第三最长回归时间,当所述第一系统复杂度是所述模块级或者所述单元级时,所述第一回归验证配置所包括的所述单个用例最长仿真时间和所述最长回归时间分别是第四单个用例最长仿真时间和第四最长回归时间,所述第三单个用例最长仿真时间大于所述第四单个用例最长仿真时间,所述第三最长回归时间大于所述第四最长回归时间。
8.根据权利要求1所述的回归验证方法,其特征在于,所述回归验证方法还包括:
至少在执行所述第一回归验证脚本之前,递归下载所述第一寄存器传输级代码和所述第一环境代码到第一文件目录,然后在所述第一文件目录下执行所述第一回归验证脚本,当所述第一寄存器传输级代码是最新代码时所述第一文件目录是当前目录,当所述第一寄存器传输级代码是非最新代码时所述第一文件目录是与所述第一寄存器传输级代码对应的新建目录。
9.根据权利要求1所述的回归验证方法,其特征在于,在执行所述第一回归验证脚本的过程中,记录所述第一测试用例的运行时间并且监测计算集群负载情况,根据所记录的所述第一测试用例的运行时间和所监测的所述计算集群负载情况,提交所述第一测试用例到所述计算集群中的给定节点。
10.根据权利要求1所述的回归验证方法,其特征在于,所述回归验证方法还包括:
至少在执行所述第一回归验证脚本之前,基于所述第一阶段确定所述第一项目的存储资源优先级和算力资源优先级;
基于所述第一项目的算力资源优先级分配用于执行所述第一回归验证脚本的算力资源;
基于所述第一项目的存储资源优先级分配用于存储所述第一回归验证结果的存储资源。
11.根据权利要求10所述的回归验证方法,其特征在于,所述多个阶段包括初期阶段、中期阶段和后期阶段,当所述第一阶段是所述初期阶段时,所述第一项目的存储资源优先级和算力资源优先级分别是第一存储资源优先级和第一算力资源优先级,当所述第一阶段是所述中期阶段或者所述后期阶段时,所述第一项目的存储资源优先级和算力资源优先级分别是第二存储资源优先级和第二算力资源优先级,其中,所述第一存储资源优先级高于所述第二存储资源优先级,所述第一算力资源优先级低于所述第二算力资源优先级。
12.根据权利要求10所述的回归验证方法,其特征在于,所述第一回归验证结果的存储资源还用于与所述第一回归验证结果相关联的报告打印和波形下载。
13.根据权利要求10所述的回归验证方法,其特征在于,所述第一项目的存储资源优先级还基于所述第一项目的时序分析需求确定。
14.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至13中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311298055.0A CN117034821B (zh) | 2023-10-09 | 2023-10-09 | 用于芯片设计前端仿真验证的回归验证方法及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311298055.0A CN117034821B (zh) | 2023-10-09 | 2023-10-09 | 用于芯片设计前端仿真验证的回归验证方法及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117034821A CN117034821A (zh) | 2023-11-10 |
CN117034821B true CN117034821B (zh) | 2023-12-19 |
Family
ID=88626711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311298055.0A Active CN117034821B (zh) | 2023-10-09 | 2023-10-09 | 用于芯片设计前端仿真验证的回归验证方法及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117034821B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117436380B (zh) * | 2023-12-21 | 2024-05-03 | 芯耀辉科技有限公司 | 一种回归验证方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156784A (zh) * | 2011-04-18 | 2011-08-17 | 烽火通信科技股份有限公司 | 验证环境图形化的芯片验证方法与装置 |
CN103823747A (zh) * | 2012-11-16 | 2014-05-28 | 上海华虹集成电路有限责任公司 | 自动回归测试的方法 |
CN105677996A (zh) * | 2016-01-13 | 2016-06-15 | 浪潮集团有限公司 | 一种芯片验证中确定回归测试版本异常源头的方法 |
CN109597733A (zh) * | 2018-12-04 | 2019-04-09 | 航天恒星科技有限公司 | 一种多功能高效动态芯片验证仿真方法和设备 |
CN115600528A (zh) * | 2022-09-16 | 2023-01-13 | 北京物芯科技有限责任公司(Cn) | 仿真验证管控方法及装置、计算设备和存储介质 |
-
2023
- 2023-10-09 CN CN202311298055.0A patent/CN117034821B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156784A (zh) * | 2011-04-18 | 2011-08-17 | 烽火通信科技股份有限公司 | 验证环境图形化的芯片验证方法与装置 |
CN103823747A (zh) * | 2012-11-16 | 2014-05-28 | 上海华虹集成电路有限责任公司 | 自动回归测试的方法 |
CN105677996A (zh) * | 2016-01-13 | 2016-06-15 | 浪潮集团有限公司 | 一种芯片验证中确定回归测试版本异常源头的方法 |
CN109597733A (zh) * | 2018-12-04 | 2019-04-09 | 航天恒星科技有限公司 | 一种多功能高效动态芯片验证仿真方法和设备 |
CN115600528A (zh) * | 2022-09-16 | 2023-01-13 | 北京物芯科技有限责任公司(Cn) | 仿真验证管控方法及装置、计算设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117034821A (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754496B1 (en) | Data processing method and related products | |
US11614927B2 (en) | Off-load servers software optimal placement method and program | |
JP4886838B2 (ja) | 並列化方法、システム、及びプログラム | |
US20170235661A1 (en) | Integration of Software Systems via Incremental Verification | |
US7194726B2 (en) | Method for automatically decomposing dynamic system models into submodels | |
CN117034821B (zh) | 用于芯片设计前端仿真验证的回归验证方法及介质 | |
US9268536B2 (en) | Behavior invariant optimization of maximum execution times for model simulation | |
US20190050209A1 (en) | Method and system to develop, deploy, test, and manage platform-independent software | |
Hudson et al. | libEnsemble users manual | |
US20060026584A1 (en) | Explicit linking of dynamic link libraries | |
US8768680B2 (en) | Simulator of multi-core system employing reconfigurable processor cores and method of simulating multi-core system employing reconfigurable processor cores | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
Sottile et al. | Semi-automatic extraction of software skeletons for benchmarking large-scale parallel applications | |
US20220244931A1 (en) | Image file obtaining method and apparatus | |
JP2011170732A (ja) | 並列化方法、システム、及びプログラム | |
CN116228515B (zh) | 硬件加速系统、方法及相关装置 | |
Kapova et al. | Application of advanced model-driven techniques in performance engineering | |
CN114721922B (zh) | 一种服务器集群的性能评估方法、计算设备及存储介质 | |
CN116547666B (zh) | 硬件设计编译故障时自动顺序重试 | |
CN117574822B (zh) | 用于芯片的面向优化设计测试方法、计算机设备及介质 | |
Aouadhi et al. | Introducing probabilistic reasoning within Event-B | |
CN111309297A (zh) | 脚本开发系统及方法 | |
CN116956789B (zh) | 一种用于寄存器后门访问的方法、计算设备及介质 | |
CN115455877B (zh) | 一种验证平台生成装置、方法、介质及电子设备 | |
CN117724984B (zh) | 用于测试用例实例代码生成的方法、计算机设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |