一种基于模拟器的软硬件协同验证方法及系统的制作方法

文档序号:6372154阅读:217来源:国知局
专利名称:一种基于模拟器的软硬件协同验证方法及系统的制作方法
技术领域
本发明涉及处理器验证技木,特别涉及ー种基于模拟器的软硬件协同验证方法及系统。
背景技术
伴随着DSP(Digital Signal Processing,数字信号处理)处理器设计复杂度的增カロ,验证的代价也在稳步提升。作为DSP处理器设计不可或缺的ー个环节,验证逐渐成为了DSP处理器设计中的瓶颈,因此,寻找更加丰富的验证手段或方法十分重要。传统DSP处理器验证中,软件描述语言模型(以下简称“软件模型”)和硬件描述语言模型(以下简称“硬件模型”)分开验证各自的功能是否正确,这种验证方法的缺点在干,首先,软件模型和硬件模型必须按照各自对系统资源的要求,以及目标,配置独立的验证环境,这导致无法有效利用相互间的资源;其次,通过软件模型模拟硬件模型有别于实际的DSP处理器结构,容易产生 不可预期的错误,导致DSP处理器设计周期的延长。软硬件模型协同验证的方法,在很大程度上解决了软件模型和硬件模型分开验证的缺点,使软件模型和硬件模型能在同一时间进行,能够及时发现软件和硬件中存在的错误。目前基于模拟器验证的方法已经在越来越多的处理器设计难验证中得到了应用,在开发ー款新型号的处理器之前,首先通过软件模型模拟微处理器内部的功能和处理器的指令集,这种模拟器主要用于检测指令集的的设计方案是否合理,各大芯片制造公司为用户开发硬件产品也提供了相应的模拟器,但这种模拟器主要用于软件开发和代码移植,无法和硬件仿真器的其他部份连接,主要的原因在于这些公司所提供的模拟器上,没有提供接ロ供硬件仿真环境的自动调用。为了解决这个问题,最常见的是软原型验证,即将硬件设计仿真器协同在工作站上模拟,软件模型与硬件模型之间通过Verilog编程语言接ロ(ProgramLanguage Interface,简称PLI)通信实现整个系统的软硬件模型部分的联合仿真。

传统的软硬件协同验证方案中,通常对硬件模型设计要求偏高,在实际的验证过程中很难精定位到出错的指令,执行效率低下导致了自动化协同验证效果不明显,在软件模型的设计上,通常需要设计周期精确的模拟器,而这种模拟器的设计复杂度通常较大。

发明内容
本发明的目的是为了解决现有技术中软硬件模型协同验证中不能精确定位到出错的指令、且验证效率低下的技术的问题。为实现上述目的,一方面,本发明提供了一种基于模拟器的软硬件模型协同验证的方法,该方法包括以下步骤硬件模型在指令流水线开始工作前调用软件模型,并将所述硬件模型仿真的时钟信息发送给软件模型;软件模型驱动内核模拟器进行初始化配置;当硬件模型在指令流水线执行到指令执行阶段时调用软件模型,并将硬件模型仿真的当前时间点发送给软件模型;软件模型驱动内核模拟器执行完指令,并根据硬件模型仿真的当前时间点、时钟信息计算指令在硬件模型中执行完成的时间点;当硬件模型写寄存器堆时,调用软件模型,并将指令执行完的数据信息发送给软件模型;软件模型驱动内核模拟器进行数据信息比较,如果数据信息比较不一致,则定位出错指令。另ー方面,本发明提供了一种基于模拟器的软硬件模型协同验证的系统,该系统包括包括硬件模型和软件模型,其中软件模型包括初始化模块、模拟执行模块和数据比较模块。初始化模块用于所述硬件模型在指令流水线开始工作前,驱动模拟器进行初始化配置,并接收由所述硬件模型发送的硬件仿真的时钟精度与步长;模拟执行模块用于当所述硬件模型在指令流水线执行到指令执行阶段吋,驱动所述模拟器执行完指令,并接收所述硬件模型仿真的当前时间点,所述模拟器根据所述硬件模型仿真的当前时间点、所述时钟精度与步长计算所述指令在硬件模型中执行完成的时间点;数据比较模块用于接收由所述硬件模型发送的指令执行完的数据信息,并驱动所述模拟器进行数据信息比较,如果数据信息比较不一致,则定位出错指令。本发明实施例提供的基于模拟器的软硬件模型协同验证方法,对硬件模型的设计·要求很低,且硬件模型调用软件模型相对简单,环境配置要求简单,实际使用过程中通过自动化操作可高效完成出错指令的定位。另外,不需要软件模型提供时钟模型,降低了对软件模型设计的复杂度。


图I为本发明实施例提供的基于模拟器的软硬件模型协同验证方法流程图;图2为本发明实施例提供的硬件模型访问寄存器堆时的数据比较示意图;图3为本发明实施例提供的数据比较方法流程图。图4为本发明实施例提供的基于模拟器的软硬件模型协同验证系统结构示意图。
具体实施例方式本发明实施例提供了一种基于模拟器的软硬件模型协同验证方法,该方法以硬件模型为主控端,通过调用软件模型提供的接ロ指导其执行行为。软件模型则用于提供正确的指令级參考模型(模拟器),并以动态链接库的形式交由硬件仿真软件使用,完成模拟器执行驱动、数据比较、时钟计算等功能。本发明实施例提供的软硬件模型协同验证方法,对硬件模型的设计要求很低,且硬件模型调用软件模型相对容易,环境配置要求简单,实际使用过程中通过自动化操作可高效完成出错指令的定位。另外,软件模型不需要提供时钟模型,只需要提供对指令行为级的模拟,降低了对软件模型设计的复杂度。下面通过附图和实施例,对本发明的技术方案做进ー步的详细描述。图I为本发明实施例提供的一种基于模拟器的软硬件模型协同验证方法流程图。如图I所示,步骤101-103由主控端硬件模型执行,步骤110-115由软件模型协同执行。本发明实施例软件模型根据Verilog PLI提供的标准访问机制来访问Verilog代码,按照PLI提供的标准访问机制,需要在软件模型中预先定义系统访问函数。系统访问函数定义如下S-tfcell 一-dec I spec (dll export) ver iusertf s [] = {
{usertask, 0,0,0,cpu-step, 0, "$cpustep"},
{usertask, 0,0,0,data-load, 0,"Idataload"},
{usertask, 0, 0,0, peek—meiptr,0, "$peek_meni-ptr"},{usertask, 0,0,0,peek—mem—data, 0, "$peek_mem_data"},{usertask, 0,0,0,peek—meiaddress, 0,"$peek-meni-address"},{usertask, 0,0,0,dimipmera, 0, "$dumpmem"},
(0}
}
在一个例子中,上述数据结构的定义描述如下
权利要求
1.一种基于模拟器的软硬件模型协同验证方法,其特征在于 硬件模型在指令流水线开始工作前调用软件模型,并将所述硬件模型仿真的时钟信息发送给所述软件模型;所述软件模型驱动内核模拟器进行初始化配置; 当所述硬件模型在指令流水线执行到指令执行阶段时调用所述软件模型,并将所述硬件模型仿真的当前时间点发送给所述软件模型;所述软件模型驱动所述内核模拟器执行完指令,并根据所述硬件模型仿真的当前时间点、所述时钟信息计算所述指令在硬件模型中执打完成的时间点; 当所述硬件模型写寄存器堆时,调用所述软件模型,并将指令执行完成时的数据信息发送给所述软件模型;所述软件模型驱动所述内核模拟器进行数据信息比较,如果数据信息比较不一致,则定位出错指令。
2.根据权利要求I所述的方法,其特征在于,所述时钟信息包括时钟精度和步长。
3.根据权利要求I所述的方法,其特征在于,所述内核模拟器在执行完指令后还包括 建立数据结构,在所述数据结构中存放所述内核模拟器在执行完指令后的指令数据信息,所述指令数据信息包括寄存器类型、当前程序计数器PC指针、指令执行结束时的时间点、对应指令的二进制码、寄存器存放的数据、寄存器索引号和标志位信息中的一个或多个。
4.根据权利要求I所述的方法,其特征在于,所述数据信息比较进一步包括 判断标志位的布尔值,如果为假,则进行下一项比较,否则向后查找; 判断时间点是否相同,如果相同,则进行下一项比较,否则向后查找; 判断寄存器类型是否相同,如果相同,则进行下一项比较,否则向后查找; 判断寄存器索引号是否相同,如果相同,则进行下一项比较,否则向后查找; 判断寄存器存放的数据是否相同,如果不相同,则定位出错指令。
5.根据权利要求I所述的方法,其特征在于,所述模拟器的初始化配置操作包括加载可执行文件,初始化寄存器、获取所述硬件模型仿真的时钟信息和分配内存地址。
6.根据权利要求I所述的方法,其特征在于,所述硬件模型与所述软件模型通过Verilog语言提供的标准编程语言接口进行通信。
7.一种基于模拟器的软硬件模型协同验证系统,包括硬件模型和软件模型,其特征在于所述软件模型包括初始化模块、模拟执行模块和数据比较模块; 初始化模块,用于所述硬件模型在指令流水线开始工作前,驱动模拟器进行初始化配置,并接收由所述硬件模型发送的硬件仿真的时钟精度与步长; 模拟执行模块,用于当所述硬件模型在指令流水线执行到指令执行阶段时,驱动所述模拟器执行完指令,并接收所述硬件模型仿真的当前时间点,所述模拟器根据所述硬件模型仿真的当前时间点、所述硬件仿真时钟精度与步长计算所述指令在硬件模型中执行完成的时间点; 数据比较模块,用于接收由所述硬件模型发送的指令执行完后的指令数据信息,并驱动所述模拟器进行数据信息比较,如果数据信息比较不一致,则定位出错指令。
8.根据权利要求7所述的系统,其特征在于,所述初始化模块具体用于驱动所述模拟器加载可执行文件,初始化寄存器、硬件仿真时钟精度与步长的获取和内存地址分配。
9.根据权利要求7所述的系统,其特征在于,所述软件模型还包括数据模块,用于建立数据结构,用以在所述数据结构中存放所述模拟执行模块在执行完指令后需要存储的指令数据信息,所述指令数据信息包括寄存器类型、当前程序计数器PC指针、指令执行结束时的时间点、对应指令的二进制码、寄存器存放的数据、寄存器索引号和标志位信息中的一个或多个。
10.根据权利要求7所述的系统,其特征在于,所述比较模块具体用于 判断标志位的布尔值,如果为假,则进行下一项比较,否则向后查找; 判断时间点是否相同,如果相同,则进行下一项比较,否则向后查找; 判断寄存器类型是否相同,如果相同,则进行下一项比较,否则向后查找; 判断寄存器索引号是否相同,如果相同,则进行下一项比较,否则向后查找; 判断数据比较是否相同,如果不相同,则定位出错指令。
11.根据权利要求7所述的系统,其特征在于,所述硬件模型与所述软件模型器通过Verilog语言提供的标准编程语言接口进行通信。
全文摘要
本发明涉及一种基于模拟器的软硬件模型协同验证方法及其系统。该方法包括硬件模型在指令流水线开始工作前调用软件模型,并将硬件模型仿真的时钟信息发送给软件模型;软件模型驱动内核模拟器进行初始化配置;当硬件模型在指令流水线执行到指令执行阶段时调用软件模型,并将硬件模型仿真的当前时间点发送给软件模型;软件模型驱动内核模拟器执行完指令,并根据硬件模型仿真的当前时间点、时钟信息计算指令在硬件模型中执行完成的时间点;当硬件模型写寄存器堆时,调用软件模型,并将指令执行完的数据信息发送给软件模型;软件模型驱动内核模拟器进行数据信息比较,如果数据信息比较不一致,则定位出错指令。本发明可高效定位出错指令。
文档编号G06F11/26GK102841837SQ20121021489
公开日2012年12月26日 申请日期2012年6月26日 优先权日2012年6月26日
发明者朱浩, 彭楚, 王东辉, 张铁军, 洪缨 申请人:中国科学院声学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1