CN100347683C - 结构无关的微处理器验证及评测方法 - Google Patents
结构无关的微处理器验证及评测方法 Download PDFInfo
- Publication number
- CN100347683C CN100347683C CNB2005100115699A CN200510011569A CN100347683C CN 100347683 C CN100347683 C CN 100347683C CN B2005100115699 A CNB2005100115699 A CN B2005100115699A CN 200510011569 A CN200510011569 A CN 200510011569A CN 100347683 C CN100347683 C CN 100347683C
- Authority
- CN
- China
- Prior art keywords
- parts
- signal
- definition
- microprocessor
- module
- 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.)
- Expired - Fee Related
Links
- 238000011156 evaluation Methods 0.000 title claims abstract description 16
- 238000012795 verification Methods 0.000 title claims abstract description 13
- 238000004088 simulation Methods 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000013461 design Methods 0.000 claims description 42
- 238000012360 testing method Methods 0.000 claims description 19
- 230000006399 behavior Effects 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 10
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 230000009471 action Effects 0.000 claims description 5
- 238000000151 deposition Methods 0.000 claims description 4
- 230000002452 interceptive effect Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 abstract description 3
- 238000011161 development Methods 0.000 description 3
- 239000012467 final product Substances 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000012942 design verification Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- IXSZQYVWNJNRAL-UHFFFAOYSA-N etoxazole Chemical compound CCOC1=CC(C(C)(C)C)=CC=C1C1N=C(C=2C(=CC=CC=2F)F)OC1 IXSZQYVWNJNRAL-UHFFFAOYSA-N 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
结构无关的微处理器验证及评测方法(简称为THUMPSim)属于微处理器芯片验证与评测技术领域。它是以面向部件的结构无关的体系结构定义方法描述所要模拟的微处理器,并以事件驱动式的信号更新算法进行模拟驱动的一种与体系结构无关的微处理器的模拟与验证方法。该发明在保证较高模拟性能的同时,尽可能地最大化软件模拟器可配置、可复用的能力,为微处理器的体系结构定义提供标准化的统一接口,使模拟器做到与微处理器结构无关,从而具有最大的移植能力。
Description
技术领域
结构无关的微处理器验证及评测方法(THUMPSim)属于微处理器验证与评测技术领域
背景技术
在微处理器体系结构的设计与实现技术中,时钟级信号精确的软件模拟器具有十分重要的研究价值和实际意义,它在体系结构设计的验证,性能评价和软硬件协同开发等方面都起着至关重要的作用。
在微处理器的设计流程中,体系结构设计工作完成之后,首先要做的就是验证设计的逻辑正确性,也就是说要检查这种体系结构在各种情况下是否都能够正常运行而不出现问题,进一步还要评测设计是否达到了各项技术性能指标。这些验证评测工作在过去都是依靠微处理器设计人员编写出相应的RTL级(寄存器传输级)硬件描述代码(简称RTL代码),再利用EDA软件工具或者FPGA进行仿真来完成的。这样的方式,一方面需要等待开发人员编写出RTL代码,而对于微处理器这种规模巨大、结构复杂的硬件设计,这一过程一般来说是相当漫长的,而体系结构的逻辑验证并不需要关心RTL代码涉及到的很多底层电路细节;另一方面,RTL代码本身的编写和调试复杂性也会给验证评测工作造成不利影响,而且各种RTL代码仿真器的模拟速度相当缓慢,用FPGA搭建仿真系统则费时费力,都不适合在短期内进行大量的测试工作。我们知道,对于微处理器设计这样的项目来说,如何尽早地发现结构设计上的问题和不足并加以改正和改进是相当关键的,问题发现的越早,改正的成本也就越少,如果到了设计的末期还要对体系结构这样的上层设计进行错误修改的话,将是非常影响研发进度的。因此,只依靠原来对RTL代码的EDA软件仿真或者FPGA仿真的方法,是不能够很好地满足微处理器设计验证需要的。
为了满足这种微处理器设计验证的需求,人们提出了软件模拟器的方案,即用软件的方法来摸拟体系结构的运行细节,从而进行验证和评测。它的设计思想就是,在微处理器设计验证的初期,利用软件快速开发、易于修改的特点,用软件模拟的方法来快速验证微处理器体系结构设计,在第一时刻发现设计错误和不足,为体系结构修改提供依据,最大限度地保证微处理器设计流程顺利进行。
相对于RTL代码仿真来说,这种软件模拟器不关心过多的底层电路细节,只关心体系结构本身逻辑层面的正确性和性能,因此在模拟速度上要比RTL代码的EDA软件仿真快得多,也比FPGA仿真易于实现,非常适合作为体系结构早期快速验证的工具。
而且,这种软件模拟器还能够帮助进行软硬件协同开发。由于软件模拟器所反映的体系结构是和硬件设计相一致的,所以可以将软件模拟器作为微处理器配套软件的开发测试平台。由此,在结构设计刚刚完成时就可以对编译器、操作系统甚至应用程序等配套软件进行开发测试,而无须等到微处理器流片完毕。通过对软件在模拟器上运行的正确性测试和性能评测,可以发现软硬件的错误,还可以为软硬件设计的改进提供依据,从而真正做到软硬件的协同设计和协同验证。
由此可见,在微处理器设计中,软件模拟器占有非常重要的地位。
但是,现有的此类模拟器还比较少,并且存在着4大类的缺点:
1,有的模拟器只模拟了微处理器体系结构的高层行为,体现不出体系结构的所有细节。而对于软件模拟器来说,要对整个的体系结构设计进行完整的验证和评测,就必须模拟和再现特定微处理器体系结构逻辑设计中的所有细节。
2,有的模拟器虽然体现出了体系结构的所有细节,但是由于要模拟的细节非常多,而模拟算法本身设计的不够优化,导致模拟速度较慢,使得验证评测工作不能够快速地进行,失去了软件模拟器的意义。
3,有的模拟器兼顾到了体系结构细节和模拟速度的要求,但却使得模拟器本身结构复杂,模块化低,编程工作量大且调试不方便,不适合多人协同开发。而且为了适应硬件设计的更改,模拟器往往需要多次的改动,而复杂的软件结构也会给模拟器编程人员造成很大的困难。
4,还有的模拟器在可移植性方面考虑得较少,这样的模拟器大多采用按照体系结构制定模拟器软件结构的实现方案,模拟器本身的代码和体系结构定义代码之间结合紧密,要模拟另一种体系结构,模拟器就要从头再编,做不到代码复用。
因此,如何把模拟层次、模拟速度、模块化和可移植性这几个方面结合在一起考虑,使得软件模拟器具有精确模拟、快速开发、快速修改、快速模拟和快速移植等特性,就成为了软件模拟器研究领域中的关键问题。
发明内容
本发明就是针对当前微处理器软件模拟器研究中的这一问题,提出了体系结构无关的微处理器模拟验证及评测方法(简称THUMPSim)。THUMPSim模拟的微处理器内部信号、部件都和硬件设计有着精确的一一对应关系,能够模拟出微处理器各个时钟周期中每个部件的动作、每个信号的变化情况,所以可以验证和评测微处理器体系结构逻辑层面的所有细节。同时THUMPSim将整个模拟系统划分成模拟平台和体系结构定义两个独立部分,从而将模拟器公共代码和微处理器体系结构定义分开,并且采用面向部件、与结构无关的体系结构定义框架,做到了高可移植性,保证了模拟器具有很好的模块化,具有易于开发、易于修改、易于调试的特点。而THUMPSim中的事件驱动式信号更新算法则保证了它具有较高的执行性能,能够满足微处理器结构设计验证的需求。
THUMPSim是以面向部件的结构无关体系结构定义方法描述所要模拟的微处理器,并以事件驱动式的信号更新算法进行系统模拟驱动的一种与体系结构无关的微处理器的模拟与验证方法。系统从微处理器体系结构设计验证和评测的需求出发,实现了快速、精确的微处理器体系结构模拟,为体系结构设计提供快速验证和性能评价,并为软硬件协同开发提供平台。
其主要的创新点在于:
1.将模拟平台划分成模拟平台和体系结构定义两个独立部分,将模拟器公共代码和微处理器体系结构定义分开,提高了可移植性。
2.采用面向部件、结构无关的体系结构定义方法,给出微处理器部件的统一定义格式,采用预编译的方法,只要给出部件的接口和逻辑定义,程序框架就可在预处理的过程中自动给出对应该部件的C++代码。
3.部件的定义格式与高级硬件描述语言的格式非常相似,便于从模拟器到RTL级硬件描述代码的转化。
4.提出了事件驱动式的信号更新算法,在减少编程复杂性的同时有效地提高了执行效率和可靠性。
5.具有完善的执行过程记录和统计功能,以此作为参照,可以对RTL代码进行对比验证,还可以评测处理器性能,为改进处理器设计提供依据。
6.支持完善的调试功能,能够设置断点、修改处理器内部的数据和信号,既能够对微处理器结构设计进行调试,又能够对微处理器上运行的程序进行调试。
7.提供了部分微处理器外围部件的行为模拟,使模拟器可以作为系统级的模拟器,加载操作系统,提供与硬件系统环境完全一致的软件开发环境。
本发明的特征在于:
它依次含有以下步骤:
第1步:在微处理器设计中设定模拟平台模块组件和处理器体系结构定义模块组件,其中:
(1)模拟平台模块组件,它含有:
总控模块,它通过调用下述其他模块控制本发明所述的结构无关的微处理器验证及评测系统的行为,其中含有下述两种算法:
部件分组算法,它自动一次确定微处理器内各个部件之间的先后关系,依次含有以下步骤:
第a1步:将所有部件的所属组号都初始化为0;
第a2步:将所有的悬空信号和锁存器信号都加入到中止信号列表中;
第a3步:当前组号CurrentGroup初始化为0;
第a4步:在部件中遍历查找所有组号等于CurrentGroup的部件,如果没有找到,则算法结束;否则,对找到的每一个部件,如果该部件的输入信号不全在中止信号列表中,则将其所属组号加1;
第a5步:在部件中遍历查找所有组号等于CurrentGroup的部件,如果没有找到,则算法结束;否则,将找到的每一个部件的输出信号都加入到中止信号列表中;
第a6步:当前组号CurrentGroup加1,转至第a4步继续执行;
事件驱动式信号更新算法,它在每一个微处理器时钟周期内执行一次,以模拟待验证、评测的微处理器的一个周期内的行为,它依次含有以下步骤:
第b1步:清空待执行的部件列表;
第b2步:遍历所有信号,如果发现在上个时钟周期中某个锁存器信号值发生了改变,则将其影响到的部件,即以此信号为输入信号的部件,加入待执行部件列表中;
第b3步:当前组号CurrentGroup初始化为0;
第b4步:查找待执行部件列表中组号为当前组号的部件,如果没有找到,则转至b7步;
第b5步:若找到,则模拟执行该部件,检查其输出信号的变化情况,将发生变化的输出信号影响到的部件加入待执行部件列表;
第b6步:将第b5步模拟执行的部件移出待执行部件列表,转至b4步;
第b7步:当前组号CurrentGroup加1,如果CurrentGroup小于或等于最大组号,则转至b4步;
第b8步:更新本周期内变化的锁存器信号,算法结束;
待验证和评测微处理器部件定义的预处理模块,它把部件定义转换成C++代码;
程序或指令流的加载模块,它把要执行的程序或者指令流载入到模拟器中;
外围接口部件模块,它为程序框架提供虚拟外设接口;
交互显示界面模块;
(2)处理器体系结构定义模块组件,它含有:
处理器所有信号的定义模块,定义格式为:
Name域,定义了该信号的名称;
Type域定义了该信号的类型,包括ST_WIRE和ST_REG两种类型,分别对应于高级硬件描述语言中的线型信号和寄存器型信号,所述的寄存器型信号即锁存信号;
Width域定义了该信号的宽度,即二进制位数;
Stage域定义了该信号在流水线中所属的段号;
处理器所有部件的定义模块,定义格式为:
Component域,它包含了以下子域:
NAME子域,定义该部件的名称;
TYPE子域,定义该部件的类型,包括组合逻辑、时序逻辑;
INPUT和OUTPUT子域,定义部件的接口信号,其中INPUT子域定义部件的输入信号,OUTPUT则定义部件的输出信号;
Variable域,它定义该部件定义中用到的局部变量,定义语法与C++语法相同;
Function域,它定义该部件定义中用到的局部函数,定义语法与C++语法相同;
Initialize域,它定义该部件的初始化动作,供模拟平台在开始模拟运行前调用执行;
Execute域,定义该部件在一个处理器时钟周期内的行为逻辑,供模拟平台调用;
各部件逻辑模拟代码模块;
处理器内部数据组织模块;
第2步:依次按以下步骤模拟与描述多种不同的微处理器:
第2.1步:模拟系统开始运行后立刻调入指令序列或编译好的ECOFF格式二进制文件;
第2.2步:模拟平台开始模拟运行前面所定义的微处理器体系结构的执行过程,该模拟过程使用了上述的部件分组算法和事件驱动式的信号更新算法;
第2.3步:在运行过程中通过交互界面模块观察和设置微处理器执行的每个周期内所有部件、信号的状态,并通过调试功能对微处理器结构设计以及运行程序进行调试,找到设计的错误;
第2.4步:系统模拟执行完毕后,得到相应的性能统计参数和包括寄存器、Cache、主存、TLB这些部件的跟踪记录文件。
THUMPSim模拟了微处理器运行的所有部件和信号的变化细节,并且为了运行操作系统还模拟了一些必需的微处理器外围部件,由于采用了事件驱动式的信号更新算法,使得模拟速度仍然很快,完全满足微处理器结构设计前期快速验证和评测以及软件开发的需要。
根据我们的测试,在一台安装了Windows XP Professional操作系统的Celeron 1.7G CPU、512M DDR266内存的计算机上,在相同条件下对同一个体系结构——清华大学THUMP107微处理器体系结构进行模拟,模拟运行Linux操作系统启动过程,THUMPSim的平均模拟速度为每秒6.09×104个时钟周期,而EDA仿真工具中速度最快的Cadence公司的NC-Verilog软件工具的平均模拟速度则为每秒3.31×103个时钟周期。因此,THUMPSim的模拟速度是一般EDA仿真工具模拟速度的十多倍至几十倍。
附图说明:
图1.本发明所述方法的原理性示意图。
图2.本发明所述模拟平台的结构图。
具体实施方式:
本方法在保证较高模拟性能的同时,尽可能地最大化软件模拟器可配置、可复用的能力,为微处理器的体系结构定义提供标准化的统一接口,使模拟器做到与微处理器结构无关,从而具有最大的移植能力。
它依次含有如下步骤(如附图1所示):
1.根据THUMPSim体系结构定义方法定义出要模拟的微处理器结构;
2.THUMPSim根据微处理器体系结构定义来构造该结构的所有细节;
3.开始运行后立刻调入指令序列或编译好的ECOFF格式二进制文件;
4.模拟平台开始模拟运行前面所定义的微处理器体系结构的执行过程;
5.在运行过程中通过交互界面观察和设置微处理器执行的每个周期内所有部件、信号的状态,并通过调试功能对微处理器结构设计以及运行程序进行调试,找到设计的错误;
6.模拟执行完毕后,得到相应的性能统计参数和寄存器、Cache、主存、TLB等部件的跟踪记录文件,为改进体系结构设计提供依据,也为后期的RTL代码调试提供对照依据。
THUMPSim系统结构见附图2,分为模拟平台(图2中灰色模块)和处理器体系结构定义(图2中的白色模块)两大部分。前者包括了模拟器的总控部分、微处理器部件定义的预处理模块、程序或指令流的加载模块、外围接口部件以及模拟器交互显示界面,后者包括微处理器体系结构中所有的信号和部件定义以及CPU内部的特定数据结构。
THUMPSim模拟平台中,总控部分通过调用其它模块控制整个模拟器的行为,预处理模块将部件定义转换成C++代码,加载模块将要执行的程序或者指令流载入到模拟器中,界面模块则负责和用户进行交互。
THUMPSim体系结构定义部分中,信号和部件定义都采用统一的接口规范,程序框架提供虚拟接口,体系结构定义人员只需要申明微处理器中的特定数据结构、所有的信号、各个部件的接口信号和内部逻辑(即在一个处理器时钟周期内部件的行为逻辑)即可。
模拟器通过各个部件的内部逻辑以及部件之间通过接口信号反映出来的相互连接关系来构造出整个微处理器的完整体系结构。因此,微处理器的体系结构只和信号、部件的定义有关,对某些部件甚至整个体系结构的修改都只需要改动相应的信号和部件定义即可,这样就做到了模拟平台和体系结构无关,使得模拟器具有最大的可移植性。
体系结构定义规范:
为了适应高可移植性、模块化、多人快速协同开发调试等需求,THUMPSim使用了统一的面向部件、与结构无关的体系结构定义方法,包括信号定义和部件定义两大部分。这种定义方式使得THUMPSim在模拟不同指令集或者不同流水线结构的微处理器体系结构时,模拟器本身的框架不需要做更改,只需更改相关的信号、部件定义即可。
THUMPSim的信号定义存放在一个专门的定义文件中,定义格式如下:
SIGNAL_DEFINE(Name,Type,Width,Stage),其中:
Name域定义了该信号的名称
Type域定义了该信号的类型,包括ST_WIRE和ST_REG两种类型,分别对应于高级硬件描述语言中的线型信号和寄存器型信号(即锁存信号)。
Width域定义了该信号的宽度,即二进制位数。
Stage域定义了该信号在流水线中所属的段号。
THUMPSim的部件定义存放在*.DEF文件中,每个DEF文件定义一个部件。部件定义采用一种类似于高级硬件描述语言的格式,由预处理程序在编译前进行处理,生成相应的C++代码。这样做使得体系结构定义人员不用关心过多的模拟器编程细节,不用编写大量重复的C++代码,且便于各部件定义的修改。而且与高级硬件描述语言类似的定义格式也便于从软件模拟器到RTL级硬件描述代码的移植。
THUMPSim的部件定义格式中包括Component、Variable、Function、Initialize和Execute五种定义域,具体说明如下:
1,Component域:
包含了NAME,TYPE,INPUT,OUTPUT四种子域:
NAME子域定义该部件的名称;
TYPE子域定义该部件的类型,包括组合逻辑(combination)、时序逻辑(sequence);
INPUT和OUTPUT子域定义部件的接口信号,其中INPUT子域定义部件的输入信号,
OUTPUT则定义部件的输出信号。
2,Variable域:
定义该部件定义中用到的局部变量,定义语法同C++语法。
3,Function域:
定义该部件定义中用到的局部函数,定义语法同C++语法。
4,Initialize域:
定义该部件的初始化动作,供模拟平台在开始模拟运行前调用执行。
5,Execute域:
定义该部件在一个处理器时钟周期内的行为逻辑,供模拟平台调用。
部件分组算法和事件驱动式的信号更新算法:
使用软件来模拟微处理器的执行实际上就是模拟各个信号的变化,信号的变化是由部件动作引起的,因此信号更新就依靠执行部件动作来完成。在硬件上部件都是并行执行的,而软件程序是串行执行的(起码从单线程处理器的高级语言程序员来看是如此),所以在模拟的过程中需要有一种机制,既能保证串行程序模拟硬件并行执行逻辑的正确性,又要得到比较高的执行效率。THUMPSim的信号更新算法采用了事件驱动式的思想,只模拟当前周期中存在输入信号变化的部件,其它组合部件则不用执行模拟,并且保证在同一个时钟周期内不会因为多个输入信号的变化而多次模拟同一个部件,使得模拟执行的效率大大提高。信号更新算法的前提是部件模拟先后关系的确定,THUMPSim中由一个部件分组算法负责自动一次生成这种关系,不需要体系结构定义人员手工指定,在保证模拟执行逻辑正确性的前提下,减少了编程人员的工作量,从而加快了开发进程。
THUMPSim的部件自动分组算法由模拟器在启动时执行,且只需执行一次,算法描述如下:
1.将所有部件的所属组号都初始化为0;
2.将所有的悬空信号和锁存器信号都加入到中止信号列表中;
3.当前组号CurrentGroup初始化为0;
4.在部件中遍历查找所有组号等于CurrentGroup的部件,如果没有找到,则算法结束;
否则,对找到的每一个部件,如果该部件的输入信号不全在中止信号列表中,则将其所属组号加1;
5.在部件中遍历查找所有组号等于CurrentGroup的部件,如果没有找到,则算法结束;
否则,将找到的每一个部件的输出信号都加入到中止信号列表中;
6.当前组号CurrentGroup加1,转至4继续执行。
THUMPSim的信号更新算法在每一个微处理器时钟周期内执行一次,负责模拟微处理器一个时钟周期的行为,算法描述如下:
1.清空待执行的部件列表;
2.遍历所有信号,如果发现在上个时钟周期中某个锁存器信号值发生了改变,则将其影响到的部件(即以此信号为输入信号的部件)加入待执行部件列表中;
3.当前组号CurrentGroup初始化为0;
4.查找待执行部件列表中组号为CurrentGroup的部件,如果没有找到,则转至7;
5.模拟执行该部件,检查其输出信号的变化情况,将发生变化的输出信号影响到的部件加入待执行部件列表;
6.将该部件移出待执行部件列表,转至4;
7.当前组号CurrentGroup加1,如果CurrentGroup小于或等于最大组号,则转至4;
8.更新本周期内变化的锁存器信号,算法结束;
说明:对于每个锁存器信号,模拟器维护了两个值,一个用来存放当前时钟周期开始时信号的原值,供部件在本周期内读取,另一个用来存放本周期内产生的新值,在信号更新算法的最后一步即本周期末尾时,新值会被处理,按照需要写入到原值中。这样做是为了符合锁存器信号的特性。
Claims (1)
1.结构无关的微处理器验证及评测方法,其特征在于,它依次含有以下步骤:
第1步:在微处理器设计中设定模拟平台模块组件和处理器体系结构定义模块组件,其中:
(1)模拟平台模块组件,它含有:
总控模块,它通过调用下述其他模块控制结构无关的微处理器验证及评测系统的行为,其中含有下述两种算法:
部件分组算法,它自动一次确定微处理器内各个部件之间的先后关系,依次含有以下步骤:
第a1步:将所有部件的所属组号都初始化为0;
第a2步:将所有的悬空信号和锁存器信号都加入到中止信号列表中;
第a3步:当前组号CurrentGroup初始化为0;
第a4步:在部件中遍历查找所有组号等于CurrentGroup的部件,如果没有找到,则算法结束;否则,对找到的每一个部件,如果该部件的输入信号不全在中止信号列表中,则将其所属组号加1;
第a5步:在部件中遍历查找所有组号等于CurrentGroup的部件,如果没有找到,则算法结束;否则,将找到的每一个部件的输出信号都加入到中止信号列表中;
第a6步:当前组号CurrentGroup加1,转至第a4步继续执行;
事件驱动式信号更新算法,它在每一个微处理器时钟周期内执行一次,以模拟待验证、评测的微处理器的一个周期内的行为,它依次含有以下步骤:
第b1步:清空待执行的部件列表;
第b2步:遍历所有信号,如果发现在上个时钟周期中某个锁存器信号值发生了改变,则将其影响到的部件,即以此信号为输入信号的部件,加入待执行部件列表中;
第b3步:当前组号CurrentGroup初始化为0;
第b4步:查找待执行部件列表中组号为当前组号的部件,如果没有找到,则转至b7步;
第b5步:若找到,则模拟执行该部件,检查其输出信号的变化情况,将发生变化的输出信号影响到的部件加入待执行部件列表;
第b6步:将第b5步模拟执行的部件移出待执行部件列表,转至b4步;
第b7步:当前组号CurrentGroup加1,如果CurrentGroup小于或等于最大组号,则转至b4步;
第b8步:更新本周期内变化的锁存器信号,算法结束;
待验证和评测微处理器部件定义的预处理模块,它把部件定义转换成C++代码;
程序或指令流的加载模块,它把要执行的程序或者指令流载入到模拟器中;
外围接口部件模块,它为程序框架提供虚拟外设接口;
交互显示界面模块;
(2)处理器体系结构定义模块组件,它含有:
处理器所有信号的定义模块,定义格式为:
Name域,定义了该信号的名称;
Type域定义了该信号的类型,包括ST_WIRE和ST_REG两种类型,分别对应于高级硬件描述语言中的线型信号和寄存器型信号,所述的寄存器型信号即锁存信号;
Width域定义了该信号的宽度,即二进制位数;
Stage域定义了该信号在流水线中所属的段号;
处理器所有部件的定义模块,定义格式为:
Component域,它包含了以下子域:
NAME子域,定义该部件的名称;
TYPE子域,定义该部件的类型,包括组合逻辑、时序逻辑;
INPUT和OUTPUT子域,定义部件的接口信号,其中INPUT子域定义部件的输入信号,OUTPUT则定义部件的输出信号;
Variable域,它定义该部件定义中用到的局部变量,定义语法与C++语法相同;
Function域,它定义该部件定义中用到的局部函数,定义语法与C++语法相同;
Initialize域,它定义该部件的初始化动作,供模拟平台在开始模拟运行前调用执行;
Execute域,定义该部件在一个处理器时钟周期内的行为逻辑,供模拟平台调用;
各部件逻辑模拟代码模块;
处理器内部数据组织模块;
第2步:依次按以下步骤模拟与描述多种不同的微处理器:
第2.1步:模拟系统开始运行后立刻调入指令序列或编译好的ECOFF格式二进制文件;
第2.2步:模拟平台开始模拟运行前面所定义的微处理器体系结构的执行过程,该模拟过程使用了上述的部件分组算法和事件驱动式的信号更新算法;
第2.3步:在运行过程中通过交互界面模块观察和设置微处理器执行的每个周期内所有部件、信号的状态,并通过调试功能对微处理器结构设计以及运行程序进行调试,找到设计的错误;
第2.4步:系统模拟执行完毕后,得到相应的性能统计参数和包括寄存器、Cache、主存、TLB这些部件的跟踪记录文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100115699A CN100347683C (zh) | 2005-04-15 | 2005-04-15 | 结构无关的微处理器验证及评测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100115699A CN100347683C (zh) | 2005-04-15 | 2005-04-15 | 结构无关的微处理器验证及评测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1667589A CN1667589A (zh) | 2005-09-14 |
CN100347683C true CN100347683C (zh) | 2007-11-07 |
Family
ID=35038697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100115699A Expired - Fee Related CN100347683C (zh) | 2005-04-15 | 2005-04-15 | 结构无关的微处理器验证及评测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100347683C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5034955B2 (ja) * | 2008-01-08 | 2012-09-26 | 富士通株式会社 | 性能評価シミュレーション装置、性能評価シミュレーション方法および性能評価シミュレーションプログラム |
CN101256217B (zh) * | 2008-04-17 | 2011-11-02 | 复旦大学 | 一种高监控覆盖率片上系统调试平台 |
CN102854457A (zh) * | 2011-07-01 | 2013-01-02 | 康宇星科技(北京)有限公司 | 一种fpga评测方法 |
CN105718661A (zh) * | 2016-01-21 | 2016-06-29 | 烽火通信科技股份有限公司 | 一种通用的芯片性能验证装置及方法 |
CN105893685A (zh) * | 2016-04-11 | 2016-08-24 | 浪潮电子信息产业股份有限公司 | 一种超大规模集成电路vlsi形式化验证平台及方法 |
CN107885652A (zh) * | 2016-09-30 | 2018-04-06 | 电信科学技术研究院 | 一种进行软件测试的方法和调试器 |
CN107239400A (zh) * | 2017-06-09 | 2017-10-10 | 山东超越数控电子有限公司 | 一种NandFlash磨损均衡仿真平台 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845064A (en) * | 1995-09-11 | 1998-12-01 | Digital Equipment Corporation | Method for testing and verification of a CPU using a reference model |
CN1581098A (zh) * | 2004-05-20 | 2005-02-16 | 北京大学 | 模拟器构造方法 |
-
2005
- 2005-04-15 CN CNB2005100115699A patent/CN100347683C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845064A (en) * | 1995-09-11 | 1998-12-01 | Digital Equipment Corporation | Method for testing and verification of a CPU using a reference model |
CN1581098A (zh) * | 2004-05-20 | 2005-02-16 | 北京大学 | 模拟器构造方法 |
Non-Patent Citations (3)
Title |
---|
基于仿真的32位RISC微处理器的功能验证方法 顾震宇,虞志益,沈泊,章倩苓.小型微型计算机系统,第25卷第4期 2004 * |
微处理器功能验证方法研究 朱英.高性能计算技术,第166,1期 2004 * |
微处理器随机测试程序生成器 王惊雷,汪东升.计算机工程与设计,第25卷第9期 2004 * |
Also Published As
Publication number | Publication date |
---|---|
CN1667589A (zh) | 2005-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6658633B2 (en) | Automated system-on-chip integrated circuit design verification system | |
CN1928816A (zh) | 嵌入式系统软件的模型驱动与构件化开发方法 | |
Singh et al. | Kiwi: Synthesis of FPGA circuits from parallel programs | |
WO2003056429A2 (en) | System, method, and computer program product for data transfer reporting for an application | |
CN101051332A (zh) | 一种soc芯片系统级验证系统及方法 | |
CN104268310B (zh) | 使用专用图形界面调用uvm验证环境的方法 | |
CN101067798A (zh) | 一种动态探针方法及其在嵌入式系统中的应用 | |
WO2003056475A2 (en) | System, method and article of manufacture for estimating a potential performance of a codesign from an executable specification | |
CN1577274A (zh) | 自动化仿真方法及系统 | |
KR20090088605A (ko) | 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치 | |
WO2003056474A1 (en) | System method and article of manufacture for dynamically profiling memory transfers in a program | |
Elphinstone et al. | Towards a Practical, Verified Kernel. | |
CN1549119A (zh) | 逻辑仿真测试系统和方法 | |
CN100347683C (zh) | 结构无关的微处理器验证及评测方法 | |
US20150234966A1 (en) | Method and an apparatus for automatic generation of verification environment for processor design and verification | |
Garavel et al. | Verification of an industrial SystemC/TLM model using LOTOS and CADP | |
CN1222909C (zh) | 一种flash芯片的加载方法和jtag控制器 | |
CN1295778C (zh) | 一种验证芯片硬件行为与软件模拟行为的一致性的方法 | |
Hong et al. | Creation and utilization of a virtual platform for embedded software optimization: An industrial case study | |
CN1207680C (zh) | 电路仿真装置和电路仿真方法 | |
CN107526585B (zh) | 基于Scala的FPGA开发平台及其调试、测试方法 | |
CN113032002B (zh) | 一种嵌入式芯片智能通用开发平台 | |
CN1558330A (zh) | 家电控制器嵌入式软件的仿真集成开发系统及其纯软件仿真执行方法 | |
CN1278237C (zh) | 仿真器设备及相关技术 | |
CN1645338A (zh) | 单芯片多处理器结构模拟系统 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071107 Termination date: 20210415 |
|
CF01 | Termination of patent right due to non-payment of annual fee |