首页> 中国专利> 一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法

一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法

摘要

本发明提供了一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法,可应用在计算机组成原理及体系结构的教学中。本方法所用testbench验证文件除了实现为MISP处理器提供激励信号外,还通过检索名称对仿真过程中的状态变化进行记录,获得仿真结果;设置状态记录工具对Mars模拟器运行时的寄存器和存储器内容变化进行记录,并根据Mars模拟器运行的记录对仿真结果的正确性进行评判;MIPS处理器在编写时采用模块化和层次化设计,并依据验证文件设定某些模块与寄存器的名称。本发明对仿真结果进行粗粒度的分析,对MIPS处理器功能的正确性实现自动化的评判,避免复杂的波形分析,提高了实验效率。

著录项

  • 公开/公告号CN104050069A

    专利类型发明专利

  • 公开/公告日2014-09-17

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201410326051.3

  • 发明设计人 万寒;马凯;高小鹏;龙翔;姜博;

    申请日2014-07-09

  • 分类号G06F11/26(20060101);

  • 代理机构11121 北京永创新实专利事务所;

  • 代理人祗志洁

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-12-17 01:14:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-24

    授权

    授权

  • 2014-10-22

    实质审查的生效 IPC(主分类):G06F11/26 申请日:20140709

    实质审查的生效

  • 2014-09-17

    公开

    公开

说明书

技术领域

本发明涉及一种基于Mars(Mips Assembeler and Runtime Simulator,MIPS汇编运行模拟 器)评判Verilog(硬件描述语言)编写MIPS处理器正确性的自动化测试方法,适用于MIPS 处理器设计实验,可应用在计算机组成原理及体系结构的教学中。

背景技术

MIPS处理器(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理 器)是一种很流行的RISC(Reduced Instruction Set Computer,精简指令集计算机)处理器。通过 对MIPS处理器的设计实现,可以使得计算机学习者对计算机的组成原理及体系结构有一个 直观的认知。MIPS处理器设计实验可以对计算机组成原理及体系结构的教学起到很好的辅助 作用。

MIPS处理器设计实验要求学生掌握一门硬件描述语言,结合MIPS处理器的结构特点, 完成MIPS处理器的编写并通过正确性测试。其中,正确性测试可以分成两个步骤进行。首 先,对已编写好的MIPS处理器进行功能仿真,然后下载到硬件实验平台上进行验证。功能 仿真对于正确性测试至关重要,功能仿真的效率直接影响正确性测试以及整个实验的效率。 传统的功能仿真方法是观察仿真波形,逐周期细粒度的分析处理器功能是否正确。这种方法 需要观察大量的信号波形,并由人工分析其正确性,十分繁琐复杂。

Mars是MIPS汇编运行模拟器,是Missouri State University的课程网站提供的一款软件, 集成汇编器和模拟器,主要用于MIPS处理器设计的试验教学中。

发明内容

本发明针对MIPS处理器设计实验中,传统功能仿真方法面临的问题,提出一种基于Mars 的对硬件描述语言编写的MIPS处理器的正确性进行评判的自动化方法,以提高实验效率。

一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法,包括如下步骤:

步骤1:用MIPS汇编语言编写测试程序,通过Mars汇编器进行汇编,得到机器代码和 数据存储器初始化内容。

步骤2:通过仿真软件,使用testbench验证文件,对MIPS处理器进行仿真,仿真过程 中将测试用的机器代码和数据存储器初始化内容分别加载到指令存储器模块和数据存储器模 块,仿真结束后,关闭仿真软件。

所述的testbench验证文件用于:为MISP处理器提供激励信号,通过检索寄存器名称对 仿真过程中的寄存器状态变化进行记录,作为仿真结果保存到记录文件A中。

步骤3:将步骤1中的测试程序载入Mars模拟器,打开状态记录工具Statement Recorder, 并链接到Mars模拟器。

所述的状态记录工具Statement Recorder,用于:对Mars模拟器运行时的寄存器和存储 器内容变化进行记录,并导出记录文件B;根据所得到的记录文件中的状态变化记录B对已 得到的仿真结果的正确性进行评判,并输出评判信息。

步骤4:根据记录文件B对步骤2得到的仿真结果进行评判,并输出评判信息。

所述的MIPS处理器编写时,采用模块化和层次化设计,并满足如下约束条件:

(1)顶层模块至少包含数据通路模块,数据通路模块至少包含程序计数器模块、指令存 储器模块、数据存储器模块和寄存器组摸块;用户可根据通用的处理器设计原则和个人需求, 在此基础上添加其他模块来完善处理器功能;

(2)顶层模块的名称、数据通路模块的实例名、程序计数器模块的实例名、寄存器组模 块的实例名以及数据存储器模块的实例名都根据testbench验证文件设置固定的名称;

(3)程序计数器模块中,指令地址寄存器根据testbench验证文件命名;寄存器组模块 中,通用寄存器、写使能信号和写地址信号根据testbench验证文件命名;数据存储器模块中, 数据寄存器、写使能信号和写地址信号根据testbench验证文件命名。

本发明相对于现有技术,其的优点和积极效果在于:

(1)本发明方法能够对仿真结果进行粗粒度的分析,对MIPS处理器功能的正确性实现 自动化的评判,避免复杂的波形分析,提高实验效率;

(2)本发明方法的操作简单,而且提供的Statement Recorder工具插件可以直观的将评 判结果展示出来。

附图说明

图1为本发明实现MIPS处理器正确性的自动化测试方法的整体流程示意图;

图2为Statement Recorder的界面示意图;

图3为状态记录的格式示意图。

具体实施方式

在下述具体实施示例中,结合附图对本发明进行进一步的详细说明。通过足够详细的描 述这些实施示例,使得本领域技术人员能够理解和实践本发明。在不脱离本发明的主旨和范 围的情况下,可以对实施做出逻辑的、实现的和其他的改变。因此,以下详细说明不应该被 理解为限制意义,本发明的范围仅仅由权利要求来限定。

本发明提供的基于Mars评判Verilog实现MIP处理器正确性的自动化测试方法,主要包 括如下4个步骤,如图1所示。

步骤1:用MIPS汇编语言编写测试程序,通过Mars的汇编器进行汇编,得到机器代码 和数据存储器初始化内容。

测试程序需要根据MIPS处理器实现的指令集进行设计,能够全面包含所实现的指令集。 该测试程序用于测试用Verilog编写的MIPS处理器是否正确。

同时,根据本发明实施例所提供的testbench文件,测试程序的指令条数不应超过500条, 否则会使得记录信息不完整。所述的testbench是一种验证手段,本发明实施例提供一个专门 编制的testbench.v文件,为用户编写的MISP处理器提供激励信号,并对仿真过程中的状态 变化进行记录,得到记录文件,以供下一步的评判使用。

利用Mars的汇编器对测试程序进行汇编,汇编成功后,将机器代码和数据存储器初始化 内容以十六进制文本的形式导出到Mars汇编器同一文件夹下,分别命名为code.txt和data.txt。

步骤2:通过ModelSim等仿真软件,使用本发明实施例提供的testbench验证文件,对 MIPS处理器进行仿真,仿真过程中需要将测试用的机器代码和数据存储器初始化内容分别加 载到MIPS处理器的指令存储器模块和数据存储器模块。仿真结束后,关闭仿真软件。

步骤2具体实施过程如下:

步骤2.1:在Mars软件同一文件夹下建立工程文件夹,将本发明实施例提供的testbench.v 文件和已编写好的MIPS处理器各模块文件拷贝到工程文件夹下,建立ModelSim工程。

testbench验证文件用于为MISP处理器提供激励信号,并通过检索寄存器名称对仿真过 程中的寄存器状态变化进行记录,作为仿真结果保存到记录文件A中,记录文件A中的状态 变化记录的格式如图3所示。本发明实施例中的testbench验证文件中对MIPS处理器中某些 模块以及指令地址寄存器、通用寄存器、数据寄存器设定固定名称,为了配合所述的testbench 验证文件的实用,用户在MIPS处理器设计时,相应模块及寄存器采用testbench验证文件中 设置的名称和约束。

MIPS处理器各模块文件是由用户编写的组成MIPS处理器各模块的Verilog文件。

本发明实施例中,MIPS处理器的设计必须采用模块化和层次化设计,且要满足如下设计 约束:

(1)顶层模块命名:mips;

(2)顶层模块包含控制模块和数据通路模块,其中数据通路模块的实例名为datapath;

(3)数据通路模块包含程序计数器模块、指令存储器模块、数据存储器模块、寄存器组 摸块以及算数逻辑运算单元模块等,其中程序计数器模块的实例名为pc,寄存器组模块的实 例名为gpr,数据存储器模块的实例名为dm。

部分模块内部命名约束:

(1)程序计数器模块:指令地址寄存器需命名为PC;

(2)寄存器组模块:通用寄存器需命名为regFile,写使能信号需命名为regWrite,写地 址信号需命名为wa;

(3)数据存储器模块:数据存储单元由寄存器实现,数据寄存器需命名为dm,写使能 信号需命名为we,写地址信号需命名为addr。

上述模块实例的命名以及寄存器的命名,都是根据本发明实施例的testbench验证文件中 设置的相应名称来设置,使得编写的MIPS处理器与testbench验证文件中相同模块或寄存器 的名称相同。

步骤2.2:利用$readmemh系统任务对指令存储器和数据存储器的内容进行初始化。

在指令寄存器模块中包含如下代码:

reg[31:0]im[1023:0];

initial

$readmemh(“code.txt”, im);

上面代码表示将机器代码code.txt的内容读入指令存储器的数组im中。

在数据寄存器中包含如下代码:

reg[31:0]dm[1023:0];

initial

$readmemh(“data.txt”,dm);

上面代码表示将数据存储器初始化内容data.txt的内容读入数据存储器的数组dm中。

步骤2.3:编译步骤2.1的MIPS处理器各模块文件,然后对testbench模块进行仿真。开 启仿真器后,将仿真时间设置超过5000100ns。仿真过程中,如无其他需要,不需添加波形信 号。仿真结束后,关闭仿真软件,输出记录仿真结果的记录文件A。

步骤3:打开Mars,并将步骤1中的测试程序载入Mars模拟器。在“Tools”菜单栏中, 打开“Statement Recorder”状态记录工具,并链接到MIPS模拟器。

Statement Recorder工具是在Mars开源代码的基础上开发小工具,界面如图2所示。显 示区域包含两部分,左侧部分显示Mars模拟器的状态变化,右侧部分显示与仿真结果的比对 信息。

点击“Connect to MIPS”按钮可以将工具链接到Mars模拟器,以实时记录Mars模拟器的 状态变化。

状态记录工具Statement Recorder具有以下两个功能:

(1)通过该工具可以对Mars模拟器运行时的寄存器和存储器内容变化进行记录,导出 记录文件B;

(2)该工具可以结合Mars模拟器的状态变化记录对步骤2的仿真结果的正确性进行评 判,并输出评判信息。

在Mars模拟器中单步或完全执行测试程序,观察Statement Recorder工具界面显示的信 息,对步骤2中仿真结果的正确性进行评判。

Statement Recorder工具对程序计数器、通用寄存器组和数据存储单元进行监测。

记录文件A和记录文件B中每条状态变化记录的格式如图3所示。包括三种类型的状态 变化记录,每条记录包含有标识该条记录类型的标识,PC、WR和WM就是用来标识记录类 型的,PC标识该条记录为程序计数器状态变化记录,WR标识该条记录为通用寄存器内容变 化记录,WM标识该条记录为数据存储单元内容变化记录。对于程序计数器状态变化记录, 记录当前执行指令的指令地址,为十六进制表示。对于通用寄存器内容变化记录,记录寄存 器编号和寄存器中的值,寄存器编号为十进制表示,值为十六进制表示。对于数据存储单元 内容变化记录,记录数据存储单元地址和数据存储单元中的值,数据存储单元地址为十六进 制表示,值为十六进制表示。

本发明方法提供的是一种指令级的粗粒度的测试方法,紧随程序计数器状态变化记录后 面的通用寄存器和存储单元内容变化记录,表示该条指令执行后引起的处理器的通用寄存器 和存储单元的内容变化,适用于处理器类的Verilog工程。传统的功能仿真方法是观察仿真波 形,逐周期细粒度的分析,需要复杂的波形分析,本发明根据仿真得到的信息,跳过形成波 形的步骤,直接从其中提取出与指令运行相关的寄存器和存储器的内容变化,形成指令级的 仿真信息,实现粗粒度指令级正确性分析和仿真结果的自动评判。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号