CN112232000B - 跨多个验证域的验证系统、验证方法、验证设备 - Google Patents
跨多个验证域的验证系统、验证方法、验证设备 Download PDFInfo
- Publication number
- CN112232000B CN112232000B CN202011147430.8A CN202011147430A CN112232000B CN 112232000 B CN112232000 B CN 112232000B CN 202011147430 A CN202011147430 A CN 202011147430A CN 112232000 B CN112232000 B CN 112232000B
- Authority
- CN
- China
- Prior art keywords
- authentication
- verification
- domain
- data
- transaction
- 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
Images
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
-
- 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
- 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
- G06F30/3312—Timing analysis
-
- 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/3315—Design verification, e.g. functional simulation or model checking using static timing analysis [STA]
-
- 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/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/08—Intellectual property [IP] blocks or IP cores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/08—HW-SW co-design, e.g. HW-SW partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/16—Equivalence checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
一种跨多个验证域的验证系统、验证方法、验证设备以及非易失性计算机可读存储介质。该跨多个验证域的验证方法包括:获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析所述测试激励,并创建与所述待验证对象相关的验证事务;以及基于所述验证域标识,在与所述验证域标识相对应的验证域中解析并执行所述验证事务。
Description
技术领域
本公开的实施例涉及一种跨多个验证域的验证系统、验证方法、验证设备以及非易失性计算机可读存储介质。
背景技术
随着半导体制造技术的改进,SOC(System on Chip,系统级芯片)(即专用集成电路芯片)及多核设计的方案,代替了传统集成电路芯片而被广泛应用。这些芯片设计的方案均需要在使用前对其进行功能验证,用以保证其在使用过程中的可靠性。随着芯片设计规模的不断扩大,验证难度、验证层次、验证域的种类和数量均处于急剧增加的状态。尤其是芯片设计的软件验证和硬件验证之间的共享较少或几乎没有共享,因此验证相同功能的测试激励(测试用例)需要根据验证层次或验证域的不同而使用不同的语言来编写,为芯片设计的功能设计带来了不便。
发明内容
本公开的实施例提供跨多个验证域的验证系统、验证方法、验证设备以及非易失性计算机可读存储介质。
本公开至少一个实施例提供了一种跨多个验证域的验证系统,包括可移植激励层、后端平面层和至少一个外语层,其中,所述可移植激励层被配置为:获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析所述测试激励,并创建与所述待验证对象相关的验证事务;将所述验证域标识和所述验证事务发送至所述后端平面层;所述后端平面层,用于隔离所述可移植激励层和所述至少一个外语层,其被配置为:从所述可移植激励层接收所述验证域标识和所述验证事务;和基于所述至少一个外语层与所述至少一个验证域的关联关系,将所述验证事务转发至与所述验证域标识相对应的外语层;所述至少一个外语层中的每个外语层,所述外语层用于一个验证域,其被配置为:从所述后端平面层接收与该外语层相对应的所述验证事务;解析并执行所述验证事务。
例如,所述待验证对象为与图形处理单元GPU相关联的芯片设计;所述多个验证域至少包括硬件验证域和软件验证域;所述验证域标识包括以下各项中的至少一项:指示在硬件域中进行验证的验证域标识、在软件域中进行验证的验证域标识、在硬件域和软件域中进行共同验证的验证域标识。
例如,所述解析测试激励,并创建与所述待验证对象相关的验证事务还包括:在所述测试激励中定义了基本数据类型的数据的情况下,创建包括所述基本数据类型的数据的验证事务;在所述测试激励中定义了复杂数据类型的数据的情况下,将所述复杂数据类型的数据打包成二进制数据,并创建包括所述二进制数据的验证事务;在所述测试激励中定义了指针类型的数据的情况下,提取所述指针类型的数据所指向的内存中的地址中的内存数据,将所述内存数据打包成所述内存数据对应的二进制数据,并创建包括所述内存数据对应的二进制数据的验证事务。
例如,所述测试激励是以测试描述语言编写的,所述可移植激励层还包括测试描述语言库和开放计算语言库,其中,所述测试描述语言库包括以下各项中的至少一项:与至少一个基本数据类型相关联的关键词、用于描述验证事务的功能的关键词、用于描述验证事务的功能的限制条件的关键词、和用于描述验证事务的功能的执行顺序的关键词;所述开放计算语言库包括以下各项中的至少一项:与所述至少一个基本数据类型相关联的关键词、用于实现以开放计算语言编写的程序的功能的关键词、用于实现压缩复杂数据类型的变量的功能的关键词、和用于实现传输验证事务的功能的关键词。
例如,所述后端平面层还被配置为:从所述可移植激励层接收可移植激励层注册函数,其中,所述可移植激励层注册函数包括所述可移植激励层的标识以及所述可移植激励层期望调用的后端平面层相关的函数;从所述至少一个外语层接收外语层注册函数,其中,所述外语层注册函数包括与所述外语层相关的验证域标识。
例如,所述多个外语层包括硬件域外语层,所述硬件域外语层包括硬件外语层适配器和硬件验证模拟环境,其中,所述硬件外语层适配器被配置为:接收所述验证事务;将所述验证事务转换为总线事务相关的序列项;将所述序列项发送至所述硬件验证模拟环境;所述硬件验证模拟环境被配置为:接收所述序列项;在定序器上启动所述序列项,以触发所述序列项相关驱动。
例如,所述将所述验证事务转换为总线事务相关的序列项还包括:在所述验证事务包括基本数据类型的数据的情况下,提取所述基本数据类型的数据;在所述验证事务包括二进制数据的情况下,将所述二进制数据解包成复杂数据类型的数据;在所述验证事务包括内存数据对应的二进制数据的情况下,将所述内存数据对应的二进制数据解包成内存数据;根据所述验证事务中的功能、所述基本数据类型的数据、所述内存数据和复杂数据类型的数据中的一项或多项,将所述验证事务转换为总线事务相关的序列项。
例如,所述多个外语层包括软件域外语层,所述软件域外语层包括软件外语层适配器和软件验证模拟环境,其中,所述软件外语层适配器被配置为:接收所述验证事务;将所述验证事务转换为以开放计算语言描述的可执行程序;将所述可执行程序发送至所述软件验证模拟环境;所述软件验证模拟环境被配置为:接收并执行所述可执行程序。
本公开至少一个实施例还提供了一种跨多个验证域的验证方法,包括:获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析所述测试激励,并创建与所述待验证对象相关的验证事务;以及基于所述验证域标识,在与所述验证域标识相对应的验证域中解析并执行所述验证事务。
例如,所述待验证对象为与图形处理单元(GPU)相关联的芯片设计;所述多个验证域至少包括硬件验证域和软件验证域;所述验证域标识包括以下各项中的至少一项:指示在硬件域中进行验证的验证域标识、在软件域中的进行验证的验证域标识、在硬件域和软件域中进行共同验证的验证域标识。
例如,所述解析测试激励,并创建与所述待验证对象相关的验证事务还包括:在所述测试激励中定义了基本数据类型的数据的情况下,创建包括所述基本数据类型的数据的验证事务;在所述测试激励中定义了复杂数据类型的数据的情况下,将所述复杂数据类型的数据打包成二进制数据,并创建包括所述二进制数据的验证事务;在所述测试激励中定义了指针类型的数据的情况下,提取所述指针类型的数据所指向的内存中的地址中的内存数据,将所述内存数据打包成所述内存数据对应的二进制数据,并创建包括所述内存数据对应的二进制数据的验证事务。
例如,在所述验证域标识符指示在硬件域中进行验证的情况下,所述在与所述验证域标识相对应的验证域中解析并执行所述验证事务还包括:将所述验证事务转换为总线事务相关的序列项;在定序器上启动所述序列项,以触发所述序列项相关驱动;其中,所述将所述验证事务转换为总线事务相关的序列项还包括:在所述验证事务包括基本数据类型的数据的情况下,提取所述基本数据类型的数据;在所述验证事务包括二进制数据的情况下,将所述二进制数据解包成复杂数据类型的数据;在所述验证事务包括内存数据对应的二进制数据的情况下,将所述内存数据对应的二进制数据解包成内存数据;根据所述验证事务中的功能、所述基本数据类型的数据、所述内存数据和复杂数据类型的数据中的一项或多项,将所述验证事务转换为总线事务相关的序列项。
例如,在所述验证域标识符指示在软件域中进行验证的情况下,所述在与所述验证域标识相对应的验证域中解析并执行所述验证事务还包括:将所述验证事务转换为以开放计算语言描述的可执行程序;执行所述可执行程序。
本公开至少一个实施例还提供了一种跨多个验证域的验证设备,所述设备包括存储器和处理器,其中所述存储器中存有可执行代码,当利用所述处理器执行所述可执行代码时,使得所述处理器执行如前任一所述的跨多个验证域的验证方法。
本公开至少一个实施例还提供了一种非易失性计算机可读存储介质,其上存储有可执行代码,所述可执行代码在被处理器执行时,使得所述处理器执行如前任一所述的跨多个验证域的验证方法。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的跨多个验证域的验证方法。
根据本公开的另一方面,提供了一种跨多个验证域的验证装置,包括:获取模块,用于获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析模块,用于解析所述测试激励,并创建与所述待验证对象相关的验证事务;执行模块,用于基于所述验证域标识,在与所述验证域标识相对应的验证域中解析并执行所述验证事务。
本公开至少一实施例提供了跨多个验证域的验证系统、验证方法、验证设备以及非易失性计算机可读存储介质。本公开的实施例将多个不同验证域的测试用例的关键词进行了抽象,从而为不同验证域环境建立了跨多个验证域的、通用的测试激励。根据本公开的实施例的跨多个验证域的验证系统可以根据验证域的不同,自动将该跨多个验证域的测试激励转换为验证域特定的测试激励,并且自动在不同的验证域环境中验证该验证域特定的测试激励。从而本公开的实施例实现通用的测试激励在不同验证域环境中的共享,增加了测试激励的可移植性。本公开的实施例减少了在芯片设计的验证过程中测试激励编写的复杂性,进而保证芯片的系统性能的稳定并提高可靠性。同时,该跨多个验证域的验证方法容易实现,可以被广泛应用于电子设计自动化工具中。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A为本公开至少一实施例提供的一种跨多个验证域的验证系统的示意图。
图1B为本公开至少一实施例提供的一种跨多个验证域的验证系统的示意图。
图1C是根据本公开实施例的打包数据的示例的示意图。
图2A是根据本公开实施例的可移植激励层的示意图。
图2B是根据本公开实施例的跨多个验证域的测试激励的示例的示意图。
图3A是根据本公开实施例的硬件域外语层的示意图。
图3B是根据本公开实施例的在硬件域外语层中执行测试的示例的示意图。
图3C是根据本公开实施例的硬件域特定的测试激励的示例的示意图。
图4A是根据本公开实施例的软件域外语层的示意图。
图4B是根据本公开实施例的软件域特定的测试激励的示例的示意图。
图5示出了本公开至少一个实施例的跨多个验证域的验证方法的流程图。
图6示出了根据本公开实施例的电子设备的示意图。
图7示出了根据本公开实施例的示例性计算设备的架构的示意图。
图8示出了根据本公开实施例的存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
本公开至少一个实施例提供了一种跨多个验证域的验证系统,包括可移植激励层、后端平面层和至少一个外语层,其中,所述可移植激励层被配置为:获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析所述测试激励,并创建与所述待验证对象相关的验证事务;将所述验证域标识和所述验证事务发送至所述后端平面层;所述后端平面层,用于隔离所述可移植激励层和所述至少一个外语层,其被配置为:从所述可移植激励层接收所述验证域标识和所述验证事务;和基于所述至少一个外语层与所述至少一个验证域的关联关系,将所述验证事务转发至与所述验证域标识相对应的外语层;所述至少一个外语层中的每个外语层,所述外语层用于一个验证域,其被配置为:从所述后端平面层接收与该外语层相对应的所述验证事务;解析并执行所述验证事务。
本公开至少一个实施例还提供了一种跨多个验证域的验证方法,包括:获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析所述测试激励,并创建与所述待验证对象相关的验证事务;以及基于所述验证域标识,在与所述验证域标识相对应的验证域中解析并执行所述验证事务。
本公开至少一实施例提供了跨多个验证域的验证系统、验证方法、验证设备以及非易失性计算机可读存储介质。本公开的实施例将多个不同验证域的测试用例的关键词进行了抽象,从而为不同验证域环境建立了跨多个验证域的、通用的测试激励。根据本公开的实施例的跨多个验证域的验证系统可以根据验证域的不同,自动将该跨多个验证域的测试激励转换为验证域特定的测试激励,并且自动在不同的验证域环境中验证该验证域特定的测试激励。从而本公开的实施例实现通用的测试激励在不同验证域环境中的共享,增加了测试激励的可移植性。本公开的实施例减少了在芯片设计的验证过程中繁琐的测试激励编写过程,进而保证芯片的系统性能的稳定并提高可靠性。同时,该跨多个验证域的验证方法容易实现,可以被广泛应用于电子设计自动化工具中。
下面结合附图对本公开的实施例及其示例进行详细说明。
图1A是根据本公开实施例的跨多个验证域的验证系统100的示意图。图1B是根据本公开实施例的跨多个验证域的验证系统100的另一示意图。图1C是根据本公开实施例的打包数据的示例的示意图。
如图1A所示,跨多个验证域的验证系统100包括可移植激励层101、后端平面层102和至少一个外语层(例如,图1A中的外语层103-1至103-N)。其中,可移植激励层与后端平面层可以通过API相互连接,后端平面层与至少一个外语层相互连接。
可移植激励层101被配置为:获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析所述测试激励,并创建与所述待验证对象相关的验证事务;将所述验证域标识和所述验证事务发送至所述后端平面层。
可选地,待验证对象可以是与图形处理单元(GPU)相关联的芯片设计。GPU芯片设计的过程通常包括软核设计、硬核设计和固核设计中的一项或多项。经上述设计流程完成的SoC(片上系统)芯片将集成各种纯硬件IP核(知识产权核)、和作为软件载体的IP核(MCU、DSP等等)。设计人员在完成GPU芯片的相关设计之后,通常需要对其进行验证。芯片设计验证的内容很多,例如,IP核(知识产权核)/模块级验证、系统级验证、仿真验证、软硬件协同验证、等价性检查、静态时序分析和时序验证、版图验证等等。本公开实施例以GPU相关联的芯片设计为例进行描述,但是本领域技术人员应当理解本公开所涉及的验证系统和验证方法不限于对GPU芯片的验证,其还可以应用于各种复杂系统的验证。
与GPU相关联的芯片设计还可能是GPU与CPU混合架构的(异构的)。GPU是典型的单指令多数据(SIMD)的体系结构,有利于大规模的并行计算。CPU是多指令单数据流(MISD)的体系结构,有利于逻辑控制。混合架构的GPU与CPU的芯片中可以使得CPU与GPU进行分工,以使得CPU负责逻辑控制,GPU负责计算。混合架构的芯片设计可以使用OpenCL(OpenComputing Language,开放运算语言)来进行编程和验证。OpenCL语言是一种异构计算的标准,其既可以用来针对GPU编程,也支持CPU计算。
OpenCL中支持多种API(应用程序接口),这些API主要分为以下两个类型:
OpenCL平台API(platform API):平台API定义了宿主机(host)程序发现OpenCL设备所用的函数以及这些函数的功能,其主要包括OpenCL应用创建上下文(context)的函数。上下文表示的是程序运行时所拥有的所有软硬件资源、内存、处理器的组合。这里的平台指的是宿主机、OpenCL设备和OpenCL框架的组合。
OpenCL运行时API(runtime API):运行时API用来管理上下文、创建命令队列以及处理运行时发生的其它操作。例如,运行时API包括将命令提交到命令队列的OpenCL函数。
可选地,根据本公开实施例的跨多个验证域的验证系统100中包括的可移植激励层101、后端平面层102和外语层都可能会调用OpenCL中的平台API和运行时API。
可选地,多个验证域至少包括硬件验证域和软件验证域。其中,硬件验证域也即对芯片设计的硬件相关功能(例如,诸如通信芯片中与RF接收相关联的硬件任务、图像渲染用的芯片中的多循环次数的复杂运算的硬件任务等等)进行验证的硬件环境,软件验证域以及对芯片设计的软件相关功能(例如可重配置的任务、应用性灵活的任务等等)进行验证的软件环境。值得注意的是,芯片的某项功能可能既需要进行在硬件验证域中进行验证,也需要在软件验证域中进行验证。本公开对此不进行限制。正如上所述,GPU芯片设计的验证还包括其他内容,因此验证域还包括与整个系统验证相关联的验证域、与时序分析相关联的验证域、与版图设计相关联的验证域等等。在后文中,本公开的实施例以硬件验证域和软件验证域为例进行说明,但本领域技术人员应当理解本公开并不以此为限。
其中,验证域标识包括以下各项中的至少一项:指示在硬件域中进行验证的验证域标识、在软件域中进行验证的验证域标识、在硬件域和软件域中进行共同验证的验证域标识。
验证域标识可以是数值形式的验证域的唯一标识符,也可以是字符串形式的标识符。例如,硬件域标识可以是“C-SistermVerilog”,其指示在硬件域中进行验证。在该硬件域中,测试激励符合C语言的规范,并使用SistermVerilog工具。软件域标识可以是“software”,其指示在软件域中进行验证。在硬件域和软件域中进行共同验证的验证域标识可以是“C-SistermVerilog+software”,其指示既要在硬件域中验证也要在软件域中验证。
由于硬件验证域和软件验证域的测试环境不同、验证层次也不同,因此硬件验证域特定的测试激励与软件验证域特定的测试激励之间共享较少或几乎没有共享。为了减少不同验证域特定的测试激励之间没有共享导致的验证的复杂性的增加,本公开的实施例设计了跨多个验证域的测试激励。
可选地,上述用于验证待验证对象的跨多个验证域的测试激励是对硬件验证域特定的测试激励和对软件验证域特定的测试激励的功能的一种抽象描述。该跨多个验证域的测试激励从对硬件验证域特定的测试激励和对软件验证域特定的测试激励中提取了一部分测试事务相关的关键词,并将这些关键词以特定规则进行组合。由此,跨多个验证域的测试激励可以为硬件验证域特定的测试激励与软件验证域特定的测试激励提供一种共享表示,其可以根据验证域标识,对应地或自适应地转换为硬件验证域特定的测试激励或软件验证域特定的测试激励,进而实现不同验证域之间的测试激励共享。
可移植激励层101可以对上述的跨多个验证域的测试激励进行解析,以创建与待验证对象相关的验证事务。图1B中示出了跨多个验证域的测试激励中可能涉及到的一些函数、动作、数据和对象,例如,component uart_c、component usb_c、s1.write等等。可移植激励层101提取这些内容,创建验证事务。
可选地,可移植激励层101解析跨多个验证域的测试激励中需要用到的数据。这些数据的数据类型可以有多种,例如,诸如int(整型)、long(长整型)、float(浮点数)的基本数据类型;诸如int*(指向整型数据的指针)、struct*(指向复杂结构数据的指针)的指针类型数据;诸如struct(自定义的复杂结构数据)的复杂数据类型的数据等等。由于在不同的验证域特定的测试激励编译这些数据的方式可能不同,因此,可移植激励层101将根据数据类型的不同,对这些数据进行不同的处理,以便于之后的后端平面层102和外语层对这些数据进行后续处理。
例如,所述解析测试激励并创建与所述待验证对象相关的验证事务可以包括:在所述测试激励中定义了基本数据类型的数据的情况下,创建包括所述基本数据类型的数据的验证事务;在所述测试激励中定义了复杂数据类型的数据的情况下,将所述复杂数据类型的数据打包成二进制数据,并创建包括所述二进制数据的验证事务;在所述测试激励中定义了指针类型的数据的情况下,提取所述指针类型的数据所指向的内存中的地址中的内存数据,将所述内存数据打包成所述内存数据对应的二进制数据,并创建包括所述内存数据对应的二进制数据的验证事务。
例如,基本数据类型在多个不同的验证域中是通用的。例如,在以C++语言描述的软件验证域和涉及使用了SystemVerilog语言的硬件验证域中,整型数据int都是通用的。因此,可移植激励层101在解析跨多个平台的测试激励时,可以直接获取基本数据类型的数据,然后将其传输至后端平面层102。
复杂数据类型也称为抽象数据类型(Abstract Data Types)。例如,诸如“struct”这样的复杂数据类型,由于其中可能包括多个不同数据类型的数据(例如,测试激励涉及的OpenCL内置(built-in)的复杂数据类型struct cl_platform_id,其包括字符串(string)类型的变量、数组类型的数据、数字类型的数据中的一项或多项),因此,直接将复杂数据类型的数据传输至后端平面层101会导致后端平面层101和外语层102无法解析这样的数据。因此,可移植激励层101在解析跨多个平台的测试激励时,可以将复杂数据类型的数据打包成二进制数据,并创建包括所述二进制数据的验证事务。
图1C给出将复杂数据类型struct cl_platform_id中的一部分数据进行打包的示例。
可选地,struct cl_platform_id可能包括多个字符串类型的变量,例如,"Profile"、"Version"、"Name"、"Vendor"、"Extensions"。字符串类型的变量将被转换成ASCII格式,其ASCII格式的长度将被记录到一个数组中。以"V01"为例,其对应的位格式如图1C所示。
可选地,struct cl_platform_id还可能包括数组类型的变量(例如“Devices”),数组中的数字为整数。对于这样的数据类型,其内部的数字会被逐一打包成二进制数据。数字型的变量将被转换为二进制,其位数也将被依次记录到数组中。以数字"368"为例,其对应的二进制表示如图1C所示。
在打包过程中,将这样的二进制依次串联起来,就可以将存储每个字符长度的相关数组的数据在验证系统100中的各个组件中传输(例如,可移植激励层101和后端平面层之间的传输、后端平面层102和外语层之间的产生)。解包过程与打包相反。在解包过程中,二进制和相关数组之间的序列相同,字段的值可以转换为相应基本类型的值。
再例如,指针类型的数据指向某个存储数据的地址,该地址中既可能存储基本数据类型的数据,也可能存储复杂数据类型的数据。因此,为便于解析指针类型的数据,可以提取所述指针类型的数据所指向的内存中的地址中的内存数据,将所述内存数据打包成所述内存数据对应的二进制数据,并创建包括所述内存数据对应的二进制数据的验证事务。
接着,可移植激励层101可以通过图1B所示的API通道先将验证事务发送至后端平面层102,然后后端平面层102再将该验证事务转发至各个外语层。
后端平面层102,用于隔离可移植激励层101和所述至少一个外语层,其被配置为:从所述可移植激励层接收所述验证域标识和所述验证事务;和基于所述至少一个外语层与所述至少一个验证域的关联关系,将所述验证事务转发至与所述验证域标识相对应的外语层。
由上可知,硬件验证域特定的测试激励适用于硬件验证层次和硬件验证环境。软件验证域特定的测试激励适用于软件验证层次和软件验证环境。验证域特定的测试激励与验证域特定的测试环境在芯片设计的验证中是耦合的。如果不将测试激励与测试环境隔离/解耦开来,会导致测试激励和测试环境都可能难以维护,进而难以实现跨多个验证域的测试激励的复用。
由此,为了隔离测试激励和测试环境,根据本公开的实施例的跨多个验证域的验证系统101利用后端平面层103将可移植激励层和外语层隔离开来,以便于测试激励和测试环境的维护。
如图1B所示,后端平面层102通过API通道接收到所述验证域标识和所述验证事务。然后,后端平面层102基于所述至少一个外语层与所述至少一个验证域的关联关系,将所述验证事务转发至与所述验证域标识相对应的外语层。由此,后端平面层102可以作为可移植激励层101和各个外语层之间的桥梁,以便于可移植激励层101和各个外语层之间的验证事务的传输。
可选地,后端平面层102可以使用C++语言来作为其的编程语言,本领域技术人员应当理解后端平面层还可以使用其他的语言作为编程语言。在后文中,以C++语言作为后端平面层102的编程语言来进行描述,然而,本公开并不以此为限。
后端平面层102主要涉及下表1中的函数,本领域技术人员应当理解后端平面层102还可以涉及更多的函数。
表1
由此,所述后端平面层102还可以被配置为:从所述可移植激励层接收可移植激励层注册函数,其中,所述可移植激励层注册函数包括所述可移植激励层的标识以及所述可移植激励层期望调用的后端平面层相关的函数;从所述至少一个外语层接收外语层注册函数,其中,所述外语层注册函数包括与所述外语层相关的验证域标识。
可选地,可移植激励层注册函数可以使用上述的函数BpRegisterLayer来注册,其示例形式为BpRegisterLayer(PS,PS_handler)。其中,PS指向所述可移植激励层的标识,其是const char*类型的数据。PS_handler指向所述可移植激励层期望调用的后端平面层相关的函数的集合,其是void*类型的数据。
可选地,外语层注册函数也可以使用上述的函数BpRegisterLayer来注册。例如,硬件验证域相关的外语层注册函数的为BpRegisterLayer(CSV,CSV_handler)。其中,CSV指向所述外语层相关的验证域标识,其是const char*类型的数据,标识硬件验证域。CSV_handler指向硬件域外语层期望调用的后端平面层相关的函数的集合,其是void*类型的数据。软件验证域相关的外语层注册函数的示例形式为BpRegisterLayer(SD,SD_handler)。其中,SD为所述外语层相关的验证域标识,其是const char*类型的数据。SD_handler指向软件域外语层期望调用的后端平面层相关的函数的集合,其是void*类型的数据。
可选地,在不同的测试环境中定义的函数clCreateBuffer和函数clEnqueueNDRangeKernel可能涉及不同的编译方式,因此这里利用函数BpClCreateBuffer和BpClEnqueueNDRangeKernel来传递参数和调用函数clCreateBuffer和函数clEnqueueNDRangeKernel。
所述至少一个外语层(例如,图1A中的外语层103-1至103-N)中的每个外语层,所述外语层用于一个验证域,其被配置为:从所述后端平面层接收与该外语层相对应的所述验证事务;解析并执行所述验证事务。
其中,所述多个外语层包括硬件域外语层和软件域外语层。如图1B所示,所述硬件域外语层包括硬件外语层适配器和硬件验证模拟环境,所述软件域外语层包括软件外语层适配器和软件验证模拟环境。之后将结合附图详细描述硬件域外语层和软件域外语层的工作原理,因此在此仅简单解释硬件域外语层和软件域外语层的配置。
上述的硬件外语层适配器和软件外语层适配器都可以用于将当前的外语层与后端平面层/可移植激励层隔离开来。外语层的适配器主要用于实现以下功能:
1.将外语层注册至后端平面层(例如使用上述的BpRegisterLayer(*CSV,*CSV_handler)或BpRegisterLayer(*SD,*SD_handler)),以使得后端平面层知晓外语层的存在,并且能够实现验证事务的传输。
2.为数据进入或离开外语层提供打包和解包的过程。例如,对于其接收到的验证事务,其可以将二进制数据解析为复杂数据类型的数据或指针数据类型的数据,供硬件验证模拟环境或软件验证模拟环境使用。
3.提供将解析后的验证事务(例如对验证事务中的数据进行解包后)发送至验证模拟环境中,以触发验证事务的执行。
例如,硬件外语层适配器可以被配置为:接收所述验证事务;将所述验证事务转换为总线事务相关的序列项;将所述序列项发送至所述硬件验证模拟环境。而所述硬件验证模拟环境可以被配置为:接收所述序列项;在定序器上启动所述序列项,以触发所述序列项相关驱动。
例如,软件外语层适配器可以被配置为:接收所述验证事务;将所述验证事务转换为以开放计算语言描述的可执行程序;将所述可执行程序发送至所述软件验证模拟环境。而所述软件验证模拟环境可以被配置为:接收并执行所述可执行程序。
本公开的实施例将多个不同验证域的测试用例的关键词进行了抽象,从而为不同验证域环境建立了跨多个验证域的、通用的测试激励。根据本公开的实施例的跨多个验证域的验证系统可以根据验证域的不同,自动将该跨多个验证域的测试激励转换为验证域特定的测试激励,并且自动在不同的验证域环境中验证该验证域特定的测试激励。从而本公开的实施例实现通用的测试激励在不同验证域环境中的共享,增加了测试激励的可移植性。本公开的实施例减少了在芯片设计的验证过程中测试激励编写的复杂性,进而保证芯片的系统性能的稳定并提高可靠性。同时,该跨多个验证域的验证方法容易实现,可以被广泛应用于电子设计自动化工具中。
图2A是根据本公开实施例的可移植激励层101的示意图。图2B是根据本公开实施例的跨多个验证域的测试激励的示例的示意图。
所述测试激励是以测试描述语言编写的,所述可移植激励层还包括测试描述语言库和开放计算语言库,其中,所述测试描述语言库包括以下各项中的至少一项:与至少一个基本数据类型相关联的关键词、用于描述验证事务的功能的关键词、用于描述验证事务的功能的限制条件的关键词、和用于描述验证事务的功能的执行顺序的关键词;所述开放计算语言库包括以下各项中的至少一项:与所述至少一个基本数据类型相关联的关键词、用于实现以开放计算语言编写的程序的功能的关键词、用于实现压缩复杂数据类型的变量的功能的关键词、和用于实现传输验证事务的功能的关键词。
可选地,跨多个验证域的测试激励可以使用Ruby语言进行编写,本领域技术人员应当理解跨多个验证域的测试激励还可以使用其它编程语言进行编写,本公开并不以此为限。
可选地,测试描述语言(Test description language,TDL)是由Ruby语言来进行定义的,其允许验证工程师在更高的抽象层次上定义他们的测试激励。根据测试激励的期待验证的功能和验证中的实际场景,TDL中的关键字被细分为多种类型。
下表2给出了测试描述语言库中的一些关键词的相关信息。
表2
如上表2所示,与至少一个基本数据类型相关联的关键词例如是bit、int、bool、或string;用于描述验证事务的功能的关键词例如是rand、bind(bind可以用于描述验证事务的功能的关键词,表示两个或多个验证事务之间的数据传输关系);用于描述验证事务的功能的限制条件的关键词例如是constraint;和用于描述验证事务的功能的执行顺序的关键词例如是parallel或join。
为了实现基于OpenCL的GPU芯片设计的验证,可移植激励层101参照OpenCL规范,用Ruby语言在开放计算语言库定义了相关的OpenCL函数,其主要包括数据传输和对后端平面层的函数调用。
基本数据类型在OpenCL与TDL库之间的对应关系部分如表3所示。
表3
更高层次的数据结构,如struct类型的cl_device_id,可以由这些基本数据类型来构建。
例如,根据表3,可以确定测试描述语言库中与所述至少一个基本数据类型相关联的关键词的示例例如是:“bit[max:0],max<=31”、“bit[max:0],max<=15”、“bit[max:0],max<=63”、“bit[max:0],max<=7”。
例如,根据表3,可以确定开放计算语言库中与所述至少一个基本数据类型相关联的关键词的示例例如是:“cl_int/cl_uint”、“cl_short/cl_ushort”“cl_long/cl_ulong”“size_t”“cl_char/cl_uchar”、“cl_half”。
利用Ruby语言的特点,在可移植激励层101中还定义有OpenCL函数,部分参数类型信息如表4所示。
表4
例如,根据表4,可以确定用于实现以开放计算语言编写的程序的功能的关键词的示例可以是:“clCreateContext”、“clCreateCommandQueue”、“clCreateBuffer”、“clEnqueueNDRangeKernel”。
表2至表4仅给出了测试描述语言库和开放计算语言库中的部分示例,本领域技术人员应当理解,测试描述语言库和开放计算语言库还可以包括未示出的其他关键词。
参见图2B,其给出了使用测试描述语言编写的跨多个验证域的测试激励的示例,其示出了如何使用上述的测试描述语言库和开放计算语言库中的关键字来描述测试激励。该与GPU芯片设计相关的跨多个验证域的测试激励示例是参照OpenCL(开放计算语言)规范并结合Ruby编程语言的语法结构而编写的。该测试激励指示GPU芯片准备上下文(context)、指令队列(command_queue)、缓存(buffer)、内核(kernel)等等。然后执行指令队列中的指令。根据指令队列中的指令的执行结果来确定某项功能是否实现。
由此,本公开的实施例中的可移植激励层101将多个不同验证域的测试用例的关键词进行了抽象,从而为不同验证域环境建立了跨多个验证域的、通用的测试激励。据此,根据本公开的实施例的跨多个验证域的验证系统可以根据验证域的不同,自动将该跨多个验证域的测试激励转换为验证域特定的测试激励,并且自动在不同的验证域环境中验证该验证域特定的测试激励。从而本公开的实施例实现了跨多个验证域的测试激励在不同验证域环境中的共享,增加了测试激励的可移植性。本公开的实施例减少了在芯片设计的验证过程中测试激励编写的复杂性,进而保证芯片的系统性能的稳定并提高可靠性。同时,该跨多个验证域的验证方法容易实现,可以被广泛应用于电子设计自动化工具中。
图3A是根据本公开实施例的硬件域外语层的示意图。图3B是根据本公开实施例的在硬件域外语层中执行测试的示例的示意图。图3C是根据本公开实施例的硬件域特定的测试激励的示例的示意图。
如图3A所示,硬件域外语层包括硬件外语层适配器和硬件验证模拟环境。
其中,所述硬件外语层适配器被配置为:接收所述验证事务;将所述验证事务转换为总线事务相关的序列项;将所述序列项发送至所述硬件验证模拟环境。
其中,所述硬件验证模拟环境被配置为:接收所述序列项;在定序器(sequencer)上启动所述序列项,以触发所述序列项相关驱动。
可选地,GPU芯片设计的硬件验证模拟环境为混合验证环境(hybridverification environment)。例如,如图3B所示,硬件域特定的验证事务可以是基于C域(C语言域)的。然后,基于OpenCL的API对该硬件域特定的验证事务进行解析以模拟GPU的行为。
例如,硬件验证模拟环境可以包括基于UVM(通用验证方法论)的测试环境。通过SystemVerilog域中定义的DPI(直接编程接口)函数,该硬件域特定的验证事务可以通过基于OpenCL的API传递到UVM环境中,然后解释成与特定总线接口对应的总线验证事务。最后,通过将总线验证事务驱动到设计(例如基于寄存器传输的设计(RTL))接口上,触发GPU的行为。
可选地,将所述验证事务转换为总线事务相关的序列项可以包括:在所述验证事务包括基本数据类型的数据的情况下,提取所述基本数据类型的数据;在所述验证事务包括二进制数据的情况下,将所述二进制数据解包成复杂数据类型的数据;在所述验证事务包括内存数据对应的二进制数据的情况下,将所述内存数据对应的二进制数据解包成内存数据;根据所述验证事务中的功能、所述基本数据类型的数据、所述内存数据和复杂数据类型的数据中的一项或多项,将所述验证事务转换为总线事务相关的序列项。
据此,根据本公开的实施例的跨多个验证域的验证系统可以根据验证域标识将该跨多个验证域的测试激励转换为硬件域特定的测试激励,并且自动在硬件验证域环境中验证硬件域特定的测试激励,从而增加了测试激励的可移植性。本公开的实施例减少了在芯片设计的验证过程中测试激励编写的复杂性,进而保证芯片的系统性能的稳定并提高可靠性。同时,该跨多个验证域的验证方法容易实现,可以被广泛应用于电子设计自动化工具中。
图3C给出硬件域特定的测试激励的一个示例。该硬件域特定的测试激励可由上述的跨多个验证域的测试激励转换而来。该硬件域特定的测试激励可以对应于一个或多个硬件域特定的验证事务。
与GPU芯片设计相关的硬件域特定的测试激励示例是按照OpenCL(开放计算语言)规范进行编写的。该测试激励指示GPU芯片准备上下文(context)、指令队列(command_queue)、缓存(buffer)、内核(kernel)等等。然后执行指令队列中的指令。根据指令队列中的指令的执行结果来确定某项功能是否实现。
图4A是根据本公开实施例的软件域外语层的示意图。图4B是根据本公开实施例的软件域特定的测试激励的示例的示意图。
如图4A所示,软件域外语层包括软件外语层适配器和软件验证模拟环境。
其中,所述软件外语层适配器被配置为:接收所述验证事务;将所述验证事务转换为以开放计算语言描述的可执行程序;将所述可执行程序发送至所述软件验证模拟环境。所述软件验证模拟环境被配置为:接收并执行所述可执行程序。
可选地,GPU芯片设计的软件验证模拟环境为Radeon Open Compute Platform(ROCm)。软件验证模拟环境可以包括多个层次。如图4A所示,其由上之下依次包括:运行时API(Runtime API)、Linux API、Linux驱动、固件(firmware)和硬件(hardware)。其中,运行时API(Runtime API)、Linux API、Linux驱动的集合又构成了ROCm。诸如OpenCL一致性测试(OpenCL conformance test)的软件域特定的测试激励可以在Runtime API层中运行并通过ROCm和固件驱动相应的硬件。
图4B给出软件域特定的测试激励的一个示例。该软件域特定的测试激励可由上述的跨多个验证域的测试激励转换而来。该软件域特定的测试激励可以对应于一个或多个软件域特定的验证事务。
软件域特定的验证事务例如是OpenCL一致性测试事务,其用于测试GPU并行计算的可用性和正确性。与GPU芯片设计相关的软件域特定的测试激励示例是按照OpenCL(开放计算语言)规范进行编写的。该测试激励指示GPU芯片准备上下文(context)、指令队列(command_queue)、缓存(buffer)、内核(kernel)等等。然后执行指令队列中的指令。根据指令队列中的指令的执行结果来确定某项功能是否实现。
据此,根据本公开的实施例的跨多个验证域的验证系统可以根据验证域标识将该跨多个验证域的测试激励转换为软件域特定的测试激励,并且自动在软件验证域环境中验证软件域特定的测试激励,从而增加了测试激励的可移植性。本公开的实施例减少了在芯片设计的验证过程中测试激励编写的复杂性,进而保证芯片的系统性能的稳定并提高可靠性。同时,该跨多个验证域的验证方法容易实现,可以被广泛应用于电子设计自动化工具中。
图5示出了本公开至少一个实施例的跨多个验证域的验证方法50的流程。
跨多个验证域的验证方法50包括以下步骤。
在步骤S501中,获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识。
其中,步骤S501可由验证系统100中的可移植激励层101来执行。可移植激励层101被配置为:获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析所述测试激励,并创建与所述待验证对象相关的验证事务;将所述验证域标识和所述验证事务发送至所述后端平面层。
其中,所述待验证对象为与图形处理单元(GPU)相关联的芯片设计;所述多个验证域至少包括硬件验证域和软件验证域;所述验证域标识包括以下各项中的至少一项:指示在硬件域中进行验证的验证域标识、在软件域中的进行验证的验证域标识、在硬件域和软件域中进行共同验证的验证域标识。
GPU芯片设计的过程通常包括软核设计、硬核设计和固核设计中的一项或多项。经上述设计流程完成的SoC(片上系统)芯片将集成各种纯硬件IP核(知识产权核)、和作为软件载体的IP核(MCU、DSP等等)。设计人员在完成GPU芯片的相关设计之后,通常需要对其进行验证。芯片设计验证的内容很多,例如,IP核(知识产权核)/模块级验证、系统级验证、仿真验证、软硬件协同验证、等价性检查、静态时序分析和时序验证、版图验证等等。本公开实施例以GPU相关联的芯片设计为例进行描述,但是本领域技术人员应当理解本公开所涉及的验证系统和验证方法不限于对GPU芯片的验证,其还可以应用于各种复杂系统的验证。
可选地,多个验证域至少包括硬件验证域和软件验证域。其中,硬件验证域也即对芯片设计的硬件相关功能(例如,诸如通信芯片中与RF接收相关联的硬件任务、图像渲染用的芯片中的多循环次数的复杂运算的硬件任务等等)进行验证的硬件环境,软件验证域以及对芯片设计的软件相关功能(例如可重配置的任务、应用性灵活的任务等等)进行验证的软件环境。值得注意的是,芯片的某项功能可能既需要进行在硬件验证域中进行验证,也需要在软件验证域中进行验证。本公开对此不进行限制。正如上所述,GPU芯片设计的验证还包括其他内容,因此验证域还包括与整个系统验证相关联的验证域、与时序分析相关联的验证域、与版图设计相关联的验证域等等。在后文中,本公开的实施例以硬件验证域和软件验证域为例进行说明,但本领域技术人员应当理解本公开并不以此为限。
在步骤S502中,解析所述测试激励,并创建与所述待验证对象相关的验证事务。其中,步骤S502可由验证系统100中的可移植激励层101来执行。
在步骤S503中,基于所述验证域标识,在与所述验证域标识相对应的验证域中解析并执行所述验证事务。其中,步骤S503可由验证系统100中的后端平面层102和至少一个外语层来共同执行。
其中,后端平面层102,用于隔离可移植激励层101和所述至少一个外语层,其被配置为:从所述可移植激励层接收所述验证域标识和所述验证事务;和基于所述至少一个外语层与所述至少一个验证域的关联关系,将所述验证事务转发至与所述验证域标识相对应的外语层。
其中,所述至少一个外语层(例如,图1A中的外语层103-1至103-N)中的每个外语层,所述外语层用于一个验证域,其被配置为:从所述后端平面层接收与该外语层相对应的所述验证事务;解析并执行所述验证事务。
步骤S503还包括:在所述测试激励中定义了基本数据类型的数据的情况下,创建包括所述基本数据类型的数据的验证事务;在所述测试激励中定义了复杂数据类型的数据的情况下,将所述复杂数据类型的数据打包成二进制数据,并创建包括所述二进制数据的验证事务;在所述测试激励中定义了指针类型的数据的情况下,提取所述指针类型的数据所指向的内存中的地址中的内存数据,将所述内存数据打包成所述内存数据对应的二进制数据,并创建包括所述内存数据对应的二进制数据的验证事务。
其中,在所述验证域标识符指示在硬件域中进行验证的情况下,所述在与所述验证域标识相对应的验证域中解析并执行所述验证事务还包括:将所述验证事务转换为总线事务相关的序列项;在定序器上启动所述序列项,以触发所述序列项相关驱动;其中,所述将所述验证事务转换为总线事务相关的序列项还包括:在所述验证事务包括基本数据类型的数据的情况下,提取所述基本数据类型的数据;在所述验证事务包括二进制数据的情况下,将所述二进制数据解包成复杂数据类型的数据;在所述验证事务包括内存数据对应的二进制数据的情况下,将所述内存数据对应的二进制数据解包成内存数据;根据所述验证事务中的功能、所述基本数据类型的数据、所述内存数据和复杂数据类型的数据中的一项或多项,将所述验证事务转换为总线事务相关的序列项。
其中,在所述验证域标识符指示在软件域中进行验证的情况下,所述在与所述验证域标识相对应的验证域中解析并执行所述验证事务还包括:将所述验证事务转换为以开放计算语言描述的可执行程序;执行所述可执行程序。
本公开的实施例将多个不同验证域的测试用例的关键词进行了抽象,从而为不同验证域环境建立了跨多个验证域的、通用的测试激励。根据本公开的实施例的跨多个验证域的验证系统可以根据验证域的不同,自动将该跨多个验证域的测试激励转换为验证域特定的测试激励,并且自动在不同的验证域环境中验证该验证域特定的测试激励。从而本公开的实施例实现通用的测试激励在不同验证域环境中的共享,增加了测试激励的可移植性。本公开的实施例减少了在芯片设计的验证过程中测试激励编写的复杂性,进而保证芯片的系统性能的稳定并提高可靠性。同时,该跨多个验证域的验证方法容易实现,可以被广泛应用于电子设计自动化工具中。
根据本公开的又一方面,还提供了一种电子设备,用于执行所述跨多个验证域的验证方法。图6示出了根据本公开实施例的电子设备2000的示意图。
如图6所示,所述电子设备2000可以包括一个或多个处理器2010,和一个或多个存储器2020。其中,所述存储器2020中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器2010运行时,可以执行如上所述的跨多个验证域的验证方法。
本公开实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或ARM架构的。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
例如,根据本公开实施例的方法或装置也可以借助于图7所示的计算设备3000的架构来实现。如图7所示,计算设备3000可以包括总线3010、一个或多个CPU3020、只读存储器(ROM)3030、随机存取存储器(RAM)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如ROM 3030或硬盘3070可以存储本公开提供的用于确定车辆的驾驶风险的方法的处理和/或通信使用的各种数据或文件以及CPU所执行的程序指令。计算设备3000还可以包括用户界面3080。当然,图7所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图7示出的计算设备中的一个或多个组件。
根据本公开的又一方面,还提供了一种计算机可读存储介质。图8示出了根据本公开的存储介质的示意图4000。
如图8所示,所述计算机存储介质4020上存储有计算机可读指令4010。当所述计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的根据本公开实施例的跨多个验证域的验证方法。本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储器(DR RAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的跨多个验证域的验证方法。
根据本公开的另一方面,提供了一种跨多个验证域的验证装置,包括:获取模块,用于获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的至少一个验证域的验证域标识;解析模块,用于解析所述测试激励,并创建与所述待验证对象相关的验证事务;执行模块,用于基于所述验证域标识,在与所述验证域标识相对应的验证域中解析并执行所述验证事务。
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
在上面详细描述的本公开的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本公开的原理和精神的情况下,可对这些实施例或其特征进行各种修改和组合,这样的修改应落入本公开的范围内。
Claims (15)
1.一种跨多个验证域的验证系统,包括可移植激励层、后端平面层和多个外语层,其中,
所述可移植激励层被配置为:
获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的多个验证域的验证域标识;所述多个验证域至少包括硬件验证域和软件验证域;
解析所述测试激励,并创建与所述待验证对象相关的验证事务;
将所述验证域标识和所述验证事务发送至所述后端平面层;
所述后端平面层,用于隔离所述可移植激励层和所述多个外语层,其被配置为:
从所述可移植激励层接收所述验证域标识和所述验证事务;和
基于所述多个外语层与所述多个验证域的关联关系,将所述验证事务转发至与所述验证域标识相对应的外语层;
所述多个外语层包括硬件域外语层和软件域外语层;所述多个外语层中的每个外语层,所述每个外语层用于一个验证域,其被配置为:
从所述后端平面层接收与该外语层相对应的所述验证事务;
解析并执行所述验证事务。
2.如权利要求1所述的跨多个验证域的验证系统,其中,
所述待验证对象为与图形处理单元GPU相关联的芯片设计;
所述验证域标识包括以下各项中的至少一项:指示在硬件域中进行验证的验证域标识、在软件域中进行验证的验证域标识、在硬件域和软件域中进行共同验证的验证域标识。
3.如权利要求1所述的跨多个验证域的验证系统,其中,所述解析测试激励,并创建与所述待验证对象相关的验证事务还包括:
在所述测试激励中定义了基本数据类型的数据的情况下,创建包括所述基本数据类型的数据的验证事务;
在所述测试激励中定义了复杂数据类型的数据的情况下,将所述复杂数据类型的数据打包成二进制数据,并创建包括所述二进制数据的验证事务;
在所述测试激励中定义了指针类型的数据的情况下,提取所述指针类型的数据所指向的内存中的地址中的内存数据,将所述内存数据打包成所述内存数据对应的二进制数据,并创建包括所述内存数据对应的二进制数据的验证事务。
4.如权利要求2所述的跨多个验证域的验证系统,其中,所述测试激励是以测试描述语言编写的,所述可移植激励层还包括测试描述语言库和开放计算语言库,其中,
所述测试描述语言库包括以下各项中的至少一项:与至少一个基本数据类型相关联的关键词、用于描述验证事务的功能的关键词、用于描述验证事务的功能的限制条件的关键词和用于描述验证事务的功能的执行顺序的关键词;
所述开放计算语言库包括以下各项中的至少一项:与所述至少一个基本数据类型相关联的关键词、用于实现以开放计算语言编写的程序的功能的关键词、用于实现压缩复杂数据类型的变量的功能的关键词和用于实现传输验证事务的功能的关键词。
5.如权利要求2所述的跨多个验证域的验证系统,其中,所述后端平面层还被配置为:
从所述可移植激励层接收可移植激励层注册函数,其中,所述可移植激励层注册函数包括所述可移植激励层的标识以及所述可移植激励层期望调用的后端平面层相关的函数;
从所述多个外语层接收外语层注册函数,其中,所述外语层注册函数包括与所述外语层相关的验证域标识。
6.如权利要求2所述的跨多个验证域的验证系统,其中,所述硬件域外语层包括硬件外语层适配器和硬件验证模拟环境,其中,
所述硬件外语层适配器被配置为:
接收所述验证事务;
将所述验证事务转换为总线事务相关的序列项;
将所述序列项发送至所述硬件验证模拟环境;
所述硬件验证模拟环境被配置为:
接收所述序列项;
在定序器上启动所述序列项,以触发所述序列项相关驱动。
7.如权利要求6所述的跨多个验证域的验证系统,其中,所述将所述验证事务转换为总线事务相关的序列项还包括:
在所述验证事务包括基本数据类型的数据的情况下,提取所述基本数据类型的数据;
在所述验证事务包括二进制数据的情况下,将所述二进制数据解包成复杂数据类型的数据;
在所述验证事务包括内存数据对应的二进制数据的情况下,将所述内存数据对应的二进制数据解包成内存数据;
根据所述验证事务中的功能、所述基本数据类型的数据、所述内存数据和复杂数据类型的数据中的一项或多项,将所述验证事务转换为总线事务相关的序列项。
8.如权利要求2所述的跨多个验证域的验证系统,所述软件域外语层包括软件外语层适配器和软件验证模拟环境,其中,
所述软件外语层适配器被配置为:
接收所述验证事务;
将所述验证事务转换为以开放计算语言描述的可执行程序;
将所述可执行程序发送至所述软件验证模拟环境;
所述软件验证模拟环境被配置为:
接收并执行所述可执行程序。
9.一种跨多个验证域的验证方法,所述验证方法用于验证系统,所述验证系统包括可移植激励层、后端平面层和多个外语层,所述验证方法包括:
获取用于验证待验证对象的跨多个验证域的测试激励,所述跨多个验证域的测试激励包括指示用于执行所述测试激励的多个验证域的验证域标识,所述多个验证域至少包括硬件验证域和软件验证域;
解析所述测试激励,并创建与所述待验证对象相关的验证事务;
将所述验证域标识和所述验证事务发送至所述后端平面层,其中所述后端平面层用于隔离所述可移植激励层和所述多个外语层;
从所述可移植激励层接收所述验证域标识和所述验证事务;
基于所述多个外语层与所述多个验证域的关联关系,将所述验证事务转发至与所述验证域标识相对应的外语层,其中所述多个外语层包括硬件域外语层和软件域外语层,所述多个外语层中的每个外语层用于一个验证域;以及
从所述后端平面层接收与该外语层相对应的所述验证事务;
解析并执行所述验证事务。
10.如权利要求9所述的跨多个验证域的验证方法,其中,
所述待验证对象为与图形处理单元GPU相关联的芯片设计;
所述验证域标识包括以下各项中的至少一项:指示在硬件域中进行验证的验证域标识、在软件域中的进行验证的验证域标识、在硬件域和软件域中进行共同验证的验证域标识。
11.如权利要求9所述的跨多个验证域的验证方法,所述解析测试激励,并创建与所述待验证对象相关的验证事务还包括:
在所述测试激励中定义了基本数据类型的数据的情况下,创建包括所述基本数据类型的数据的验证事务;
在所述测试激励中定义了复杂数据类型的数据的情况下,将所述复杂数据类型的数据打包成二进制数据,并创建包括所述二进制数据的验证事务;
在所述测试激励中定义了指针类型的数据的情况下,提取所述指针类型的数据所指向的内存中的地址中的内存数据,将所述内存数据打包成所述内存数据对应的二进制数据,并创建包括所述内存数据对应的二进制数据的验证事务。
12.如权利要求10所述的跨多个验证域的验证方法,其中,在所述验证域标识符指示在硬件域中进行验证的情况下,所述在与所述验证域标识相对应的验证域中解析并执行所述验证事务还包括:
将所述验证事务转换为总线事务相关的序列项;
在定序器上启动所述序列项,以触发所述序列项相关驱动;
其中,所述将所述验证事务转换为总线事务相关的序列项还包括:
在所述验证事务包括基本数据类型的数据的情况下,提取所述基本数据类型的数据;
在所述验证事务包括二进制数据的情况下,将所述二进制数据解包成复杂数据类型的数据;
在所述验证事务包括内存数据对应的二进制数据的情况下,将所述内存数据对应的二进制数据解包成内存数据;
根据所述验证事务中的功能、所述基本数据类型的数据、所述内存数据和复杂数据类型的数据中的一项或多项,将所述验证事务转换为总线事务相关的序列项。
13.如权利要求10所述的跨多个验证域的验证方法,其中,在所述验证域标识符指示在软件域中进行验证的情况下,所述在与所述验证域标识相对应的验证域中解析并执行所述验证事务还包括:
将所述验证事务转换为以开放计算语言描述的可执行程序;
执行所述可执行程序。
14.一种跨多个验证域的验证设备,包括:
处理器;和
存储器,其中,所述存储器中存储有计算机可执行代码,所述计算机可执行代码当由所述处理器运行时,执行权利要求9-13任一所述的跨多个验证域的验证方法。
15.一种非易失性计算机可读存储介质,其上存储有可执行代码,所述可执行代码在被处理器执行时,使得所述处理器执行权利要求9-13任一所述的跨多个验证域的验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011147430.8A CN112232000B (zh) | 2020-10-23 | 2020-10-23 | 跨多个验证域的验证系统、验证方法、验证设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011147430.8A CN112232000B (zh) | 2020-10-23 | 2020-10-23 | 跨多个验证域的验证系统、验证方法、验证设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112232000A CN112232000A (zh) | 2021-01-15 |
CN112232000B true CN112232000B (zh) | 2021-08-10 |
Family
ID=74109284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011147430.8A Active CN112232000B (zh) | 2020-10-23 | 2020-10-23 | 跨多个验证域的验证系统、验证方法、验证设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112232000B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113283211A (zh) * | 2021-05-20 | 2021-08-20 | 复旦大学 | 基于Verilog实现的微处理器自动化验证方法及验证装置 |
CN113407408B (zh) * | 2021-06-11 | 2024-01-26 | 海光信息技术股份有限公司 | 数据传输规则验证方法、装置、设备和存储介质 |
CN114528792B (zh) * | 2022-02-18 | 2023-08-29 | 杭州爱芯元智科技有限公司 | 芯片验证方法、装置、电子设备及存储介质 |
CN114444423B (zh) * | 2022-04-02 | 2022-06-24 | 北京得瑞领新科技有限公司 | 基于验证平台的数据处理方法、系统及电子设备 |
CN115719047B (zh) * | 2022-11-14 | 2023-06-06 | 沐曦集成电路(上海)有限公司 | 基于波形gpu联合仿真系统 |
CN115618800B (zh) * | 2022-11-14 | 2023-05-12 | 沐曦集成电路(上海)有限公司 | 基于dpi的gpu联合仿真系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410803A (zh) * | 2006-01-24 | 2009-04-15 | 思杰系统有限公司 | 用于提供对计算环境的访问的方法和系统 |
CN109885905A (zh) * | 2019-01-29 | 2019-06-14 | 北京中科微电子技术有限公司 | 一种提高数字电路功能验证效率的验证系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399341C (zh) * | 2006-03-31 | 2008-07-02 | 电子科技大学 | 一种矢量模式软硬件协同仿真/验证方法 |
KR20080018011A (ko) * | 2006-08-23 | 2008-02-27 | 삼성전자주식회사 | 컴포넌트 구현 장치 및 방법, 컴포넌트 검증 장치 및 방법 |
CN105302950B (zh) * | 2015-10-19 | 2018-07-24 | 北京精密机电控制设备研究所 | 一种软、硬件协同的可编程逻辑器件交联仿真测试方法 |
US11036907B2 (en) * | 2019-03-01 | 2021-06-15 | Synopsys, Inc. | Automatic testbench generator for test-pattern validation |
CN109933529B (zh) * | 2019-03-12 | 2022-03-29 | 苏州中晟宏芯信息科技有限公司 | 基于计算单元的验证方法及验证平台 |
CN111597109B (zh) * | 2020-04-24 | 2022-03-11 | 清华大学 | 一种跨架构固件堆内存的缺陷检测方法及系统 |
-
2020
- 2020-10-23 CN CN202011147430.8A patent/CN112232000B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410803A (zh) * | 2006-01-24 | 2009-04-15 | 思杰系统有限公司 | 用于提供对计算环境的访问的方法和系统 |
CN109885905A (zh) * | 2019-01-29 | 2019-06-14 | 北京中科微电子技术有限公司 | 一种提高数字电路功能验证效率的验证系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112232000A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112232000B (zh) | 跨多个验证域的验证系统、验证方法、验证设备 | |
US20210081258A1 (en) | Synthesis Path For Transforming Concurrent Programs Into Hardware Deployable on FPGA-Based Cloud Infrastructures | |
CN114546405B (zh) | 用于使用统一中间表示来处理图形的方法和系统 | |
JPH11513512A (ja) | ディジタル信号プロセッサの製造方法 | |
CN114816417B (zh) | 一种交叉编译方法、装置、计算设备及存储介质 | |
CN114116134A (zh) | 智能合约部署和执行方法、设备及存储介质 | |
EP3859531B1 (en) | Synthesizing printf and scanf statements for generating debug messages in high-level synthesis (hls) code | |
Computing | Pyquil documentation | |
US8719744B2 (en) | Language conversion method and language conversion program | |
CN114707444B (zh) | 编译验证系统的方法、电子设备及存储介质 | |
CN117667655A (zh) | 验证系统、验证方法、电子设备以及存储介质 | |
US20070271080A1 (en) | Model generation method for software/hardware collaboration design | |
CN116228515B (zh) | 硬件加速系统、方法及相关装置 | |
US11561779B1 (en) | Applications for hardware accelerators in computing systems | |
Janik et al. | An overview of altera sdk for opencl: A user perspective | |
CN116560931A (zh) | 一种芯片验证平台和方法、电子设备、存储介质 | |
Chen et al. | Me3D: A model-driven methodology expediting embedded device driver development | |
Huggi et al. | Design and verification of memory elements using python | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN115688643A (zh) | 仿真逻辑系统设计的方法、设备及存储介质 | |
Villarraga et al. | An equivalence checker for hardware-dependent embedded system software | |
Hiremath et al. | Open-source Hardware: Different Approaches to Softcore implementation | |
CN114880045A (zh) | 寄存器配置方法、装置及相关设备 | |
Corre et al. | Fast template-based heterogeneous mpsoc synthesis on fpga | |
CN103577170A (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 |