一种基于Systemverilog的CPU验证平台制造技术

技术编号:27619419 阅读:15 留言:0更新日期:2021-03-10 10:57
本发明专利技术公开一种基于Systemverilog的CPU验证平台,属于计算机体系结构领域。CPU模块启动后,验证用例生成模块生成后缀为.asm的汇编验证用例,参考模型模块读取该验证用例,模拟CPU模块完成指令的功能,CPU模块通过程序RAM同样读取该验证用例,完成指令的功能,CPU模块和参考模型监视模块监测CPU模块和参考模型模块的指令执行结果,并将执行结果送给结果比较模块,结果比较模块通过对比CPU模块和参考模型模块的执行结果,验证CPU模块的功能是否正确实现。该CPU验证平台有较好的通用性和可移植性,对于不同的指令集架构,稍加修改参考模型便可使用。该CPU验证平台已成功用于32位CPU芯片的功能验证,相比该CPU之前的验证方法,极大的提高了验证效率,缩短了CPU交付周期。缩短了CPU交付周期。缩短了CPU交付周期。

【技术实现步骤摘要】
一种基于Systemverilog的CPU验证平台


[0001]本专利技术涉及计算机体系结构
,特别涉及一种基于Systemverilog的CPU验证平台,可应用于高性能CPU的功能验证。

技术介绍

[0002]随着芯片设计规模的不断扩大和芯片复杂度的持续提高,芯片功能验证的工作量占据芯片开发周期的比例不断增多。CPU是整个SOC芯片设计中的重要组成部分,为了全面验证CPU的功能,验证工程师通常需要编写成千上万条验证用例,并且需要逐一运行测试并分析结果。
[0003]据统计,验证工作在整个设计中占到了70%左右的时间。如果完全采用人工的方法分析和查错,验证效率极低、正确性难以保证、验证周期长且验证完成时间无法预估。因此,一个快速、完备、系统的功能验证平台对于CPU的设计来说至关重要,可有效地缩短芯片设计周期并提高设计质量。

技术实现思路

[0004]本专利技术的目的在于提供一种基于Systemverilog的CPU验证平台,以解决目前CPU的验证工作效率极低、正确性难以保证且验证周期长的问题。
[0005]为解决上述技术问题,本专利技术提供了一种基于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验证结果的分析和判断。
[0006]可选的,所述验证用例生成模块用于实现所述CPU模块的测试点分解到验证用例的过程;在所述验证用例生成模块产生的汇编验证用例中,边界条件验证用例为人工编写生成,其他验证用例通过所述验证用例生成模块的自动化脚本批量生成;为全面覆盖CPU模块的功能,验证用例采用汇编代码编写,通过所述验证用例生成模块生成后缀为.asm的汇编验证用例。
[0007]可选的,所述参考模型模块用于实现汇编验证用例的预处理过程、使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程、使用Systemverilog对每行汇编指令的字符串匹配过程,以及根据字符串匹配结果执行指令的过程;汇编验证用例的预处理过程包括:所述参考模型模块使用Perl脚本读入所述验证用例生成模块产生的后缀为.asm汇编验证用例,将.asm汇编验证用例中的注释去掉,并在每行指令结束位置添加行结束标志;使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程包括:所述参考模型模块读入汇编验证用例的预处理过程处理后的汇编验证用例,通过systemverilog的$feof系统任务判断该验证用例是否结束,当验证用例被所述参考模型模块读完时,所述参考模型模块的流程结束;当验证用例没有被述参考模型模块读完时,所述参考模型模块使用$fscanf系统任务按字符读取汇编验证用例,并存入指令字符数组中,通过所述汇编验证用例的预处理过程添加的行结束标志判断该行指令是否结束,如果该行指令读取结束,则开始执行使用Systemverilog对每行汇编指令的字符串匹配过程;否则,继续逐个读入字符,并存入字符数组中;使用Systemverilog对每行汇编指令的字符串匹配过程包括:所述参考模型模块读取使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程产生的指令字符数组,通过Systemverilog的字符串匹配功能识别汇编指令的操作码和操作数,然后执行根据字符串匹配结果执行指令的过程;根据字符串匹配结果执行指令的过程包括:所述参考模型根据使用Systemverilog对每行汇编指令的字符串匹配过程识别出的指令功能和操作数执行该指令,然后开始下一行指令的读取,重新执行使用Systemverilog对汇编验证用例的逐行汇编指令的读取过程。
[0008]可选的,所述参考模型模块与所述CPU模块的实现方式不同具体为:(a)输入:所述参考模型模块的输入是汇编验证用例,所述CPU模块的输入是存储在程序RAM中的经所述汇编器模块编译后的二进制机器码;(b)指令处理流程:所述参考模型模块逐行读取汇编验证用例中的指令,每条指令执行完成后,才会继续读取下一条汇编指令,所述CPU模块是基于流水线的设计,读取当前指令不需要上一条指令执行完成;(c)运算单元:所述参考模型使用systemverilog语言完成指令的乘、加、移位等运算,所述CPU模块的乘法器和加法器是基于电路的设计。
[0009]可选的,所述验证用例生成模块是使用Perl语言编写的自动化脚本,能够快速生成汇编验证用例。
[0010]可选的,所述CPU模块的设计包括流水线阶段的设计,所述流水线阶段包括取指、译码、访存、执行和写回。
[0011]在本专利技术提供的基于Systemverilog的CPU验证平台中,CPU模块启动后,验证用例生成模块生成后缀为.asm的汇编验证用例,参考模型模块读取该验证用例,模拟CPU模块完成指令的功能,CPU模块通过程序RAM同样读取该验证用例,完成指令的功能,CPU模块和参考模型监视模块监测CPU模块和参考模型模块的指令执行结果,并将执行结果送给结果比较模块,结果比较模块通过对比CPU模块和参考模型模块的执行结果,验证CPU模块的功能是否正确实现。该CPU验证平台有较好的通用性和可移植性,对于不同的指令集架构,稍加修改参考模型便可使用。该CPU验证平台已成功用于32位CPU芯片的功能验证,相比该CPU之前的验证方法,极大的提高了验证效率,缩短了CPU交付周期。
附图说明...

【技术保护点】

【技术特征摘要】
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对每行汇编指令的字符串匹配过程,以及根据字符串匹配结果执行指令的过程;汇编验证用例的预处...

【专利技术属性】
技术研发人员:刘春锐张宏奎黄旭东陈振娇
申请(专利权)人:中国电子科技集团公司第五十八研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1