CN104050069A - 一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法 - Google Patents
一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法 Download PDFInfo
- Publication number
- CN104050069A CN104050069A CN201410326051.3A CN201410326051A CN104050069A CN 104050069 A CN104050069 A CN 104050069A CN 201410326051 A CN201410326051 A CN 201410326051A CN 104050069 A CN104050069 A CN 104050069A
- Authority
- CN
- China
- Prior art keywords
- module
- register
- record
- data
- mars
- 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
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法,可应用在计算机组成原理及体系结构的教学中。本方法所用testbench验证文件除了实现为MISP处理器提供激励信号外,还通过检索名称对仿真过程中的状态变化进行记录,获得仿真结果;设置状态记录工具对Mars模拟器运行时的寄存器和存储器内容变化进行记录,并根据Mars模拟器运行的记录对仿真结果的正确性进行评判;MIPS处理器在编写时采用模块化和层次化设计,并依据验证文件设定某些模块与寄存器的名称。本发明对仿真结果进行粗粒度的分析,对MIPS处理器功能的正确性实现自动化的评判,避免复杂的波形分析,提高了实验效率。
Description
技术领域
本发明涉及一种基于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工程。传统的功能仿真方法是观察仿真波形,逐周期细粒度的分析,需要复杂的波形分析,本发明根据仿真得到的信息,跳过形成波形的步骤,直接从其中提取出与指令运行相关的寄存器和存储器的内容变化,形成指令级的仿真信息,实现粗粒度指令级正确性分析和仿真结果的自动评判。
Claims (3)
1.一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法,其特征在于,包括如下步骤:
步骤1:用MIPS汇编语言编写测试程序,通过Mars汇编器进行汇编,得到机器代码和数据存储器初始化内容;
步骤2:通过仿真软件,使用testbench验证文件,对MIPS处理器进行仿真,仿真过程中将测试用的机器代码和数据存储器初始化内容分别加载到MIPS处理器的指令存储器模块和数据存储器模块,仿真结束后,关闭仿真软件,获得仿真结果;
所述的testbench验证文件用于:为MISP处理器提供激励信号,通过检索寄存器名称对仿真过程中的寄存器状态变化进行记录,作为仿真结果保存到记录文件A中;
步骤3:将步骤1编写的测试程序载入Mars模拟器,打开状态记录工具Statement Recorder,并链接到Mars模拟器;
所述的状态记录工具Statement Recorder对Mars模拟器运行时的寄存器和存储器内容变化进行记录,并导出记录文件B;
步骤4:根据记录文件B对步骤2得到的仿真结果进行评判,并输出评判信息;
其中,Mars为MIPS汇编运行模拟器,Verilog为硬件描述语言,MIPS为无内部互锁流水级的微处理器。
2.根据权利要求1所述的实现MIPS处理器正确性的自动化测试方法,其特征在于,步骤2中所述的MIPS处理器,编写时采用模块化和层次化设计,并满足如下约束条件:
(1)顶层模块包含数据通路模块,数据通路模块包含程序计数器模块、指令存储器模块、数据存储器模块以及寄存器组摸块;
(2)顶层模块的名称、数据通路模块的实例名、程序计数器模块的实例名、寄存器组模块的实例名以及数据存储器模块的实例名都根据testbench验证文件设置固定的名称;
(3)程序计数器模块中,指令地址寄存器根据testbench验证文件命名;寄存器组模块中,通用寄存器、写使能信号和写地址信号根据testbench验证文件命名;数据存储器模块中,数据寄存器、写使能信号和写地址信号根据testbench验证文件命名。
3.根据权利要求1所述的实现MIPS处理器正确性的自动化测试方法,其特征在于,所述的记录文件A和记录文件B,其中记载的状态变化记录如下格式:
(1)每条记录都包含有标识该条记录类型的标识;用PC标识该条记录为程序计数器状态变化记录,WR标识该条记录为通用寄存器内容变化记录,WM标识该条记录为数据存储单元内容变化记录;
(2)对于程序计数器状态变化记录,记录当前执行指令的指令地址,为十六进制表示;对于通用寄存器内容变化记录,记录寄存器编号和寄存器中的值,寄存器编号为十进制表示,值为十六进制表示;对于数据存储单元内容变化记录,记录数据存储单元地址和数据存储单元中的值,数据存储单元地址为十六进制表示,值为十六进制表示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410326051.3A CN104050069B (zh) | 2014-07-09 | 2014-07-09 | 一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410326051.3A CN104050069B (zh) | 2014-07-09 | 2014-07-09 | 一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050069A true CN104050069A (zh) | 2014-09-17 |
CN104050069B CN104050069B (zh) | 2016-08-24 |
Family
ID=51502958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410326051.3A Active CN104050069B (zh) | 2014-07-09 | 2014-07-09 | 一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104050069B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317715A (zh) * | 2014-10-30 | 2015-01-28 | 南京富士通南大软件技术有限公司 | 基于模拟器的中央处理器指令集的功能测试自动实施方法 |
CN107145381A (zh) * | 2017-04-05 | 2017-09-08 | 同济大学 | 面向实践教学的mips‑cpu测试工具 |
CN108596799A (zh) * | 2018-03-27 | 2018-09-28 | 佛山市顺德区中山大学研究院 | 一种基于Verilog的判题装置、方法及系统 |
CN109726063A (zh) * | 2018-12-19 | 2019-05-07 | 北京航空航天大学 | 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法 |
CN113133753A (zh) * | 2021-05-21 | 2021-07-20 | 重庆理工大学 | 基于磁感应相位移的生物组织血流实时监测系统及模拟监测系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05266120A (ja) * | 1992-03-17 | 1993-10-15 | Hitachi Ltd | シミュレーション機能付設計支援装置 |
CN1818883A (zh) * | 2005-02-07 | 2006-08-16 | 中国科学院计算技术研究所 | 一种用于测试mips处理器的设备 |
-
2014
- 2014-07-09 CN CN201410326051.3A patent/CN104050069B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05266120A (ja) * | 1992-03-17 | 1993-10-15 | Hitachi Ltd | シミュレーション機能付設計支援装置 |
CN1818883A (zh) * | 2005-02-07 | 2006-08-16 | 中国科学院计算技术研究所 | 一种用于测试mips处理器的设备 |
Non-Patent Citations (1)
Title |
---|
尚利宏等: "基于SCV的MIPS指令集指令随机生成工具", 《计算机应用》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317715A (zh) * | 2014-10-30 | 2015-01-28 | 南京富士通南大软件技术有限公司 | 基于模拟器的中央处理器指令集的功能测试自动实施方法 |
CN107145381A (zh) * | 2017-04-05 | 2017-09-08 | 同济大学 | 面向实践教学的mips‑cpu测试工具 |
CN108596799A (zh) * | 2018-03-27 | 2018-09-28 | 佛山市顺德区中山大学研究院 | 一种基于Verilog的判题装置、方法及系统 |
CN108596799B (zh) * | 2018-03-27 | 2020-11-13 | 佛山市顺德区中山大学研究院 | 一种基于Verilog的判题装置、方法及系统 |
CN109726063A (zh) * | 2018-12-19 | 2019-05-07 | 北京航空航天大学 | 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法 |
CN109726063B (zh) * | 2018-12-19 | 2020-05-08 | 北京航空航天大学 | 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法 |
CN113133753A (zh) * | 2021-05-21 | 2021-07-20 | 重庆理工大学 | 基于磁感应相位移的生物组织血流实时监测系统及模拟监测系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104050069B (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Horridge et al. | GEMPACK manual | |
CN104407980B (zh) | 移动应用自动化测试装置和方法 | |
CN103425574B (zh) | 一种测试应用程序的方法及装置 | |
Harrison et al. | GEMPACK manual | |
EP2706459B1 (en) | Apparatus and method for validating a compiler for a reconfigurable processor | |
CN104050069A (zh) | 一种基于Mars评判Verilog实现MIPS处理器正确性的自动化测试方法 | |
CN102623069B (zh) | 随机激励闪存模型验证方法 | |
US7409602B2 (en) | Methodology for debugging RTL simulations of processor based system on chip | |
CN104156311B (zh) | 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法 | |
US20160232084A1 (en) | Class object handle tracking | |
Roy et al. | SimCheck: a contract type system for Simulink | |
CN103605606A (zh) | 一种可自动转换的嵌入式软件测试用例批量执行方法 | |
Song et al. | FBDTester 2.0: Automated test sequence generation for FBD programs with internal memory states | |
US20200074040A1 (en) | Hierarchical expression coverage clustering for design verification | |
CN104346273A (zh) | 用于调试的方法和系统 | |
CN106844221B (zh) | 一种实现虚拟验证系统覆盖率分析的方法 | |
CN104317715A (zh) | 基于模拟器的中央处理器指令集的功能测试自动实施方法 | |
CN109726063A (zh) | 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法 | |
CN102519514B (zh) | 电子测试仪器一键式自动测试的实现方法 | |
CN110457208B (zh) | 符号执行的引导方法、装置、设备及计算机可读存储介质 | |
US10816600B1 (en) | Protocol analysis and visualization during simulation | |
Charvát et al. | Automatic formal correspondence checking of ISA and RTL microprocessor description | |
CN103116495B (zh) | 基于ide的单片机寄存器值的自动存储方法和装置 | |
Foo et al. | Verifying Business Processes Extracted from E-Commerce Systems Using Dynamic Analysis | |
Eugene | JavaScript Testing Beginner's Guide |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |