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

芯片验证方法、装置、设备和介质与流程

2022-02-22 18:30:55 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及芯片领域,具体涉及一种芯片验证方法、装置、电子设备、计算机可读存储介质和计算机程序产品。


背景技术:

2.在芯片的开发使用过程中,芯片的验证验证是很重要的环节,是保证芯片功能正确性的必备方法。目前对芯片进行验证的主流框架是通用验证方法学(universal verification methodology,uvm),uvm是一种通用的验证方法学,提供一种设计模式的规范化,并为构建平台提供基础库。
3.在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。


技术实现要素:

4.本公开提供了一种芯片验证方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
5.根据本公开的一方面,提供了一种芯片验证方法,其中,芯片包括多个运算模块,方法包括:确定第一数量的指令流,其中,第一数量的指令流中的每一条指令流包括多个运算描述符和至少一个中止描述符;以及针对第一数量的指令流中的任意一条指令流,执行验证操作,验证操作至少包括:针对该指令流所包括的多个运算描述符中的每一个运算描述符,使多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理,以得到该运算描述符所对应的处理结果;响应于该指令流执行至中止描述符,确定该指令流中位于该中止描述符之前的至少一个运算描述符所对应的反馈结果,其中,反馈结果为根据至少一个运算描述符中的每一个运算描述符所对应的处理结果而得到;以及将至少一个运算描述符所对应的反馈结果与至少一个运算描述符所对应的仿真结果进行比对,以确定对芯片的验证结果。
6.根据本公开的另一方面,提供了一种芯片验证装置,其中,芯片包括多个运算模块,装置包括:确定单元,被配置用于确定第一数量的指令流,其中,第一数量的指令流中的每一条指令流包括多个运算描述符和至少一个中止描述符;以及执行单元,被配置用于针对第一数量的指令流中的任意一条指令流,执行验证操作,执行单元至少包括:使能子单元,被配置用于针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理,以得到该运算描述符所对应的处理结果;确定子单元,被配置用于响应于该指令流执行至中止描述符,确定该指令流中位于该中止描述符之前的至少一个运算描述符所对应的反馈结果,其中,反馈结果为根据至少一个运算描述符中的每一个运算描述符所对应的处理结果而得到;以及比对子单元,被配置用于将至少一个运算描述符所对应的反馈结果与至少一个运算描述符所对
应的仿真结果进行比对,以确定对芯片的验证结果。
7.根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行芯片验证方法。
8.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行芯片验证方法。
9.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,其中,计算机程序在被处理器执行时实现芯片验证方法。
10.根据本公开的一个或多个实施例,可以通过确定的第一数量的指令流执行芯片验证,通过使能芯片中的运算单元依次执行指令流中的各个运算描述符,能够还原芯片在真实场景中各个运算模块之间的协同运作方式,有效提升对芯片验证的精准性。
11.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
12.附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
13.图1示出了根据本公开的实施例的芯片验证方法的流程图;
14.图2示出了根据本公开的实施例的芯片验证整体流程的示意图;
15.图3示出了根据本公开的实施例的指令流的示意图;
16.图4示出了根据本公开的实施例的芯片系统级验证的流程图;
17.图5示出了根据本公开的实施例的芯片验证装置的结构框图;以及
18.图6示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
19.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
20.在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
21.在本公开中对各种示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
22.现有技术中,对于基于自定义指令集的芯片的验证验证由于无法使用高级语言编
写的软件程序作为验证激励,在芯片开发阶段芯片中的各个运算模块无法执行软件编写的程序,仅能靠验证人员自行理解指令功能,在验证平台内构造定向或随机指令验证来验证计算功能的正确性。这些定向或随机的指令由于长度很短或者缺乏指令间的联系,导致验证脱离真实场景,验证效果不佳。
23.为了解决上述问题,本公开通过确定的第一数量的指令流执行芯片验证,通过使能芯片中的运算单元依次执行指令流中的各个运算描述符,能够还原芯片在真实场景中各个运算模块之间的协同运作方式,有效提升对芯片验证的精准性。
24.下面将结合附图详细描述本公开的实施例。
25.图1示出了根据本公开的实施例的芯片验证方法的流程图。如图1所示,芯片验证方法100包括:步骤s101、确定第一数量的指令流,其中,第一数量的指令流中的每一条指令流包括多个运算描述符和至少一个中止描述符;以及步骤s102、针对第一数量的指令流中的任意一条指令流,执行验证操作,验证操作至少包括:步骤s102-1、针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理,以得到该运算描述符所对应的处理结果;步骤s102-2响应于该指令流执行至中止描述符,确定该指令流中位于该中止描述符之前的至少一个运算描述符所对应的反馈结果,其中,反馈结果为根据至少一个运算描述符中的每一个运算描述符所对应的处理结果而得到;以及步骤s102-3、将至少一个运算描述符所对应的反馈结果与至少一个运算描述符所对应的仿真结果进行比对,以确定对芯片的验证结果。
26.由此,通过确定的第一数量的指令流执行芯片验证,通过使能芯片中的运算单元依次执行指令流中的各个运算描述符,能够还原芯片在真实场景中各个运算模块之间的协同运作方式,使芯片完成真实的计算功能,有效提升对芯片验证的准确性。
27.根据一些实施例,上述验证方法可以通过能够与验证芯片之间进行数据通信的验证组件来实现。
28.其中,运算描述符可以看作是由多个指令组成的子指令流,在指定类型的计算单元中执行计算。
29.在步骤s101中,根据一些实施例,确定第一数量的指令流可以包括:获取待验证任务所对应的验证激励,其中,验证激励为利用芯片所对应的编译器而编译得到;以及基于验证激励,确定第一数量的指令流。
30.在一个示例中,可以针对待验证任务用高级程序语言,例如,c 语言,编写相应的验证程序,其中,待验证任务例如可以是芯片能够完成的一个计算功能,相应地,该验证程序也能够实现这一计算功能。由此,通过验证程序的编写,还原了芯片在真实场景中所要执行的真实的计算功能,可以有效提升对芯片验证的精准性。
31.根据一些实施例,利用编译器对上述用高级程序语言编写的验证程序进行编译,并获得指定格式的数据文件,即验证激励,以用于芯片的验证。其中,验证激励可以包括:具有指定格式的原始数据文件,在对芯片片内系统进行系统级验证时,用于初始化内存,以及在对芯片内的子系统分别进行验证时,用于初始化芯片验证平台所模拟的芯片内存;具有指定格式的指令位置索引文件,包括第一数量的指令流,使得运算模块基于指令流中的运算描述符执行相应的运算操作;以及具有指定格式的生成地址段配置文件,用于指示可存放运算模块的处理结果的地址段。
32.根据一些实施例,至少一个运算描述符所对应的仿真结果为利用软件仿真而预先得到。可以理解的是,可以利用软件对每一个运算模块的运算过程分别进行仿真,以验证每一个运算模块各自的功能性,即实现芯片子系统级的验证;也可以利用软件对多个运算模块的协同运算过程进行仿真,以验证芯片在系统级的功能性。
33.在一个示例中,用于仿真的软件接收上文所描述的验证激励中的多个文件作为输入,并响应于该输入开始进行仿真,并将各个运算模块的仿真的处理结果输出到生成地址段配置文件中所指示的地址段中。由此,通过软件仿真硬件执行待验证任务中的各个阶段,可以比对芯片和软件仿真在执行对应步骤时在相同地址段的输出值,以验证各个运算模块的功能性。
34.图2示出了根据本公开的实施例的芯片验证整体流程的示意图。如图2所示,软件接收作为验证激励的数据文件为输入进行计算仿真,并输出仿真结果,用于与芯片的反馈结果进行比对。在硬件验证一端,通过硬件验证平台对作为验证激励的数据文件进行读取,具体地,可经由与验证激励的文件格式相适配的组件对数据文件进行读取,并将相应的数据文件发送给芯片,芯片内的运算模块基于数据文件中所包含的运算描述符进行运算并产生相应的处理结果,并输出最终的反馈结果,将这一反馈结果与软件仿真的仿真结果进行比较,以此完成对芯片的验证。
35.根据一些实施例,芯片还包括调度模块,并且其中,针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理可以包括:利用该指令流启动调度模块,以使调度模块能够针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能与该运算描述符对应的至少一个运算模块来执行针对该运算描述符的数据处理。
36.由此,通过启动调度模块将指令流中的多个运算描述符发送到相应的运算模块,使各个运算描述符相应的运算模块针对该运算描述符进行运算以及数据处理。
37.根据一些实施例,在芯片中不存在调度模块时,也可以通过用于验证的验证组件直接针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能所要进行验证的子系统级别的多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理。
38.根据一些实施例,步骤s102-2包括:使能调度模块响应于该指令流执行至中止描述符,反馈中止消息;以及响应于接收到中止消息,确定该指令流中位于该中止描述符之前的至少一个运算描述符所对应的反馈结果。
39.通过中止描述符触发对位于该中止描述符之前的至少一个运算描述符所对应的反馈结果进行记录,反馈结果将写入生成地址段配置文件中所指示的地址段中。在一个示例中,反馈结果可以是至少一个运算模块进行运算所得到的中间结果。
40.根据一些实施例,多个运算描述符中的每一个运算描述符包括第一地址标识,方法还包括:在针对第一数量的指令流中的任意一条指令流,执行验证操作之前,将待处理数据存储至目标存储空间内;并且其中,针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理包括:使能至少一个运算模块从目标存储空间内与该运算描述符的第一地址标识相对应的存储地址处,读取待处理数据中该运算描述符所对应的部分待处理数据;以及使能至少一个运算模块利用该运算描述符所对应的部分待处理数据,执行针对该运算描述符的数据
处理。
41.可以理解的是,上述待处理数据为具有指定格式的原始数据文件,在对芯片片内系统进行系统级验证时,用于初始化内存,以及在对芯片内的子系统分别进行验证时,用于初始化芯片验证平台所模拟的芯片内存。在将待处理数据写入内存后,运算模块可以针对相应的运算描述符,从内存中读取数据,执行相应的运算功能,并将运算的结果写回内存中指定的地址段。
42.根据一些实施例,对应于运算模块的运算描述符中还包括:表示该运算模块的内核(kernel)在内存中存储的地址和长度的字段;表示该运算模块的内核对核(core)的需求数量的字段;以及表示该运算模块的内核的参数所在地址的字段。由此,调度模块可以根据运算描述符中各个字段将运算描述符发送到对应的运算模块,运算模块根据上述字段进行资源的配置和数据的读取,并完成其对应的运算功能。
43.根据一些实施例,至少一个中止描述符中的每一个中止描述符包括第二地址标识,第二地址标识能够用于指示该指令流中位于该中止描述符之前的至少一个运算描述符中的每一个运算描述符所对应的处理结果在目标存储空间内的存储地址;并且其中,响应于该指令流执行至中止描述符,确定该指令流中位于该中止描述符之前的至少一个运算描述符所对应的反馈结果包括:响应于该指令流执行至中止描述符,从目标存储空间内与该中止描述符的第二地址标识相对应的存储地址处,读取至少一个运算描述符中的每一个运算描述符所对应的处理结果;以及根据至少一个运算描述符中的每一个运算描述符所对应的处理结果,确定至少一个运算描述符所对应的反馈结果。
44.可以理解的是,第二地址标识对应于前文所描述的生成地址段配置文件中所指示的地址段,运算模块将其对应于运算描述符的处理结果写入生成地址段配置文件中所指示的地址段,处理结果可以是运算模块在执行运算过程中所得到的中间结果,这一中间结果可以用于确定最终的运算结果,即,运算描述符所对应的反馈结果,反馈结果用于与软件仿真中的相应结果进行比对。
45.根据一些实施例,目标存储空间包括位于芯片内的存储空间。在对芯片进行系统级的验证验证时,需在调度模块对指令流进行调度之前,将原始数据文件写入芯片的内存中,以便在运算模块在执行运算功能时进行内存数据的读取。
46.根据一些实施例,目标存储空间还包括由硬件验证平台(例如uvm平台)用于模拟芯片内存的存储空间。相应地,在对芯片进行子系统级的验证验证时,需将原始数据文件写入由硬件验证平台所模拟的芯片内存中,再由验证平台将指令流发送到与运算描述符相对应的运算模块,以便运算模块在执行运算功能时在模拟的芯片内存中进行数据的读取。
47.根据一些实施例,多个运算模块中包括至少两种类别的运算模块,多个运算描述符中的每一个运算描述符包括类别标识,并且其中,针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理,以得到该运算描述符所对应的处理结果包括:使能多个运算模块中相同类别的至少一个运算模块来执行针对该运算描述符的数据处理,其中,至少一个运算模块的类别与该运算描述符的类别标识相对应。示例性的,运算描述符中所包含的类别标识可以指示执行该运算描述符的运算模块的类型,同时,一个指令流中可以包含指示多种类型的运算模块的运算描述符。
48.根据一些实施例,第一数量为不小于2的任意整数,第一数量的指令流中存在相关联的第一指令流和第二指令流,第一指令流包括暂停指令,第二指令流包括启动标识;并且其中,验证操作还包括:使能多个运算模块响应于第一指令流执行至暂停指令,暂停针对第一指令流的数据处理;以及使能多个运算模块中的至少一个运算模块响应于第二指令流执行至启动标识,从第一指令流中的暂停指令的下一个指令处,启动针对第一指令流的数据处理。
49.可以理解的,不同运算模块之间的运算可能不是互相独立的,第一运算模块可能需要接收第二模块的所输出的计算结果作为输入,这一过程中,可以通过不同指令流之间的协同配合实现不同运算模块在执行运算操作中的同步与异步的协调。
50.图3示出了根据本公开的实施例的指令流的示意图。如图3所示,int表示中断指令,在对芯片进行验证时,可以响应于中断指令进行数据的写入,所写入的数据可以是运算模块执行运算功能时的中间结果。cdnn和xpu为运算描述符中所包含的类别标识,分别指示两种不同类型的运算模块,并可以分别执行不同的运算功能。wait为暂停指令,record为启动标识,二者协同配合实现由不同指令流所指示的不同运算模块的同步与异步操作。
51.图4示出了根据本公开的实施例的芯片系统级验证的流程图。如图4所示,对芯片进行系统级验证的方法包括:读取作为验证激励的数据文件,具体地,可以在通用的验证平台上设置验证组件,该验证组件能够按照约定的文件格式对具有特定格式的数据文件进行读取,进而由该验证组件进行数据文件的读取。如前文,作为验证激励的数据文件可以包括:原始数据文件、指令位置索引文件以及生成地址段配置文件。在验证平台对上述文件进行读取后,首先将原始数据文件写入芯片的内存,以对芯片的内存进行初始化操作。随后,验证平台启动芯片的调度模块,以将指令位置索引文件中所包含的指令流中的运算描述符发送到对应的运算模块。运算模块响应于对应的运算描述符,执行相应的运算操作,读写内存数据,并将计算结果写回内存。在计算完成后,调度模块反馈表示计算完成的中断。验证平台响应于计算完成中断,从内存中读取数据并生成硬件输出文件,即芯片对应于所输入的验证激励的计算结果。将硬件输出文件与软件仿真的结果进行比对,确定验证结果是否正确。
52.相应地,芯片验证方法也适用于芯片的子系统级验证,即对芯片中的各个运算模块进行验证。芯片的子系统验证流程总体与芯片的系统级验证类似。与系统级验证不同的是,对子系统进行验证时不包括芯片的内存以及调度模块。因而,需要由验证平台模拟出芯片的内存,用于数据的读取和写入。同时,由于子系统中不包括调度模块,指令流中的运算描述符可以直接通过验证平台上所设置的验证组件发送到对应的子系统,即运算模块,以此实现对子系统的验证。
53.根据本公开的另一方面,提供一种芯片验证装置,其中,芯片包括多个运算模块。如图5所示,芯片验证装置500包括:确定单元501,被配置用于确定第一数量的指令流,其中,第一数量的指令流中的每一条指令流包括多个运算描述符和至少一个中止描述符;以及执行单元502,被配置用于针对第一数量的指令流中的任意一条指令流,执行验证操作,执行单元至少包括:使能子单元502-1,被配置用于针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能多个运算模块中的至少一个运算模块来执行针对该运算描述符的数据处理,以得到该运算描述符所对应的处理结果;确定子单元502-2,被配置用于响
应于该指令流执行至中止描述符,确定该指令流中位于该中止描述符之前的至少一个运算描述符所对应的反馈结果,其中,反馈结果为根据至少一个运算描述符中的每一个运算描述符所对应的处理结果而得到;以及比对子单元502-3,被配置用于将至少一个运算描述符所对应的反馈结果与至少一个运算描述符所对应的仿真结果进行比对,以确定对芯片的验证结果。
54.由此,由确定单元501确定第一数量的指令流,并由执行单元502来执行芯片验证,通过使能芯片中的运算单元依次执行指令流中的各个运算描述符,能够还原芯片在真实场景中各个运算模块之间的协同运作方式,使芯片完成真实的计算功能,与对应的仿真结果进行比对以验证芯片在系统级的功能正确性。同时,通过使能芯片中各个运算模块分别执行相应的运算描述符,并分别比对各个运算模块所对应的反馈结果和相应的运算描述符所对应的仿真结果,以实现对芯片中各个运算模块的分别验证,以验证芯片在子系统级的功能正确性。由此,通过验证芯片在系统级的功能正确性和子系统级的功能正确性,可以有效提升对芯片验证的精准性和完备的验证覆盖率。
55.根据一些实施例,确定单元501可以包括:用于获取待验证任务所对应的验证激励,其中,验证激励为利用芯片所对应的编译器而编译得到的子单元;以及用于基于验证激励,确定第一数量的指令流的子单元。
56.在一个示例中,装置可以针对待验证任务用高级程序语言编写相应的验证程序,其中,待验证任务例如可以是芯片能够完成的一个计算功能,相应地,该验证程序也能够实现这一计算功能。
57.根据一些实施例,装置还可以利用编译器对上述用高级程序语言编写的验证程序进行编译,以获得指定格式的文件,即验证激励,以用于芯片的验证。其中,验证激励包括:具有指定格式的原始数据文件,在对芯片片内系统进行系统级验证时,用于初始化内存,以及在对芯片内的子系统分别进行验证时,用于初始化芯片验证平台所模拟的芯片内存;具有指定格式的指令位置索引文件,包括第一数量的指令流,使得运算模块基于指令流中的运算描述符执行相应的运算操作;以及具有指定格式的生成地址段配置文件,用于指示可存放运算模块的处理结果的地址段。
58.根据一些实施例,至少一个运算描述符所对应的仿真结果为利用软件仿真而预先得到。可以理解的是,装置可以利用软件对每一个运算模块的运算过程分别进行仿真,以验证每一个运算模块各自的功能性,即实现芯片子系统级的验证;也可以利用软件对多个运算模块的协同运算过程进行仿真,以验证芯片在系统级的功能性。
59.在一个示例中,用于仿真的软件接收上文所描述的验证激励中的多个数据文件作为输入,并响应于该输入开始进行仿真,并将各个运算模块的仿真的处理结果输出到生成地址段配置文件中所指示的地址段中。由此,可以比对芯片和软件仿真在相同地址段的输出值,以验证各个运算模块的功能性。
60.根据一些实施例,芯片还包括调度模块,并且其中,使能子单元502-1包括:用于利用该指令流启动调度模块,以使调度模块能够针对该指令流所包括的多个运算描述符中的每一个运算描述符,使能与该运算描述符对应的至少一个运算模块来执行针对该运算描述符的数据处理的子单元。
61.由此,通过启动调度模块将指令流中的多个运算描述符发送到相应的运算模块,
使各个运算描述符相应的运算模块针对该运算描述符进行运算以及数据处理。
62.根据一些实施例,确定子单元502-2包括:用于使能调度模块响应于该指令流执行至中止描述符,反馈中止消息的子单元;以及用于响应于接收到中止消息,确定该指令流中位于该中止描述符之前的至少一个运算描述符所对应的反馈结果的子单元。
63.根据一些实施例,多个运算描述符中的每一个运算描述符包括第一地址标识,装置还包括:写入单元,被配置用于在针对第一数量的指令流中的任意一条指令流,执行验证操作之前,将待处理数据存储至目标存储空间内;并且其中,使能子单元包括:用于使能至少一个运算模块从目标存储空间内与该运算描述符的第一地址标识相对应的存储地址处,读取待处理数据中该运算描述符所对应的部分待处理数据的子单元;以及用于使能至少一个运算模块利用该运算描述符所对应的部分待处理数据,执行针对该运算描述符的数据处理的子单元。
64.可以理解的是,上述待处理数据为具有指定格式的原始数据文件,在对芯片片内系统进行系统级验证时,用于初始化内存,以及在对芯片内的子系统分别进行验证时,用于初始化芯片验证平台所模拟的芯片内存。在将待处理数据写入内存后,运算模块可以针对相应的运算描述符,从内存中读取数据,执行相应的运算功能,并将运算的结果写回内存中指定的地址段。
65.根据一些实施例,对应于运算模块的运算描述符中还包括:表示该运算模块的内核(kernel)在内存中存储的地址和长度的字段;表示该运算模块的内核对核(core)的需求数量的字段;以及表示该运算模块的内核的参数所在地址的字段。由此,调度模块可以根据运算描述符中各个字段将运算描述符发送到对应的运算模块,运算模块根据上述字段进行资源的配置和数据的读取,并完成其对应的运算功能。
66.根据一些实施例,至少一个中止描述符中的每一个中止描述符包括第二地址标识,第二地址标识能够用于指示该指令流中位于该中止描述符之前的至少一个运算描述符中的每一个运算描述符所对应的处理结果在目标存储空间内的存储地址;并且其中,确定子单元包括:用于响应于该指令流执行至中止描述符,从目标存储空间内与该中止描述符的第二地址标识相对应的存储地址处,读取至少一个运算描述符中的每一个运算描述符所对应的处理结果的子单元;以及用于根据至少一个运算描述符中的每一个运算描述符所对应的处理结果,确定至少一个运算描述符所对应的反馈结果的子单元。
67.可以理解的是,第二地址标识对应于前文所描述的生成地址段配置文件中所指示的地址段,运算模块将其对应于运算描述符的处理结果写入生成地址段配置文件中所指示的地址段,处理结果可以是运算模块在执行运算过程中所得到的中间结果,这一中间结果可以用于确定最终的运算结果,即,运算描述符所对应的反馈结果,反馈结果用于与软件仿真中的相应结果进行比对。
68.根据一些实施例,目标存储空间包括位于芯片内的存储空间。在对芯片进行系统级的验证验证时,需在调度模块对指令流进行调度之前,将原始数据文件写入芯片的内存中,以便在运算模块在执行运算功能时进行内存数据的读取。
69.根据一些实施例,目标存储空间还包括由硬件验证平台(例如uvm平台)用于模拟芯片内存的存储空间。相应地,在对芯片进行子系统级的验证验证时,需将原始数据文件写入由硬件验证平台所模拟的芯片内存中,再由验证平台将指令流发送到与运算描述符相对
应的运算模块,以便运算模块在执行运算功能时在模拟的芯片内存中进行数据的读取。
70.根据一些实施例,多个运算模块中包括至少两种类别的运算模块,多个运算描述符中的每一个运算描述符包括类别标识,并且其中,使能子单元包括:用于使能多个运算模块中相同类别的至少一个运算模块来执行针对该运算描述符的数据处理,其中,至少一个运算模块的类别与该运算描述符的类别标识相对应的子单元。示例性的,运算描述符中所包含的类别标识可以指示执行该运算描述符的运算模块的类型,同时,一个指令流中可以包含指示多种类型的运算模块的运算描述符。
71.根据一些实施例,第一数量为不小于2的任意整数,第一数量的指令流中存在相关联的第一指令流和第二指令流,第一指令流包括暂停指令,第二指令流包括启动标识;并且其中,执行单元还包括:用于使能多个运算模块响应于第一指令流执行至暂停指令,暂停针对第一指令流的数据处理的子单元;以及用于使能多个运算模块中的至少一个运算模块响应于第二指令流执行至启动标识,从第一指令流中的暂停指令的下一个指令处,启动针对第一指令流的数据处理的子单元。可以理解的,不同运算模块之间的运算可能不是互相独立的,第一运算模块可能需要接收第二模块的所输出的计算结果作为输入,这一过程中,可以通过不同指令流之间的协同配合实现不同运算模块在执行运算操作中的同步与异步的协调。
72.根据本公开的实施例,还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
73.根据本公开的另一方面,还提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任意一种方法。
74.根据本公开的另一方面,还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述任意一种方法。
75.根据本公开的另一方面,还提供了一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现上述任意一种方法。
76.参考图6,现将描述可以作为本公开的服务器或客户端的电子设备600的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
77.如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(rom)602中的计算机程序或者从存储单元608加载到随机访问存储器(ram)603中的计算机程序,来执行各种适当的动作和处理。在ram 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
78.设备600中的多个部件连接至i/o接口805,包括:输入单元606、输出单元607、存储
单元608以及通信单元609。输入单元606可以是能向设备600输入信息的任何类型的设备,输入单元606可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元607可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元608可以包括但不限于磁盘、光盘。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙tm设备、802.11设备、wifi设备、wimax设备、蜂窝通信设备和/或类似物。
79.计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如芯片验证方法。例如,在一些实施例中,芯片验证方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由rom 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到ram 603并由计算单元601执行时,可以执行上文描述的芯片验证方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行芯片验证方法。
80.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
81.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
82.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或
上述内容的任何合适组合。
83.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
84.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
85.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
86.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
87.虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
再多了解一些

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

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

相关文献