法律状态公告日
法律状态信息
法律状态
2020-06-23
未缴年费专利权终止 IPC(主分类):G06F11/26 授权公告日:20140730 终止日期:20190626 申请日:20120626
专利权的终止
2014-07-30
授权
授权
2013-02-13
实质审查的生效 IPC(主分类):G06F11/26 申请日:20120626
实质审查的生效
2012-12-26
公开
公开
技术领域
本发明涉及处理器验证技术,特别涉及一种基于模拟器的软硬件协同验证方法及系统。
背景技术
伴随着DSP(Digital Signal Processing,数字信号处理)处理器设计复杂度的增加,验证的代价也在稳步提升。作为DSP处理器设计不可或缺的一个环节,验证逐渐成为了DSP处理器设计中的瓶颈,因此,寻找更加丰富的验证手段或方法十分重要。传统DSP处理器验证中,软件描述语言模型(以下简称“软件模型”)和硬件描述语言模型(以下简称“硬件模型”)分开验证各自的功能是否正确,这种验证方法的缺点在于,首先,软件模型和硬件模型必须按照各自对系统资源的要求,以及目标,配置独立的验证环境,这导致无法有效利用相互间的资源;其次,通过软件模型模拟硬件模型有别于实际的DSP处理器结构,容易产生不可预期的错误,导致DSP处理器设计周期的延长。
软硬件模型协同验证的方法,在很大程度上解决了软件模型和硬件模型分开验证的缺点,使软件模型和硬件模型能在同一时间进行,能够及时发现软件和硬件中存在的错误。目前基于模拟器验证的方法已经在越来越多的处理器设计难验证中得到了应用,在开发一款新型号的处理器之前,首先通过软件模型模拟微处理器内部的功能和处理器的指令集,这种模拟器主要用于检测指令集的的设计方案是否合理,各大芯片制造公司为用户开发硬件产品也提供了相应的模拟器,但这种模拟器主要用于软件开发和代码移植,无法和硬件仿真器的其他部份连接,主要的原因在于这些公司所提供的模拟器上,没有提供接口供硬件仿真环境的自动调用。为了解决这个问题,最常见的是软原型验证,即将硬件设计仿真器协同在工作站上模拟,软件模型与硬件模型之间通过Verilog编程语言接口(ProgramLanguage Interface,简称:PLI)通信实现整个系统的软硬件模型部分的联合仿真。
传统的软硬件协同验证方案中,通常对硬件模型设计要求偏高,在实际的验证过程中很难精定位到出错的指令,执行效率低下导致了自动化协同验证效果不明显,在软件模型的设计上,通常需要设计周期精确的模拟器,而这种模拟器的设计复杂度通常较大。
发明内容
本发明的目的是为了解决现有技术中软硬件模型协同验证中不能精确定位到出错的指令、且验证效率低下的技术的问题。
为实现上述目的,一方面,本发明提供了一种基于模拟器的软硬件模型协同验证的方法,该方法包括以下步骤:硬件模型在指令流水线开始工作前调用软件模型,并将所述硬件模型仿真的时钟信息发送给软件模型;软件模型驱动内核模拟器进行初始化配置;当硬件模型在指令流水线执行到指令执行阶段时调用软件模型,并将硬件模型仿真的当前时间点发送给软件模型;软件模型驱动内核模拟器执行完指令,并根据硬件模型仿真的当前时间点、时钟信息计算指令在硬件模型中执行完成的时间点;当硬件模型写寄存器堆时,调用软件模型,并将指令执行完的数据信息发送给软件模型;软件模型驱动内核模拟器进行数据信息比较,如果数据信息比较不一致,则定位出错指令。
另一方面,本发明提供了一种基于模拟器的软硬件模型协同验证的系统,该系统包括:包括硬件模型和软件模型,其中软件模型包括初始化模块、模拟执行模块和数据比较模块。初始化模块用于所述硬件模型在指令流水线开始工作前,驱动模拟器进行初始化配置,并接收由所述硬件模型发送的硬件仿真的时钟精度与步长;模拟执行模块用于当所述硬件模型在指令流水线执行到指令执行阶段时,驱动所述模拟器执行完指令,并接收所述硬件模型仿真的当前时间点,所述模拟器根据所述硬件模型仿真的当前时间点、所述时钟精度与步长计算所述指令在硬件模型中执行完成的时间点;数据比较模块用于接收由所述硬件模型发送的指令执行完的数据信息,并驱动所述模拟器进行数据信息比较,如果数据信息比较不一致,则定位出错指令。
本发明实施例提供的基于模拟器的软硬件模型协同验证方法,对硬件模型的设计要求很低,且硬件模型调用软件模型相对简单,环境配置要求简单,实际使用过程中通过自动化操作可高效完成出错指令的定位。另外,不需要软件模型提供时钟模型,降低了对软件模型设计的复杂度。
附图说明
图1为本发明实施例提供的基于模拟器的软硬件模型协同验证方法流程图;
图2为本发明实施例提供的硬件模型访问寄存器堆时的数据比较示意图;
图3为本发明实施例提供的数据比较方法流程图。
图4为本发明实施例提供的基于模拟器的软硬件模型协同验证系统结构示意图。
具体实施方式
本发明实施例提供了一种基于模拟器的软硬件模型协同验证方法,该方法以硬件模型为主控端,通过调用软件模型提供的接口指导其执行行为。软件模型则用于提供正确的指令级参考模型(模拟器),并以动态链接库的形式交由硬件仿真软件使用,完成模拟器执行驱动、数据比较、时钟计算等功能。本发明实施例提供的软硬件模型协同验证方法,对硬件模型的设计要求很低,且硬件模型调用软件模型相对容易,环境配置要求简单,实际使用过程中通过自动化操作可高效完成出错指令的定位。另外,软件模型不需要提供时钟模型,只需要提供对指令行为级的模拟,降低了对软件模型设计的复杂度。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明实施例提供的一种基于模拟器的软硬件模型协同验证方法流程图。如图1所示,步骤101-103由主控端硬件模型执行,步骤110-115由软件模型协同执行。
本发明实施例软件模型根据Verilog PLI提供的标准访问机制来访问Verilog代码,按照PLI提供的标准访问机制,需要在软件模型中预先定义系统访问函数。
系统访问函数定义如下:
其中,"$dataload"表示为dataload函数,用于当硬件模型启动时控制模拟器进行初始化配置,包括加载可执行文件,并配置各项参数;"$cpustep"表示为cpustep函数,用于硬件模型驱动模拟器执行完一个指令包或一条指令;"$peek_mem_ptr"、"$peek_mem_data"、和"$peek_mem_address"分别表示推断寄存器比较函数、数据寄存器比较函数和地址寄存器比较函数。"$dumpmem"表示为Dumpmem函数,用于内存数据比较,以及从内存中读出数据。
如上所述,这些系统访问函数的定义可根据用户实际的需要自行定义。
在步骤101,启动硬件模型,加载一个待运行的可执行文件,开始硬件仿真工作。
硬件模型在指令流水线开始工作之前,调用软件模型中预先定义的dataload函数,并执行步骤111,驱动软件模型的内核模拟器进行初始化配置,包括加载待运行的可执行文件,并配置各项参数,具体包括初始化寄存器、获取硬件仿真的时钟信息(时钟精度与步长)、分配内存地址等,并将硬件模型的仿真器测试台的时钟精度以及时钟步长信息发送给模拟器,用以保证模拟器计算所获得的时间点与硬件模型的仿真时间同步。
在步骤102,当硬件模型的指令流水线执行到执行阶段时,调用软件模型的cpustep函数,执行步骤112,驱动软件模型的内核模拟器执行完一条指令或一个指令包,当执行完一条指令或一个指令包后,则将执行完后的每条指令相关信息存入到数据缓冲器中,同时将当前硬件模型仿真的时间点发送给模拟器,模拟器通过获取得的时间点的值以及在步骤101中获取得硬件仿真时钟精度和时钟步长计算出具体指令执行完成的硬件模型仿真时间,作为后期数据比较的约束之一。
有关上述硬件模型的当前时间点的获取和计算如下所述:
Verilog PLI中提供了用于获取时钟信息的函数。例如,函数tf_strgettime用于获取当前硬件模型时间点;函数tf_igettime用于获取当前硬件模型仿真器的时钟精度;以及函数tf_igettimeprecision用于获取当前硬件模型仿真器的时钟步长。当模拟器运行到指令流水线的执行阶段时,软件模型可通过调用函数tf_strgettime获取当前硬件模型的时间点,并根据函数tf_igettime和函数tf_igettimeprecision获取硬件模型仿真时的时钟精度和时钟步长,计算出该条指令执行完成的时间。
模拟器在执行完每条指令后,还需要建立合适的数据结构用以存储指令的相关数据信息,并存入到数据缓冲器中,指令的相关数据信息包括寄存器类型、当前PC指针、指令执行完成的时间点,指令所对应的二进制码、寄存器存放的数据、寄存器索引号,以及是否被核实过的标志位中的一个或多个。
在一个例子中,上述数据结构的定义描述如下:
其中,type表示寄存器类型,PC表示pc指针,time表示时间点,insn表示指令所对应的二进制码,register_data表示寄存器存放的数据,index表示寄存器索引号,flag表示标志位,databuffer[queuq_length]表示数据缓冲器。
在步骤103,当硬件模型访问寄存器堆时,调用软件模型中对应的比较函数,例如,推断寄存器比较函数、数据寄存器比较函数或地址寄存器比较函数,并将硬件模型访问的数据信息,例如寄存器类型、寄存器号、待写的数据以及指令执行完成的时间点发送给模拟器,并执行步骤113,在步骤113,模拟器根据获取的数据信息与数据缓冲器中的数据信息进行比较,如果数据信息比较一致,硬件模型继续执行,否则执行步骤115,即中断并定位出错指令。
上述实施例针对软硬件模型协同验证的方法进行描述,以下针对协同验证方法中数据比较操作步骤进行描述。图2为本发明实施例提供的硬件模型访问寄存器堆时的数据比较方法流程图,该方法包括步骤201-204:
在步骤201,判断硬件模型是否访问寄存器堆端口,如果是,则执行步骤202。
在步骤202,根据硬件模型访问寄存器的类型调用相应的比较函数,例如,针对地址寄存器,需要调用相应的地址寄存器比较函数peek_mem_address。
在步骤203,硬件模型向模拟器发送数据包,该数据包携带当前指令执行完成的时间点、寄存器类型和寄存器索引号和待写的寄存器数据。
在步骤204,模拟器根据获取的数据包所携带的信息与数据缓冲器中存储的指令相关信息进行数据信息比较,如果比较不一致,则定位出错指令。
以下针对软硬件模型协同验证方法中指令分别在软硬件模型中执行完后的指令数据进行比较。图3为本发明实施例提供的数据比较方法流程图,该方法包括步骤301-311。
在步骤301,模拟器获取数据缓冲器的索引。
在步骤302,模拟器访问该索引对应的数据缓冲器,该数据缓冲器中存储了指令在模拟器中执行完成后的相关数据信息,包括寄存器类型、当前PC指针、指令执行完成的时间点,指令所对应的二进制码、寄存器存放的数据、寄存器索引号,以及是否被核实过的标志位。
在步骤303,模拟器判断当前数据缓冲器中存储的标志位(flag)的布尔值,如果flag为假,则返回到步骤301,否则执行步骤304。
在步骤304,进一步判断当前数据缓冲器中的时间点是否相同,即具体指令执行完成的硬件仿真时间是否等于模拟器执行完成的时间,如果相同,则执行步骤305,否则返回到步骤301。
在步骤305,进一步判断指令在硬件模型中执行完成时修改的寄存器类型与当前数据缓冲器中存储的寄存器类型是否相同,如果相同,则进行步骤306,否则返回到步骤301。
在步骤306,进一步判断硬件模型要访问的寄存器索引号与当前数据缓冲器中存储的寄存器索引号是否相同,如果相同,则执行步骤307,否则返回到步骤301。
在307,进一步判断硬件模型要写入寄存器的数据与当前数据缓冲器中存储的数据是否相同,如果相同,执行步骤308,否则执行步骤309。
在步骤308,硬件模型继续执行。
在步骤309-步骤311,模拟器从当前数据缓冲器中读出该条指令的PC值、通过PC值获取具体的指令,并打印该条指令的汇编码。
本发明实施例提供的软硬件模型协同验证方法,对硬件模型的设计要求很低,且硬件模型调用软件模型相对简单,环境配置要求简单,实际使用过程中通过自动化操作可高效完成出错指令的定位。另外,不需要软件模型提供时钟模型,只需要提供对指令行为级的模拟,并通过PLI接口获取HDL模型触发时的时钟信息进行细粒度上的模拟,降低了对软件模型设计的复杂度。
图4为本发明实施例提供的基于模拟器的软硬件模型协同验证系统结构示意图。如图4所示,该协同验证系统400包括硬件模型410和软件模型420,软件模型420包括初始化模块421、模拟执行模块422和数据比较模块423。
初始化模块421用于硬件模型410在指令流水线开始工作前,驱动模拟器进行初始化配置,并配置各项参数,具体包括加载可执行文件、初始化寄存器、分配内存地址等,并接收硬件模型410仿真的时钟信息,例如,时钟精度以及时钟步长信息。
模拟执行模块422用于当硬件模型410在指令流水线执行到指令执行阶段时,驱动模拟器执行完一个指令包或一条指令,并接收硬件模型210仿真的当前时间点,模拟器根据硬件模型仿真的当前时间点、时钟精度和时钟步长计算指令或指令包在硬件模型中执行完成的时间点。
本发明实施例软件模型还包括数据模块(图中未标出),该数据模块用于建立数据结构,用以存放的模拟器执行完指令后的指令相关信息,例如,寄存器类型、当前程序计数器PC指针、指令执行结束时的时间点、对应指令的二进制码、寄存器存放的数据、寄存器索引号和标志位信息中的一个或多个。
数据比较模块423用于硬件模型410在写寄存器堆时,接收由硬件模型410发送的指令执行完后的指令数据信息,例如,寄存器类型、寄存器索引号、待写的寄存器数据和当前时间点数据信息,并驱动所述模拟器进行数据信息比较。如果数据信息比较一致,硬件模型410继续执行;否则,定位出错指令。
具体地的,数据比较模块423根据硬件模型410发送的指令数据信息和数据缓冲器中存储的指令相关信息进行比较。数据比较模块423首先获取数据缓冲器的索引,根据该索引访问对应的数据缓冲器,再判断当前数据缓冲器中存储的标志位的布尔值,如果标志位为假,则进行下一项的比较,否则向后查找;数据比较模块423进一步判断指令在硬件模型中执行完成的时间点与数据缓冲器中存储的时间点是否相同,即具体指令执行完成的硬件仿真时间是否等于模拟器计算出执行完成的时间点,如果该时间点相同,则进行下一项的比较,否则向后查找;数据比较模块423进一步判断硬件模型410要访问的寄存器类型与当前数据缓冲器中存储的寄存器类型是否相同,如果相同,则进行下一项的比较,否则向后查找;数据比较模块423进一步判断硬件模型410要访问的寄存器索引号与当前数据缓冲器中存储的寄存器索引号是否相同,如果相同,则进行下一项的比较,否则向后查找;数据比较模块423进一步判断硬件模型要写入寄存器的数据与当前数据缓冲器中存储的数据是否相同,如果相同,硬件模型继续执行,否则定位出错指令,模拟器从当前数据缓冲器中读出错指令的PC值,并通过PC值获取具体指令信息。
本发明实施例提供的软硬件模型协同验证系统,对硬件模型的设计要求很低,且硬件模型调用软件模型相对容易,环境配置要求简单,实际使用过程中通过自动化操作可高效完成出错指令的定位。另外,软件模型不需要提供时钟模型,只需要提供对指令行为级的模拟,降低了对软件模型设计的复杂度。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 优化软硬件协同模拟器
机译: 异构分布式嵌入式系统的基于集群的软硬件协同综合
机译: 系统级软硬件开发与协同仿真系统