一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

AI芯片验证系统、方法、设备及存储介质与流程

2021-12-03 23:41:00 来源:中国专利 TAG:

ai芯片验证系统、方法、设备及存储介质
技术领域
1.本公开涉及ai芯片验证领域,具体涉及一种ai芯片验证系统、方法、设备及存储介质。


背景技术:

2.验证是芯片研发过程中很重要的一个阶段,在芯片交付给厂家生产之前需要通过验证来保证芯片功能的正确性。
3.在针对ai芯片的研发工程中,由于各种类别神经网络的引入,要求芯片具备更强的适配性和鲁棒性,从而对应要求芯片功能验证也能够适配各种类别的神经网络。而传统的芯片验证方法,需要针对待验证的神经网络搭建专门的验证环境,并不能适配验证多种神经网络。


技术实现要素:

4.本公开提供了一种ai芯片验证系统、方法、设备、存储介质及计算机程序产品。
5.根据本公开实施例的第一方面,提供一种ai芯片验证系统,所述系统包括:用例生成器,用于基于待验证对象的信息和预设用例模板,生成所述待验证对象的验证用例,其中,所述验证用例满足所述预设用例模板定义的格式,所述待验证对象包括神经网络模型中的目标算子或者神经网络模型;待测设计模块,用于通过待测设计执行所述验证用例,得到测试结果;比对模块,用于将所述测试结果与参考结果进行比对,获得所述待测设计对所述待验证对象的验证结果。
6.本公开实施例中,根据预先定义格式的预设用例模板生成验证用例,使得本公开实施例中提供的ai芯片验证系统能够适配验证各种类别的神经网络模型。
7.在一些可选实施例中,所述预设用例模板包括下列中的至少一项:指令流模板文件,包含所述验证用例的指令流模板;初始化数据模板文件,包含所述验证用例的初始化数据模板;寄存器配置模板文件,包含所述验证用例的寄存器配置模板。
8.在一些可选实施例中,所述系统还包括:环境驱动器,用于基于所述预设用例模板中包括的至少一个模板文件,将所述验证用例驱动到所述待测设计模块中,以由所述待测设计执行所述验证用例。
9.在一些可选实施例中,所述预设用例模板包括:结果模板文件,包含所述验证用例的输出结果模板;所述系统还包括:环境采样器,用于基于所述结果模板文件,从所述待测设计模块采样所述测试结果,并将采样得到的所述测试结果传输至所述比对模块。
10.在一些可选实施例中,所述用例生成器包括:定向生成器,用于获取所述待验证对象的参数文件,并通过解析所述待验证对象的所述参数文件中包含的对象参数,生成所述待验证对象的验证用例。
11.本公开实施例中,能够对神经网络模型的层级进行验证,还能对整个神经网络模型进行验证,提高了待测设计对神经网络的验证深度和灵活性。
12.在一些可选实施例中,所述参数文件包括:定点化参数文件和网络结构文件。
13.在一些可选实施例中,所述预设用例模板包括:参考结果文件,包含所述验证用例的参考结果;所述比对模块获得的所述参考结果是从所述预设用例模板中获取的。
14.本公开实施例中,可以直接从验证用例中获取该验证用例的参考结果,不需要参考模型执行验证用例,提高了比对装置的执行效率,从而提高了对待测设计的验证效率。
15.在一些可选实施例中,所述用例生成器包括:随机生成器,用于获取所述待验证对象的配置文件,基于所述配置文件生成待验证对象的对象参数,并基于生成的所述对象参数,生成所述待验证对象的验证用例。
16.本公开实施例中,随机生成器根据配置文件,基于特定验证用例,利用随机技术生成不同的验证用例,使得验证场景覆盖更全面,有效提升了验证完备性。
17.在一些可选实施例中,所述系统还包括:参考模型,用于执行所述用例生成器生成的验证用例,以得到对应的参考结果。
18.在一些可选实施例中,所述预设用例模板包括:调度核指令流模板文件,包含所述验证用例的调度核指令流模板;所述系统还包括:调度指令编译器,用于基于所述调度核指令流模板文件,生成所述待测设计的调度核指令流;所述用例生成器,用于基于所述调度指令编译器生成的所述调度核指令流,生成所述待验证对象的验证用例。
19.本公开实施例中,复用了针对1级dut的ai芯片验证系统的其他模块。减少了芯片验证工作量,提高了对待测设计的验证效率,节省验证资源。
20.在一些可选实施例中,所述系统还包括性能统计器,与所述待测设计模块连接,用于:获取所述待测设计执行所述验证用例的性能参数,并基于所述性能参数得到性能统计结果。
21.本公开实施例中,性能统计器能够对待测设计执行神经网络模型的层级的验证用例的运算时间和带宽进行统计,也能够对待测设计执行整个神经网络模型的网络级的验证用例的运算时间和带宽进行统计,丰富了对待测设计验证的性能统计。
22.根据本公开实施例的第二方面,提供一种ai芯片验证方法,包括:基于待验证对象的信息和预设用例模板,生成所述待验证对象的验证用例,其中,所述验证用例满足所述预设用例模板定义的格式,所述待验证对象包括神经网络模型中的目标算子或者神经网络模型;通过待测设计执行所述验证用例,得到测试结果;将所述测试结果与参考结果进行比对,获得所述待测设计对所述待验证对象的验证结果。
23.本公开实施例中,根据待验证对象的信息生成的验证用例,是基于预设用例模板中预先定义的格式生成的验证用例。不同类别的神经网络对应的待验证对象生成的验证用例具有统一的格式,所以本公开实施例中提供的ai芯片验证系统能够适配验证各种类别的神经网络。
24.在一些可选实施例中,所述预设用例模板包括下列中的至少一项:指令流模板文件,包含所述验证用例的指令流模板;初始化数据模板文件,包含所述验证用例的初始化数据模板;寄存器配置模板文件,包含所述验证用例的寄存器配置模板。
25.在一些可选实施例中,在所述基于待验证对象的信息和预设用例模板,生成所述待验证对象的验证用例之后,还包括:基于所述预设用例模板中包括的至少一个模板文件,将所述验证用例驱动到所述待测设计模块中,以由所述待测设计执行所述验证用例。
26.在一些可选实施例中,所述预设用例模板包括:结果模板文件,包含所述验证用例的输出结果模板;在所述通过待测设计执行所述验证用例,得到测试结果之后,还包括:基于所述结果模板文件,从所述待测设计模块采样所述测试结果,并将采样得到的所述测试结果传输至所述比对模块。
27.在一些可选实施例中,所述基于待验证对象的信息和预设用例模板,生成所述待验证对象的验证用例,包括:获取所述待验证对象的参数文件,并通过解析所述待验证对象的所述参数文件中包含的对象参数,生成所述待验证对象的验证用例。
28.在一些可选实施例中,所述参数文件包括:定点化参数文件和网络结构文件。
29.在一些可选实施例中,所述预设用例模板包括:参考结果文件,包含所述验证用例的参考结果。
30.在一些可选实施例中,所述基于待验证对象的信息和预设用例模板,生成所述待验证对象的验证用例,包括:获取所述待验证对象的配置文件,基于所述配置文件生成待验证对象的对象参数,并基于生成的所述对象参数,生成所述待验证对象的验证用例。
31.在一些可选实施例中,所述方法还包括:通过参考模型执行所述验证用例,以得到对应的参考结果。
32.在一些可选实施例中,所述预设用例模板包括:调度核指令流模板文件,包含所述验证用例的调度核指令流模板;所述方法还包括:基于所述调度核指令流模板文件,生成所述待测设计的调度核指令流;基于所述调度核指令流,生成所述待验证对象的验证用例。
33.在一些可选实施例中,所述方法还包括:获取所述待测设计执行所述验证用例的性能参数,并基于所述性能参数得到性能统计结果。
34.根据本公开实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第二方面中任一项所述的ai芯片验证方法。
35.根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第二方面中任一所述的ai芯片验证方法。
36.根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述程序被处理器执行时实现第二方面中任一所述的ai芯片验证方法。
37.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
39.图1是根据一示例性实施例示出的一种ai芯片验证系统示意图;
40.图2是根据一示例性实施例示出的一种预设用例模板示意图;
41.图3是根据一示例性实施例示出的另一种ai芯片验证系统示意图;
42.图4是根据一示例性实施例示出的另一种预设用例模板示意图;
43.图5是根据一示例性实施例示出的又一种ai芯片验证系统示意图;
44.图6是根据一示例性实施例示出的又一种ai芯片验证系统示意图;
45.图7是根据一示例性实施例示出的一种配置文件示意图;
46.图8是根据一示例性实施例示出的一种二级待测设计示意图;
47.图9是根据一示例性实施例示出的又一种ai芯片验证系统示意图;
48.图10是根据一示例性实施例示出的一种ai芯片验证方法流程图。
具体实施方式
49.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的具体方式并不代表与本公开相一致的所有方案。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
50.在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
51.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
52.为了使本公开提供的ai芯片验证方案更加清楚,下面结合附图和具体实施例对本公开提供的方案执行过程进行详细描述。
53.参见图1,图1是本公开提供的实施例示出的一种ai芯片验证系统。其中,如图1所示,该ai芯片验证系统可以包括:用例生成器101、待测设计模块102和比对模块103,其中,用例生成器101用于生成验证用例,该验证用例被输入到待测设计模块102中由待测设计进行处理,得到测试结果,该测试结果被输入到比对模块103进行处理,得到待测设计的验证结果。
54.ai芯片验证中,可以验证新设计的ai芯片是否能够实现神经网络模型中的某些操作(算子),比如神经网络中的卷积、池化等,能否用该ai芯片成功执行这些操作。这种验证神经网络模型中某些算子的情况,即是将神经网络模型中的算子作为待验证对象。或者,还可以验证新设计的ai芯片是否能够成功执行完整的神经网络模型。这种验证完整的神经网络模型的情况,即是将整个神经网络模型作为了待验证对象。其中,神经网络模型可以是用于图像识别的神经网络,比如卷积神经网络,可以是用于语音识别的神经网络或者用于文本识别的神经网络,本公开对此不进行限制。
55.如图1所示的ai芯片验证系统中,用例生成器101可以解析待验证对象的信息,得到用于生成该待验证对象的验证用例的参数。其中,待验证对象的信息可以是定点化参数文件和网络结构文件中包含的参数信息,或者可以是对应该待验证对象的配置文件中的参数信息。例如,将神经网络模型中的卷积操作作为待验证对象,用例生成器101可以解析该卷积操作对应的定点化参数文件和网络结构文件中的参数信息,得到用于生成该卷积操作的验证用例的参数。或者,将完整的神经网络模型作为待验证对象,用例生成器101可以解
析该神经网络模型对应的定点化参数文件和网络结构文件,得到用于生成该神经网络模型的验证用例的参数。
56.用例生成器101得到用于生成待验证对象的验证用例的参数后,根据生成的参数并基于预设用例模板中定义的格式,生成待验证对象的验证用例。其中,预设用例模板定义了所要生成的验证用例中数据的格式。例如,预设用例模板可以对所要生成的验证用例某一特定部分的数据定义格式。具体的,预设用例模板可以定义所要生成的验证用例中指令流数据和初始化数据的格式,即完成了对特定部分(指令流数据和初始化数据)的格式定义。对于所要生成的验证用例中特定部分之外的数据格式,预设用例模板可以根据具体情况来定义。或者,预设用例模板可以对所要生成的验证用例的全部数据进行格式定义,本公开实施例对此不作限制。
57.在一些可选实施例中,所述预设用例模板包括下列中的至少一项:
58.指令流模板文件,包含所述验证用例的指令流模板;
59.初始化数据模板文件,包含所述验证用例的初始化数据模板;
60.寄存器配置模板文件,包含所述验证用例的寄存器配置模板。
61.上述实施例中,用例生成器101可以根据预设用例模板中的各个模板文件,生成验证用例中不同的数据。用例生成器101可以根据指令流模板文件中的指令流模板,生成该指令流模板定义格式的指令流;根据初始化数据模板文件中的初始化数据模板,生成该初始化数据模板定义格式的初始化数据;根据寄存器配置模板文件中的寄存器配置模板,生成该寄存器配置模板定义格式的寄存器配置数据。用例生成器101根据预设用例模板定义的格式,生成待验证对象的验证用例。
62.示例性的,图2示出一种预设用例模板。用例生成器101可以根据“指令流”模板文件生成验证用例中的指令流;根据“图片/权重数据”模板文件和“initial list”模板文件,生成验证用例中的初始化数据:“图片/权重数据”和“initial list”数据;根据“register config”模板文件,生成验证用例中的寄存器配置数据。
63.用例生成器101生成验证用例后,待测设计模块102可以获取验证用例并由待测设计(design under test,dut)执行该验证用例,得到测试结果。
64.在一些可选实施例中,如图3,所述系统还包括:环境驱动器301,用于基于所述预设用例模板中包括的至少一个模板文件,将所述验证用例驱动到所述待测设计模块102中,以由所述待测设计执行所述验证用例。
65.在上述实施例中,可以由环境驱动器301解析验证用例中的具体数据,对解析后的数据进行激励驱动。比如,环境驱动器301可以将验证用例中的指令流、初始化数据和寄存器配置数据,驱动到待测设计模块102中,从而待测设计可以执行该验证用例。
66.以图2所示的预设用例模板生成的验证用例为例进行说明。环境驱动器301可以解析验证用例中的“图片/权重数据”文件、“initial list”文件、“指令流”文件和register config文件,通过uvm(universal verification methodology,通用验证方法学)中的driver组件对待测设计模块102的四个部分进行激励驱动。
67.第一部分:利用验证用例中的寄存器配置数据对待测设计的寄存器进行配置。其中,寄存器配置操作需要严格遵循ahb(advanced high performance bus,系统总线)和apb(advanced peripheral bus,外围总线)等接口协议。
68.第二部分:对待测设计所连接的外部存储模型vip model进行初始化。其中,外部存储模型vip model的初始化需要利用vip backdoor技术对使用的memory区域操作。
69.第三部分:对待测设计内部存储模型memory model进行初始化。其中,dut内部存储模型memory model的初始化需要封装dut memory函数,对内部共享存储空间进行精确的地址写入操作。
70.第四部分:将验证用例中的指令流进行激励驱动。利用uvm driver的时序特性,将验证用例指令流文件中的指令流按照规定的格式发射到dut的指令接口上。
71.环境驱动器301将验证用例的数据驱动到待测设计模块102中,由待测设计执行所述验证用例。该待测设计模块102中包括的待测设计,可以是待验证的新设计的完整芯片,也可以是待验证的组成完整芯片的新设计的某一具体模块,本公开不作限制。
72.待测设计模块102中的待测设计执行验证用例后,得到验证用例对应的测试结果。比对模块103可以从待测设计模块102中获取待测设计执行验证用例后的测试结果。
73.在一些可选实施例中,所述预设用例模板包括:结果模板文件,包含所述验证用例的输出结果模板。如图3,所述系统还包括:环境采样器302,用于基于所述结果模板文件,从所述待测设计模块102采样所述测试结果,并将采样得到的所述测试结果传输至所述比对模块103。
74.参照图5示例的预设用例模板,其中“dump list”模板文件可以作为结果模板文件,包含验证用例的输出结果模板。环境采样器302可以根据“dump list”模板文件中的输出结果模板,从待测设计模块102采样待测设计执行验证用例后得到的测试结果。
75.比如,环境采样器302通过uvm中的monitor组件进行扩展,自定义结果数据dump_data的采样任务,按照dut输入/输出接口中的时序要求,将外部存储模型中的结果数据,采样到临时数组中。然后,根据结果模板文件中输出结果模板的格式,比如根据“dump list”模板文件的格式,将临时数组打印到文件中。其中采样的结果数据包括ai网络的网络层级运算结果,采样条件是网络层结束的msg信号。
76.其中,图3所示的ai芯片验证系统中环境驱动器301和环境采样器302是独立于待测设计模块102的,在其他可实现方式中,待测设计模块102中可以集成环境驱动器301和环境采样器302,本公开对此不进行具体限制。
77.比对模块103中用来与测试结果进行比对的参考结果,可以是比对模块103直接从验证用例中获取的结果数据,或者可以是验证用例通过参考模型执行验证用例后得到的结果数据。其中,参考模型是对待验证ai芯片或待测设计的各功能进行验证的模型,负责模拟待测设计dut的逻辑行为。例如,用system c编码模型来实现,负责生成用于比对的golden结果,在生成golden结果时要保证和环境采样器采集数据的一致性。
78.在一些可实现的方式中,比对模块103负责将环境采样器302的测试结果和该验证用例对应的参考结果,进行正确性比对,且支持多种形式的结果数据比对。比如,支持dut内部存储结果数据的比对;支持外部存储模型中的网络结果进行比对。对于比对时间上,可以在网络的每个网络层结束时进行数据比对,比对每一层的数据结果;可以在验证用例执行结束时比对所有网络层的数据结果。从而,研发人员可以根据该验证结果对当前验证的待测设计进行针对性的修改。
79.本公开实施例中,根据预先定义格式的预设用例模板生成验证用例,使得不同类
别的神经网络对应的待验证对象生成的验证用例具有统一的格式,所以本公开实施例中提供的ai芯片验证系统能够适配验证各种类别的神经网络。
80.在一些可选实施例中,如图5所示,本公开实施例中提供了另一种ai芯片验证系统,该系统中的用例生成器101包括定向生成器401。定向生成器401可以获取待验证对象的参数文件,解析待验证对象的参数文件中包含的对象参数,生成待验证对象的验证用例。其中,参数文件中的对象参数,是生成待验证对象的验证用例时定向生成器401所需要的参数。比如,参数文件可以是定点化参数文件或网络结构文件中的一个或多个,或者可以是其他包含对象参数的参数文件,本公开实施例不作限制。
81.以参数文件包括定点化参数文件和网络结构文件两个文件为例,定向生成器401可以获取待验证对象的定点化参数文件和网络结构文件,解析两个文件中包含的对象参数,基于对象参数生成待验证对象的验证用例。
82.具体的,以c 作为编程语言为例进行说明。定向生成器401可以解析神经网络模型的定点化参数文件和网络结构文件,根据解析得到的对象参数调用printf函数生成指令流。定向生成器401基于生成的指令流,按照预设用例模板中的指令流模板定义的格式,生成验证用例的指令流;进一步的,根据预设用例模板中的其他模板文件,生成验证用例中的其他数据,从而得到完整的验证用例。通过环境驱动器301,将验证用例的数据驱动到待测设计模块102,由待测设计dut执行验证用例。通过环境采样器302采样得到验证用例对应的测试结果。相关具体过程与前述实施例中相关描述类似,在此不再赘述。
83.本公开实施例中,定向生成器401生成的验证用例中可以包含该验证用例的参考结果。对应的,预设用例模板中包括:参考结果文件,包含验证用例的参考结果。以图4所示的预设用例模板为例,其中“layer级数据”模板文件可以作为参考结果文件,包含定向生成器401生成的该验证用例的参考结果。这样,比对模块103可以直接从验证用例中获取参考结果,并将参考结果与从待测设计模块102获得的测试结果进行比对。
84.在另一种可实现的方式中,定向生成器401在生成验证用例时,不论生成或不生成该验证用例的参考结果,都可以通过参考模型执行该验证用例得到参考结果,由参考模型将参考结果传输至比对模块103。其中,参考模型是对待验证芯片或待测设计的各功能进行验证的模型,负责模拟待测设计dut的逻辑行为。
85.本实施例的ai芯片验证方法,比对模块可以直接从验证用例中获取该验证用例的参考结果,不需要参考模型执行验证用例,提高了比对装置的执行效率,从而提高了对待测设计的验证效率。
86.在一些可选实施例中,定向生成器401可以生成神经网络模型中某一层或某几层作为待验证对象的验证用例。比如,可以生成卷积神经网络模型中某一卷积层作为待验证对象的验证用例。神经网络模型中某一层或某几层作为待验证对象,可以称为层级验证对象。
87.以图5所示的ai芯片验证系统为例,在支持层级验证时,定向生成器401可以解析神经网络模型中目标网络层对应的参数文件,根据预设用例模板定义的格式,生成目标网络层作为层级验证对象的验证用例。其中,目标网络层可以是神经网络模型中的某一个或多个网络层,比如某一个卷积层、池化层,或者也可以是多个卷积层、多个全连接层等。
88.具体的,比如要对卷积神经网络模型中的某一卷积层进行验证,以测试待测设计
是否能够成功执行该卷积层的运算。本公开实施例中,定向生成器401通过解析该神经网络模型中该卷积层对应的定点化参数文件和网络结构文件,基于预设用例模板定义的格式,生成该卷积层作为层级验证对象的验证用例。
89.本公开实施例中,定向生成器401还可以生成某一完整神经网络模型作为待验证对象的验证用例。比如,可以生成卷积神经网络模型对应的验证用例。这种将整个神经网络模型作为待验证对象,可以称为网络级验证对象。
90.具体的,比如要对用于图像识别的卷积神经网络模型进行验证,以测试待测设计是否能够完整执行该卷积神经网络模型中的运算。本公开实施例中,定向生成器401通过解析该卷积神经网络模型对应的定点化参数文件和网络结构文件,基于预设用例模板定义的格式,生成该卷积神经网络模型作为网络级验证对象的验证用例。
91.本公开实施例提供的ai芯片验证方法,能够对神经网络模型的层级进行验证,还能够对整个神经网络模型进行验证,提高了待测设计对神经网络的验证深度和灵活性。从而,更精准定位芯片研发中产生的bug并修正,加快芯片验证收敛。
92.在一些可选实施例中,如图6所示,本公开实施例中提供了又一种ai芯片验证系统,该系统中用例生成器101中包括随机生成器501,验证用例与比对装置103之间还包括参考模型502。其中,参考模型502是对待验证ai芯片或待测设计的各功能进行验证的模型,负责模拟待测设计dut的逻辑行为。例如,用system c编码模型来实现,负责生成用于比对的golden结果,在生成golden结果时要保证和环境采样器采集数据的一致性。
93.本实施例中,随机生成器501可以获取待验证对象的配置文件,基于配置文件中的参数利用随机化技术,生成待验证对象的对象参数,利用随机生成的对象参数生成验证用例。其中,配置文件是验证人员针对待验证的待测设计配置的文件,比如验证人员利用excel进行参数配置的excel文件。如图7示例了一种excel配置文件。
94.随机生成器501可以解析配置文件,利用配置文件配置的参数,随机生成待验证对象的对象参数。例如,利用systemverilog语言的random constraint技术,随机化产生源操作数范围、源操作数地址、目标操作数范围、目标操作数地址和算子的计算参数等。以图7示例的配置文件为例,随机生成器501可以解析excel文件中case-1中的n个参数,利用random constraint技术随机生成这n个参数中的一部分参数。其中,“一部分参数”可以是n个参数中的一个,也可以是n个参数中的几个,对此本公开实施例不作限制。经过随机化以后,得到多组不同于case-1的参数,作为待验证对象的对象参数,随机生成器501可以基于这些随机产生的对象参数生成验证用例。
95.如图7所示是验证人员针对待验证的神经网络模型和待测设计配置的excel文件,该配置文件中包括生成多个特定验证用例的参数。比如序号1所在行,包括case-1的n个参数:param-1-1
····
param-1-n,相应的case-2、case-3
······
case-n等均由n个参数组成。每一个case中的n个配置参数,对应该case的一个特定验证用例。随机生成器501可以利用随机化技术,在特定验证用例的基础上,生成覆盖范围更广的验证用例。
96.随机生成器501在生成验证用例的过程中,由于使用随机技术生成待验证对象的对象参数,所以生成的验证用例的参考结果未知。所以,本公开实施例中,如图6所示的ai芯片验证系统包括参考模型502。其中,参考模型502用于执行随机生成器501生成的验证用例,以获得该验证用例的参考结果。参考模型502是对待验证芯片或待测设计的各功能进行
验证的模型,负责模拟待测设计dut的逻辑行为。例如,用system c编码模型来实现,负责生成用于比对的golden结果,在生成golden结果时要保证和环境采样器采集数据的一致性。
97.上述实施例中,随机生成器501根据配置文件,基于特定验证用例,利用随机技术生成不同的验证用例,使得验证场景覆盖更全面,有效提升了验证完备性。
98.图6所示的ai芯片验证系统中,用例生成器101中只包括随机生成器501。在其他可实现的方式中,用例生成器101中可以同时包括定向生成器401和随机生成器501。图5和图6所示的ai芯片验证系统,为便于实施例描述清晰,将两者进行分别示出,并不进行任何形式限制。
99.在ai芯片验证过程中,可以将待验证的待测设计分为1级dut和2级dut。参照图8,2级dut在1级dut的基础上增加了调度核。其中,1级dut可以执行验证用例中的指令流。2级dut中的调度核可以执行调度核指令流,以对验证用例中的指令流进行搬运、调度、控制和分发,提高待测设计的灵活性。
100.以图4的预设用例模板生成的验证用例为例。1级dut可以执行验证用例中根据指令流模板文件生成的指令流;2级dut中的调度核可以执行验证用例中根据调度核指令流模板文件生成的调度核指令流,对该验证用例中的指令流进行搬运、调度、控制和分发。在以上实施例中提供的用例生成器(包括随机生成器和定向生成器),由于不能生成“调度核指令流”,所以只能生成对应1级dut的验证用例。
101.如图9所示,本公开实施例中提供了又一种ai芯片验证系统。对应2级dut,该ai芯片验证系统还包括调度指令编译器601。调度指令编译器601可以对指令控制流进行编译,得到2级dut中调度核可执行的调度核指令流。其中,指令控制流是以某种编程语言描述的用于控制验证用例中指令流的指令控制流。比如,调度指令编译器601,对以c语言代码描述的指令控制流进行编译,输出2级dut中调度核可执行的二进制汇编文件,即得到调度核指令流。
102.对应图9所示的ai芯片验证系统,预设用例模板包括:调度核指令流模板文件,其中包含验证用例的调度核指令流模板。调度指令编译器601对指令控制流进行编译,根据调度核指令流模板定义的格式,生成验证用例中的调度核指令流。以图4所示的预设用例模板为例。用例生成器101可以根据“调度核指令流模板文件”之外的其他模板文件,生成2级验证用例中“调度核指令流”之外的其他数据,从而生成对应2级dut的完整验证用例。
103.本公开实施例中的ai芯片验证系统,相比于对应1级dut的ai芯片验证系统,只是增加了调度指令编译器601,复用了针对1级dut的ai芯片验证系统的其他模块。减少了芯片验证工作量,提高了对待测设计的验证效率,节省验证资源。
104.在一些可选实施例中,如图9所示,该ai芯片验证系统还包括与待测设计模块102连接的性能统计器602。可以理解的是,这只是一种示例性的ai芯片验证系统的具体结构,还可以是其他的结构形式,比如,可以不包括调度指令编译器601,只是用来验证1级dut的系统。本公开实施例中,性能统计器602可以从待测设计模块102中获取待测设计执行验证用例的性能参数,基于获得的性能参数进行性能统计。
105.性能统计器602可以统计待测设计执行验证用例的时间。具体的,性能统计器602可以以复位信号拉高为起点,对神经网络模型的每一层layer运算的时间进行统计,或者对神经网络模型整个执行时间进行统计。
106.例如,待测设计执行的验证用例是层级验证对象的验证用例,则性能统计器602可以对神经网络模型中对应的网络层在待测设计中执行的时间进行统计,比如对卷积层在待测设计中的运算时间进行统计。例如,待测设计执行的验证用例是整个神经网络模型对应的验证用例,则性能统计器602可以对待测设计运算整个神经网络模型的时间进行统计,比如对整个卷积神经网络模型在待测设计中的运算进行时间统计。
107.在一些可实现的方式中,性能统计器602还可以统计出待测设计的实际带宽。具体的,性能统计器602可以统计待测设计中所有接口的读写数据量,结合统计的待测设计对应该读写数据量的运算时间,计算出待测设计的实际带宽。例如,待测设计执行的是针对层级的级验证用例,则性能统计器602可以计算待测设计执行神经网络模型对应网络层的实际带宽。比如,待测设计执行卷积层的验证用例的实际带宽。例如,待测设计执行的是针对网络级的验证用例,则性能统计器602可以计算待测设计执行整个神经网络模型的实际带宽。比如,待测设计执行整个卷积神经网络的实际带宽。
108.上述实施例中,ai芯片验证系统中增加了性能统计器,可以对待测设计执行验证用例的时间和带宽等性能参数进行统计。并且,性能统计器能够对待测设计执行神经网络模型的层级的验证用例的运算时间和带宽进行统计,也能够对待测设计执行整个神经网络模型的网络级的验证用例的运算时间和带宽进行统计,丰富了对待测设计验证的性能统计。
109.在一些可选实施例中,如图10所示,本公开的实施例示出了一种ai芯片验证方法。本公开实施列提供的ai芯片验证方法或ai芯片验证系统,可应用在进行ai芯片验证的服务器、终端设备或其他类型的电子设备中。如图10所示的ai芯片验证流程包括以下步骤:
110.步骤101,基于待验证对象的信息和预设用例模板,生成所述待验证对象的验证用例,其中,所述验证用例满足所述预设用例模板定义的格式,所述待验证对象包括神经网络模型中的目标算子或者神经网络模型。
111.本步骤中,可以解析待验证对象的信息,得到用于生成该验证对象的验证用例的参数。其中,待验证对象可以是神经网络模型中的算子,或者可以是整个神经网络模型。待验证对象的信息可以是定点化参数文件和网络结构文件中包含的参数信息,或者可以是对应该验证对象的配置文件中的参数信息。
112.在得到用于生成验证对象的验证用例的参数后,根据生成的参数并基于预设用例模板中定义的格式,生成待验证对象的验证用例。其中,预设用例模板定义了所要生成的验证用例中数据的格式,具体描述可以参见验证系统部分实施例的相关描述。
113.在一些可实现的方式中,可以获取待验证对象的参数文件,解析待验证对象的参数文件中包含的对象参数,生成待验证对象的验证用例。其中,相关描述可以参见验证系统实施例相关部分描述。这种实现方式,可以在验证用例中生成对应的参考结果,不需要参考模型执行验证用例得到,提高了对待测设计验证的效率。并且,能够对神经网络模型的层级进行验证,对整个神经网络模型进行验证,提高待测设计对神经网络的验证深度和灵活性。
114.在其他可实现的方式中,可以获取待验证对象的配置文件,基于配置文件中的参数利用随机化技术,生成待验证对象的对象参数,利用随机生成的对象参数生成验证用例。相关具体描述同样可以参见本公开验证系统实施例的相关部分的描述。该实现方式,基于特定验证用例,利用随机技术生成不同的验证用例,使得验证场景覆盖更全面,有效提升了
验证完备性。
115.步骤102,通过待测设计执行所述验证用例,得到测试结果。
116.在生成待验证对象的验证用例后,可以通过待测设计来执行该验证用例,得到执行后的测试结果。其中,待测设计可以包括在待测设计模块中,并且通过环境驱动器将验证用例的数据驱动到待测设计模块中由待测设计执行。待测设计执行验证用例后,可以由环境采样器从待测设计模块中采样该验证用例执行后的测试结果。相关描述与本公开中验证系统实施例的相关描述一致,在此不再赘述。
117.步骤103,将所述测试结果与参考结果进行比对,获得所述待测设计对所述待验证对象的验证结果。
118.本步骤中与测试用例的测试结果进行比对的参考结果,可以是验证用例中已经存在的结果数据,或者可以是通过参考模型执行验证用例后得到的结果数据。其中,参考模型是对待验证ai芯片或待测设计的各功能进行验证的模型,负责模拟待测设计dut的逻辑行为。
119.本公开实施例中,利用预设用例模板预先定义验证用例的格式,不同类别的神经网络对应的待验证对象生成的验证用例具有统一的格式,所以该ai芯片验证方法可以适配验证各种类别的神经网络。
120.在一些可选实施例中,可以对指令控制流进行编译,得到2级dut中调度核可执行的调度核指令流。对应的预设用例模板包括:调度核指令流模板文件,其中包含验证用例的调度核指令流模板。
121.具体的,可以对指令控制流进行编译,根据调度核指令流模板定义的格式,生成验证用例中的调度核指令流。然后根据“调度核指令流模板文件”之外的其他模板文件,生成2级验证用例中“调度核指令流”之外的其他数据,从而生成对应2级dut的完整验证用例。这种生成2级dut验证用例的方法,可以复用生成1级dut验证用例的模块,减少芯片验证的工作量,提高验证效率。
122.在一些可选实施例中,可以获取待测设计执行验证用例的性能参数,基于获得的性能参数进行性能统计。比如,统计待测设计执行验证用例的时间,可以统计出待测设计的实际带宽。具体的统计过程可以参见验证系统实施例相关部分的描述,在此不再描述。本实施例的性能统计,可以对对待测设计执行神经网络模型的层级的验证用例的运算时间和带宽进行统计,也能够对待测设计执行整个神经网络模型的网络级的验证用例的运算时间和带宽进行统计,丰富了对待测设计验证的性能统计。
123.本公开还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时能够实现本公开任一实施例的ai芯片验证方法。
124.本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时能够实现本公开任一实施例的ai芯片验证方法。
125.其中,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等,本公开并不对此进行限制。
126.本公开还提供了一种计算机程序产品,包括计算机程序,所述程序被处理器执行时实现本公开任一实施例的ai芯片验证方法。
127.本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
128.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
129.以上所述仅为本公开的较佳实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献