仿真方法及装置、计算设备、计算机可读存储介质与流程

文档序号:32401617发布日期:2022-12-02 19:11阅读:45来源:国知局
仿真方法及装置、计算设备、计算机可读存储介质与流程

1.本技术涉及芯片领域,更为具体的,涉及一种仿真方法及装置、计算设备、计算机可读存储介质。


背景技术:

2.随着工艺技术以及应用领域的不断发展,芯片设计的复杂度越来越高,芯片的流水线可多达几十级。在芯片的验证过程中,一旦发现仿真错误,通常从流水线的最后一级开始,逐级往前分析错误现场,直到确认错误点。这意味着定位问题可能需要分析整个芯片的代码逻辑,工作量大且定位效率较低。


技术实现要素:

3.本技术提供一种仿真方法及装置、计算设备、计算机可读存储介质。下面对本技术实施例涉及的各个方面进行介绍。
4.第一方面,提供一种仿真方法,所述方法用于对芯片进行仿真,以对所述芯片的功能进行验证,所述芯片包括按照流水线作业的多个模块,所述方法包括:运行第一测试激励,以对所述芯片进行第一层级仿真,其中所述第一层级仿真的待测设计包含多个第二层级仿真的待测设计,所述多个第二层级仿真的待测设计与所述多个模块一一对应;响应于所述第一层级仿真出现仿真错误,根据所述第一测试激励生成所述多个模块的多个第二测试激励,所述多个第二测试激励用于对所述多个模块进行所述第二层级仿真,以模拟所述第一层级仿真,其中所述第二层级仿真相对所述第一层级仿真在所述芯片的仿真层级中的层级较低;运行所述多个第二测试激励,以确定所述多个模块中的出现仿真错误的目标模块;对所述目标模块进行分析,以对所述第一层级仿真和/或所述第二层级仿真进行错误定位。
5.作为一种可能的实现方式,所述根据所述第一测试激励生成多个模块的多个第二测试激励,包括:获取所述第一测试激励的测试跟踪信息;从所述测试跟踪信息中获取所述多个模块各自对应的信息;根据所述多个模块各自对应的信息,生成所述多个第二测试激励。
6.作为一种可能的实现方式,所述测试跟踪信息包括以下信息中的一种或多种:指令状态信息,寄存器状态信息,以及存储状态信息。
7.作为一种可能的实现方式,所述指令状态信息包括以下中的一种或多种:指令的程序计数器值,指令编码,指令助记符中的一种或多种;和/或所述寄存器状态信息包括以下中的一种或多种:通用寄存器信息和系统寄存器信息;和/或所述存储状态信息包括以下中的一种或多种:访存信息、页表信息以及存储过程记录的异常信息。
8.作为一种可能的实现方式,所述第一层级仿真为所述芯片的系统级仿真,所述第二层级仿真为子系统级仿真或模块级仿真;或者,所述第一层级仿真为所述芯片的子系统级仿真,所述第二层级仿真为模块级仿真。
9.第二方面,提供一种仿真装置,所述装置用于对芯片进行仿真,以对所述芯片的功能进行验证,所述芯片包括按照流水线作业的多个模块,所述装置包括:第一运行模块,被配置为运行第一测试激励,以对所述芯片进行第一层级仿真,其中所述第一层级仿真的待测设计包含多个第二层级仿真的待测设计,所述多个第二层级仿真的待测设计与所述多个模块一一对应;生成模块,被配置为响应于所述第一层级仿真出现仿真错误,根据所述第一测试激励生成所述多个模块的多个第二测试激励,所述多个第二测试激励用于对所述多个模块进行所述第二层级仿真,以模拟所述第一层级仿真,其中所述第二层级仿真相对所述第一层级仿真在所述芯片的仿真层级中的层级较低;第二运行模块,被配置为运行所述多个第二测试激励,以确定所述多个模块中的出现仿真错误的目标模块;分析模块,被配置为对所述目标模块进行分析,以对所述第一层级仿真和/或所述第二层级仿真进行错误定位。
10.作为一种可能的实现方式,所述生成模块进一步被配置为:获取所述第一测试激励的测试跟踪信息;从所述测试跟踪信息中获取所述多个模块各自对应的信息;根据所述多个模块各自对应的信息,生成所述多个第二测试激励。
11.作为一种可能的实现方式,所述测试跟踪信息包括以下信息中的一种或多种:指令状态信息,寄存器状态信息,以及存储状态信息。
12.作为一种可能的实现方式,所述指令状态信息包括以下中的一种或多种:指令的程序计数器值,指令编码,指令助记符中的一种或多种;和/或所述寄存器状态信息包括以下中的一种或多种:通用寄存器信息和系统寄存器信息;和/或所述存储状态信息包括以下中的一种或多种:访存信息、页表信息以及存储过程记录的异常信息。
13.作为一种可能的实现方式,所述第一层级仿真为所述芯片的系统级仿真,所述第二层级仿真为子系统级仿真或模块级仿真;或者,所述第一层级仿真为所述芯片的子系统级仿真,所述第二层级仿真为模块级仿真。
14.第三方面,提供一种计算设备,包括:存储器,用于存储代码;处理器,用于执行所述存储器中存储的代码,以执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法。
15.第四方面,提供一种计算机可读存储介质,其上存储有用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的代码。
16.第五方面,提供一种计算机程序代码,包括用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
17.本技术实施例在芯片仿真出现错误时,对芯片中按照流水线作业的多个模块分别进行仿真以模拟芯片仿真出错场景。分别执行多个模块级的仿真能够快速定位出现错误的模块,从而有助于提高定位问题的效率。
附图说明
18.图1为本技术实施例提供的一种仿真方法的流程示意图。
19.图2为本技术实施例提供的另一种仿真方法的流程示意图。
20.图3为本技术实施例提供的一种仿真装置的结构示意图。
21.图4为本技术另一实施例的计算设备的结构示意图。
具体实施方式
22.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。
23.近年来,随着工艺技术以及应用领域的不断发展,一方面芯片设计的复杂度越来越高,另一方面对芯片研发周期的要求越来越严格,这就要求对于芯片的各种验证工作需要尽早和高效地进行。
24.芯片验证工作贯穿芯片的设计和生产过程中的多个环节。例如,在芯片的寄存器传输级(register transfer level,rtl)代码设计完成后,为了确保rtl代码的描述完全符合芯片的功能需求,可以对芯片的rtl代码进行仿真验证。
25.常用的仿真验证方法为:首先,构建一个与待仿真模块的功能相同的模型(可以称为参考模型);其次,将测试用例(也可以称为测试激励)输入待仿真模块与参考模型;最后,根据待仿真模块与参考模型的输出结果来判断待仿真模块的功能是否正确。如果待仿真模块与参考模型的输出结果一致,则待仿真模块的功能正确;如果待仿真模块与参考模型的输出结果不一致,则待仿真模块的功能出错。
26.另外,芯片设计的复杂度决定了芯片的验证不可能一蹴而就,因此通常会采用层次化的方法进行芯片验证。典型的芯片验证层次分为模块级、子系统级和系统级(即芯片级),验证层次也可以称为验证层级。在采用层次化验证方法时,一般按照验证层级从低到高的顺序进行验证。例如,层次化验证顺序可以为模块级、子系统级、系统级。
27.目前,大部分芯片采用流水线作业以提高芯片的工作效率。在一些实施例中,芯片的验证层级可以按照流水线划分为多个模块。其中,多个模块中的每个模块可以包括芯片的一级或多级流水线。每个模块可以负责指令执行过程中的部分功能,通过多个模块的分工合作可以更加有效地实现芯片功能。
28.随着现代芯片的功能越来越复杂,芯片的流水线可多达几十级。在芯片系统级验证的过程中,一旦发现仿真错误,常用的定位问题的方法为:从流水线的最后一级开始,逐级往前分析错误现场,直到确认错误点。这意味着定位问题时可能需要分析整个芯片的代码逻辑,工作量大且定位效率较低。
29.针对上述问题,本技术实施例提出一种仿真方法。下面结合图1,对本技术实施例提供的仿真方法进行详细介绍。应理解,图1的方法可用于对芯片进行仿真,以对芯片的功能进行验证。
30.参见图1,方法100可以包括步骤s110至步骤s140。
31.在步骤s110,运行第一测试激励,以对芯片进行第一层级仿真。
32.如前文所述,芯片通常采用层次化的方法进行仿真。这里提到的第一层级仿真可以是该层次化仿真中的某一层级的仿真。例如,该第一层级仿真可以是芯片级或系统级的仿真。或者,该第一层级的仿真也可以为子系统级仿真。
33.前文提到,芯片可以包括按照流水线作业的多个模块,因此,第一层级仿真的待测设计(design under test,dut)可以包含多个第二层级仿真的dut,该多个第二层级仿真的dut与按照流水线作业的多个模块一一对应。例如,芯片包括按照流水线作业的五个模块,则该芯片的第一层级仿真的待测设计可以包含与前述五个模块一一对应的五个待测设计。
34.在步骤s120,响应于第一层级仿真出现仿真错误,根据第一测试激励生成多个模
块的多个第二测试激励。该多个第二测试激励可用于对多个模块进行第二层级仿真,以模拟第一层级仿真。
35.第二层级仿真可以是前文提到的层次化仿真中的某一层级的仿真。其中第二层级仿真相对第一层级仿真在芯片的仿真层级中的层级较低。作为一个示例,第一层级仿真为系统级仿真,第二层级仿真为模块级仿真。或者,第一层级仿真为子系统级仿真,第二层级仿真为模块级仿真。
36.以第一层级仿真为系统级仿真,第二层级仿真为模块级仿真为例,该模块级的仿真可以包括以下模块中的一种或多种的仿真:取指模块、译码模块、分派模块和执行模块。作为一个具体的例子,响应于系统级仿真出现错误,可以根据第一测试激励生成与取指模块、译码模块、分派模块和执行模块一一对应的多个第二测试激励。
37.根据第一测试激励生成第二测试激励的方法有多种。例如,可以通过第一测试激励的测试跟踪信息生成第二测试激励。
38.在一些实施例中,第一测试激励的测试跟踪信息可以包括指令状态信息,寄存器状态信息,以及存储状态信息中的一种或多种。其中,指令状态信息可以包括指令的程序计数器(pc)值,指令编码,指令助记符中的一种或多种;寄存器状态信息可以包括通用寄存器信息和系统寄存器信息中的一种或多种;存储状态信息可以包括访存信息、页表信息以及存储过程记录的异常信息。
39.从测试跟踪信息中可以获取多个模块各自对应的信息(也可以称为状态信息)。多个模块各自对应的信息至少包括多个模块所需的必要信息,也就是说,多个模块各自对应的信息至少包括生成多个模块对应的第二测试激励所需的必要信息。例如,取指模块的必要信息包括:pc值、下一条pc值、是否发生跳转、指令编码;译码模块的必要信息包括指令编码、系统寄存器信息;分派模块的必要信息包括指令编码、指令类型、寄存器信息、异常信息;执行模块的必要信息包括指令编码、寄存器信息、访存信息、页表信息、异常信息;分支指令的执行模块的必要信息还包括跳转目标地址、实际跳转地址,是否发生跳转。
40.另外,多个模块各自对应的信息可以使用脚本根据测试跟踪信息进行提取。测试脚本,即自动执行测试过程(或部分测试过程)的计算机可读指令。测试脚本可以被创建(记录)或使用测试自动化工具自动生成,或用编程语言编程来完成,也可综合前三种方法来完成。
41.根据多个模块各自对应的信息,可以生成多个第二测试激励。多个第二测试激励可以用于对多个模块进行第二层级仿真,以模拟第一层级仿真。其中第二层级仿真相对第一层级仿真在芯片的仿真层级中的层级较低。
42.在步骤s130,运行多个第二测试激励,以确定多个模块中的出现仿真错误的目标模块。
43.运行多个模块各自对应的第二测试激励,换句话说,输入第二测试激励以对多个模块进行仿真,观测多个模块的仿真结果是否正确。如果多个模块中的一个或多个模块出现仿真错误,则该一个或多个模块为目标模块。在一些实施例中,第二测试激励可以分开运行。在另一些实施例中,为了提高目标模块的定位速度,可以同时运行多个第二测试激励。
44.在步骤s140,对目标模块进行分析,以对第一层级仿真和/或第二层级仿真进行错误定位。
45.作为一种实现方式,结合目标模块的错误现象,对目标模块的代码进行分析,可以找到目标模块出错的代码,实现第二层级仿真的错误定位。由于第二层级仿真可以完美复现第一层级仿真的错误现场,因此,根据第二层级仿真的错误定位可以实现对芯片第一层级仿真的错误定位。
46.如前文所述,芯片中按照流水线作业的多个模块中的每个模块可以包括一级或多级流水线,因此在对目标模块分析时,可以从目标模块中包含的流水线的后端(即最后一级)开始逐级向前分析,直到确认出错的流水线。进一步地,在对目标模块的代码分析时可以针对出错的流水线查找出错代码,缩小了出错代码的查找范围。
47.在一些情况下,目标模块可以包括多个模块。例如,目标模块可以包括第一模块和第二模块。在对目标模块进行分析时,可以先对第一模块进行分析,也可以先对第二模块进行分析。在目标模块的错误修复之后,可以再次进行第一层级的仿真,以确认问题全部排除。
48.本技术实施例在芯片仿真出现错误时,对芯片中按照流水线作业的多个模块分别进行仿真以模拟芯片仿真出错场景。分别执行多个模块级的仿真能够快速定位出现错误的模块,从而有助于提高定位问题的效率。
49.图2为本技术实施例提供的另一种仿真方法的流程示意图。下文以系统级仿真为例,结合图2对本技术实施例提出的仿真方法进行详细的介绍。
50.参见图2,方法200包括步骤s201至步骤s207,其中步骤s201至步骤s203为系统级仿真验证,步骤s204至步骤s207为模块级仿真验证。
51.在步骤s201,运行测试激励,收集trace信息。
52.所述测试激励为第一测试激励。trace信息是指测试激励执行过程中所有指令、寄存器、存储的状态信息,包括所有指令的pc值、指令编码、指令助记符、寄存器信息(包括通用寄存器信息、系统寄存器信息)、访存信息、页表信息、异常信息。
53.在步骤s202,判断仿真是否出错。如果系统级仿真测试出现错误,则跳转至步骤s203;如果仿真未出现错误,则结束当前流程。
54.在步骤s203,提取模块级仿真的必要信息。
55.必要信息需要根据模块进行区分。例如,取指模块的必要信息包括:pc值、下一条pc值、是否发生跳转、指令编码;译码模块的必要信息包括指令编码、系统寄存器信息;分派模块的必要信息包括指令编码、指令类型、寄存器信息、异常信息;执行模块的必要信息包括指令编码、寄存器信息、访存信息、页表信息、异常信息,分支指令的执行模块的必要信息还包括跳转目标地址、实际跳转地址,是否发生跳转。
56.在步骤s204,生成各模块的模块级测试激励。
57.模块级仿真测试激励根据系统级仿真测试激励生成,是一种定向测试激励,因此可以精准复现系统级仿真的出错场景。
58.在步骤s205,各模块同时运行各自生成的模块级仿真测试激励。
59.各模块可以同时运行模块级仿真测试激励(即第二测试激励),进一步提高定位问题的速度。
60.在步骤s206,判断各模块的仿真测试结果是否出错。如果模块级仿真验证出现错误,则跳转至步骤s207,否则结束当前流程。
61.在步骤s207,从出错模块的流水线后端开始往前逐级分析,确认问题。
62.上文结合图1至图2,详细描述了本技术的方法实施例,下面结合图3和图4,详细描述本技术的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
63.图3为本技术实施例提供的一种仿真装置的结构示意图。仿真装置300可以用于对芯片进行仿真,以对所述芯片的功能进行验证,所述芯片包括按照流水线作业的多个模块。
64.参见图3,装置300包括第一运行模块302、生成模块304,第二运行模块306和分析模块308。
65.第一运行模块302,被配置为运行第一测试激励,以对所述芯片进行第一层级仿真,其中所述第一层级仿真的待测设计包含多个第二层级仿真的待测设计,所述多个第二层级仿真的待测设计与所述多个模块一一对应。
66.生成模块304,被配置为响应于所述第一层级仿真出现仿真错误,根据所述第一测试激励生成所述多个模块的多个第二测试激励,所述多个第二测试激励用于对所述多个模块进行所述第二层级仿真,以模拟所述第一层级仿真,其中所述第二层级仿真相对所述第一层级仿真在所述芯片的仿真层级中的层级较低。
67.第二运行模块306,被配置为运行所述多个第二测试激励,以确定所述多个模块中的出现仿真错误的目标模块。
68.分析模块308,被配置为对所述目标模块进行分析,以对所述第一层级仿真和/或所述第二层级仿真进行错误定位。
69.可选地,所述生成模块304进一步被配置为:获取所述第一测试激励的测试跟踪信息;从所述测试跟踪信息中获取所述多个模块各自对应的信息;根据所述多个模块各自对应的信息,生成所述多个第二测试激励。
70.可选地,所述测试跟踪信息包括以下信息中的一种或多种:指令状态信息,寄存器状态信息,以及存储状态信息。
71.可选地,所述指令状态信息包括以下中的一种或多种:指令的程序计数器值,指令编码,指令助记符中的一种或多种;和/或所述寄存器状态信息包括以下中的一种或多种:通用寄存器信息和系统寄存器信息;和/或所述存储状态信息包括以下中的一种或多种:访存信息、页表信息以及存储过程记录的异常信息。
72.可选地,所述第一层级仿真为所述芯片的系统级仿真,所述第二层级仿真为子系统级仿真或模块级仿真;或者,所述第一层级仿真为所述芯片的子系统级仿真,所述第二层级仿真为模块级仿真。
73.图4为本技术另一实施例的计算设备的结构示意图。图4所示的计算设备400可以包括存储器410和处理器420。在一些实施例中,图4所示的计算设备400还可以包括输入/输出接口430以及收发机440。存储器410、处理器420、输入/输出接口430和收发机440通过内部连接通路相连,该存储器410用于存储指令,该处理器420用于执行该存储器410存储的指令,以执行前文任一实施例描述的仿真方法。
74.应理解,在本技术实施例中,该处理器420可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本技术
实施例所提供的技术方案。
75.还应理解,收发机440又称通信接口,使用例如但不限于收发器一类的收发装置,来实现计算设备400与其他设备或通信网络之间的通信。
76.该存储器410可以包括只读存储器和随机存取存储器,并向处理器420提供指令和数据。处理器420的一部分还可以包括非易失性随机存取存储器。例如,处理器420还可以存储设备类型的信息。
77.在实现过程中,上述方法的各步骤可以通过处理器420中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的仿真方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器410,处理器420读取存储器410中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
78.应理解,本技术实施例中,该处理器可以为中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
79.应理解,在本技术实施例中,“与a相应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。
80.应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
81.应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
82.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
83.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
84.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
85.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实
现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,dvd))或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
86.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1