微处理器功能验证设备及微处理器功能验证方法_2

文档序号:9818355阅读:来源:国知局
内部结构框图;
[0046]图3为本发明实施例中微处理器功能验证方法的流程图。
【具体实施方式】
[0047]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0048]参考图1所示,本发明实施例提供的一种微处理器功能验证设备,包括:指令集仿真器(ISS, Instruct1n Set Simulator)I,比较器2,监视器3,输入接口4,RTL(RegisterTransfer Level,寄存器传输级)模型5。
[0049]指令集仿真器I,用于执行测试程序产生一个包含多组参考数据的阶段性参考数据文件。其中,测试程序从外部输入。更具体来讲,从外部输入的测试程序为可以为由汇编指令流组成的汇编文件,指令集仿真器I执行该汇编文件产生该阶段性参考数据文件。该阶段性参考数据文件将作为比较器2的一个输入会加载到比较器2中存储。
[0050]比较器2,用于指令集仿真器I中读取阶段性参考数据文件。阶段性参考数据文件的阶段性是指在每次输出阶段性参考数据文件中的一组参考数据,这样做的目的是节省比较器2做阶段性检查时耗费的仿真时间。具体来讲,比较器2按照是否包含指定格式对阶段性参考数据文件进行划分成多组参考数据,其中,指定格式包括表征是否需要比较器2进行比较的比较标识,在具体实施过程中,指定格式还包括分属不同类寄存器的值等。
[005?] 输入接口 4接入到待验证设计6 (英文缩写:DUV,英文全称:des ign underverificat1n),用于加载由汇编指令流组成的汇编文件到待验证设计6的存储单元。
[0052]监视器3接入到待验证设计6,用于捕捉待验证设计6仿真中的待验证信号输出给比较器2,比较器2接入到监视器3,监视器3输出的待验证信号作为比较器2的另一个输入。
[0053]比较器2,还用于将读取的阶段性参考数据文件与待验证信号进行对比是否一致。每个阶段读取阶段性参考数据文件的一组参考数据。
[0054]RTL模型5接入到待验证设计6,用于逐周期从待验证设计6读取待验证设计6的部分内部信号,以进行裁决待验证设计6的行为是否与RTL模型5的行为一致。具体的,RTL模型5每个仿真周期所读取的部分内部信号包括取指令信号、读写寄存器堆信号、旁路寄存器信号等。
[0055]具体的,参考图2所示,RTL模型5包括:指令分发单元51,执行单元52,写回单元53,异常产生单元54,程序计数产生单元55,旁路模型单元56,寄存器-存储器模型单元57,裁决单元58 ο
[0056]指令分发单元51,用于将部分内部信号中与指令读取相关的信号处理成归类指令码输出到执行单元52。寄存器-存储器模型单元57,用于基于写回信息模拟待验证设计6的写回功能,将写寄存器的流水级信息输出到寄存器旁路模型单元56,并将写寄存器的值或写存储器的值输出到执行单元52。寄存器旁路模型单元56,用于读取写读寄存器的值按照流水级的约束输出到执行单元52;执行单元52,用于模拟待验证设计6的指令执行过程,将指令执行结果输出到写回单元53、异常产生单元54和程序计数产生单元55。写回单元53,用于基于写寄存器的值或写存储器的值,输出当前周期所需的写回信息到寄存器-存储器模型单元57和裁决单元58;异常产生单元54,用于根据指令执行结果判断当前是否应该产生异常,并将异常判断结果输出到裁决单元58;程序计数产生单元55,用于根据指令执行结果判断当前是否有跳转发生,并将跳转判断结果输出到裁决单元58;裁决单元58,用于将写回信息、异常判断结果、跳转判断结果与部分内部信号对比,从而裁决待验证设计6的行为是否与RTL模型5的行为一致。
[0057]基于同一发明构思,本发明实施例提供一种微处理器功能验证方法,应用于前述实施例以及图1、图2所示的微处理器功能验证设备中,结合参考图1、图2和图3所示,该微处理器功能验证方法包括如下步骤:
[0058]S1、通过指令集仿真器I执行测试程序产生阶段性参考数据文件。
[0059]具体的,在开启仿真之前,指令集仿真器I首先执行为汇编指令流的测试程序来产生阶段性参考数据文件。该文件将作为比较器2的输入加载到比较器2中存储。阶段性是指在执行一段指令后才输出一组参考数据,每组数据中包含是否需要比较器2进行比较的比较标识。
[0060]在具体实施过程中,将阶段性参考数据文件加载到比较器2的存储中,然后比较器2按照是否包含指定格式对阶段性参考数据文件进行划分成多组参考数据。
[0061]S2、启动待验证设计6和RTL模型5进行寄存器传输级仿真,通过监视器3捕捉待验证设计6仿真中的待验证信号输出到比较器2。
[0062]具体的,寄存器传输级仿真时,输入待验证设计6的测试程序与指令集仿真器I执行的测试程序相同,使用仿真工具进行对待验证设计6和RTL模型5的寄存器传输级仿真,从而汇编指令流在待验证设计6中执行,则监视器3捕获的待验证信号包括:写入寄存器堆或写入存储器的数据等等。
[0063]S3、比较器2从阶段性参考数据文件中读取当前组参考数据。
[0064]具体的,每次返回S3读取的当前组参考数据均与上一仿真周期读取的一组参考数据不同。比如,比较器2第一次读取参考数据为第一组参考数据,则第二次顺次读取的参考数据为第二组参考数据,第三次顺次读取的参考数据为第三组参考数据,以此顺序依次进行读取。
[0065]在执行S3之后,接着执行S4:RTL模型5逐周期从待验证设计6中读取部分内部信号,以进行裁决待验证设计6的行为是否与RTL模型5的行为一致,若是则执行S5,否则仿真结束。
[0066]具体来讲,RTL模型5在每个仿真周期均从待验证设计6中读取部分内部信号,而每个仿真周期,RTL模型5从待验证设计6中读取的部分内部信号的每个信号类型均相同。
[0067]RTL模型5将读取的部分内部信号与RTL模型5内部自身产生的数据进行对比,则RTL模型5根据对比结果判断待验证设计6的行为是否与RTL模型5的行为一致,不一致则意味着发现了待验证设计6的错误,需要立刻停止仿真。
[0068]在具体实施过程,所读取的部分内部信号包括:取指令数据、读写寄存器堆数据以及读写旁路寄存器数据等等。
[0069]具体的,RTL模型5包括:指令分发单元51,执行单元52,写回单元53,异常产生单元54,程序计数产生单元55,旁路模型单元56,寄存器-存储器模型单元57,裁决单元58。
[0070]指令分发单元51将部分内部信号中与指令读取相关的信号处理成归类指令码输出到执行单元52;寄存器-存储器模型单元57基于写回信息模拟待验证设计6的写回功能,将写寄存器的流水级信息输出到寄存器旁路模型单元56,并将写寄存器的值或写存储器的值输出到执行单元52;寄存器旁路模型单元56读取写读寄存器的值按照流水级的约束输出到执行单元52;执行单元52模拟待验证设计6的指令执行过程,将指令执行结果输出到写回单元53、异常产生单元54和程序计数产生单元55;写回单元53基于写寄存器的值或写存储器的值,输出当前周期所需的写回信息到寄存器-存储器模型单元57和裁决单元58;异常产生单元54,用于根据指令执行结果判断当前是否应该产生异常,并将异常判断结果输出到裁决单元58;程序计数产生单元55根据指令执行结果判断当前是否有跳转发生,并将跳转判断结果输出到裁决单元58;裁决单元58将写回信息、异常判断结果、跳转判断结果与所读取的待验证设计6的部分内部信号对比,从而裁决待验证设计6的行为是否与RTL模型5的行为一致。
[0071]S5:在到达比较器2的阶
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1