CN116126700A - 一种基于SystemC的芯片验证方法及系统 - Google Patents
一种基于SystemC的芯片验证方法及系统 Download PDFInfo
- Publication number
- CN116126700A CN116126700A CN202211708161.7A CN202211708161A CN116126700A CN 116126700 A CN116126700 A CN 116126700A CN 202211708161 A CN202211708161 A CN 202211708161A CN 116126700 A CN116126700 A CN 116126700A
- Authority
- CN
- China
- Prior art keywords
- chip
- systemc
- coverage
- tested
- verification
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明公开了一种基于SystemC的芯片验证方法及系统,其中所述方法包括:搭建SystemC验证平台,包括驱动器、监视器和比较器;在SystemC验证平台上安装CRAVE扩展库和FC4SC扩展库;驱动器调用CRAVE扩展库生成受约束的随机测试用例,再将随机测试用例和定向测试用例反馈至被测芯片和参考模型进行模拟运行;监视器收集被测芯片产生的响应结果和参考模型产生的参考结果;比较器将响应结果和参考结果进行比对,以验证被测芯片的功能正确性;监视器调用FC4SC扩展库对SystemC验证平台的功能覆盖率进行收集,以形成覆盖率报告输出。本发明可以提高芯片验证的效率,也可以使得芯片验证工作更具全面性。
Description
技术领域
本发明涉及芯片验证技术领域,具体是涉及一种基于SystemC的芯片验证方法及系统。
背景技术
随着集成电路行业技术的发展,SoC(System on Chip)芯片的规模越来越大,芯片上所能实现的功能复杂度甚至超越摩尔定律所预言的集成度发展速度,同时芯片的设计周期也由以前的18个月缩短到6个月甚至更短。由于芯片规模和复杂性的增加,导致芯片验证工作占据整个设计周期的大部分时间,同时芯片验证工作也变得异常困难。目前已有技术人员提出搭建传统的SystemC验证平台来完成芯片验证任务,但是传统的SystemC验证平台仅能提供单一的定向测试用例以供被测芯片模拟运行,需要耗费大量的人力物力,且无法获取功能覆盖率以量化分析芯片功能验证的完备性。
发明内容
本发明提供一种基于SystemC的芯片验证方法及系统,以解决现有技术中所存在的一个或多个技术问题,至少提供一种有益的选择或创造条件。
第一方面,提供一种基于SystemC的芯片验证方法,所述方法包括:
搭建SystemC验证平台,包括驱动器、监视器和比较器;
在所述SystemC验证平台上安装CRAVE扩展库和FC4SC扩展库;
所述驱动器根据CRT原理调用所述CRAVE扩展库生成受约束的随机测试用例,再将所述随机测试用例和用户提供的定向测试用例反馈至被测芯片和参考模型进行模拟运行;
所述监视器收集所述被测芯片在模拟运行时产生的响应结果以及所述参考模型在模拟运行时产生的参考结果;
所述比较器将所述响应结果和所述参考结果进行比对,以验证所述被测芯片的功能正确性;
所述监视器根据CDV原理调用所述FC4SC扩展库对所述被测芯片的功能覆盖率进行收集,以形成可视化的覆盖率报告输出。
进一步地,所述参考模型是所述SystemC验证平台根据所述被测芯片的功能进行建模得到的。
进一步地,所述CRAVE扩展库的内部设置有SMT约束求解器,所述SMT约束求解器用于在带约束下对C/C++环境中出现的第一变量类型和SystemC环境下出现的第二变量类型进行随机化。
进一步地,所述第一变量类型包括整型、数组、STL向量和枚举,所述第二变量类型包括带固定位宽的sc_int变量和sc_bv变量。
进一步地,所述CRAVE扩展库的使用过程为:
继承crv_sequence_item基类,以形成受约束的随机类;
在所述受约束的随机类中定义所有随机变量,并通过构造函数定义关于所述所有随机变量的约束,包括取值范围约束、条件约束、内嵌约束和软约束;
调用randomize函数将所述所有随机变量在所述约束下进行随机化,生成关于所述被测芯片的随机测试用例。
进一步地,所述FC4SC扩展库的内部至少提供覆盖组、覆盖点和bin,任一覆盖组包括一个或多个覆盖点,所述覆盖点指代采样变量,任一覆盖点包括一个或多个bin,所述bin指代采样变量的具体数值。
进一步地,所述FC4SC扩展库的使用过程为:
继承covergroup基类,以形成覆盖组类;
在所述覆盖组类中定义所有覆盖点,并为每个覆盖点定义对应的bin;
调用sample函数对所述所有覆盖点的bin进行采样,得到关于所述被测芯片在当前测试过程中的功能覆盖率。
第二方面,提供一种基于SystemC的芯片验证系统,包括SystemC验证平台和被测芯片,所述SystemC验证平台包括驱动器、监视器和比较器,并且在所述SystemC验证平台上安装CRAVE扩展库和FC4SC扩展库;
所述驱动器用于根据CRT原理调用所述CRAVE扩展库生成受约束的随机测试用例,再将所述随机测试用例和用户提供的定向测试用例反馈至所述被测芯片和参考模型进行模拟运行;其中,所述参考模型是所述SystemC验证平台根据所述被测芯片的功能进行建模得到的;
所述监视器用于收集所述被测芯片在模拟运行时产生的响应结果以及所述参考模型在模拟运行时产生的参考结果;
所述比较器用于将所述响应结果和所述参考结果进行比对,以验证所述被测芯片的功能正确性;
所述监视器还用于根据CDV原理调用所述FC4SC扩展库对所述被测芯片的功能覆盖率进行收集,以形成可视化的覆盖率报告输出。
第三方面,提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序以实现如第一方面所述的基于SystemC的芯片验证方法。
第四方面,提供一种计算机可读存储介质,其上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的基于SystemC的芯片验证方法。
本发明至少具有以下有益效果:与传统的SystemC验证平台相比,驱动器不仅可以提供单一的定向测试用例,还可以通过调用CRAVE扩展库产生受约束的随机测试用例,能够有效地减少编写定向测试用例的工作量,并且通过随机测试方式能够更为全面地查找出被测芯片中的设计漏洞。与传统的SystemC验证平台相比,监视器不仅可以收集被测芯片输出的响应结果以及参考模型输出的参考结果,还可以通过调用FC4SC扩展库来收集被测芯片中的功能覆盖率并生成可视化的覆盖率报告,进而量化当前对被测芯片的验证进度,确保对被测芯片的验证已达到要求,使得对被测芯片的验证工作更具有全面性和完备性。本发明所提出的SystemC验证平台能够在一定程度上代替SystemVerilog作为验证语言使用,尤其是针对C/C++/SystemC环境下的芯片设计。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1是本发明实施例中的一种基于SystemC的芯片验证方法的流程示意图;
图2是本发明实施例中的关于CRAVE扩展库调用的部分代码示意图;
图3是本发明实施例中的关于FC4SC扩展库调用的部分代码示意图;
图4是本发明实施例中的关于覆盖率报告的示意图;
图5是本发明实施例中的一种基于SystemC的芯片验证系统的组成示意图;
图6是本公开实施例中的计算机设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,虽然在系统示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于系统中的模块划分,或流程图中的顺序执行所示出或描述的步骤。本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序,应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限定于清楚列出的那些步骤或单元,而是可以包含没有清楚列出的对于这些过程、方法、产品或装置固有的其他步骤或单元。
首先,对本发明中涉及的部分名词进行解释如下:
SystemC是由Accellera组织拥有的开源库,其在C++编程语言的基础上增加硬件时序、硬件模块、端口、进程、并发和响应等硬件行为,成为一种软硬件协同语言。SystemC可以是硬件描述语言,像Verilog那样为RTL(Register Transfer Level,寄存器转换级)设计建模;SystemC也可以是软件编程语言,像编写软件程序那样为自身设计的整个系统建模。另外,SystemC不仅可以将设计行为描述在RTL级,还可以描述在事务级、行为级、算法级等高抽象层次中,当SystemC设计描述在高抽象层次时将具有更少的时序信息,有效减少仿真时间,提高芯片验证的效率,因此SystemC在软硬件的协同设计和验证中发挥着重要作用。
请参考图1,图1是本发明实施例提供的一种基于SystemC的芯片验证方法的流程示意图,所述方法包括如下:
步骤S110、搭建SystemC验证平台,包括驱动器、监视器和比较器;
步骤S120、在所述SystemC验证平台上安装CRAVE扩展库和FC4SC扩展库;
步骤S130、所述驱动器根据CRT原理调用所述CRAVE扩展库生成受约束的随机测试用例,再将所述随机测试用例和用户提供的定向测试用例反馈至被测芯片和参考模型进行模拟运行;
步骤S140、所述监视器收集所述被测芯片在模拟运行时产生的响应结果以及所述参考模型在模拟运行时产生的参考结果;
步骤S150、所述比较器将所述响应结果和所述参考结果进行比对,以验证所述被测芯片的功能正确性;
步骤S160、所述监视器根据CDV原理调用所述FC4SC扩展库对所述被测芯片的功能覆盖率进行收集,以形成可视化的覆盖率报告输出。
需要说明的是,在传统SystemC验证平台中也同样设置有传统驱动器(Driver)、传统监视器(Monitor)和传统比较器(Checker),首先通过所述传统驱动器发送定向测试激励给DUT(Design Under Test,待测设计),其次通过所述传统监视器收集DUT输出的响应结果,最后通过所述传统比较器将该响应结果与预先输入的正确结果(Golden Output)进行比对,以此来验证DUT功能的正确性。
随着DUT的复杂度和规模越来越大,为每一个测试点均提供定向测试已经变得不可能,并且部分DUT中的错误很难通过定向的清单式检查来及时发现,为此本发明实施例提出上述步骤S130对所述传统驱动器的基本功能作出改进。
在传统SystemC验证平台的应用过程中,无法量化对DUT的验证进度,即无法确认对DUT的验证是否可以结束、对DUT的验证是否完备等等,为此本发明实施例提出上述步骤S160对所述传统监视器的基本功能作出改进。
在本发明实施例中,上述步骤S120所提及到的所述CRAVE(Constrained RAndomVerification Enviroment)扩展库是基于CRT(Constrained Random Test,受约束的随机测试)原理提出的,其可以在C/C++/SystemC环境下应用,在语法上非常接近SystemVerilog的受约束随机测试。
更为具体的,所述CRAVE扩展库的内部实际设置有SMT(Satisfiability modulotheories,可满足性模理论)约束求解器,可以在带约束情况下对C/C++环境中出现的第一变量类型完成随机化处理,其中所述第一变量类型包括数组、枚举、STL向量和整型等等;此外,所述SMT约束求解器也可以在带约束情况下对SystemC环境下出现的第二变量类型完成随机化处理,其中所述第二变量类型包括具有固定位宽的sc_bv变量、sc_int变量等等。
需要说明的是,现有技术中通常采用BDD(Behavior Driven Development,行为驱动开发)约束求解器来执行变量随机化,相比而言,所述SMT约束求解器的性能更强且容量更大,最大可支持64位变量的随机化处理。
在本发明实施例中,上述步骤S120所提及到的所述FC4SC(Functional Coveragefor SystemC)扩展库是基于CDV(Coverage Driven Verification,覆盖率驱动验证)原理提出的,其同样可以在C/C++/SystemC环境下应用,实际提供一个与SystemVerilog类似的功能覆盖率收集机制。
更为具体的,所述FC4SC扩展库的内部实际提供覆盖组、覆盖点、bin、交叉覆盖点、数组类型的bin、非法bin和可忽略bin等等,其中任意一个覆盖组包括一个或者多个覆盖点,任意一个覆盖点包括一个或者多个bin;假设当某个覆盖组包括单个覆盖点,并且所述单个覆盖点包括单个bin时,所述单个覆盖点表征着采样变量,所述单个bin表征着所述采样变量的具体数值,如果所述单个bin被击中,则说明所述单个bin已被覆盖验证。
在上述步骤S120中,当用户需要在所述SystemC验证平台上安装所述CRAVE扩展库使用时,应当在编程代码中添加所述CRAVE扩展库的头文件并使用crave命名空间,编译命令时也需要调用所述CRAVE扩展库的头文件和库文件。
在上述步骤S120中,当用户需要在所述SystemC验证平台上安装所述FC4SC扩展库使用时,应当在编程代码中添加所述FC4SC扩展库的头文件,并且在编译命令时需要添加所述FC4SC扩展库的头文件的所在路径。
在上述步骤S130中,所述参考模型是所述SystemC验证平台按照所述被测芯片的可实现功能进行建模得到的,也就是说,所述参考模型实际为与所述被测芯片功能相同的C/C++/SystemC软件模型。
在上述步骤S130中,所述驱动器通过调用所述CRAVE扩展库来生成随机测试用例的具体实施过程包括:首先继承crv_sequence_item基类,以此成为受约束的随机类;其次在所述受约束的随机类中定义所有随机变量,同时通过调用构造函数可以定义有关所述所有随机变量的约束,其中所述约束包括条件约束、取值范围约束、软约束和内嵌约束等等,这一系列约束与SystemVerilog的语法和功能非常接近;最后调用randomize函数(其为所述受约束的随机类中的内建对象)可以将所述所有随机变量在所述约束下完成随机化处理,从而产生针对所述被测芯片的随机测试用例。
在上述步骤S160中,所述监视器通过调用所述FC4SC扩展库来收集功能覆盖率的具体实施过程包括:首先继承covergroup基类,以此成为覆盖组类;其次在所述覆盖组类中定义所有覆盖点,同时为其中每个覆盖点定义对应的bin;最后调用sample函数(其为所述覆盖组类中的内建对象)可以对所述所有覆盖点中的每个覆盖点所对应的bin进行采样,从而获取针对所述被测芯片在当前测试过程中的功能覆盖率。
需要说明的是,在执行完上述步骤S160并获取到针对所述被测芯片在当前测试过程中的覆盖率报告之后,用户可以通过EDA(Electronics Design Automation,电子设计自动化)工具对所述覆盖率报告进行查看。
需要说明的是,本发明实施例限定所述CRAVE扩展库应当与所述FC4SC扩展库结合使用,理由如下:若在所述SystemC验证平台上仅是安装所述CRAVE扩展库进行使用时,虽然可以产生无穷多的随机测试用例以供所述被测芯片进行模拟运行,但是无法定量和定性地衡量这些随机测试用例是否充足、这些随机测试用例是否能够覆盖到所述被测芯片的所有功能点、对所述被测芯片的验证是否能够完成等等;若在所述SystemC验证平台上仅是安装所述FC4SC扩展库进行使用时,虽然可以有效地收集到所述被测芯片的功能覆盖率以及定量地衡量对所述被测芯片的验证进度,但是只能通过用户手动编写针对所述被测芯片的定向测试用例,在所述被测芯片的功能足够复杂的情况下,需要收集的覆盖组、覆盖点和bin也足够多,仅编写定向测试用例会浪费大量时间成本和人员精力,也容易因疏忽而没有考虑到Corner测试场景。
在本发明实施例中,以FIFO(First In First Out,先进先出)芯片为例,利用上述步骤S110和上述步骤S120所提供的所述SystemC验证平台对所述FIFO芯片进行验证,具体操作方式如下:
第一步骤,所述驱动器调用所述CRAVE扩展库来优先定义针对所述FIFO芯片的四类随机变量,分别为复位信号(reset)、写数据信号(w_data)、写请求信号(w_req)和读请求信号(r_req),其次通过构造函数定义所述四类随机变量的约束,再调用randomize函数将所述四类随机变量在所述约束下完成随机化处理,进而产生针对所述FIFO芯片的第一随机测试用例,包括连续写5次读3次数据后又被复位的随机测试用例、连续写2次读5次数据但不复位的随机测试用例等等,部分代码可参见图2所示。
第二步骤,当所述FIFO芯片根据所述第一随机测试用例进行模拟运行时,所述监视器收集所述FIFO芯片所产生的第一响应结果,包括记录复位信号的状态标志位、判断复位后数据是否被清空、判断所述FIFO芯片在读写过程中的空满标志位是否被正确拉高等等。
第三步骤,通过所述SystemC验证平台按照所述FIFO芯片的可实现功能进行建模得到第一参考模型,当所述第一参考模型根据所述第一随机测试用例进行模拟运行时,所述监视器收集所述第一参考模型所产生的第一参考结果,同样包括记录复位信号的状态标志位、判断复位后数据是否被清空、判断所述FIFO芯片在读写过程中的空满标志位是否被正确拉高等等。
第四步骤,所述比较器将所述第一参考结果和所述第一响应结果进行比较,仅当两者相同时方可验证出所述FIFO芯片的功能正确。
第五步骤,所述监视器调用所述FC4SC扩展库优先为所述四类随机变量中的每一类随机变量创建覆盖点,同时为每个覆盖点定义对应的bin;其次调用sample函数对这四个覆盖点所对应的所有bin进行数值监测采样,部分代码可参见图3所示。
更为具体的,为所述复位信号创建对应的覆盖点reset_cvp,同时为该覆盖点reset_cvp定义对应的bin分别为low和high;为所述写请求信号创建对应的覆盖点w_req_cvp,同时为该覆盖点w_req_cvp定义对应的bin分别为low和high;为所述读请求信号创建对应的覆盖点r_req_cvp,同时为该覆盖点r_req_cvp定义对应的bin分别为low和high;为所述写数据信号创建对应的覆盖点w_data_cvp,同时为该覆盖点w_data_cvp定义对应的bin分别为zero、mid[0]、mid[1]、mid[2]、mid[3]、mid[4]、mid[5]、mid[6]、mid[7]、mid[8]、mid[9]和illegal,其中mid[0]-mid[9]这十个bin统称为数组类型的bin,illegal实际指代非法bin以对芯片模拟运行过程中出现的错误情况进行报错。
第六步骤,所述监视器在调用所述FC4SC扩展库完成所有bin采样之后,可以生成如图4所示的覆盖率报告;将上述第五步骤所提供的这四个覆盖点定义为一个覆盖组,从图4可以看出该覆盖组的功能覆盖率为100%,每个覆盖点的功能覆盖率均为100%,并且所有bin均被多次击中,仅有非法bin没有被击中,通过该覆盖率报告可以定量地衡量出所述FIFO芯片中与该覆盖组所关联的功能点已经完成验证。
需要说明的是,在上述第五步骤中也可以对所述FIFO芯片中的其他空满信号和其他状态标志位进行覆盖率监测,也可以定义交叉覆盖点来监测多个信号组合出现的情况和多个信号交叉复合出现的情况。
在本发明实施例中,SystemC验证平台所设置的驱动器不仅可以提供单一的定向测试用例,还可以通过调用CRAVE扩展库产生受约束的随机测试用例,能够有效地减少编写定向测试用例的工作量,并且通过随机测试方式能够更为全面地查找出被测芯片中的设计漏洞。SystemC验证平台所设置的监视器不仅可以收集被测芯片输出的响应结果以及参考模型输出的参考结果,还可以通过调用FC4SC扩展库来收集被测芯片中的功能覆盖率并生成可视化的覆盖率报告,进而量化当前对被测芯片的验证进度,确保对被测芯片的验证已达到要求,使得对被测芯片的验证工作更具有全面性和完备性。SystemC验证平台能够在一定程度上代替SystemVerilog作为验证语言使用,尤其是针对C/C++/SystemC环境下的芯片设计。
请参考图5,图5是本发明实施例提供的一种基于SystemC的芯片验证系统的组成示意图,所述系统包括被测芯片210和SystemC验证平台220,所述SystemC验证平台220上至少设置有驱动器221、监视器222和比较器223,同时在所述SystemC验证平台220上预先安装FC4SC扩展库和CRAVE扩展库。
在具体实施过程中,所述驱动器221可以按照CRT原理调用所述CRAVE扩展库产生受约束的随机测试用例,再将用户提供的定向测试用例和所述随机测试用例发送到参考模型和所述被测芯片完成模拟运行;所述监视器222可以对所述参考模型在模拟运行过程中生成的参考结果以及所述被测芯片在模拟运行过程中生成的响应结果进行收集;所述比较器223可以将所述参考结果和所述响应结果进行比对,从而验证所述被测芯片的功能正确性。
此外,所述监视器222还可以按照CDV原理调用所述FC4SC扩展库对所述被测芯片的功能覆盖率进行收集,从而生成可视化的覆盖率报告输出。
需要说明的是,所述参考模型是所述SystemC验证平台220按照所述被测芯片210的可实现功能进行建模得到的,也就是说,所述参考模型实际为与所述被测芯片210功能相同的C/C++/SystemC软件模型。
上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所实现的功能与上述方法实施例相同,并且所达到的有益效果与上述方法实施例相同,在此不再赘述。
此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中的基于SystemC的芯片验证方法。其中,所述计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSSMemory,随即存储器)、EPROM(EraSable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable ProgrammableRead-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是说,存储设备包括由设备(例如计算机、手机等)以可读的形式存储或传输信息的任何介质,可以是只读存储器、磁盘或光盘等。
此外,图6是本发明实施例提供的计算机设备的硬件结构示意图,所述计算机设备包括处理器320、存储器330、输入单元340和显示单元350等器件。本领域技术人员可以理解,图6示出的设备结构器件并不构成对所有设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储器330可用于存储计算机程序310以及各功能模块,处理器320运行存储在存储器330的计算机程序310,从而执行设备的各种功能应用以及数据处理。存储器可以是内存储器或外存储器,或者包括内存储器和外存储器。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明实施例所公开的存储器330包括但不限于上述这些类型的存储器。本发明实施例所公开的存储器330只作为例子而非作为限定。
输入单元340用于接收信号的输入,以及接收用户输入的关键字。输入单元340可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户利用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元350可用于显示用户输入的信息或提供给用户的信息以及终端设备的各种菜单。显示单元350可采用液晶显示器、有机发光二极管等形式。处理器320是终端设备的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。
作为一个实施例,所述计算机设备包括处理器320、存储器330和计算机程序310,其中所述计算机程序310被存储在所述存储器330中并被配置为由所述处理器320所执行,所述计算机程序310被配置用于执行上述实施例中的基于SystemC的芯片验证方法。
尽管本申请的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求,考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本申请的预定范围。此外,上文以发明人可预见的实施例对本申请进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本申请的非实质性改动仍可代表本申请的等效改动。
Claims (10)
1.一种基于SystemC的芯片验证方法,其特征在于,所述方法包括:
搭建SystemC验证平台,包括驱动器、监视器和比较器;
在所述SystemC验证平台上安装CRAVE扩展库和FC4SC扩展库;
所述驱动器根据CRT原理调用所述CRAVE扩展库生成受约束的随机测试用例,再将所述随机测试用例和用户提供的定向测试用例反馈至被测芯片和参考模型进行模拟运行;
所述监视器收集所述被测芯片在模拟运行时产生的响应结果以及所述参考模型在模拟运行时产生的参考结果;
所述比较器将所述响应结果和所述参考结果进行比对,以验证所述被测芯片的功能正确性;
所述监视器根据CDV原理调用所述FC4SC扩展库对所述被测芯片的功能覆盖率进行收集,以形成可视化的覆盖率报告输出。
2.根据权利要求1所述的基于SystemC的芯片验证方法,其特征在于,所述参考模型是所述SystemC验证平台根据所述被测芯片的功能进行建模得到的。
3.根据权利要求1所述的基于SystemC的芯片验证方法,其特征在于,所述CRAVE扩展库的内部设置有SMT约束求解器,所述SMT约束求解器用于在带约束下对C/C++环境中出现的第一变量类型和SystemC环境下出现的第二变量类型进行随机化。
4.根据权利要求3所述的基于SystemC的芯片验证方法,其特征在于,所述第一变量类型包括整型、数组、STL向量和枚举,所述第二变量类型包括带固定位宽的sc_int变量和sc_bv变量。
5.根据权利要求1所述的基于SystemC的芯片验证方法,其特征在于,所述CRAVE扩展库的使用过程为:
继承crv_sequence_item基类,以形成受约束的随机类;
在所述受约束的随机类中定义所有随机变量,并通过构造函数定义关于所述所有随机变量的约束,包括取值范围约束、条件约束、内嵌约束和软约束;
调用randomize函数将所述所有随机变量在所述约束下进行随机化,生成关于所述被测芯片的随机测试用例。
6.根据权利要求1所述的基于SystemC的芯片验证方法,其特征在于,所述FC4SC扩展库的内部至少提供覆盖组、覆盖点和bin,任一覆盖组包括一个或多个覆盖点,所述覆盖点指代采样变量,任一覆盖点包括一个或多个bin,所述bin指代采样变量的具体数值。
7.根据权利要求1所述的基于SystemC的芯片验证方法,其特征在于,所述FC4SC扩展库的使用过程为:
继承covergroup基类,以形成覆盖组类;
在所述覆盖组类中定义所有覆盖点,并为每个覆盖点定义对应的bin;
调用sample函数对所述所有覆盖点的bin进行采样,得到关于所述被测芯片在当前测试过程中的功能覆盖率。
8.一种基于SystemC的芯片验证系统,其特征在于,包括SystemC验证平台和被测芯片,所述SystemC验证平台包括驱动器、监视器和比较器,并且在所述SystemC验证平台上安装CRAVE扩展库和FC4SC扩展库;
所述驱动器用于根据CRT原理调用所述CRAVE扩展库生成受约束的随机测试用例,再将所述随机测试用例和用户提供的定向测试用例反馈至所述被测芯片和参考模型进行模拟运行;其中,所述参考模型是所述SystemC验证平台根据所述被测芯片的功能进行建模得到的;
所述监视器用于收集所述被测芯片在模拟运行时产生的响应结果以及所述参考模型在模拟运行时产生的参考结果;
所述比较器用于将所述响应结果和所述参考结果进行比对,以验证所述被测芯片的功能正确性;
所述监视器还用于根据CDV原理调用所述FC4SC扩展库对所述被测芯片的功能覆盖率进行收集,以形成可视化的覆盖率报告输出。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序以实现如权利要求1至7任一项所述的基于SystemC的芯片验证方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于SystemC的芯片验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211708161.7A CN116126700A (zh) | 2022-12-29 | 2022-12-29 | 一种基于SystemC的芯片验证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211708161.7A CN116126700A (zh) | 2022-12-29 | 2022-12-29 | 一种基于SystemC的芯片验证方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126700A true CN116126700A (zh) | 2023-05-16 |
Family
ID=86303927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211708161.7A Pending CN116126700A (zh) | 2022-12-29 | 2022-12-29 | 一种基于SystemC的芯片验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126700A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116663493A (zh) * | 2023-07-26 | 2023-08-29 | 北京云枢创新软件技术有限公司 | 基于约束求解器的条件约束语句求解方法、设备和介质 |
CN116933142A (zh) * | 2023-09-15 | 2023-10-24 | 北京云枢创新软件技术有限公司 | 一种生成随机激励的约束分类方法、电子设备及存储介质 |
-
2022
- 2022-12-29 CN CN202211708161.7A patent/CN116126700A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116663493A (zh) * | 2023-07-26 | 2023-08-29 | 北京云枢创新软件技术有限公司 | 基于约束求解器的条件约束语句求解方法、设备和介质 |
CN116663493B (zh) * | 2023-07-26 | 2023-09-29 | 北京云枢创新软件技术有限公司 | 基于约束求解器的条件约束语句求解方法、设备和介质 |
CN116933142A (zh) * | 2023-09-15 | 2023-10-24 | 北京云枢创新软件技术有限公司 | 一种生成随机激励的约束分类方法、电子设备及存储介质 |
CN116933142B (zh) * | 2023-09-15 | 2023-12-19 | 北京云枢创新软件技术有限公司 | 一种生成随机激励的约束分类方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5862149A (en) | Method of partitioning logic designs for automatic test pattern generation based on logical registers | |
CN116126700A (zh) | 一种基于SystemC的芯片验证方法及系统 | |
Meyer | Principles of functional verification | |
US7613954B2 (en) | Test executive with stack corruption detection | |
US7519867B2 (en) | Test executive which provides heap validity checking and memory leak detection for user code modules | |
US7315973B1 (en) | Method and apparatus for choosing tests for simulation and associated algorithms and hierarchical bipartite graph data structure | |
US7849444B2 (en) | Test executive with buffer overwrite detection for parameters of user-supplied code modules | |
US6993470B2 (en) | Method of evaluating test cases in a simulation environment by harvesting | |
US8560988B2 (en) | Apparatus and method thereof for hybrid timing exception verification of an integrated circuit design | |
US8271252B2 (en) | Automatic verification of device models | |
Gai et al. | MOZART: a concurrent multilevel simulator | |
Hutchings et al. | Designing and debugging custom computing applications | |
CN1987820A (zh) | 用于跟踪现场可编程门阵列中的程序执行的方法和系统 | |
US5819072A (en) | Method of using a four-state simulator for testing integrated circuit designs having variable timing constraints | |
US20200074040A1 (en) | Hierarchical expression coverage clustering for design verification | |
US8700380B2 (en) | Method for generating performance evaluation model | |
CN110765716A (zh) | 数字产品的仿真信号查看方法及系统 | |
US6725187B1 (en) | Latch inference using dataflow analysis | |
Civera et al. | FPGA-based fault injection for microprocessor systems | |
US10614193B2 (en) | Power mode-based operational capability-aware code coverage | |
US8050902B2 (en) | Reporting temporal information regarding count events of a simulation | |
US7451358B2 (en) | Test executive system with automatic expression logging and parameter logging | |
CN110069414A (zh) | 回归测试方法及系统 | |
US6813599B1 (en) | Efficient memory structure simulation for sequential circuit design verification | |
Tomko et al. | Hardware/software co-debugging for reconfigurable computing |
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 |