CN113821898A - 芯片子系统的随机验证方法、装置、设备和存储介质 - Google Patents
芯片子系统的随机验证方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN113821898A CN113821898A CN202010561292.1A CN202010561292A CN113821898A CN 113821898 A CN113821898 A CN 113821898A CN 202010561292 A CN202010561292 A CN 202010561292A CN 113821898 A CN113821898 A CN 113821898A
- Authority
- CN
- China
- Prior art keywords
- verification
- scene
- simulation
- functional
- function
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/08—Probabilistic or stochastic CAD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Quality & Reliability (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请公开了一种芯片子系统的随机验证方法、装置、设备和存储介质。该方法包括:在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,所述功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数;基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证;在仿真验证结束之后,继续执行所述在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。上述验证方案针对芯片目标子系统能够实现多种功能验证场景之间的随机交叉覆盖。
Description
技术领域
本申请涉及芯片设计验证技术领域,尤其涉及一种芯片子系统的随机验证方法、装置、设备和存储介质。
背景技术
现有芯片验证方案中,由于芯片规模过大,验证仿真时间过长、占用服务器资源过多等原因,通常会首先将整个芯片系统分割成多个芯片子系统分别进行验证,待各个芯片子系统充分验证后,再将各个芯片子系统集成在一起进行整个芯片系统的验证,从而提高芯片验证的效率。
在对芯片子系统进行验证时,可以针对芯片子系统的各种功能、数据通路进行验证。其中,芯片处理器子系统是多个芯片子系统中的一个与处理器相关的芯片子系统,在针对芯片处理器子系统进行验证时,通常需要将处理器配置到某种参数下,通过不同的验证案例来测试处理器不同位宽、不同长度的读写操作,或者测试处理器实现特定功能的操作,以实现对芯片处理器子系统是否能够正常工作的验证。例如,可以验证处理器的各种读写通路是否正确,也可以验证通路中各突发(burst)宽度和突发长度是否正确,还可以验证中断、缓存(cache)特性、核间一致性、低功耗等功能是否能够实现等等,以实现对芯片处理器子系统中处理器是否正确以及处理器的外部连接是否正确的验证。但是,此种验证方式中,覆盖的功能验证场景均是单一的,即单独验证某个通路或某种功能,缺少了多种功能验证场景之间的交叉覆盖。因此,如何实现对现有芯片子系统验证方案的补充,以提高芯片子系统的验证完备性是亟待解决的问题。
发明内容
本申请实施例提供了一种芯片子系统的随机验证方法、装置、设备和存储介质,以解决现有芯片子系统验证方案中覆盖的功能验证场景单一、缺少多种功能验证场景之间交叉覆盖的问题。
第一方面,本申请实施例提供了一种芯片子系统的随机验证方法,包括:
在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,所述功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数;
基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证;
在仿真验证结束之后,继续执行所述在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。
第二方面,本申请实施例还提供了一种芯片子系统的随机验证装置,包括:
功能验证场景随机选取模块,设置为在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,所述功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数;
功能验证场景仿真模块,设置为基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证;
循环仿真模块,设置为在仿真验证结束之后,继续执行所述在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。
第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请任意实施例所述的芯片子系统的随机验证方法。
第四方面,本申请实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请任意实施例所述的芯片子系统的随机验证方法。
本申请实施例提供的技术方案中,基于依次在功能验证场景池中选取一个功能验证场景对芯片目标子系统进行仿真验证,其中,功能验证场景池中包括与所述芯片目标子系统对应的多种功能验证场景以及每种功能验证场景的仿真配置次数,当功能验证场景池中的所有功能验证场景的选取次数均为各自的仿真配置次数时,针对芯片目标子系统的此轮仿真验证结束。在上述针对芯片目标子系统的验证方案中,能够实现多种功能验证场景之间的随机交叉覆盖,也即实现了芯片目标子系统多种功能之间的随机交叉覆盖,保证了芯片目标子系统的验证质量,尤其是验证方案中仿真配置次数较大的功能验证场景,与其他功能验证场景随机交叉覆盖的概率更大,大量地随机交叉验证确保了该种功能的验证质量。
附图说明
图1为本申请实施例提供的一种芯片子系统的随机验证方法的流程示意图;
图2为本申请实施例提供的一种芯片子系统的随机验证方法的流程示意图;
图3为本申请实施例提供的一种芯片子系统的随机验证方法所适用的系统模块示意图;
图4为本申请实施例提供的一种芯片子系统的随机验证装置的结构示意图;
图5为本申请提供的一种电子设备的结构示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身没有特有的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在一个示例性实施方式中,图1为本申请实施例提供的一种芯片子系统的随机验证方法的流程示意图。该方法适用于基于多种功能验证场景对芯片子系统进行仿真验证的情况。该方法可以由本申请提供的芯片子系统的随机验证装置执行,该芯片子系统的随机验证装置可以由软件和/或硬件实现,并集成在用于芯片验证的电子设备中。
如图1所示,本实施方式提供的芯片子系统的随机验证方法,包括:
S110、在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数。
芯片目标子系统,指的是待仿真验证的一个芯片子系统,例如可以是芯片处理器目标子系统,芯片处理器目标子系统具体指的是与芯片处理器相关的一个芯片子系统。
功能验证场景,指的是根据针对芯片目标子系统的通路或功能划分的一种验证场景,以芯片目标子系统为芯片处理器子系统为例,可以是根据被验证的处理器的指令集架构、cache特性、核间一致性、低功耗方案、子系统架构等划分出多种详细的场景,分别作为每种功能验证场景。
在一示例中,可以分别为每种功能验证场景设置一个仿真配置次数,作为此轮验证流程中基于每种功能验证场景对芯片目标子系统进行仿真验证的次数。例如,功能验证场景1的仿真配置次数为50,则在此次针对芯片目标子系统的验证方案中,基于功能验证场景1对芯片目标子系统进行仿真验证50次。可选的,每种功能验证场景的仿真配置次数是根据芯片目标子系统的验证策略规划的。
功能验证场景池,用于存放与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数。可选的,为每种功能验证场景设置场景标识,功能验证场景池中存放的为每种功能验证场景的场景标识,以及与每种场景标识对应的仿真配置次数。
进一步的,在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景之前,还包括:获取与芯片目标子系统对应的随机生成的配置参数,并根据所述配置参数对芯片目标子系统进行相应配置。
在对芯片目标子系统进行仿真验证之前,首先要对芯片目标子系统进行相应的配置。以芯片目标子系统为芯片处理器子系统为例,需要对处理器、寄存器以及子系统内的相关配置参数进行相应配置,也即生成的配置参数即为与处理器、寄存器等对应的配置参数。
可选的,根据随机生成的配置参数对芯片目标子系统进行相应配置。
在一示例中,获取随机种子,并根据随机种子产生与芯片目标子系统对应的配置参数。例如,可以根据实际应用需求进行随机约束,并基于随机约束产生与芯片目标子系统对应的配置参数。具体的,可以将随机产生的配置参数写入一段地址空间中,例如写入预先协议商定的地址空间,芯片目标子系统启动后在该段地址空间中获取配置参数进行相应配置。
S120、基于当前仿真功能验证场景,对芯片目标子系统进行仿真验证。
获取与当前仿真功能验证场景对应的程序,执行该程序以实现对芯片目标子系统的仿真验证。可选的,根据该当前仿真功能验证场景的标识获取与当前仿真功能验证场景对应的程序,以实现对芯片目标子系统的仿真验证。
可选的,基于断言功能实现对仿真验证结果的检测,实时检测芯片目标子系统的硬件功能的正确性。
在一示例中,当芯片目标子系统具体为芯片处理器子系统时,可以将基于当前仿真功能验证场景,对芯片目标子系统进行仿真验证,具体为:
基于当前仿真功能验证场景,对所述芯片目标子系统开始进行仿真验证;在检测到随机插入的目标中断时,处理所述目标中断;在处理完成所述目标中断后,基于当前仿真功能验证场景,继续对芯片目标子系统进行仿真验证。
目标中断,指的是任意中断类型的中断。在与当前仿真功能验证场景对应的程序执行过程中,可以插入目标中断来打断当前仿真功能验证场景对应程序的执行。目标中断的中断类型随机,插入目标中断的时间也随机,以确保符合实际应用中中断产生的方式。
具体的,在与当前仿真功能验证场景对应的程序执行过程中,如果检测到随机插入的目标中断,例如可以是通过目标中断的状态被配置为有效来触发等,则打断与当前仿真功能验证场景对应的程序,保存当前程序执行现场,然后响应目标中断,做出对应的中断处理。当目标中断被处理完成之后,继续执行被打断的程序,执行完成与当前仿真功能验证场景对应的程序,实现对芯片目标子系统进行仿真验证。
在上述技术方案中,随机产生中断能够更加贴合芯片处理器子系统的实际运行场景,提高芯片处理器子系统验证的可靠性和真实性。
S130、在仿真验证结束之后,继续执行在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。
在基于当前仿真功能验证场景,对芯片目标子系统完成仿真验证之后,返回执行S110,也即继续在功能验证场景池中随机选取下一个功能验证场景,重新作为当前仿真功能验证场景,并继续基于当前仿真功能验证场景对芯片目标子系统进行仿真验证。在此期间,若芯片目标子系统为芯片处理器子系统,依旧可能存在随机产生的目标中断,在此不再赘述。
可选的,统计每种功能验证场景被选取的次数,当功能验证场景池中每种功能验证场景被选取的次数均为各自的仿真配置次数时,且已经基于当前仿真功能验证场景完成对芯片目标子系统进行仿真验证,针对芯片目标子系统进行的此轮仿真验证流程结束。
至此,已经基于功能验证场景池中各种功能验证场景,分别多次对芯片目标子系统进行仿真验证。其中,依据任意一种功能验证场景对芯片目标子系统进行仿真验证的次数为该种功能验证场景的仿真配置次数。在整个验证仿真流程中,不同功能验证场景之间会存在交叉。
本申请实施例提供的技术方案中,基于依次在功能验证场景池中选取一个功能验证场景对芯片目标子系统进行仿真验证,其中,功能验证场景池中包括与所述芯片目标子系统对应的多种功能验证场景以及每种功能验证场景的仿真配置次数,当功能验证场景池中的所有功能验证场景的选取次数均为各自的仿真配置次数时,针对芯片目标子系统的此轮仿真验证结束。在上述针对芯片目标子系统的验证方案中,能够实现多种功能验证场景之间的随机交叉覆盖,也即实现了芯片目标子系统多种功能之间的随机交叉覆盖,保证了芯片目标子系统的验证质量,尤其是验证方案中仿真配置次数较大的功能验证场景,与其他功能验证场景随机交叉覆盖的概率更大,大量地随机交叉验证确保了该种功能的验证质量。
在一种具体示例中,在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景之前,还包括:根据多种功能验证场景以及每种功能验证场景的仿真配置次数,随机生成与芯片目标子系统对应的功能验证场景序列;其中,功能验证场景序列中包括随机交叉排列的多种功能验证场景,每种功能验证场景在功能验证场景序列中出现的次数为每种功能验证场景的仿真配置次数。
对应的,可以将在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景,具体为:依次在功能验证场景序列中选取一个功能验证场景作为当前仿真功能验证场景;直至所述功能验证场景池中的每个功能验证场景被选取的次数均为各自的仿真配置次数,可以具体为:直至功能验证场景序列中的所有功能验证场景均被完成选取。
功能验证场景序列,是由与芯片目标子系统对应的多种功能验证场景构成的,每种功能验证场景在功能验证场景序列出现的次数即为其仿真配置次数,且多种功能验证场景在功能验证场景序列中是随机交叉排列的。
在确定与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数之后,将这多种功能验证场景按其各自的仿真配置次数进行打包,随机生成功能验证场景序列。例如,功能验证场景1的仿真配置次数为50,则在生成功能验证场景序列时,将功能验证场景1与其他功能验证场景随机交叉排列,直至将功能验证场景1排列50次,其他功能验证场景的随机排列类似,不再赘述。
在针对芯片目标子系统进行仿真验证时,按照功能验证场景序列中功能验证场景的排列顺序依次在功能验证场景序列中选取一种功能验证场景,作为当前仿真功能验证场景,对芯片目标子系统进行仿真验证。
在一示例中,为每种功能验证场景设置场景标识,在功能验证场景序列中交叉排列的是多种功能验证场景的场景标识。相应的,在功能验证场景序列中选取一种功能验证场景之后,根据该种功能验证场景的标识获取与该种功能验证场景对应的程序,以实现对芯片目标子系统的仿真验证。
在基于当前仿真功能验证场景,对所述芯片目标子系统完成仿真验证之后,返回执行依次在功能验证场景序列中选取一个功能验证场景作为当前仿真功能验证场景的操作,也即按照功能验证场景序列中功能验证场景的排列顺序依次在功能验证场景序列中选取下一种功能验证场景,重新作为当前仿真功能验证场景,并继续基于当前仿真功能验证场景对芯片目标子系统进行仿真验证。
当按照功能验证场景序列中功能验证场景的排列顺序依次在功能验证场景序列中选取到最后一种功能验证场景作为当前仿真功能验证场景,并基于当前仿真功能验证场景完成对芯片目标子系统进行仿真验证时,针对芯片目标子系统进行仿真验证的流程结束。至此,已经基于功能验证场景序列中随机交叉排列的各种功能验证场景,依次对芯片目标子系统进行仿真验证。其中,依据任意一种功能验证场景对芯片目标子系统进行仿真验证的次数为该种功能验证场景的仿真配置次数。
进一步的,在功能验证场景池中的每个功能验证场景被选取的次数均为各自的仿真配置次数之后,还包括:
确定在芯片目标子系统的验证过程中多种功能验证场景之间的交叉覆盖情况;
判断交叉覆盖情况是否满足预设仿真验证指标,若否,则返回执行在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至判断出交叉覆盖情况满足预设仿真验证指标。
在针对芯片目标子系统的一轮仿真验证结束之后,对仿真验证过程中多种功能验证场景之间的交叉覆盖情况进行分析,以确定交叉覆盖情况是否满足预设仿真验证指标。
可选的,查询日志(log)文件(日志文件中记录有程序运行的各个关键状态),检测多种功能验证场景之间的交叉覆盖情况,例如为是存在没有与其他功能验证场景交叉覆盖的功能验证场景,或者是哪些功能验证场景的交叉功能验证场景较少。
预设仿真验证指标,可以根据实际应用情况来确定,例如可以是任意两种功能验证场景之间均存在交叉,或者可以是不存在没有与其他功能验证场景交叉覆盖的功能验证场景,或者可以是交叉功能验证场景较少的功能验证场景的数量比例小于设定阈值,等等。本实施例对此不作具体限定。
如果交叉覆盖情况不满足预设仿真验证指标,则重新执行S110-S130的操作,完成针对芯片目标子系统的下一轮仿真验证,如此反复,直至在完成针对芯片目标子系统的一轮仿真验证之后,判断出交叉覆盖情况满足预设仿真验证指标。
在一示例中,在返回执行在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作之前,还包括:获取每种功能验证场景更新后的仿真配置次数。
在完成针对芯片目标子系统的一轮仿真验证之后,如果交叉覆盖情况不满足预设仿真验证指标,则可以对与芯片目标子系统对应的多种功能验证场景的仿真配置次数进行重新规划,以尽量保证所有功能验证场景之间都可以存在交叉。在一示例中,可以对所有功能验证场景的仿真配置次数进行重新规划;在另一示例中,可以增加没有与其他功能验证场景交叉覆盖的功能验证场景的仿真配置次数,和/或增加交叉功能验证场景较少的功能验证场景的仿真配置次数。
在上述技术方案中,通过对多种功能验证场景的仿真配置次数进行重新规划,以提高功能验证场景随机交叉的可能性,尽量节省功能验证场景之间随机交叉的收敛时间,提高芯片目标子系统的验证效率。
在一个示例性实施方式中,以芯片目标子系统为芯片处理器子系统为例进行解释说明。
如图2所示,本实施方式提供的芯片子系统的随机验证方法,具体包括:
S210、获取与芯片处理器子系统对应的多种功能验证场景以及每种功能验证场景的仿真配置次数。
根据处理器的特性、芯片处理器子系统等,划分与芯片处理器子系统对应的多种功能验证场景,并给各功能场景规划仿真配置次数。
例如,根据被验证处理器的指令集架构、cache特性、核间一致性、低功耗方案、子系统架构等划分出详细的功能验证场景,以最大程度地满足各通路、各功能交叉覆盖的需求。在为各功能验证场景规划仿真配置次数时,可以提高某些常用功能验证场景的权重,以增加这些功能验证场景和其它功能验证场景交叉的几率,减少交叉覆盖收敛的时间。
其中,可以设置一个功能验证场景池,将划分的多种功能验证场景放入功能验证场景池,并为每种功能验证场景设置仿真配置次数,仿真配置次数可以是随机设置的。
S220、根据多种功能验证场景以及每种功能验证场景的仿真配置次数,随机生成与芯片处理器子系统对应的功能验证场景序列。
根据功能验证场景池中的多种功能验证场景以及每种功能验证场景的仿真配置次数,随机生成与芯片处理器子系统对应的功能验证场景序列。其中,功能验证场景序列中包括的多种功能验证场景是随机交叉排列的,每种功能验证场景在功能验证场景序列中出现的次数为每种功能验证场景的仿真配置次数。
S230、获取与芯片处理器子系统对应的随机生成的配置参数,并根据所述配置参数对芯片处理器子系统进行相应配置。
可选的,获取随机种子,并根据随机种子产生处理器和子系统中的配置参数,其中,各中配置参数可以根据实际应用需求做出随机约束,以尽可能的符合实际的需求。
可选的,将生成的配置参数写入预先协议好的地址内,如与软件协议好的地址内。进而,芯片处理器子系统在启动之后,在预先协议好的地址内获取配置参数,并根据所述配置参数对处理器以及子系统内各配置参数进行配置。
S240、依次在功能验证场景序列中选取一个功能验证场景作为当前仿真功能验证场景。
在选取出当前仿真功能验证场景之后,处理器获取当前仿真功能验证场景,执行与当前仿真功能验证场景对应的程序。
S250、基于当前仿真功能验证场景,对芯片处理器子系统进行仿真验证。
在与当前仿真功能验证场景对应的程序的执行过程中,可以随机插入目标中断。
可选的,预先随机生成多个目标中断,目标中断的中断类型是随机的,目标中断的时间特征也是随机的,可以将目标中断的相关参数写入预先协议好的地址内,如与软件协议好的地址内。
在与当前仿真功能验证场景对应的程序的执行过程中,可以随机选择某个目标中断并进行有效设置,打断当前处理器执行的程序,处理器开始保存现场,然后响应目标中断,进行对应的中断处理。中断处理完成之后,处理器退出中断异常,继续执行被打断的程序。
S260、判断当前仿真功能验证场景是否为功能验证场景序列中最后一个功能验证场景,若是,则执行S270,若否,则执行S240。
S270、确定在芯片处理器子系统的验证过程中多种功能验证场景之间的交叉覆盖情况。
功能验证场景序列中所有的功能验证场景均被选取完之后,根据日志可以确定多种功能验证场景之间的交叉覆盖情况。
S280、判断交叉覆盖情况是否满足预设仿真验证指标,若否,则执行S290,若是,则执行S2100。
S290、获取每种功能验证场景更新后的仿真配置次数,返回执行S220。
在交叉覆盖情况不满足预设仿真验证指标的情况下,可以对每种功能验证场景的仿真配置次数进行更新。可选的,增加没有与其他功能验证场景交叉覆盖的功能验证场景的仿真配置次数,以及增加交叉功能验证场景较少的功能验证场景的仿真配置次数。
S2100、流程结束。
本实施方式未尽详细解释之处请参见前述实施例,在此不再赘述。
上述技术方案,针对芯片处理器子系统的仿真验证,实现了多种功能验证场景之间的交叉覆盖,提高了通路和功能的交叉覆盖情况,更好地保证了芯片处理器子系统的验证质量。而且,能够根据多种功能验证场景的交叉覆盖情况,更新功能验证场景的仿真配置次数,不仅增大了功能验证场景随机交叉的概率,也提高了功能验证场景之间交叉覆盖的收敛效率。
可选的,如图3所示,将本实施方式提供的针对芯片处理器子系统的芯片子系统的随机验证方法可以包装成如下四个功能模块:随机配置参数生成模块、随机中断产生模块、功能验证场景选取执行模块和功能验证场景检测覆盖检测模块。其中,
随机配置参数生成模块,用于随机生成与芯片处理器子系统相关的配置参数,并将配置参数传递出来以供处理器获取。例如,对处理器和芯片处理器子系统中的配置寄存器随机产生配置参数,并将配置参数传递到处理器可以获取到的地址中。
随机中断产生模块,用于在与各功能验证场景对应的程序执行的过程中随机产生不同中断类型的中断,具体可以对中断产生时间的控制和对哪个中断设置有效的控制。其中,中断类型随机产生,并将中断类型保存到相应的地址,用来随机生成中断。中断时间以及中断有效配置随机进行,也即在任何时刻都可以产生中断,随机地生成某个中断类型的中断,以确保中断的采样和处理器在任何时刻响应中断的正确性,也能符合实际应用中中断产生的方式。
功能验证场景选取执行模块,用于在功能验证场景池中选取功能验证场景,并统计每种功能验证场景被选取的次数,直至每个功能验证场景被选取的次数均为各自的仿真配置次数,还用于基于选取的功能验证场景执行对应的程序,实现对芯片处理器子系统的仿真验证。
功能验证场景检测覆盖检测模块,用于在一轮仿真验证结束后,对所有覆盖到的功能验证场景进行记录,并分析哪些功能验证场景之间没有交叉,以便在下次仿真时可以适应性地提高对应功能验证场景的仿真配置次数,进而增加功能验证场景交叉的几率,减少功能验证场景交叉收敛的时间。
在一个示例性实施方式中,图4为本申请实施例提供的一种芯片子系统的随机验证装置的结构示意图,该装置可以由软件和/或硬件实现,并集成在用于芯片验证的电子设备中。如图4所示,芯片子系统的随机验证装置包括:功能验证场景随机选取模块410、功能验证场景仿真模块420以及循环仿真模块430。其中,
功能验证场景随机选取模块410,设置为在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,所述功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数;
功能验证场景仿真模块420,设置为基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证;
循环仿真模块430,设置为在仿真验证结束之后,继续执行所述在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。
本申请实施例提供的技术方案中,基于依次在功能验证场景池中选取一个功能验证场景对芯片目标子系统进行仿真验证,其中,功能验证场景池中包括与所述芯片目标子系统对应的多种功能验证场景以及每种功能验证场景的仿真配置次数,当功能验证场景池中的所有功能验证场景的选取次数均为各自的仿真配置次数时,针对芯片目标子系统的此轮仿真验证结束。在上述针对芯片目标子系统的验证方案中,能够实现多种功能验证场景之间的随机交叉覆盖,也即实现了芯片目标子系统多种功能之间的随机交叉覆盖,保证了芯片目标子系统的验证质量,尤其是验证方案中仿真配置次数较大的功能验证场景,与其他功能验证场景随机交叉覆盖的概率更大,大量地随机交叉验证确保了该种功能的验证质量。
在一示例中,上述装置还包括:功能验证场景序列生成模块,设置为在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景之前,根据所述多种功能验证场景以及每种功能验证场景的仿真配置次数,随机生成与所述芯片目标子系统对应的功能验证场景序列;其中,所述功能验证场景序列中包括随机交叉排列的多种功能验证场景,每种功能验证场景在所述功能验证场景序列中出现的次数为所述每种功能验证场景的仿真配置次数;对应的,功能验证场景随机选取模块410,具体设置为依次在功能验证场景序列中选取一个功能验证场景作为当前仿真功能验证场景;循环仿真模块430,具体设置为在仿真验证结束之后,继续执行所述依次在功能验证场景序列中选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景序列中的所有功能验证场景均被完成选取。
进一步的,上述装置还包括:交叉覆盖情况分析及循环验证模块,设置为在所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数之后,确定在所述芯片目标子系统的验证过程中所述多种功能验证场景之间的交叉覆盖情况;判断所述交叉覆盖情况是否满足预设仿真验证指标,若否,则返回执行在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至判断出所述交叉覆盖情况满足预设仿真验证指标。
进一步的,交叉覆盖情况分析及循环验证模块,还具体设置为在返回执行在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作之前,获取所述每种功能验证场景更新后的仿真配置次数。
进一步的,上述装置还包括:随机配置参数获取及配置模块,设置为在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景之前,获取与所述芯片目标子系统对应的随机生成的配置参数,并根据所述配置参数对所述芯片目标子系统进行相应配置。
可选的,所述芯片目标子系统包括芯片处理器子系统。
进一步的,功能验证场景仿真模块420,具体设置为基于所述当前仿真功能验证场景,对所述芯片目标子系统开始进行仿真验证;在检测到随机插入的目标中断时,处理所述目标中断;在处理完成所述目标中断后,基于所述当前仿真功能验证场景,继续对所述芯片目标子系统进行仿真验证。
上述芯片子系统的随机验证装置可执行本申请实施例所提供的芯片子系统的随机验证方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的芯片子系统的随机验证方法。
在一个示例性实施方式中,本申请实施例还提供了一种电子设备,图5为本申请提供的一种电子设备的结构示意图,如图5所示,本申请提供的电子设备,包括:一个或多个处理器510和存储器520;该电子设备的处理器510可以是一个或多个,图5中以一个处理器510为例;存储器520用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器510执行,使得所述一个或多个处理器510实现如本申请实施例中所述的芯片子系统的随机验证方法。
电子设备中的处理器510、存储器520可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器520作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序以及模块,如本申请实施例所述的芯片子系统的随机验证方法对应的程序指令/模块(例如,芯片子系统的随机验证装置中的功能验证场景随机选取模块410、功能验证场景仿真模块420以及循环仿真模块430)。存储器520可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至通信节点。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在一具体示例中,该电子设备的系统为linux,系统中运行用于对芯片子系统进行验证的模拟器,模拟器执行存储器520中存储的程序时实现如本申请实施例中所述的芯片子系统的随机验证方法。
本申请实施例还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例中芯片子系统的随机验证方法,该芯片子系统的随机验证方法包括:
在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,所述功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数;
基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证;
在仿真验证结束之后,继续执行所述在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。
可选的,该计算机可执行指令在由计算机处理器执行时还可以用于实现本申请实施例中任一所述的芯片子系统的随机验证方法。
在一具体示例中,linux系统中运行用于对芯片子系统进行验证的模拟器,模拟器获取存储介质中存储的计算机程序,模拟器执行该程序时实现如本申请任意实施例中所述的芯片子系统的随机验证方法,以完成对芯片子系统的随机验证。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台通信设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述芯片子系统的随机验证装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
以上所述,仅为本申请的示例性实施例而已,并非用于限定本申请的保护范围。
一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。
本申请的实施例可以通过移动装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。
本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(ROM)、随机访问存储器(RAM)、光存储器装置和系统(数码多功能光碟DVD或CD光盘)等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑器件(FGPA)以及基于多核处理器架构的处理器。
通过示范性和非限制性的示例,上文已提供了对本申请的示范实施例的详细描述。但结合附图和权利要求来考虑,对以上实施例的多种修改和调整对本领域技术人员来说是显而易见的,但不偏离本申请的范围。因此,本申请的恰当范围将根据权利要求确定。
Claims (10)
1.一种芯片子系统的随机验证方法,其特征在于,包括:
在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,所述功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数;
基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证;
在仿真验证结束之后,继续执行所述在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。
2.根据权利要求1所述的方法,其特征在于,在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景之前,还包括:
根据所述多种功能验证场景以及每种功能验证场景的仿真配置次数,随机生成与所述芯片目标子系统对应的功能验证场景序列;其中,所述功能验证场景序列中包括随机交叉排列的多种功能验证场景,每种功能验证场景在所述功能验证场景序列中出现的次数为所述每种功能验证场景的仿真配置次数;
在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景,包括:
依次在功能验证场景序列中选取一个功能验证场景作为当前仿真功能验证场景;
直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数,包括:
直至所述功能验证场景序列中的所有功能验证场景均被完成选取。
3.根据权利要求2所述的方法,其特征在于,在所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数之后,还包括:
确定在所述芯片目标子系统的验证过程中所述多种功能验证场景之间的交叉覆盖情况;
判断所述交叉覆盖情况是否满足预设仿真验证指标,若否,则返回执行在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至判断出所述交叉覆盖情况满足预设仿真验证指标。
4.根据权利要求3所述的方法,其特征在于,在返回执行在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作之前,还包括:
获取所述每种功能验证场景更新后的仿真配置次数。
5.根据权利要求1所述的方法,在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景之前,还包括:
获取与所述芯片目标子系统对应的随机生成的配置参数,并根据所述配置参数对所述芯片目标子系统进行相应配置。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述芯片目标子系统包括芯片处理器子系统。
7.根据权利要求6所述的方法,其特征在于,基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证,包括:
基于所述当前仿真功能验证场景,对所述芯片目标子系统开始进行仿真验证;
在检测到随机插入的目标中断时,处理所述目标中断;
在处理完成所述目标中断后,基于所述当前仿真功能验证场景,继续对所述芯片目标子系统进行仿真验证。
8.一种芯片子系统的随机验证装置,其特征在于,包括:
功能验证场景随机选取模块,设置为在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景;其中,所述功能验证场景池中包括与芯片目标子系统对应的多种功能验证场景,以及每种功能验证场景的仿真配置次数;
功能验证场景仿真模块,设置为基于所述当前仿真功能验证场景,对所述芯片目标子系统进行仿真验证;
循环仿真模块,设置为在仿真验证结束之后,继续执行所述在功能验证场景池中随机选取一个功能验证场景作为当前仿真功能验证场景的操作,直至所述功能验证场景池中的每个所述功能验证场景被选取的次数均为各自的仿真配置次数。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010561292.1A CN113821898A (zh) | 2020-06-18 | 2020-06-18 | 芯片子系统的随机验证方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010561292.1A CN113821898A (zh) | 2020-06-18 | 2020-06-18 | 芯片子系统的随机验证方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113821898A true CN113821898A (zh) | 2021-12-21 |
Family
ID=78911889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010561292.1A Pending CN113821898A (zh) | 2020-06-18 | 2020-06-18 | 芯片子系统的随机验证方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113821898A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114578714A (zh) * | 2022-05-05 | 2022-06-03 | 湖南星河云程信息科技有限公司 | 基于效能指标收敛控制的仿真运行次数确定方法及装置 |
CN116362057A (zh) * | 2023-05-08 | 2023-06-30 | 上海奎芯集成电路设计有限公司 | 随机验证方法、装置、电子设备及存储介质 |
-
2020
- 2020-06-18 CN CN202010561292.1A patent/CN113821898A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114578714A (zh) * | 2022-05-05 | 2022-06-03 | 湖南星河云程信息科技有限公司 | 基于效能指标收敛控制的仿真运行次数确定方法及装置 |
CN116362057A (zh) * | 2023-05-08 | 2023-06-30 | 上海奎芯集成电路设计有限公司 | 随机验证方法、装置、电子设备及存储介质 |
CN116362057B (zh) * | 2023-05-08 | 2023-11-10 | 上海奎芯集成电路设计有限公司 | 随机验证方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3678346B1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
CN109032879B (zh) | 多核处理器访存数据检测验证系统及方法 | |
CN113821898A (zh) | 芯片子系统的随机验证方法、装置、设备和存储介质 | |
CN112286750A (zh) | 一种gpio验证方法、装置、电子设备和介质 | |
US8874966B1 (en) | Storage device error simulator tool | |
CN108628734B (zh) | 一种功能程序调试方法和终端 | |
EP3933639B1 (en) | Transaction processing method, apparatus, and electronic device for blockchain | |
CN109144806B (zh) | 一种寄存器传输级电路的功能验证方法及装置 | |
CN115562931A (zh) | 处理器调试模块验证方法、装置、电子设备和存储介质 | |
US20050209839A1 (en) | Data processing apparatus simulation | |
CN111857866B (zh) | 一种多动态核的加载方法、装置和计算机可读存储介质 | |
CN114564903A (zh) | 一种芯片仿真设计验证方法、装置、设备及介质 | |
CN114138688A (zh) | 一种数据读取方法、系统、设备以及介质 | |
CN111090575B (zh) | 测试方法 | |
CN117131821B (zh) | 芯片验证方法、装置、电子设备及存储介质 | |
CN112463633A (zh) | 一种片上存储器的地址译码校验方法、装置、设备及介质 | |
US8359456B2 (en) | Generating random addresses for verification of distributed computerized devices | |
CN117971721B (zh) | 多核处理器的模块验证方法、装置及电子设备 | |
CN111310172B (zh) | 通过反汇编验证处理器执行轨迹的方法及控制部件 | |
CN116702666A (zh) | 一种ip核验证方法、装置及电子设备 | |
CN118245305A (zh) | 一种dpu引擎的多线程命令执行的验证系统和方法 | |
CN116029235A (zh) | 芯片验证方法、装置和系统 | |
CN106155853A (zh) | 处理器ip的验证方法、装置和系统 | |
CN117153230A (zh) | 闪存芯片老化测试方法、装置、设备及介质 | |
CN117574811A (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 |