CN113342583A - 芯片验证系统、方法、装置、设备和存储介质 - Google Patents
芯片验证系统、方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN113342583A CN113342583A CN202110637807.6A CN202110637807A CN113342583A CN 113342583 A CN113342583 A CN 113342583A CN 202110637807 A CN202110637807 A CN 202110637807A CN 113342583 A CN113342583 A CN 113342583A
- Authority
- CN
- China
- Prior art keywords
- verification
- module
- sub
- chip
- environment
- 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.)
- Granted
Links
Images
Classifications
-
- 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/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- 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/2273—Test methods
-
- 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
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault 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
- G06F11/273—Tester hardware, i.e. output processing circuits
- G06F11/2733—Test interface between tester and unit under test
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本申请提供一种芯片验证系统、方法、装置、设备和存储介质,该系统包括:多个验证模拟器;多个相连的验证环境,每个所述验证模拟器分别编译运行一个所述验证环境,所述验证环境中包括至少一个验证模块;每个所述验证环境用于例化待测芯片的一个子电路,所述待测芯片包括多个子电路;其中,每个所述验证环境在一个所述验证模拟器上编译运行时,所述验证模块为当前所述验证环境的所述子电路产生激励信号,并采集所述子电路的输出信号,通过检查多个所述子电路的所述输出信号完成对整个所述待测芯片的验证。本申请实现了芯片验证在多核下的并行运行,加快了验证速度,进而缩短了芯片产品的验证周期。
Description
技术领域
本申请涉及芯片测试技术领域,具体而言,涉及一种芯片验证系统、方法、装置、设备和存储介质。
背景技术
芯片验证,就是采用相应的验证语言,验证工具,验证方法,在芯片生产之前验证芯片设计是否符合芯片定义的需求规格,是否已经完全释放了风险,发现并更正了所有的缺陷。
EDA(Electronic Design Automation,电子设计自动化),指利用计算机辅助设计软件,来完成超大规模集成电路芯片的功能设计、综合、验证、物理设计(包括布局、布线、版图、设计规则检查等)等流程的设计方式,通常在使用EDA工具例如VCS(Verilog编译的模拟器),进行芯片的仿真验证时,VCS只能生成一个可执行文件进行整个验证环境的仿真运行。
随着集成电路产业的快速发展,芯片规模大大增加,因此仿真运行时生成的可执行文件需要模拟的芯片越来越大,从而造成芯片验证仿真时间的增大。而实际生产中芯片迭代周期却越来越短,因此传统的基于UVM(Universal Verification Methodology,通用验证方法学)的验证平台架构已经无法满足芯片迭代周期的要求。同时,传统的验证环境对已有验证环境和IP硬件的复用性和扩展性,也存在一定的局限性。
发明内容
本申请实施例的目的在于提供一种芯片验证系统、方法、装置、设备和存储介质,实现了芯片验证在多核下的并行运行,加快了验证速度,进而缩短了芯片产品的验证周期。
本申请实施例第一方面提供了一种芯片验证系统,包括:多个验证模拟器;多个验证环境,每个所述验证模拟器分别编译运行一个所述验证环境,所述验证环境中包括至少一个验证模块;每个所述验证环境用于例化待测芯片的一个子电路,所述待测芯片包括多个子电路;其中,每个所述验证环境在一个所述验证模拟器上编译运行时,所述验证模块为当前所述验证环境的所述子电路产生激励信号,并采集所述子电路的输出信号,通过检查多个所述子电路的所述输出信号完成对整个所述待测芯片的验证。
于一实施例中,每个所述验证环境用于例化所述子电路的多个子模块,所述子模块为所述待测芯片中具备独立功能的模块。
于一实施例中,一个所述验证环境包括多个所述验证模块;一个所述验证模块连接一个所述子模块,用于为所述子模块产生激励信号,并采集所述子模块的输出信号。
于一实施例中,每个所述验证环境还包括:通信接口,分别连接所述多个子模块,用于所述验证环境中的进程间数据交互。
于一实施例中,所述通信接口包括:数据调用接口,用于调用预设接口函数,在进程间进行数据发送和接收。
于一实施例中,还包括:通信模块,分别连接每个所述验证环境中的所述通信接口,用于在不同所述验证环境之间进行进程间的数据交互。
于一实施例中,每个所述验证模拟器运行在一个CPU内核上。
本申请实施例第二方面提供了一种芯片验证方法,用于芯片验证系统,所述芯片验证系统包括多个相连的验证环境;所述方法包括:第一验证环境中的第一验证模块生成验证指令,并发送所述验证指令至第一子模块;其中,所述第一子模块是例化在所述第一验证环境中的待测芯片的电路模块,所述验证指令中携带有待访问的第二子模块的标识;所述第二子模块是例化在第二验证环境中的待测芯片的电路模块,所述第一验证环境和所述第二验证环境是所述芯片验证系统中任意两个验证环境;所述第一子模块将接收到的所述验证指令发送给所述第一验证环境的第一通信接口;所述第一通信接口根据所述第二子模块的标识,通过数据调用接口,调用预设接口函数,将所述验证指令发送至所述第二验证环境;所述第二验证环境根据所述第二子模块的标识,通过所述第二验证环境的第二通信接口发送所述验证指令至所述第二子模块。
于一实施例中,在所述将所述验证指令发送至所述第二验证环境之前,还包括:所述第一通信接口按照预设格式打包所述验证指令。
于一实施例中,还包括:所述第二验证环境中的第二验证模块获取所述第二子模块接收到的所述验证指令,并根据所述验证指令生成返回数据,发送所述返回数据至所述第二子模块。
于一实施例中,还包括:所述第二子模块通过所述第二通信接口,将所述返回数据返回至所述第一子模块。
本申请实施例第三方面提供了一种芯片验证装置,用于芯片验证系统,所述芯片验证系统包括多个相连的验证环境;所述装置包括:验证环境生成模块,用于第一验证环境中的第一验证模块生成验证指令,并发送所述验证指令至第一子模块;其中,所述第一子模块是例化在所述第一验证环境中的待测芯片的电路模块,所述验证指令中携带有待访问的第二子模块的标识;所述第二子模块是例化在第二验证环境中的待测芯片的电路模块,所述第一验证环境和所述第二验证环境是所述芯片验证系统中任意两个验证环境;第一验证指令发送模块,用于所述第一子模块将接收到的所述验证指令发送给所述第一验证环境的第一通信接口;函数调用模块,用于所述第一通信接口根据所述第二子模块的标识,通过数据调用接口,调用预设接口函数,将所述验证指令发送至所述第二验证环境;第二验证指令发送模块,用于所述第二验证环境根据所述第二子模块的标识,通过所述第二验证环境的第二通信接口发送所述验证指令至所述第二子模块。
于一实施例中,还包括:验证指令打包模块,用于在所述将所述验证指令发送至所述第二验证环境之前,所述第一通信接口按照预设格式打包所述验证指令。
于一实施例中,还包括:验证指令获取模块,用于所述第二验证环境中的第二验证模块获取所述第二子模块接收到的所述验证指令,并根据所述验证指令生成返回数据,发送所述返回数据至所述第二子模块。
于一实施例中,还包括:数据返回模块,用于所述第二子模块通过所述第二通信接口,将所述返回数据返回至所述第一子模块。
本申请实施例第四方面提供了一种电子设备,包括:存储器,用以存储计算机程序;处理器,用以执行所述计算机程序,以实现本申请实施例第二方面及其任一实施例的方法。
本申请实施例第五方面提供了一种非暂态电子设备可读存储介质,包括:程序,当其藉由电子设备运行时,使得所述电子设备执行本申请实施例第二方面及其任一实施例的方法。本申请提供的芯片验证系统、方法、装置、设备和存储介质,将传统的芯片验证平台,切割成多个验证环境,将待测芯片拆分成多个子电路,每个子电路分别例化在一个验证环境中,并且每个验证环境独立地在验证模拟器中编译运行,如此减轻了仿真运行时的负载。由于每个子环境的仿真运行是相互独立的,相当于实现了整个待测芯片的验证环境通过使用多个验证模拟器,实现了芯片验证在多个CPU核上的并行运行,加快了仿真速度、拓宽了验证环境复用性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请一实施例的电子设备的结构示意图;
图2为本申请一实施例的一个传统芯片验证环境示意图;
图3A为本申请一实施例的芯片验证系统示意图;
图3B为本申请一实施例的芯片验证系统示意图;
图4为本申请一实施例的芯片验证系统示意图;
图5为本申请一实施例的芯片验证方法的流程示意图;
图6为本申请一实施例的芯片验证装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
为了清楚的描述本实施例的方案,现将涉及的名词定义如下:
UVM:Universal Verification Methodology,通用验证方法学,以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口功能的验证环境。
DUT:Design Under Test,待测硬件设计。
DPI:Direct Programming Interface,直接编程接口。它能更加简单的连接SystemVerilog(SV语言)与C语言、C++语言。
IPC:Inter-Process Communication,进程间通信。
EDA:Electronic Design Automation,电子设计自动化。
VCS:是编译型Verilog模拟器。
NC-Verilog:Verilog硬体描述语言模拟器。
TB:TestBench,验证平台、验证环境。
UVC:UVM Verification Component,UVM验证组件。
如图1所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图1中以一个处理器为例。处理器11和存储器12通过总线10连接。存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程,以实现芯片验证在多核下的并行运行,加快了验证速度,进而缩短了芯片产品的验证周期。
于一实施例中,电子设备1可以是平板电脑、笔记本电脑、台式计算机或者多个计算机组成的大型计算系统等设备。
请参见图2,为基于UVM平台的一个芯片验证环境示意图,DUT(Design UnderTest,待测试设计)是一个完整的待测硬件芯片电路,其内部各子模块(ip_a至ip_h)之间是通过具体的接口信号直接或间接相连,env_a至env_h是为分别为子模块ip_a至子模块ip_h提供激励信号的验证模块,整个待测芯片的DUT通过静态例化的方式例化在一个TB中运行。然后当待测芯片的DUT规模较大时,验证环境的规模随着扩大,仿真工具运行时的负载也随之增大。单单依靠一个TB对整个芯片电路的DUT进行验证,其速度已无法满足实际需求。
请参看图2,其为本申请一实施例的芯片验证系统200,该芯片验证系统200可以搭建在如图1所示的电子设备1中,该芯片验证系统200可以包括:多个验证模拟器、多个相连的验证环境以及待测芯片,该系统可以基于UVM平台实现,其中:
验证模拟器可以是VCS、也可以是NC-Verilog、irun等EDA工具,图2中以2个VCS为验证模拟器为例。
于一实施例中,每个验证模拟器运行在一个CPU内核上,多个验证模拟器就可以并行运行在多个CPU内核上。
验证环境可以由TB验证平台实现,每个验证模拟器VCS上编译运行一个验证环境TB,改变传统验证环境统一待测芯片的TB和DUT在一个仿真工具中运行的模式,多个验证环境可以是由多个验证平台TB组成的类似于分布式的验证平台。如图2所示,以两个验证环境TB_A和验证环境TB_B分别运行在两个VCS验证模拟器上进行编译为例,可以得到验证环境TB_A运行在CPU内核CoreA上,即TB_A Runs at CoreA,验证环境TB_B运行在CPU内核CoreB上,即TB_B Runs at CoreB。
其中,每个验证环境用于例化待测芯片的一个子电路,待测芯片可以包括多个子电路。待测芯片可以是需要验证的芯片设计,可以将其按照实际需求切割成包括多个子电路,此处子电路就是每个验证环境TB中例化的待测电路DUT,在实际使用过程中,一个子电路在一个验证环境中进行例化,也就是在每个验证环境TB中利用验证模拟器描述一个子电路(DUT)的硬件结构。多个TB中的多个DUT共同组成待测芯片的整体结构,如此待测芯片不再依赖于一个TB。可以根据实际场景中待测芯片的规模及扩展性特点进行分割例化。比如本实施例中以片上互联网络电路芯片为例,可以将传统的验证环境分割成多个子TB,与此同时待测芯片也分割成对应个数的子DUT。如图2所示,以2个TB为例,待测芯片在TB中例化成了2个子DUT:DUTPartA和DUTPartB,并且它们分别运行在各自独立的验证环境TB中。每个子TB独立的在仿真工具验证模拟器如VCS中进行编译和仿真。
于一实施例中,上述多个验证环境TB之间可以相互通信,每个验证环境中TB包括至少一个验证模块env。其中每个验证环境TB在一个验证模拟器VCS上编译运行时,验证模块env为当前所在的验证环境TB的子电路DUT产生激励信号,并采集子电路DUT的输出信号,通过检查多个子电路DUT的输出信号完成对整个待测芯片的验证。
上述芯片验证系统200,将传统的芯片验证平台,切割成多个验证环境,可以用于将待测芯片拆分成多个子电路,每个子电路分别例化在一个验证环境中,并且每个验证环境独立地在验证模拟器中编译运行,如此减轻了仿真运行时的负载。由于每个子环境的仿真运行是相互独立的,相当于实现了整个待测芯片的验证环境通过使用多个验证模拟器,实现了芯片验证在多个CPU核上的并行运行,加快了仿真速度、拓宽了验证环境复用性。
请参看图3,其为本申请一实施例的芯片验证系统200,每个验证环境可以用于例化子电路的多个子模块,即每个子电路DUT包括:多个子模块ip,子模块ip为待测芯片中具备独立功能的模块,比如芯片设计中可以独立完成某操作的功能模块。如图3所示,以每个TB为的子电路包括4个子模块为例,验证环境TB_A的子电路DUTPartA中可以包括子模块ip_a至子模块ip_d,验证环境TB_B的子电路DUTPartB中可以包括子模块ip_e至子模块ip_h。
于一实施例中,一个验证环境TB中可以例化一个或多个验证模块env。一个验证模块env连接一个子模块ip,用于为子模块ip产生激励信号,并采集子模块ip的输出信号。验证模块env是验证环境TB中的一个单元模块,可以是用户自定义的UVC,也可以是验证VIP(Verification IP,验证模型)。每个验证模块env可以为与其相连的子模块ip产生合法激励,并监测并采集子模块ip的输出。
于一实施例中,如图3所示,在验证环境TB_A中,验证模块env_a至验证模块env_d分别对应为子模块ip_a至子模块ip_d提供验证时的激励信号,在验证环境TB_B中,验证模块env_e至验证模块env_h分别对应为子模块ip_e至子模块ip_h提供验证时的激励信号,并监测采集对应子模块ip的输出。
于一实施例中,每个验证环境还包括:通信接口,分别连接多个子模块,用于验证环境中的进程间数据交互。如图3所示,每个验证环境TB中添加一个Connect UVC(UVMVerification Component,UVM验证组件)来完成通信接口的功能,负责不同TB之间、不同DUT之间数据的进程级交互以及进程同步。
于一实施例中,负责完成通信接口功能的Connect UVC:主要用于进程间数据交互的统筹工作。主要包括两个方面:发送当前数据到Remote(远程)进程,以及接收Remote进程发来的数据。
于一实施例中,芯片验证系统还包括:通信模块,分别连接每个验证环境中的通信接口,用于在不同验证环境之间进行进程间的数据交互。通信模块可以是基于IPC机制,比如可以采用套接字(SOCKET)方式进行进程间通信。该方式允许并行运行在多个CPU内核Core上的进程可以独立的发送或接收数据,从而达到并行运行的效果。如此,不同验证环境中的子电路DUT内部各子模块ip之间的模块级的信号通信,可以通过各验证环境TB之间的进程级通信(IPC)来完成。
于一实施例中,也可以采用共享内存、消息队列等方式来实现并行运行的仿真的进程间通信。
于一实施例中,通信接口包括:数据调用接口,用于调用预设接口函数,在进程间进行数据发送和接收。该数据调用接口可以是DPI接口或者其他类型的数据接口。如图3所示,以DPI接口为例,当一个验证环境TB本地进程需要向Romote进程发送请求或者回复Response信息时,Connect UVC中的TX_queue(发送端)会采集当前验证环境TB中子电路DUT的输出信号,并将其打包,通过DPI接口发送出去。当本地进程通过DPI接口收到Remote进程发来的数据,其可能是访问请求或者提供的Response数据,Connect UVC的RX_engine(接收端)会将收到的数据封装成sequence,然后通过sequence机制将数据发送给DUT。实际场景中,数据接收和数据发送可以是并行进行的。
于一实施例中,可以预先通过Connect UVC声明import语句导入用C语言设计好的API函数,将需要送出的数据通过通信模块的IPC通信机制发送出去。同时,Connect UVC也通过引入从C语言设计好的API函数,监控并采集Remote进程送来的数据。需要注意的是,当SystemVerilog与C环境交互时,会发生数据交换,数据需要在两端以完全相同的方式解释,否则通信将失败,因此要提前定义好SystemVerilog环境和C语言代码之间数据交流的格式,以及进程间通信方式。
当然根据待测芯片的实际规模情况,还可以将待测芯片分割成更多的子电路DUT,这样可以进一步减少以CPU内核core运行的负载。如图4所示,为把芯片拆分成N(N为正整数)个子电路DUT的情况,其中每个子电路DUT包括n(n为正整数)个子模块ip,N个子电路DUT分别对应例化在N个验证环境TB中,在验证时,每个TB在一个验证模拟器中编译运行,实现了一个TB运行在一个CPU内核上,共需要N个CPU内核Core。实现了多核并行对一个待测芯片进行验证测试,加快了验证速度。
于一实施例中,上述是以总线片上互联网络电路芯片作为待测芯片为例进行说明。实际场景中,上述芯片验证系统还适用于任何可以进行验证环境拆分为可以并行运行的子环境的产品验证,例如SOC验证环境的仿真实现并行运行等。
上述芯片验证系统200,通过将传统的UVM环境的整体验证平台,切割成多个子验证环境,并且每个子环境独立地在VCS中编译运行,直接在子环境中直接对DUT的子模块进行例化,从而将一个完整待测芯片的硬件电路分成几个子DUT电路,保证每个子DUT分别在各自的独立TB中进行仿真,采用SOCKET(套接字)方式来实现子环境之间的进程级通信,减轻了仿真运行时的core负载。由于每个子环境的仿真运行是相互独立的,相当于实现了整个验证环境通过使用多个VCS,实现了验证环境仿真在多个core上的并行运行,缩短了仿真的运行时间,进而缩短了产品的验证周期。并且每个核的验证环境,只需要考虑部分待测芯片的DUT的需求,降低了验证平台设计的复杂度。另外上述芯片验证系统还具备如下优点:
1、良好的可扩展性,可以跟随片上互联网络规模需求的变化,灵活选择并行仿真的核数,只需要修改运行脚本中的验证环境参数配置,例如分组数目,确保TB环境可以得到切分,即可完成验证环境的扩展。
2、良好的可配置性,根据产品需求,灵活配置每个核下需要仿真的DUT单元的规模。
3、良好的可移植性,只需要修改验证环境中DPI接口中需要进行IPC间通信的数据类型以及传输帧频率,保证IPC进程间各子TB环境可以获取到通信内容,即可完成验证平台并行运行机制的移植。
4、适用于使用已有IP验证环境来快速搭建sub-system验证环境,拓宽了IP验证环境复用性。
请参看图5,其为本申请一实施例的芯片验证方法,可以由图1所示的电子设备1来执行,并应用于如上述图2至图4对应实施例中的芯片验证系统200中,该方法包括:
步骤501:第一验证环境中的第一验证模块生成验证指令,并发送验证指令至第一子模块。
在本步骤中,第一子模块是例化在第一验证环境中的待测芯片的电路模块,也就是图2至图4中所示的DUT的子模块ip,比如第一验证环境可以是图2中所示的验证环境TB_A,第一子模块可以是验证环境TB_A中的子模块ip_a至子模块ip_d中的任一个电路模块。
验证指令中携带有待访问的第二子模块的标识。验证指令可以是读请求或者返回数据等指令,第二子模块是例化在第二验证环境中的待测芯片的电路模块。比如第二验证环境可以是图2中所示的验证环境TB_B,第二子模块可以是验证环境TB_B中的子模块ip_e至子模块ip_h中的任一个电路模块。其中第一验证环境和第二验证环境是芯片验证系统200中任意两个验证环境。
以图2中实施例为例,在验证仿真运行时,第一验证环境TB_A和第二验证环境TB_B分别运行在CPU内核core_A和CPU内核core_B上。在第一验证环境TB_A中,每个第一验证模块env分别为各自的第一子模块ip产生相应的验证指令,比如请求指令或Response数据等。第一验证环境TB_A内各第一子模块ip之间的通信是直接通过硬件连线直接传递,例如第一子模块ip_a和第一子模块ip_b之间传递数据。而如果第一验证环境TB_A需要向第二验证环境TB_B发送数据时,需要通过进程间通信。以第一子模块ip_a读取第二子模块ip_h内某地址数据为例,首先第一验证模块env_a会产生一个读请求RdReq(即验证指令),并发送给第一子模块ip_a。
步骤502:第一子模块将接收到的验证指令发送给第一验证环境的第一通信接口。
在本步骤中,仍然以图2所示实施例为例,第一子模块ip_a接收到读请求RdReq后,第一子模块ip_a可以先解析该读请求,比如解析出接收端是第二子模块ip_h的标识,则可以确定该读请求要送往第二子模块ip_h,那么第一子模块ip_a会将数据发送给第一验证环境TB_A的第一通信接口Connect UVC。
步骤503:第一通信接口根据第二子模块的标识,通过数据调用接口,调用预设接口函数,将验证指令发送至第二验证环境。
在本步骤中,在将验证指令发送至第二验证环境之前,第一通信接口可以按照预设格式打包验证指令,比如,第一验证环境TB_A的第一通信接口Connect UVC会将该读请求RdReq信息按照预设格式进行打包,并通过DPI方式调用预设接口函数SOCKET API函数,将该请求数据发送到第二验证环境TB_B中。
步骤504:第二验证环境根据第二子模块的标识,通过第二验证环境的第二通信接口发送验证指令至第二子模块。
在本步骤中,第二验证环境TB_B也可以通过DPI方式调用预设接口函数SOCKETAPI函数,实时监控并采集到该读请求数据。并基于接收端第二子模块ip_h的标识,通过第二通信接口Connect UVC将收到的读请求数据发送给第二子模块ip_h。此时读请求信息到达目的地,标志着第一验证环境TB_A和第二验证环境TB_B之间完成了一次数据通信。
步骤505:第二验证环境中的第二验证模块获取第二子模块接收到的验证指令,并根据验证指令生成返回数据,发送返回数据至第二子模块。
在本步骤中,在第二验证环境TB_B中,第二验证模块env_h会采集到第二子模块ip_h接收到的读请求,并且产生相应的读返回数据回复给第二子模块ip_h。
步骤506:第二子模块通过第二通信接口,将返回数据返回至第一子模块。
在本步骤中,读返回数据会被送给第二验证环境TB_B的第二通信接口ConnectUVC,然后通过进程级通信方式到达第一验证环境TB_A的第一子模块ip_a。在上述数据交互过程中,验证模块可以检测各方的数据发送与接收情况,并基于此验证各个子模块的电路设计是否符合要求,并基于多个验证环境的并行验证结果完成对待测芯片的验证。
于一实施例中,当待测芯片规模很大时,可以采用更多的子TB对其进行验证,如图4所示。此时各个验证环境TB之间交互的数据仍然是按照上述步骤501至步骤506的路径进行传递。当然这需要TB环境以及待测芯片本身可以支持可动态配置的分组机制,保证在环境脚本启动验证环境时,可以根据启动命令传入的分组数量,自动将传统的整个大的验证环境切分成可以独立工作的子TB环境。而分组数量的选择,是根据TB环境以及待测芯片的规模进行的选择。从而实现如图4所示的环境连接以及运行方式。
请参看图6,其为本申请一实施例的芯片验证装置600,该装置可应用于图1所示的电子设备1,并应用于如上述图2至图4对应实施例中的芯片验证系统200中,该装置包括:验证环境生成模块601、第一验证指令发送模块602、函数调用模块603和第二验证指令发送模块604,各个模块的原理关系如下:
验证环境生成模块601,用于第一验证环境中的第一验证模块生成验证指令,并发送所述验证指令至第一子模块;其中,所述第一子模块是例化在所述第一验证环境中的待测芯片的电路模块,所述验证指令中携带有待访问的第二子模块的标识;所述第二子模块是例化在第二验证环境中的待测芯片的电路模块,所述第一验证环境和所述第二验证环境是所述芯片验证系统中任意两个验证环境;详细参见上述实施例中对步骤501的描述。
第一验证指令发送模块602,用于所述第一子模块将接收到的所述验证指令发送给所述第一验证环境的第一通信接口;详细参见上述实施例中对步骤502的描述。
函数调用模块603,用于所述第一通信接口根据所述第二子模块的标识,通过数据调用接口,调用预设接口函数,将所述验证指令发送至所述第二验证环境;详细参见上述实施例中对步骤503的描述。
第二验证指令发送模块604,用于所述第二验证环境根据所述第二子模块的标识,通过所述第二验证环境的第二通信接口发送所述验证指令至所述第二子模块。详细参见上述实施例中对步骤504的描述。
于一实施例中,还包括:验证指令打包模块605,用于在所述将所述验证指令发送至所述第二验证环境之前,所述第一通信接口按照预设格式打包所述验证指令。
于一实施例中,还包括:验证指令获取模块606,用于所述第二验证环境中的第二验证模块获取所述第二子模块接收到的所述验证指令,并根据所述验证指令生成返回数据,发送所述返回数据至所述第二子模块。详细参见上述实施例中对步骤505的描述。
于一实施例中,还包括:数据返回模块607,用于所述第二子模块通过所述第二通信接口,将所述返回数据返回至所述第一子模块。详细参见上述实施例中对步骤506的描述。
上述芯片验证装置600的详细描述,请参见上述实施例中相关方法步骤的描述。
本发明实施例还提供了一种非暂态电子设备可读存储介质,包括:程序,当其在电子设备上运行时,使得电子设备可执行上述实施例中方法的全部或部分流程。其中,存储介质可为磁盘、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccess Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等。存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (17)
1.一种芯片验证系统,其特征在于,包括:
多个验证模拟器;
多个相连的验证环境,每个所述验证模拟器分别编译运行一个所述验证环境,所述验证环境中包括至少一个验证模块;
每个所述验证环境用于例化待测芯片的一个子电路,所述待测芯片包括多个子电路;
其中,每个所述验证环境在一个所述验证模拟器上编译运行时,所述验证模块为当前所述验证环境的所述子电路产生激励信号,并采集所述子电路的输出信号,通过检查多个所述子电路的所述输出信号完成对整个所述待测芯片的验证。
2.根据权利要求1所述的芯片验证系统,其特征在于,每个所述验证环境用于例化所述子电路的多个子模块,所述子模块为所述待测芯片中具备独立功能的模块。
3.根据权利要求2所述的芯片验证系统,其特征在于,一个所述验证环境包括多个所述验证模块;一个所述验证模块连接一个所述子模块,用于为所述子模块产生激励信号,并采集所述子模块的输出信号。
4.根据权利要求2所述的芯片验证系统,其特征在于,每个所述验证环境还包括:
通信接口,分别连接所述多个子模块,用于所述验证环境中的进程间数据交互。
5.根据权利要求4所述的芯片验证系统,其特征在于,所述通信接口包括:
数据调用接口,用于调用预设接口函数,在进程间进行数据发送和接收。
6.根据权利要求4所述的芯片验证系统,其特征在于,还包括:
通信模块,分别连接每个所述验证环境中的所述通信接口,用于在不同所述验证环境之间进行进程间的数据交互。
7.根据权利要求1所述的芯片验证系统,其特征在于,每个所述验证模拟器运行在一个CPU内核上。
8.一种芯片验证方法,其特征在于,用于芯片验证系统,所述芯片验证系统包括多个相连的验证环境;所述方法包括:
第一验证环境中的第一验证模块生成验证指令,并发送所述验证指令至第一子模块;其中,所述第一子模块是例化在所述第一验证环境中的待测芯片的电路模块,所述验证指令中携带有待访问的第二子模块的标识;所述第二子模块是例化在第二验证环境中的待测芯片的电路模块,所述第一验证环境和所述第二验证环境是所述芯片验证系统中任意两个验证环境;
所述第一子模块将接收到的所述验证指令发送给所述第一验证环境的第一通信接口;
所述第一通信接口根据所述第二子模块的标识,通过数据调用接口,调用预设接口函数,将所述验证指令发送至所述第二验证环境;
所述第二验证环境根据所述第二子模块的标识,通过所述第二验证环境的第二通信接口发送所述验证指令至所述第二子模块。
9.根据权利要求8所述的芯片验证方法,其特征在于,在所述将所述验证指令发送至所述第二验证环境之前,还包括:
所述第一通信接口按照预设格式打包所述验证指令。
10.根据权利要求8所述的芯片验证方法,其特征在于,还包括:
所述第二验证环境中的第二验证模块获取所述第二子模块接收到的所述验证指令,并根据所述验证指令生成返回数据,发送所述返回数据至所述第二子模块。
11.根据权利要求10所述的芯片验证方法,其特征在于,还包括:
所述第二子模块通过所述第二通信接口,将所述返回数据返回至所述第一子模块。
12.一种芯片验证装置,其特征在于,用于芯片验证系统,所述芯片验证系统包括多个相连的验证环境;所述装置包括:
验证环境生成模块,用于第一验证环境中的第一验证模块生成验证指令,并发送所述验证指令至第一子模块;其中,所述第一子模块是例化在所述第一验证环境中的待测芯片的电路模块,所述验证指令中携带有待访问的第二子模块的标识;所述第二子模块是例化在第二验证环境中的待测芯片的电路模块,所述第一验证环境和所述第二验证环境是所述芯片验证系统中任意两个验证环境;
第一验证指令发送模块,用于所述第一子模块将接收到的所述验证指令发送给所述第一验证环境的第一通信接口;
函数调用模块,用于所述第一通信接口根据所述第二子模块的标识,通过数据调用接口,调用预设接口函数,将所述验证指令发送至所述第二验证环境;
第二验证指令发送模块,用于所述第二验证环境根据所述第二子模块的标识,通过所述第二验证环境的第二通信接口发送所述验证指令至所述第二子模块。
13.根据权利要求12所述的芯片验证装置,其特征在于,还包括:
验证指令打包模块,用于在所述将所述验证指令发送至所述第二验证环境之前,所述第一通信接口按照预设格式打包所述验证指令。
14.根据权利要求12所述的芯片验证装置,其特征在于,还包括:
验证指令获取模块,用于所述第二验证环境中的第二验证模块获取所述第二子模块接收到的所述验证指令,并根据所述验证指令生成返回数据,发送所述返回数据至所述第二子模块。
15.根据权利要求14所述的芯片验证装置,其特征在于,还包括:
数据返回模块,用于所述第二子模块通过所述第二通信接口,将所述返回数据返回至所述第一子模块。
16.一种电子设备,其特征在于,包括:
存储器,用以存储计算机程序;
处理器,用以执行所述计算机程序,以实现如权利要求8至11中任一项所述的方法。
17.一种非暂态电子设备可读存储介质,其特征在于,包括:程序,当其藉由电子设备运行时,使得所述电子设备执行权利要求8至11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110637807.6A CN113342583B (zh) | 2021-06-08 | 2021-06-08 | 芯片验证系统、方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110637807.6A CN113342583B (zh) | 2021-06-08 | 2021-06-08 | 芯片验证系统、方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342583A true CN113342583A (zh) | 2021-09-03 |
CN113342583B CN113342583B (zh) | 2022-11-29 |
Family
ID=77475311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110637807.6A Active CN113342583B (zh) | 2021-06-08 | 2021-06-08 | 芯片验证系统、方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342583B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114169272A (zh) * | 2021-11-19 | 2022-03-11 | 眸芯科技(上海)有限公司 | 芯片仿真中转换ip模块验证信息的自动化系统及应用 |
CN115086214A (zh) * | 2022-06-13 | 2022-09-20 | 新华三半导体技术有限公司 | 一种套片检测系统、方法、电子设备及存储介质 |
CN115248998A (zh) * | 2022-09-22 | 2022-10-28 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
CN116090403A (zh) * | 2023-02-13 | 2023-05-09 | 上海合见工业软件集团有限公司 | 支持多仿真器的命令处理系统 |
CN117033003A (zh) * | 2023-10-10 | 2023-11-10 | 沐曦集成电路(上海)有限公司 | 基于SystemVerilog的内存管理方法、电子设备和介质 |
TWI831340B (zh) * | 2022-08-24 | 2024-02-01 | 大陸商北京歐錸德微電子技術有限公司 | 快速初始化裝置與方法以及積體電路設計驗證系統 |
WO2024108496A1 (zh) * | 2022-11-24 | 2024-05-30 | 新华三半导体技术有限公司 | 一种芯片验证系统、方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180413A1 (en) * | 2004-02-17 | 2007-08-02 | Hyun-Ju Park | Chip design verification apparatus and method |
CN102439470A (zh) * | 2009-03-04 | 2012-05-02 | 阿尔卡特朗讯 | 用于使用多个处理器进行系统测试的方法与设备 |
CN104899369A (zh) * | 2015-06-01 | 2015-09-09 | 浪潮集团有限公司 | 一种利用perl脚本的仿真器多线程运行方法 |
CN111579959A (zh) * | 2019-02-15 | 2020-08-25 | 深圳市汇顶科技股份有限公司 | 芯片验证方法、装置及存储介质 |
CN112100952A (zh) * | 2020-09-14 | 2020-12-18 | 海光信息技术股份有限公司 | 一种集成电路后仿真方法、装置、电子设备及存储介质 |
CN112100014A (zh) * | 2020-11-18 | 2020-12-18 | 北京智芯微电子科技有限公司 | 无源无线通信芯片验证平台、构建方法及芯片验证方法 |
-
2021
- 2021-06-08 CN CN202110637807.6A patent/CN113342583B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180413A1 (en) * | 2004-02-17 | 2007-08-02 | Hyun-Ju Park | Chip design verification apparatus and method |
CN102439470A (zh) * | 2009-03-04 | 2012-05-02 | 阿尔卡特朗讯 | 用于使用多个处理器进行系统测试的方法与设备 |
CN104899369A (zh) * | 2015-06-01 | 2015-09-09 | 浪潮集团有限公司 | 一种利用perl脚本的仿真器多线程运行方法 |
CN111579959A (zh) * | 2019-02-15 | 2020-08-25 | 深圳市汇顶科技股份有限公司 | 芯片验证方法、装置及存储介质 |
CN112100952A (zh) * | 2020-09-14 | 2020-12-18 | 海光信息技术股份有限公司 | 一种集成电路后仿真方法、装置、电子设备及存储介质 |
CN112100014A (zh) * | 2020-11-18 | 2020-12-18 | 北京智芯微电子科技有限公司 | 无源无线通信芯片验证平台、构建方法及芯片验证方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114169272A (zh) * | 2021-11-19 | 2022-03-11 | 眸芯科技(上海)有限公司 | 芯片仿真中转换ip模块验证信息的自动化系统及应用 |
CN115086214A (zh) * | 2022-06-13 | 2022-09-20 | 新华三半导体技术有限公司 | 一种套片检测系统、方法、电子设备及存储介质 |
CN115086214B (zh) * | 2022-06-13 | 2024-01-19 | 新华三半导体技术有限公司 | 一种套片检测系统、方法、电子设备及存储介质 |
TWI831340B (zh) * | 2022-08-24 | 2024-02-01 | 大陸商北京歐錸德微電子技術有限公司 | 快速初始化裝置與方法以及積體電路設計驗證系統 |
CN115248998A (zh) * | 2022-09-22 | 2022-10-28 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
CN115248998B (zh) * | 2022-09-22 | 2023-01-03 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
WO2024060593A1 (zh) * | 2022-09-22 | 2024-03-28 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
WO2024108496A1 (zh) * | 2022-11-24 | 2024-05-30 | 新华三半导体技术有限公司 | 一种芯片验证系统、方法、装置、设备及存储介质 |
CN116090403A (zh) * | 2023-02-13 | 2023-05-09 | 上海合见工业软件集团有限公司 | 支持多仿真器的命令处理系统 |
CN116090403B (zh) * | 2023-02-13 | 2023-12-26 | 上海合见工业软件集团有限公司 | 支持多仿真器的命令处理系统 |
CN117033003A (zh) * | 2023-10-10 | 2023-11-10 | 沐曦集成电路(上海)有限公司 | 基于SystemVerilog的内存管理方法、电子设备和介质 |
CN117033003B (zh) * | 2023-10-10 | 2024-01-19 | 沐曦集成电路(上海)有限公司 | 基于SystemVerilog的内存管理方法、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113342583B (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113342583B (zh) | 芯片验证系统、方法、装置、设备和存储介质 | |
US10089425B2 (en) | Resource mapping in a hardware emulation environment | |
US8214195B2 (en) | Testing in a hardware emulation environment | |
CN102508753B (zh) | Ip核验证系统 | |
CN106156424B (zh) | 一种仿真系统 | |
CN114880977B (zh) | 软硬件联合仿真系统、方法、装置、设备和存储介质 | |
CN113434355B (zh) | 模块验证方法、uvm验证平台、电子设备及存储介质 | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
US20090248390A1 (en) | Trace debugging in a hardware emulation environment | |
CN104750603A (zh) | 一种多核dsp软件仿真器及其物理层软件测试方法 | |
CN116028292B (zh) | 用于远程直接内存访问仿真验证的仿真验证系统及方法 | |
CN111859834B (zh) | 一种基于uvm的验证平台开发方法、系统、终端及存储介质 | |
CN110071822A (zh) | 一种针对5g核心网基础设施的测试装置及测试方法 | |
WO2024130861A1 (zh) | 一种云原生的硬件逻辑仿真fpga加速方法及系统 | |
CN116821001B (zh) | 输入输出子系统的验证方法、装置、电子设备及介质 | |
CN114611445A (zh) | 基于FPGA原型的SoC软硬件协同验证系统及方法 | |
CN117195783A (zh) | 一种验证芯片设计的方法 | |
CN118052196A (zh) | 基于uvm的芯片验证测试方法、装置及电子设备 | |
CN115904852B (zh) | 一种用于数据处理器的自动化测试方法、设备及介质 | |
US11295051B2 (en) | System and method for interactively controlling the course of a functional simulation | |
CN113792522A (zh) | 仿真验证方法、装置及计算设备 | |
KR20230086687A (ko) | 고속 기능 프로토콜 기반 테스트 및 디버그 | |
US11403449B1 (en) | Systems and methods for configurable switches for verification IP | |
US11630935B1 (en) | Data traffic injection for simulation of circuit designs | |
US20230071521A1 (en) | Detecting simulation, emulation and prototyping issues using static analysis tools |
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 |