一种基于网络传输的处理器协同验证平台及其测试方法

文档序号:6422872阅读:145来源:国知局
专利名称:一种基于网络传输的处理器协同验证平台及其测试方法
技术领域
本发明涉及一种基于网络传输的处理器协同验证平台及其测试方法,属于处理器 的功能验证和评测技术领域。
背景技术
在处理器的设计流程中,验证是一项很重要而且耗时耗力的工作。处理器的验证 包括两个过程功能验证和时序验证,功能验证有模拟验证、形式化验证和FPGA原型验证 等几种方法,其中模拟验证是最基本的方法,验证过程使用最广泛,在处理器系统验证阶段 起着非常重要的作用。在硬件RTL代码编写过程中,就需要对设计的逻辑性的正确性及各 项性能指标进行验证,硬件设计完成后需要系统的进行功能验证以检验设计的正确性及其 性能指标。处理器硬件设计的逻辑功能和性能指标主要依赖于硬件设计人员利用硬件描述 语言编写的代码质量。伴随处理器复杂度的不断上升,处理器验证工作的复杂度和工作量 呈现指数上升,对验证的依赖与要求也越来越高。作为设计过程的一部分,验证起着越来越 关键的作用,验证的工作量也是相对比较大,占据到整个工作设计工作量的70%左右,验证 的效率和可靠性往往决定了项目的成败。传统的功能验证方法是利用已有的软件模拟器模拟硬件设计(见图1),验证RTL 代码的正确性,即分别将同一个测试激励分别在软件仿真器和硬件(RTL级)设计模型中运 行,然后比较两者的运行结果,并由测试人员人工对运算结果进行比较分析,查找RTL代码 中的错误并进行修改,修改后再重新进行模拟测试。软件仿真的思想是,在处理器设计验证 时应用或开发软件仿真器,模拟硬件方面的功能设计,对硬件设计进行验证和测试。应用或 开发软件仿真器,测试人员不需要关心底层的电路设计,只需要关心硬件设计本身逻辑层 面的正确性和性能,适宜于硬件设计功能验证的自动化。利用传统的功能验证方法,验证人员需要面对的问题有(1)测试激励由人工编 写,而每次人工编写的测试激励其功能覆盖率都不高,难以满足功能验证的需要,如要遍历 所有激励输入及其可能的组合情况,达到完全的验证覆盖率,工作量非常大,也难以实现; (2)验证流程是利用软件仿真器运行结果检验RTL代码模型运行结果,由测试人员从运行 结果中比较和分析,但RTL代码模型运行过程和软件仿真过程漫长,需要等待很长的时间 才能看到结果并进行分析,RTL代码量以及运行结果的波形文件都比较大,依据人工分析、 检查显然不能满足验证的需求;C3)随着测试的深入,一般比较常见的设计错误已经排查, 但仍然会有很多人们不易察觉的错误未能检测出,这需要反复、大量的测试以遍历到所有 的情况,以确保硬件设计对任何可能的激励输入及其组合都产生合理的输出,,验证周期非 常长;(4)验证依赖于软件模拟器,在软件模拟不是自行开发或源码不开放时,不能提取或 跟踪软件模拟器的执行信息,难以确保软件行为的准确性及正确性,从而难以确保验证本 身的正确性及其有效性。另外,还需要验证人员对RTL代码和软件仿真都非常的熟悉,才能 分析出错误具体的原因,因而,传统方法费时费力且效率不高,这些都需要人们应用效率更高的验证方法。

发明内容
本发明所要解决的技术问题是提供一种能够实现自动化验证,提高测试可靠性 和准确性以及测试效率高、覆盖范围广的基于网络传输的处理器协同验证平台及其测试方 法。其技术方案是
一种基于网络传输的处理器协同验证平台,其特征在于由硬件实现程序、软件实现 程序和硬件实现程序与软件实现程序之间的网络通信三个部分组成;硬件实现程序包括测 试激励、硬件设计模型、硬件模拟模型和一台安装Linux操作系统的工作站;测试激励由汇 编指令按照一定的约束规则进行随机组合形成,硬件设计模型用Verilog硬件描述语言生 成,在寄存器传输级(Register Transfer Level,RTL)进行建模;硬件模拟模型用C++语 言模拟硬件设计进行建模,对硬件设计进行初级验证,两个模型遵照相同的设计方案,对相 同激励能够具有相同的响应;软件实现程序包括软件仿真器和一台安装Linux操作系统的 工作站;软件实现程序依据输入的参数配置测试环境,利用软件仿真器对硬件进行模拟,以 在软件级对硬件设计进行进一步的验证;硬件实现程序与软件实现程序之间的网络通信, 采用基于TCP/IP协议实现测试的同步性控制和文件传输,用于在上述两台工作站进行协 同测试。一种基于网络传输的处理器协同验证平台测试方法,在Linux操作系统工作站的 测试环境下,其测试步骤是
第一步测试开始,执行软件实现程序依据提示分别输入两个参数参数1设置每次测 试过程验证平台自动完成的测试轮数,参数2设置通信双方的端口号;并依据参数设置测 试环境,自行建立三个级别文件存放目录以保存所有测试文件信息;
第二步执行硬件实现程序,产生测试激励,并生成对应的内存映像文件(.imgl)。测 试激励由汇编指令按照一定的约束随机形成,汇编指令的及约束由程序从指令函数库即约 束函数库中以随机方式抽取,测试激励的指令组合形式由指令按照约束规则随机组合,并 生成对应的二进制内存映像文件(.imgl);
第三步软件实现程序以TCP方式读取测试激励,编译生成软件仿真器可加载的激励 文件(.out),并进一步生成硬件设计/模拟模型需要的内存映像文件(.img2)并与硬件实 现程序生成的内存映像文件进行比较,以确保每轮测试中硬件设计/模拟和软件仿真加载 的是同一个测试激励;
第四步比较硬件实现程序和软件实现程序分别生成的内存映像文件,以确保每一 轮验证都是硬件设计/模拟和软件仿真加载相同的测试激励。内存映像文件比较不一致 时,比较结果写入日记文件,结束本轮测试,比较结果一致时,运行软件仿真器,产生仿真结 果;
第五步硬件设计/模拟模型通过以TCP方式读取/加载内存映像文件(.img2),分别 生成硬件设计模型结果和硬件模拟模型结果,并保存在当前测试目录下;
第六步比较分析硬件设计模型结果和硬件模拟模型结果,并将分析结果写入日记文 件,本次比较实现硬件设计模型结果和硬件模拟模型进行相互验证,以验证RTL代码的正确性;
第七步输出比较分析硬件设计模型运行结果和软件仿真结果,并将分析结果写入日 记文件,本次比较实现软件级验证RTL代码的正确性;
第八步软件实现程序查询每一轮测试差异结果文件,以文本形式记录存 在差异的测试文件所在目录,删除结果正确的目录及文件,统计覆盖率,在每一次结束 后将功能验证覆盖率写入日记文件,并开始下一次测试。其技术效果本发明的协同验证平台及其测试方法,充分运用于自行研制的DSP 芯片BWDSP100功能验证工作,验证结果显示在功能验证结果正确的情况下覆盖率能达到 99. 75%,完全能够满足处理器功能验证的需要。在验证过程中,完全不需要人工监控和干 预,减少了大量验证时间和验证工作量,有效提高了验证工作效率。1、本发明测试激励由程序生成,测试激励依据约束规则随机组合,测试工作即可 由统一的协同验证平台自动完成,大大减少了验证人员工作量,提高了工作效率,经过批量 测试后可尽可能接近设定的功能覆盖率。2、本发明准确性高,本发明通过硬件模拟模型和软件仿真分别在硬件级和软件级 两个层次对硬件设计进行验证,能够全面准确的检测出硬件设计RTL代码的错误。3、本发明验证覆盖范围广,本协同验证平台及其测试方法的测试激励采用随机方 式产生,支持批量测试,能够完成数据量非常大的测试,能够遍历到硬件设计中指令组合的 各种方式,可系统全面的实现功能验证。4、本发明验证效率更高,协同的验证平台是一个完整的软件程序,程序运行后自 动进行功能验证,验证人员只需要检查验证程序生成结果,依据结果修改硬件设计的错误, 不需要关心硬件设计/模拟模型和软件仿真器的内部执行信息,不需要查看硬件运行波形 文件及软件模拟器的执行信息,减少了验证时间和验证人员的工作量。5、适用范围广,本发明不仅可适用用于不同需求的处理器功能验证,也适用于后 端仿真验证,并支持软件仿真器运算结果的正确性检测等。


图1是传统的功能验证方法流程图。图2是本发明的验证平台的结构图。图3是本发明的测试流程图。图4是通信流程图。图5测试结果文件的比较、分析示意图。
具体实施例方式如图2所示,一种基于网络传输的处理器协同验证平台,其特征在于由硬件实现 程序、软件实现程序和硬件实现程序与软件实现程序之间的网络通信三个部分组成。硬件实现程序包括测试激励、硬件设计模型、硬件模拟模型和一台安装Linux操 作系统的工作站。测试激励由汇编指令按照一定的约束规则进行随机组合形成,处理器的 汇编指令预先编辑在指令函数库中,约束规则利用硬件描述语言将其编辑成通用约束函数 库,不同的硬件模块其约束也不相同。例如,移位器和乘法器的验证指令形式及组合方式即不相同。产生激励的方法是,每次测试启动后,硬件实现程序从函数库中随机抽取指令 和约束,并以随机方式产生测试激励,作为硬件设计/模拟模型和软件仿真器的测试激励, 每个测试激励里面包含的汇编指令及其组合形式因随机性都不尽相同。硬件设计模型用 Verilog硬件描述语言生成,在寄存器传输级(Register Transfer Level,RTL)进行建模, Verilog是一种硬件描述语言和C语言语法相似,可以将硬件设计在非常抽象的层次上加 以描述,该描述可以转换为任何制造工艺下的电路,例如,设计人员可以在不考虑具体制造 工艺的情况下,对设计做寄存器传输级(RTL)的描述;寄存器传输级是利用Verilog语言 描述硬件物理电路的一种抽象层次。硬件模拟模型用C++语言模拟硬件设计进行建模。两 个模型遵照相同的设计方案,对相同激励能够具有相同的响应,若响应不同,则必有一者出 错,以此对硬件设计RTL代码的正确性进行初级验证。汇编测试激励生成后,同时生成相应 的二进制形式的内存映像文件(.imgl),以网络形式传输给软件执行程序。硬件设计和模 拟模型加载内存映像文件后分别生成相应的结果文件,由软件实现程序对两种模型的结果 文件进行第一次比较,在硬件级验证硬件设计的正确性。软件实现程序包括软件仿真器和一台安装Linux操作系统的工作站。软件实现程 序依据输入的参数配置测试环境,是利用软件仿真器对硬件进行模拟,以在软件级对硬件 设计进行进一步的验证。软件模拟器被打包成.so库文件后植入协同验证平台软件实现程 序以被调用,软件仿真器内部实现了所有处理器指令功能,可自行开发或利用已有的软件 模拟器。汇编测试激励生成后,软件实现程序编译调用编译工具对汇编测试激励进行编译 和链接,分别编译生成软件可加载文件(.out)和硬件模型可加载内存映像文件(.img2), 并同硬件实现程序的内存映像文件进行比较,以检测测试中的测试激励是否相同。软/硬 件模型加载内存映像文件后分别生成各自结果文件后,由软件实现程序自动完成硬件设计 模型结果文件与硬件模拟模型及软件仿真器比较和分析,并将分析结果写入日记文件。硬件实现程序与软件实现程序之间的网络通信,即软件仿真器与硬件设计/模拟 模型之间的文件传输与数据通信,采用基于TCP/IP协议的网络传输方式,用于在上述两台 工作站进行协同测试,通信基于TCP/IP协议实现测试的同步性控制和文件传输,以UDP报 文实现测试的同步控制,以TCP方式实现测试文件的自动传输和读取,每轮测试包含四次 以UDP报文实现的同步控制信号,及三次以TCP方式实现的文件传输回合。上述基于TCP/IP协议实现测试的同步性控制和文件传输,以UDP报文实现测试的 同步控制,以TCP方式实现测试文件的自动传输和读取,其具体实现方式(见图4)为
第一步测试开始,软件实现程序执行程序利用UDP报文发起测试请求,硬件部分收到 UDP报文后,返回确认信号后启动测试(Reql/Ackl);
第二步测试启动后,硬件部分以随机方式产生测试激励,并进一步生成对应的内存映 像文件(.imgl),以UDP报文与软件实现程序建立链接(Req2/Ack2),通过TCP方式将测试 激励文件及内存映像文件传输到软件实现程序,并存放于程序指定的路径下;
第三步软件实现程序读取硬件实现程序生成的测试激励文件及内存映像文件,进行 汇编、编译和链接处理,生成软件仿真器需要的可加载文件(.out)及硬件需要的内存映像 文件(.img2),并与硬件实现程序生成的内存映像文件比较,以检查硬件设计/模拟模型及 软件仿真是否加载相同的测试激励;
第四步硬件实现程序以TCP方式加载第三步比较一致后的内存映像文件(.img2),分别生成硬件设计(RTL代码)结果和硬件模拟结果;
第五步硬件设计模型和硬件模拟模型结果生成后,硬件程序通过UDP报文与软件实 现程序来进行第三次链接(Req3/Ack;3),将结果文件以TCP方式传输给软件实现程序,并存 放于程序指定的路径下;
第六步协同验证平台将软、硬件结果比较结束后,在软件实现程序和硬件程序之间产 生一对UDP结束请求、应答信号(Req4/Ack4),并结束本轮测试,启动下轮测试。
如图3所示,基于网络传输的处理器协同验证平台测试方法,在Linux操作系统工 作站的测试环境下,其测试步骤是
第一步测试开始,执行软件实现程序依据提示分别输入两个参数参数1设置每次测 试过程验证平台自动完成的测试轮数,参数2设置通信双方的端口号;并依据参数设置测 试环境,自行建立三个级别文件存放目录以保存所有测试文件信息。其中,‘…/test’为 测试一级目录,存放所有测试文件子目录,在测试开始创建一次,并不重复创建,‘…/test/ time/’以系统当前时间命名,存放一次测试产生的子目录及文件,在测试开始时创建,‘···/ test/time/i/'用于存放第i轮测试产生的所有文件,每一轮测试创建一次,‘…/’表示协 同验证平台程序所在的当前目录;
第二步执行硬件实现程序,产生测试激励,并生成对应的内存映像文件(.imgl)。测 试激励由汇编指令按照一定的约束随机形成,汇编指令的及约束由程序从指令函数库即约 束函数库中以随机方式抽取,测试激励的指令组合形式由指令按照约束规则随机组合,并 生成对应的二进制内存映像文件(.imgl);
第三步软件实现程序以TCP方式读取测试激励,编译生成软件仿真器可加载的激励 文件(.out),并进一步生成硬件设计/模拟模型需要的内存映像文件(.img2)并与硬件实 现程序生成的内存映像文件进行比较,以确保每轮测试中硬件设计/模拟和软件仿真加载 的是同一个测试激励;
第四步比较硬件实现程序和软件实现程序分别生成的内存映像文件,以确保每一 轮验证都是硬件设计/模拟和软件仿真加载相同的测试激励。内存映像文件比较不一致 时,比较结果写入日记文件,结束本轮测试,比较结果一致时,运行软件仿真器,产生仿真结 果;
第五步硬件设计/模拟模型通过以TCP方式读取/加载内存映像文件(.img2),分 别生成硬件设计模型结果和硬件模拟模型结果,保存在第一步描述的当前测试目录‘···/ test/time/i/'下;
第六步比较分析硬件设计模型结果和硬件模拟模型结果,并将分析结果写入日记文 件("'/tesVtimeZiTlog. txt),本次比较实现硬件设计模型结果和硬件模拟模型进行相互 验证,以验证RTL代码的正确性;
第七步输出比较分析硬件设计模型运行结果和软件仿真结果(见图5),并将分析结 果写入日记文件(…/teSt/time/i/l0& txt),本次比较实现软件级验证RTL代码的正确 性;
第八步软件实现程序查询每一轮测试差异结果文件,以文本形式("'/tesVtime/ dirlog. txt)记录存在差异的测试文件所在目录,删除结果正确的目录及文件,统计覆盖 率,在每一次结束后将功能验证覆盖率写入日记文件,并开始下一次测试。
权利要求
1.一种基于网络传输的处理器协同验证平台,其特征在于由硬件实现程序、软件实 现程序和硬件实现程序与软件实现程序之间的网络通信三个部分组成;硬件实现程序包括 测试激励、硬件设计模型、硬件模拟模型和一台安装Linux操作系统的工作站;测试激励由 汇编指令按照一定的约束规则进行随机组合形成,硬件设计模型用Verilog硬件描述语言 生成,在寄存器传输级Otegister Transfer Level,RTL)进行建模;硬件模拟模型用C++语 言模拟硬件设计进行建模,对硬件设计进行初级验证,两个模型遵照相同的设计方案,对相 同激励能够具有相同的响应;软件实现程序包括软件仿真器和一台安装Linux操作系统的 工作站;软件实现程序依据输入的参数配置测试环境,利用软件仿真器对硬件进行模拟,以 在软件级对硬件设计进行进一步的验证;硬件实现程序与软件实现程序之间的网络通信, 采用基于TCP/IP协议实现测试的同步性控制和文件传输,用于在上述两台工作站进行协 同测试。
2.根据权利要求1所述的一种基于网络传输的处理器协同验证平台,其特征在于所 述基于TCP/IP协议实现测试的同步性控制和文件传输,是以UDP报文实现测试的同步控 制,以TCP方式实现测试文件的自动传输和读取,其具体实现方式为第一步测试开始,软件实现程序执行程序利用UDP报文发起测试请求,硬件部分收到 UDP报文后,返回确认信号后启动测试(Reql/Ackl);第二步测试启动后,硬件部分以随机方式产生测试激励,并进一步生成对应的内存映 像文件(.imgl),以UDP报文与软件实现程序建立链接(Req2/Ack2),通过TCP方式将测试 激励文件及内存映像文件传输到软件实现程序,并存放于程序指定的路径下;第三步软件实现程序读取硬件实现程序生成的测试激励文件及内存映像文件,进行 汇编、编译和链接处理,生成软件仿真器需要的可加载文件(.out)及硬件需要的内存映像 文件(.img2),并与硬件实现程序生成的内存映像文件比较,以检查硬件设计/模拟模型及 软件仿真是否加载相同的测试激励;第四步硬件实现程序以TCP方式加载第三步比较一致后的内存映像文件(.img2),分 别生成硬件设计(RTL代码)结果和硬件模拟结果;第五步硬件设计模型和硬件模拟模型结果生成后,硬件程序通过UDP报文与软件实 现程序来进行第三次链接(Req3/Ack;3),将结果文件以TCP方式传输给软件实现程序,并存 放于程序指定的路径下;第六步协同验证平台将软、硬件结果比较结束后,在软件实现程序和硬件程序之间产 生一对UDP结束请求、应答信号(Req4/Ack4),并结束本轮测试,启动下轮测试。
3.一种基于网络传输的处理器协同验证平台测试方法,在Linux操作系统工作站的测 试环境下,其测试步骤是第一步测试开始,执行软件实现程序依据提示分别输入两个参数参数1设置每次测 试过程验证平台自动完成的测试轮数,参数2设置通信双方的端口号;并依据参数设置测 试环境,自行建立三个级别文件存放目录以保存所有测试文件信息;第二步执行硬件实现程序,产生测试激励,并生成对应的内存映像文件(.imgl), 测试激励由汇编指令按照一定的约束随机形成,汇编指令的及约束由程序从指令函数 库即约束函数库中以随机方式抽取,测试激励的指令组合形式由指令按照约束规则随机组 合,并生成对应的二进制内存映像文件(.imgl);第三步软件实现程序以TCP方式读取测试激励,编译生成软件仿真器可加载的激励 文件(.out),并进一步生成硬件设计/模拟模型需要的内存映像文件(.img2)并与硬件实 现程序生成的内存映像文件进行比较,以确保每轮测试中硬件设计/模拟和软件仿真加载 的是同一个测试激励;第四步比较硬件实现程序和软件实现程序分别生成的内存映像文件,以确保每一轮 验证都是硬件设计/模拟和软件仿真加载相同的测试激励,内存映像文件比较不一致时, 比较结果写入日记文件,结束本轮测试,比较结果一致时,运行软件仿真器,产生仿真结 果;第五步硬件设计/模拟模型通过以TCP方式读取/加载内存映像文件(.img2),分别 生成硬件设计模型结果和硬件模拟模型结果,并保存在当前测试目录下;第六步比较分析硬件设计模型结果和硬件模拟模型结果,并将分析结果写入日记文 件,本次比较实现硬件设计模型结果和硬件模拟模型进行相互验证,以验证RTL代码的正 确性;第七步输出比较分析硬件设计模型运行结果和软件仿真结果,并将分析结果写入日 记文件,本次比较实现软件级验证RTL代码的正确性;第八步软件实现程序查询每一轮测试差异结果文件,以文本形式记录存在差异的测 试文件所在目录,删除结果正确的目录及文件,统计覆盖率,在每一次结束后将功能验证覆 盖率写入日记文件,并开始下一次测试。
全文摘要
本发明公开了一种基于网络传输的处理器协同验证平台及其测试方法,基于网络传输的处理器协同验证平台由硬件实现程序、软件实现程序和硬件实现程序与软件实现程序之间的网络通信三个部分组成;硬件实现程序包括测试激励、硬件设计模型、硬件模拟模型和一台安装Linux操作系统的工作站;软件实现程序包括软件仿真器和一台安装Linux操作系统的工作站,利用软件仿真器对硬件进行模拟,在软件级对硬件设计进行进一步的验证;硬件实现程序与软件实现程序之间的网络通信,采用基于TCP/IP协议实现测试的同步性控制和文件传输,用于在上述两台工作站进行协同测试。能够详细/准确的定位错误和差异,验证准确率高;验证通过网络方式进行,便捷易行。
文档编号G06F11/26GK102147760SQ20111010111
公开日2011年8月10日 申请日期2011年4月22日 优先权日2011年4月22日
发明者欧明双, 洪一, 耿锐, 郭二辉, 鲍华 申请人:中国电子科技集团公司第三十八研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1