CN112463624A - 一种基于Systemverilog的CPU验证平台 - Google Patents
一种基于Systemverilog的CPU验证平台 Download PDFInfo
- Publication number
- CN112463624A CN112463624A CN202011417762.3A CN202011417762A CN112463624A CN 112463624 A CN112463624 A CN 112463624A CN 202011417762 A CN202011417762 A CN 202011417762A CN 112463624 A CN112463624 A CN 112463624A
- Authority
- CN
- China
- Prior art keywords
- module
- verification
- cpu
- reference model
- instruction
- 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/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- 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/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开一种基于Systemverilog的CPU验证平台,属于计算机体系结构领域。CPU模块启动后,验证用例生成模块生成后缀为.asm的汇编验证用例,参考模型模块读取该验证用例,模拟CPU模块完成指令的功能,CPU模块通过程序RAM同样读取该验证用例,完成指令的功能,CPU模块和参考模型监视模块监测CPU模块和参考模型模块的指令执行结果,并将执行结果送给结果比较模块,结果比较模块通过对比CPU模块和参考模型模块的执行结果,验证CPU模块的功能是否正确实现。该CPU验证平台有较好的通用性和可移植性,对于不同的指令集架构,稍加修改参考模型便可使用。该CPU验证平台已成功用于32位CPU芯片的功能验证,相比该CPU之前的验证方法,极大的提高了验证效率,缩短了CPU交付周期。
Description
技术领域
本发明涉及计算机体系结构技术领域,特别涉及一种基于Systemverilog的CPU验证平台,可应用于高性能CPU的功能验证。
背景技术
随着芯片设计规模的不断扩大和芯片复杂度的持续提高,芯片功能验证的工作量占据芯片开发周期的比例不断增多。CPU是整个SOC芯片设计中的重要组成部分,为了全面验证CPU的功能,验证工程师通常需要编写成千上万条验证用例,并且需要逐一运行测试并分析结果。
据统计,验证工作在整个设计中占到了70%左右的时间。如果完全采用人工的方法分析和查错,验证效率极低、正确性难以保证、验证周期长且验证完成时间无法预估。因此,一个快速、完备、系统的功能验证平台对于CPU的设计来说至关重要,可有效地缩短芯片设计周期并提高设计质量。
发明内容
本发明的目的在于提供一种基于Systemverilog的CPU验证平台,以解决目前CPU的验证工作效率极低、正确性难以保证且验证周期长的问题。
为解决上述技术问题,本发明提供了一种基于Systemverilog的CPU验证平台,包括验证用例生成模块、汇编器模块、CPU模块、参考模型模块、结果比较模块、参考模型监视模块、CPU监视模块、程序RAM和数据RAM;其中,
所述验证用例生成模块用于产生所述CPU模块所需的汇编验证用例;
所述汇编器模块完成汇编指令到二进制机器码的编译,通过所述汇编器模块生成所述CPU模块能够识别的二进制机器码;
所述CPU模块是CPU验证平台的验证主体;
所述程序RAM用于读取并存放所述汇编器模块生成的二进制机器码,所述CPU模块通过RAM接口读取所述程序RAM的程序数据;
所述数据RAM模块存储所述CPU模块访存和回写RAM的数据;
所述参考模型模块针对所述CPU模块提出,所述参考模型模块功能上与所述CPU模块等价,所述参考模型模块与所述CPU模块的实现方式不同;所述参考模型模块通过使用systemverilog的字符串匹配功能,直接解析汇编语句,完成指令的运算、加载和存储等功能;
所述CPU监视模块对CPU模块的指令执行结果进行监测,所述CPU模块的指令执行结果是修改所述CPU模块的内部资源和所述数据RAM,所述CPU模块的内部资源包括通用寄存器和辅助寄存器,所述CPU监视模块将所述CPU模块对通用寄存器、辅助寄存器和数据RAM的执行结果打印到日志中;
所述参考模型监视模块监测所述参考模型模块的指令执行结果,所述参考模型模块模拟所述CPU模块的行为,所述参考模型模块内部的通用寄存器、辅助寄存器和数据RAM资源也同样参照所述CPU模块定义,所述参考模型监视模块将所述参考模型模块对通用寄存器、辅助寄存器和数据RAM的执行结果打印到日志中;
所述结果比较模块通过对比所述CPU监视模块和所述参考模型监视模块提供的指令运行的打印结果,给出比较结果,以便验证人员快速完成CPU验证结果的分析和判断。
可选的,所述验证用例生成模块用于实现所述CPU模块的测试点分解到验证用例的过程;在所述验证用例生成模块产生的汇编验证用例中,边界条件验证用例为人工编写生成,其他验证用例通过所述验证用例生成模块的自动化脚本批量生成;为全面覆盖CPU模块的功能,验证用例采用汇编代码编写,通过所述验证用例生成模块生成后缀为.asm的汇编验证用例。
可选的,所述参考模型模块用于实现汇编验证用例的预处理过程、使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程、使用Systemverilog对每行汇编指令的字符串匹配过程,以及根据字符串匹配结果执行指令的过程;
汇编验证用例的预处理过程包括:所述参考模型模块使用Perl脚本读入所述验证用例生成模块产生的后缀为.asm汇编验证用例,将.asm汇编验证用例中的注释去掉,并在每行指令结束位置添加行结束标志;
使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程包括:所述参考模型模块读入汇编验证用例的预处理过程处理后的汇编验证用例,通过systemverilog的$feof系统任务判断该验证用例是否结束,当验证用例被所述参考模型模块读完时,所述参考模型模块的流程结束;当验证用例没有被述参考模型模块读完时,所述参考模型模块使用$fscanf系统任务按字符读取汇编验证用例,并存入指令字符数组中,通过所述汇编验证用例的预处理过程添加的行结束标志判断该行指令是否结束,如果该行指令读取结束,则开始执行使用Systemverilog对每行汇编指令的字符串匹配过程;否则,继续逐个读入字符,并存入字符数组中;
使用Systemverilog对每行汇编指令的字符串匹配过程包括:所述参考模型模块读取使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程产生的指令字符数组,通过Systemverilog的字符串匹配功能识别汇编指令的操作码和操作数,然后执行根据字符串匹配结果执行指令的过程;
根据字符串匹配结果执行指令的过程包括:所述参考模型根据使用Systemverilog对每行汇编指令的字符串匹配过程识别出的指令功能和操作数执行该指令,然后开始下一行指令的读取,重新执行使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程。
可选的,所述参考模型模块与所述CPU模块的实现方式不同具体为:
(a)输入:所述参考模型模块的输入是汇编验证用例,所述CPU模块的输入是存储在程序RAM中的经所述汇编器模块编译后的二进制机器码;
(b)指令处理流程:所述参考模型模块逐行读取汇编验证用例中的指令,每条指令执行完成后,才会继续读取下一条汇编指令,所述CPU模块是基于流水线的设计,读取当前指令不需要上一条指令执行完成;
(c)运算单元:所述参考模型使用systemverilog语言完成指令的乘、加、移位等运算,所述CPU模块的乘法器和加法器是基于电路的设计。
可选的,所述验证用例生成模块是使用Perl语言编写的自动化脚本,能够快速生成汇编验证用例。
可选的,所述CPU模块的设计包括流水线阶段的设计,所述流水线阶段包括取指、译码、访存、执行和写回。
在本发明提供的基于Systemverilog的CPU验证平台中,CPU模块启动后,验证用例生成模块生成后缀为.asm的汇编验证用例,参考模型模块读取该验证用例,模拟CPU模块完成指令的功能,CPU模块通过程序RAM同样读取该验证用例,完成指令的功能,CPU模块和参考模型监视模块监测CPU模块和参考模型模块的指令执行结果,并将执行结果送给结果比较模块,结果比较模块通过对比CPU模块和参考模型模块的执行结果,验证CPU模块的功能是否正确实现。该CPU验证平台有较好的通用性和可移植性,对于不同的指令集架构,稍加修改参考模型便可使用。该CPU验证平台已成功用于32位CPU芯片的功能验证,相比该CPU之前的验证方法,极大的提高了验证效率,缩短了CPU交付周期。
附图说明
图1是本发明提供的基于Systemverilog的CPU验证平台结构框图;
图2是基于Systemverilog的CPU验证平台中参考模型模块的设计流程图;
图3是本发明提供的基于Systemverilog的CPU验证平台的设计流程图。
具体实施方式
以下结合附图和具体实施例对本发明提出的一种基于Systemverilog的CPU验证平台作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
实施例一
本发明提供了一种基于Systemverilog的CPU验证平台,其结构如图1所示,包括验证用例生成模块、汇编器模块、CPU模块、参考模型模块、结果比较模块、参考模型监视模块、CPU监视模块、程序RAM和数据RAM;其中,所述验证用例生成模块用于产生所述CPU模块所需的汇编验证用例,所述验证用例生成模块是使用Perl语言编写的自动化脚本,能够快速生成汇编验证用例;所述汇编器模块完成汇编指令到二进制机器码的编译,通过所述汇编器模块生成所述CPU模块能够识别的二进制机器码;所述CPU模块是CPU验证平台的验证主体,其设计包括流水线阶段的设计,所述流水线阶段包括取指、译码、访存、执行和写回;所述程序RAM用于读取并存放所述汇编器模块生成的二进制机器码,所述CPU模块通过RAM接口读取所述程序RAM的程序数据;所述数据RAM模块存储所述CPU模块访存和回写RAM的数据;所述参考模型模块针对所述CPU模块提出,所述参考模型模块和所述CPU模块是对产品特性的两个独立的实现,即所述参考模型模块功能上与所述CPU模块等价,所述参考模型模块与所述CPU模块的实现方式不同;所述参考模型模块通过使用systemverilog的字符串匹配功能,直接解析汇编语句,完成指令的运算、加载和存储等功能;所述CPU监视模块对CPU模块的指令执行结果进行监测,所述CPU模块的指令执行结果是修改所述CPU模块的内部资源和所述数据RAM,所述CPU模块的内部资源包括通用寄存器和辅助寄存器,所述CPU监视模块将所述CPU模块对通用寄存器、辅助寄存器和数据RAM的执行结果打印到日志中;所述参考模型监视模块监测所述参考模型模块的指令执行结果,所述参考模型模块模拟所述CPU模块的行为,所述参考模型模块内部的通用寄存器、辅助寄存器和数据RAM资源也同样参照所述CPU模块定义,所述参考模型监视模块将所述参考模型模块对通用寄存器、辅助寄存器和数据RAM的执行结果打印到日志中;所述结果比较模块通过对比所述CPU监视模块和所述参考模型监视模块提供的指令运行的打印结果,给出比较结果,以便验证人员快速完成CPU验证结果的分析和判断。
所述参考模型模块和所述CPU模块主要实现方式的区别如下:
(a)输入:所述参考模型模块的输入是汇编验证用例,所述CPU模块的输入是存储在程序RAM中的经所述汇编器模块编译后的二进制机器码;
(b)指令处理流程:所述参考模型模块逐行读取汇编验证用例中的指令,每条指令执行完成后,才会继续读取下一条汇编指令,所述CPU模块是基于流水线的设计,读取当前指令不需要上一条指令执行完成;
(c)运算单元:所述参考模型使用systemverilog语言完成指令的乘、加、移位等运算,所述CPU模块的乘法器和加法器是基于电路的设计。
所述参考模型模块验证所述CPU模块的方式:将所述验证用例生成模块生成的同一验证用例送入所述参考模型模块和所述CPU模块,然后比较所述参考模型模块和所述CPU模块的执行结果,如果所述参考模型模块和所述CPU模块的行为不一致,或者所述CPU模块的功能实现出现错误,或者所述参考模型模块的功能实现出现错误,或者两者实现功能均出现错误,通过定位修改所述参考模型模块和所述CPU模块的错误;如果所述CPU模块和所述参考模型模块的行为一致,或者两者都对,这是希望的结果;或者两者犯同样错误,那么需要想办法减小这种情况出现的可能性,比如所述参考模型模块的设计人员不能作为所述CPU模块设计人员,或者引入第三方,例如VIP,FPGA原型等。
根据上述所述参考模型模块和所述CPU模块设计的主要区别和对比验证方式可以得出:所述参考模型模块通过逐行读取指令然后执行的设计,巧妙的验证了所述CPU模块的流水线的数据相关冲突和结构相关冲突。同时,由于所述参考模型模块运算单元的设计和所述CPU模块不一致,所述CPU模块运算单元的正确性也可以得到验证。
所述验证用例生成模块用于实现所述CPU模块的测试点分解到验证用例的过程;由于所述CPU模块通常包括的指令集庞大,通常所述CPU模块的流水线结构相关冲突和数据相关冲突场景复杂,验证用例数量庞大,因此在所述验证用例生成模块产生的汇编验证用例中,边界条件验证用例为人工编写生成,其他验证用例通过所述验证用例生成模块的自动化脚本批量生成;为全面覆盖CPU模块的功能,验证用例采用汇编代码编写,通过所述验证用例生成模块生成后缀为.asm的汇编验证用例。
所述参考模型模块用于实现汇编验证用例的预处理过程、使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程、使用Systemverilog对每行汇编指令的字符串匹配过程,以及根据字符串匹配结果执行指令的过程;其中,
汇编验证用例的预处理过程包括:所述参考模型模块使用Perl脚本读入所述验证用例生成模块产生的后缀为.asm汇编验证用例,将.asm汇编验证用例中的注释去掉,并在每行指令结束位置添加行结束标志;
使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程包括:所述参考模型模块读入汇编验证用例的预处理过程处理后的汇编验证用例,通过systemverilog的$feof系统任务判断该验证用例是否结束,当验证用例被所述参考模型模块读完时,所述参考模型模块的流程结束;当验证用例没有被述参考模型模块读完时,所述参考模型模块使用$fscanf系统任务按字符读取汇编验证用例,并存入指令字符数组中,通过所述汇编验证用例的预处理过程添加的行结束标志判断该行指令是否结束,如果该行指令读取结束,则开始执行使用Systemverilog对每行汇编指令的字符串匹配过程;否则,继续逐个读入字符,并存入字符数组中;
使用Systemverilog对每行汇编指令的字符串匹配过程包括:所述参考模型模块读取使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程产生的指令字符数组,通过Systemverilog的字符串匹配功能识别汇编指令的操作码和操作数,然后执行根据字符串匹配结果执行指令的过程;
根据字符串匹配结果执行指令的过程包括:所述参考模型根据使用Systemverilog对每行汇编指令的字符串匹配过程识别出的指令功能和操作数执行该指令,然后开始下一行指令的读取,重新执行使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程。
如图2所示为所述参考模型模块的设计流程,
(1.1)参考模型模块使用Perl脚本读入所述验证用例生成模块产生的后缀为.asm的汇编验证用例,将后缀为.asm汇编验证用例中的注释去掉,并在汇编验证用例中的每行指令结束位置添加行结束标志;
(1.2)参考模型模块读入Perl脚本处理后的汇编验证用例,通过systemverilog的$feof系统任务判断该验证用例是否结束,当验证用例没有被读完时,转步骤(1.3),否则所述参考模型模块的流程结束;
(1.3)参考模型模块使用$fscanf系统任务按字符读取汇编验证用例,并存入指令字符数组中,然后通过步骤(1.1)添加的行结束标志判断该行指令是否结束,如果该行指令未结束,则重复步骤(1.3),否则,跳转至步骤(1.4);
(1.4)参考模型模块读取指令字符数组,通过字符串匹配功能识别汇编指令的操作码和操作数,如MOV32 R0,R1,操作码是MOV32,目的操作数是寄存器R0,源操作数是寄存器R1。执行步骤(1.5);
(1.5)参考模型模块根据步骤(1.4)识别出的指令功能和操作数执行该指令,如MOV32R0,R1,将寄存器R1的值送到R0中。然后开始下一条指令的读取,跳转至步骤(1.2)。
如图3所示为本发明提供的基于Systemverilog的CPU验证平台的设计流程:
(2.1)通过验证用例生成模块批量生成验证用例,即后缀为.asm的汇编验证用例;
(2.2)将汇编验证用例传入汇编器模块,跳转至步骤(2.3),将汇编验证用例传入参考模型模块,跳转至步骤(2.6);
(2.3)汇编器模块将汇编验证用例编译成机器码之后,程序RAM将机器码读入RAM中;
(2.4)CPU模块读取存在程序RAM中的机器码指令,并执行指令;
(2.5)CPU的监视模块监测CPU模块的执行结果,并将CPU模块的执行结果输出;
(2.6)参考模型模块读取验证用例生成模块产生的汇编指令,并执行指令;
(2.7)参考模型监视模块监测参考模型模块的执行结果,并将参考模型模块的执行结果输出;
(2.8)结果比较模块比较参考模型的监视模块和CPU监视模块的输出结果,如果这两个结果一致,则输出该验证用例测试通过的信息,否则输出验证用例FAILED的信息;
(2.9)重新开始下一个验证用例的仿真验证,依次循环,直到所有的验证用例全部运行结束,批处理程序显示本次批量验证的统计信息,并输出验证用例通过或者失败的信息。
综上所述,本发明设计并实现了一种基于Systemverilog的CPU验证平台,论述了验证平台的整体设计结构、实现流程和批量验证的实现方式。该CPU验证平台有较好的通用性和可移植性,对于不同的指令集架构,稍加修改参考模型便可使用。该CPU验证平台能够成功用于32位CPU芯片的功能验证,相比该CPU之前的验证方法,极大的提高了验证效率,缩短了CPU交付周期;另外,利用该设计平台的监视模块可以快速定位CPU的设计缺陷,缩短设计人员迭代开发的周期。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (6)
1.一种基于Systemverilog的CPU验证平台,其特征在于,包括验证用例生成模块、汇编器模块、CPU模块、参考模型模块、结果比较模块、参考模型监视模块、CPU监视模块、程序RAM和数据RAM;其中,
所述验证用例生成模块用于产生所述CPU模块所需的汇编验证用例;
所述汇编器模块完成汇编指令到二进制机器码的编译,通过所述汇编器模块生成所述CPU模块能够识别的二进制机器码;
所述CPU模块是CPU验证平台的验证主体;
所述程序RAM用于读取并存放所述汇编器模块生成的二进制机器码,所述CPU模块通过RAM接口读取所述程序RAM的程序数据;
所述数据RAM模块存储所述CPU模块访存和回写RAM的数据;
所述参考模型模块针对所述CPU模块提出,所述参考模型模块功能上与所述CPU模块等价,所述参考模型模块与所述CPU模块的实现方式不同;所述参考模型模块通过使用systemverilog的字符串匹配功能,直接解析汇编语句,完成指令的运算、加载和存储等功能;
所述CPU监视模块对CPU模块的指令执行结果进行监测,所述CPU模块的指令执行结果是修改所述CPU模块的内部资源和所述数据RAM,所述CPU模块的内部资源包括通用寄存器和辅助寄存器,所述CPU监视模块将所述CPU模块对通用寄存器、辅助寄存器和数据RAM的执行结果打印到日志中;
所述参考模型监视模块监测所述参考模型模块的指令执行结果,所述参考模型模块模拟所述CPU模块的行为,所述参考模型模块内部的通用寄存器、辅助寄存器和数据RAM资源也同样参照所述CPU模块定义,所述参考模型监视模块将所述参考模型模块对通用寄存器、辅助寄存器和数据RAM的执行结果打印到日志中;
所述结果比较模块通过对比所述CPU监视模块和所述参考模型监视模块提供的指令运行的打印结果,给出比较结果,以便验证人员快速完成CPU验证结果的分析和判断。
2.如权利要求1所述的基于Systemverilog的CPU验证平台,其特征在于,所述验证用例生成模块用于实现所述CPU模块的测试点分解到验证用例的过程;在所述验证用例生成模块产生的汇编验证用例中,边界条件验证用例为人工编写生成,其他验证用例通过所述验证用例生成模块的自动化脚本批量生成;为全面覆盖CPU模块的功能,验证用例采用汇编代码编写,通过所述验证用例生成模块生成后缀为.asm的汇编验证用例。
3.如权利要求2所述的基于Systemverilog的CPU验证平台,其特征在于,所述参考模型模块用于实现汇编验证用例的预处理过程、使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程、使用Systemverilog对每行汇编指令的字符串匹配过程,以及根据字符串匹配结果执行指令的过程;
汇编验证用例的预处理过程包括:所述参考模型模块使用Perl脚本读入所述验证用例生成模块产生的后缀为.asm汇编验证用例,将.asm汇编验证用例中的注释去掉,并在每行指令结束位置添加行结束标志;
使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程包括:所述参考模型模块读入汇编验证用例的预处理过程处理后的汇编验证用例,通过systemverilog的$feof系统任务判断该验证用例是否结束,当验证用例被所述参考模型模块读完时,所述参考模型模块的流程结束;当验证用例没有被述参考模型模块读完时,所述参考模型模块使用$fscanf系统任务按字符读取汇编验证用例,并存入指令字符数组中,通过所述汇编验证用例的预处理过程添加的行结束标志判断该行指令是否结束,如果该行指令读取结束,则开始执行使用Systemverilog对每行汇编指令的字符串匹配过程;否则,继续逐个读入字符,并存入字符数组中;
使用Systemverilog对每行汇编指令的字符串匹配过程包括:所述参考模型模块读取使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程产生的指令字符数组,通过Systemverilog的字符串匹配功能识别汇编指令的操作码和操作数,然后执行根据字符串匹配结果执行指令的过程;
根据字符串匹配结果执行指令的过程包括:所述参考模型根据使用Systemverilog对每行汇编指令的字符串匹配过程识别出的指令功能和操作数执行该指令,然后开始下一行指令的读取,重新执行使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程。
4.如权利要求3所述的基于Systemverilog的CPU验证平台,其特征在于,所述参考模型模块与所述CPU模块的实现方式不同具体为:
(a)输入:所述参考模型模块的输入是汇编验证用例,所述CPU模块的输入是存储在程序RAM中的经所述汇编器模块编译后的二进制机器码;
(b)指令处理流程:所述参考模型模块逐行读取汇编验证用例中的指令,每条指令执行完成后,才会继续读取下一条汇编指令,所述CPU模块是基于流水线的设计,读取当前指令不需要上一条指令执行完成;
(c)运算单元:所述参考模型使用systemverilog语言完成指令的乘、加、移位等运算,所述CPU模块的乘法器和加法器是基于电路的设计。
5.如权利要求4所述的基于Systemverilog的CPU验证平台,其特征在于,所述验证用例生成模块是使用Perl语言编写的自动化脚本,能够快速生成汇编验证用例。
6.如权利要求5所述的基于Systemverilog的CPU验证平台,其特征在于,所述CPU模块的设计包括流水线阶段的设计,所述流水线阶段包括取指、译码、访存、执行和写回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011417762.3A CN112463624B (zh) | 2020-12-07 | 2020-12-07 | 一种基于Systemverilog的CPU验证平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011417762.3A CN112463624B (zh) | 2020-12-07 | 2020-12-07 | 一种基于Systemverilog的CPU验证平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463624A true CN112463624A (zh) | 2021-03-09 |
CN112463624B CN112463624B (zh) | 2022-08-16 |
Family
ID=74800230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011417762.3A Active CN112463624B (zh) | 2020-12-07 | 2020-12-07 | 一种基于Systemverilog的CPU验证平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463624B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684047A (zh) * | 2004-12-24 | 2005-10-19 | 清华大学 | 基于边界条件和自检查随机测试的cpu约束生成验证法 |
CN104461810A (zh) * | 2014-11-14 | 2015-03-25 | 深圳市芯海科技有限公司 | 一种提高嵌入式处理器功能验证效率的方法 |
CN109189479A (zh) * | 2018-10-12 | 2019-01-11 | 西安微电子技术研究所 | 一种用于处理器指令集的并行自动化验证方法 |
-
2020
- 2020-12-07 CN CN202011417762.3A patent/CN112463624B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684047A (zh) * | 2004-12-24 | 2005-10-19 | 清华大学 | 基于边界条件和自检查随机测试的cpu约束生成验证法 |
CN104461810A (zh) * | 2014-11-14 | 2015-03-25 | 深圳市芯海科技有限公司 | 一种提高嵌入式处理器功能验证效率的方法 |
CN109189479A (zh) * | 2018-10-12 | 2019-01-11 | 西安微电子技术研究所 | 一种用于处理器指令集的并行自动化验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112463624B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7270764B2 (ja) | 人工知能チップ検証 | |
CN113032195A (zh) | 芯片仿真验证方法、系统、设备及存储介质 | |
JP2017033562A (ja) | 安全重視ソフトウェア開発のためのモデルベース技術および過程のためのシステムおよび方法 | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
US7146605B2 (en) | Automatic abstraction of software source | |
US8719771B2 (en) | Method and system for test reduction and analysis | |
JP2007012003A (ja) | フィーチャ指向ソフトウェア製品ラインの開発環境を提供するシステム | |
CN111178512A (zh) | 器件运行神经网络的测试方法及装置 | |
CN115952758A (zh) | 芯片验证方法、装置、电子设备及存储介质 | |
US8560991B1 (en) | Automatic debugging using automatic input data mutation | |
CN115563019A (zh) | 一种uvm与c联合验证方法和系统 | |
US10839124B1 (en) | Interactive compilation of software to a hardware language to satisfy formal verification constraints | |
US10592703B1 (en) | Method and system for processing verification tests for testing a design under test | |
CN111400997A (zh) | 一种基于同步执行的处理器核验证方法、系统及介质 | |
US11036906B1 (en) | Method and apparatus to accelerate verification signoff by selective re-use of integrated coverage models | |
CN112731117A (zh) | 芯片的自动验证方法和系统,及存储介质 | |
CN112463624B (zh) | 一种基于Systemverilog的CPU验证平台 | |
US20230101154A1 (en) | Resumable instruction generation | |
CN115034165A (zh) | 一种芯片仿真验证方法、系统、设备以及存储介质 | |
CN113378502B (zh) | 验证信号走向配码的测试方法、装置、介质及设备 | |
CN115374017A (zh) | 一种仿真运行可执行文件时抓取现场的方法及计算设备 | |
US20070220338A1 (en) | Method and system for generating checkpoints of hardware description language simulations that include a specific model state together with a software testcase state | |
US7447621B1 (en) | PLI-less co-simulation of ISS-based verification systems in hardware simulators | |
CN114328273B (zh) | 一种应用程序控件的调试方法、调试装置及计算设备 | |
CN116861829B (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 |