Soc软硬件一体化设计验证方法

文档序号:6555180阅读:215来源:国知局
专利名称:Soc软硬件一体化设计验证方法
技术领域
本发明涉及集成电路设计技术领域,特别涉及SOC(system-on-a-chip片上系统)的设计验证技术。
背景技术
传统的SOC设计中,其过程一般是系统的预研,划分各功能模块(包括软件、硬件),具体模块的实现,然后是各个模块的集合、验证。按照传统的方法,硬件模块和软件模块各自分开验证其功能是否正确,也就是说,它们的验证不在同一个环境之下。这种方法存在很多缺点。首先,硬件和软件模块必须根据系统要求,建立各自的验证环境,这必然导致两个环境的不一致性;同时,额外增加了硬件模拟软件环境和软件模拟硬件环境的仿真模型;另外,仿真模型有别于实际的代码,以至于最后整合时,容易产生不可预期的错误,导致整个设计的反复。软硬件协同验证,则在最大程度上解决了分开验证的缺点,使软件和硬件能够尽早协同运作,让软件调试和硬件调试在同一时间进行,及时发现软件和硬件的错误。
为了解决这个问题,目前业内有一系列的方法最常见的一种是软原型验证,即将硬件设计由HDL仿真器在工作站上模拟,软件模型与硬件仿真器之间通过API接口通信来实现整个系统的软硬件部分的联合仿真,即Co-simulation。这种方法的优点在于整个仿真验证过程的可控性和可监测性很好,成本低;其缺点在于验证能力有限,只能适用于早期测试、接口调试和代码调试方面;且仿真运行速度很慢;此外它只能验证模型在功能上的正确性,没有精确至周期,也没精确至引脚;并且它很难解决外围设备数据同步的要求。另一中方法为快速原型系统,实现途径包括仿效(Emulation)、可重配置原型系统&专用原型系统,它是一种将SOC系统快速映射到基于处理器阵列或基于FPGA器件而构建出来的可重配置的平台来对设计进行验证的方法。这种方法的优点在于仿真速度很快,但仿真过程的可控性和可检测性差,且成本很高。
因此,SOC软硬件联合验证仍是个需要解决的问题。以下列举已有专利及项目提出的一些解决方法。
国内研发的SOC软硬件验证平台的典型案例有浙江大学的媒体处理器软硬件协同仿真验证平台(MPSP)、清华大学微电子所基于Celoxica的RC1000和RC200平台提出了改进型SoC原型验证电路板设计方案等。但是,浙江大学的MPSP专用性过强,可扩展性不能满足SoC系统研发的实际需要,清华大学的SoC原型验证方案还不成熟,不能提供完整的平台。

发明内容
本发明所要解决的技术问题是,提供一种SOC软硬件一体化设计验证方法及系统,能够同时实现良好的仿真速度和较低的成本。
本发明解决所述技术问题采用的技术方案是,SOC软硬件一体化设计验证方法,包括以下步骤a、初始化;b、软件侧向硬件侧发送激励数据包;c、硬件侧根据激励数据包进行仿真处理,将处理结果发回软件侧,并为软件侧接收;d、循环步骤b-c直到仿真结束。所述步骤a为软件侧通过向硬件侧发送两个数据包,其中第一个数据包中包含硬件侧寄存器的配置信息,通过对硬件侧的寄存器写入相应的值,第二个数据包中对每一个数据位的输入输出方向进行定义。
特别的,在仿真过程中,从软件侧发送到硬件侧和从硬件侧发送到软件侧的数据包的大小在初始化化完成后是确定的。
进一步的,所述步骤b为测试激励以及管脚映射信息经由第三方仿真工具并通过HDL应用接口函数或直接通过文本文件发送到基于事务级的打包解包应用程序模块中,打包解包应用程序模块根据所述平台的软硬件通信协议将激励信息打包为规定格式的数据包,并通过PCI总线发送到PCI卡的FIFO中,然后将激励传送到联合仿真板卡的FIFO中,随后由仿真主控模块或BFM模块对激励数据包进行解压处理并转换成具体的时钟经准的测试激励信号加载到硬件侧的被测试模块中。
所述步骤c为被测试模块将所得的响应信号传回仿真主控模块或BFM模块并按照软硬件通信协议打包,然后将这些响应数据包存储在联合仿真子板的上行FIFO中,等其软硬件通信模块握手成功后,则将响应数据包传送至PCI卡的FIFO中,最后通过PCI总线按原路传回至基于事务级的打包解包应用程序模块中,打包解包应用程序模块将收到的响应数据包解压后,通过相应API函数将响应信息传回第三方仿真工具,或直接以文本形式保存。
或者,软件侧向硬件侧提供测试向量和接受硬件侧响应,硬件侧完成测试后将结果返回软件侧。
本发明还提供一种SOC软硬件一体化设计验证系统,包括软件侧、硬件侧和通信单元,软件侧通过通信单元发送测试信号到硬件侧,硬件侧将处理后的信号经过通信单元发回软件侧,在所述通信单元中包括一个事务处理模块,所述事务处理模块完成测试事务信号到具有总线周期精度的时序信号之间的转换。
SOC软硬件一体化设计验证系统的另一种形式是,包括软件侧、硬件侧和通信单元,软件侧通过通信单元发送测试信号到硬件侧,硬件侧将处理后的信号经过通信单元发回软件侧,在硬件侧包括一个事务处理模块,所述事务处理模块完成测试事务信号到具有总线周期精度的时序信号之间的转换。
本发明的有益效果是1、所述一体化设计验证平台采用了基于自主开发的软硬件通信协议的软硬件通信架构,使得软硬件仿真过程能同步,并精确到时钟周期的对设计进行验证。
2、所述一体化设计验证平台采用了硬件虚拟仿真技术,解决了软件模型到硬件模型精确到管脚的映射工作。
3、所述一体化设计验证平台支持包括联合仿真(Co-emulation)模式、向量仿真模式和事务级(Transaction)仿真模式在内的多种仿真模式。
4、所述一体化设计验证平台提供通用的被测试模块(DUT-Device Under Test)总线接口,通用性强,能适用于各种SOC功能模块的验证。
5、所述一体化设计验证平台结构简单,设计合理,使用方便,且成本低廉。
以下结合附图和具体实施方式
对本发明作进一步的说明。


图1是软硬件协同仿真环境示意图。
图2是本发明SOC软硬件一体化设计验证平台的总体工作流程图。
图3是本发明SOC软硬件一体化设计验证平台的整体架构图。
图4是本发明SOC软硬件一体化设计验证平台所支持的联合仿真(Co-emulation模式)的工作原理图。
图5是本发明SOC软硬件一体化设计验证平台所支持的向量模式仿真的工作原理图。
图6是本发明SOC软硬件一体化设计验证平台所支持的事务级(Transaction)仿真模式的工作原理图。
图7是本发明SOC软硬件一体化设计验证平台的PCI卡的结构方框图。
图8是本发明SOC软硬件一体化设计验证平台的联合仿真板卡的结构方框图。
具体实施例方式
以下将本发明的方法和硬件结合为验证平台进行说明。将整个SOC设计的软硬件部分分别以最适合有效的方法,即分别用软件虚拟验证环境和硬件仿效环境来进行验证,并为这两个环境提供一条高速的数据通路和完备的通信机制及映射机制,使得真个SOC系统软硬件模型的验证工作能在一个一体化的环境下来完成。
SOC一体化设计验证平台软件部分包括第三方硬件仿真软件(如Modelsim,Active-HDL等)及相应的VPI(Verilog Procedural Interface)/FLI(Foreign Language Interface)接口程序,MVP(Module VerificationPlatform)软件程序,软硬件通信接口程序,PCI接口驱动程序及其API接口程序。
所述SOC一体化设计仿真验证平台硬件部分包括PCI板卡和联合仿真板卡两部分,两块板卡由LVDS串行传输线连接。
其中PCI板卡包括晶体振荡器,直流稳压电压源,电压转换器,PCI I/O加速芯片,FPGA,编程接口,LVDS(低压差分信号)接收/发送器,LVDS串行接口和PCI接口。其相互连接关系为直流电压源分别与晶体振荡器,FPGA,编程接口,PCI I/O加速芯片相连接,此外它还通过电压转换器与LVDS接收/发送器相连接;晶体振荡器分别与FPGA,编程接口以及PCI I/O加速芯片相连接;PCI I/O加速芯片通过PCI总线与PCI接口相连接,并通过本地总线与FPGA相连接;LVDS接收/发送器一端与FPGA相连接,另一端与LVDS串行接口相连接;编程接口与FPGA相连接。
联合仿真板卡由直流电压源,晶体振荡器,FPGA,编程接口,LVDS接收/发送器,LVDS串行接口,FPGA时钟扩展接口,PCB至PCB接口组成。其连接关系为直流电压源分别与晶体振荡器,FPGA,编程接口相连接,此外它还通过电压转换器与LVDS接收/发送器相连接;晶体振荡器分别与FPGA和编程接口相连接;编程接口,PCB至PCB接口以及时钟扩展接口均与FPGA相连接;LVDS接收/发送器一端与FPGA相连接,另一端与LVDS串行接口相连接。
所述PCI板卡FPGA包括本地总线接口协议控制模块,SCE-MI握手协议控制模块,FIFO缓存模块。所述联合仿真板卡FPGA包括SCE-MI握手协议控制模块,FIFO缓存模块,指令处理状态机(或BFM-Bus Functional Module)模块,功能配置寄存器模块,激励发送模块,响应接收模块,标准总线接口模块。
所述SOC软硬件一体化设计仿真验证平台软硬件通信,按照自定义的软硬件通信协议来完成。
接口协议主要规定了板卡的复位模式、时钟方案、以及三种验证模式下所有数据包的在软件方和硬件方之间的交互格式,其中主要有两类数据包一种是控制和配置的数据包,一种是验证数据包。
联合仿真板卡的复位,由软件方发送PCI级的复位命令。该复位命令需要在仿真初始化之前由软件发送,硬件在PCI卡接收该命令并作对联合仿真卡的复位操作。复位是通过向PCI本地端的特定地址写一个数据,这个特定的地址就是PCI本地地址空间中的一个,可以根据以后PLX9054的设计再进行具体设定。
1)Co-Simulation模式仿真仿真的基本机理在仿真初始化之后,即可进入仿真运行阶段。仿真运行时,软件先向硬件发送一个激励数据包,然后接收一个来自硬件的响应数据包;接着再发送一个激励数据包,然后接收一个响应数据包;如此循环交替进行下去,直到仿真结束为止。
a)仿真的初始化阶段在仿真的初始化阶段,软件侧通过向硬件侧发送两个数据包,其中第一个数据包中包含硬件侧寄存器的配置信息,通过对硬件侧的寄存器写入相应的值,第二个数据包中对每一个数据位的输入输出方向进行定义。从而完成对硬件侧的初始化。
b)仿真运行阶段在仿真的运行阶段,软硬件数据的通讯以数据包的形式进行传送,数据包包括包头(Packet Header)和包体(Packet Body,对于Co-Simulation模式,一个数据包体就对应一次协同仿真周期的数据),在仿真进行中,在每一个协同仿真周期由软件环境发送一个数据包(由数据包头紧跟着一个负载数据包构成),等待硬件方完成仿真后,将数据包(由数据包头紧跟负载数据包构成)传回后,进行处理后传回给仿真器。在这里给出仿真运行阶段的数据包和负载数据的格式。Co-Simulation模式的仿真过程软件发送第一个激励数据包,读取硬件返回的第一个激励数据包的响应数据包,发送第二个激励数据包,读取硬件返回的第二个激励数据包的响应数据包,如此循环下去,直到仿真结束。即在仿真过程中,从软件侧发送到硬件侧和从硬件侧发送到软件侧的数据包的大小在初始化化完成后是确定的。在仿真期间不允许有变化长度的数据包出现。
c)仿真结束阶段软件侧在仿真结束后,由软件侧向硬件侧发送一个字长为17的32位数据包。通知硬件以结束仿真。其中负载数据包即是关断联合仿真卡所有I/O的方向使能信息(全为‘0’)。
2)VECTOR模式的仿真a)仿真的初始化阶段在仿真的初始化阶段,软件侧通过向硬件侧发送里两个数据包,其中第一个数据包中包含硬件侧寄存器的配置信息,通过对硬件侧的寄存器写入相应的值,在第二个数据包中对每一个数据位的输入输出方向进行定义。从而完成对硬件侧的初始化。在初始化阶段,发送完以上两个数据包后,就认为硬件的初始就已经完成,在每一个Vector模式的仿真启动的时候,软件都要对硬件进行初始化。
b)仿真的运行阶段在仿真的运行阶段,软硬件数据的通讯以数据包的形式进行传送,数据包的分为包头和包体(负载数据)。每一个数据包的包体(负载数据)包含多个仿真数据,在仿真进行中,软件环境发送一个仿真包(由数据包头紧跟着一个负载数据包构成),等待硬件方完成仿真后,将传回的数据包(由数据包头紧跟包体构成)解包后写入输出文件中。Vector模式的仿真过程软件发送第一个激励数据包,读取硬件返回的第一个激励数据包的响应数据包,发送第二个激励数据包,读取硬件返回的第二个激励数据包的响应数据包,如此循环下去直到仿真结束。
在VECTOR模式中,软硬件进行一次交互的数据包中包括多个仿真数据,数据包的长度(包含多少个32位)根据硬件电路中的FIFO的长度而定。每一个数据包中包含一个或者多个完整的仿真数据。数据包的长度在初始化后,是确定的,并且固定不变的。输入/输出包的长度(含包头)均小于33个32位数据。每次仿真传送的数据包(除了最后一个数据包)的大小是固定的。时钟数据为当前实际电平。未启用时钟始终以0填充,比如已启用0通道时钟,则8位CLOCK值为?000_0000(注?代表该已启用时钟信号为当前仿真数据下对应的实际电平)。
在VECTOR模式中,软硬件进行一次数据传输的数据包中包括多个仿真数据,数据包的长度(包含多少个32位)根据硬件电路中的FIFO的长度而定。每一个数据包中包含一个或者多个完整的仿真数据。数据包的长度在初始化阶段就可以完全确定下来,以后每次仿真传送的数据包(除了最后一个数据包)的大小是固定的。即在仿真过程中,从软件侧发送到硬件侧和从硬件侧发送到软件侧的数据包的大小在初始化化完成后是完全确定的。在仿真期间不允许有变化长度的数据包出现(除最后一个数据包外)。
c)仿真的终止阶段软件侧在仿真结束后,由软件侧向硬件侧发送一个字长为17的32位数据包。通知硬件以结束仿真。其中负载数据包即是关断联合仿真卡所有I/O的方向使能信息(全为‘0’)。
更具体的,如图1所示,SOC软硬件协同仿真环境就是让软件调试器和硬件仿真器协同工作的集成环境,软件代码的执行可以反映到硬件设计上对应的寄存器值的变化和操作。硬件仿真的状态也会反馈到软件运行环境。两者相互作用,完成对SOC芯片中的软硬件部分的验证。软硬件协同仿真环境的软件环境包括一个图形化的用户界面、开发工具(编译器、连接器、调试器)、应用程序驱动等;硬件环境包括一个图形化界面、硬件仿真器、硬件设计。
如图2所示,采用C语言或硬件描述语言编写的测试激励以及硬件虚拟映射软件(MVP)产生的管脚映射信息,经由第三方仿真工具并通过PL API(HDL应用接口函数)或直接通过文本文件发送到采用C语言编写的基于事务级的打包解包应用程序模块中,该模块根据所述平台的软硬件通信协议将激励信息打成规定格式的数据包,并通过PCI总线发送到硬件(PCI卡的FIFO中),然后硬件通过软硬件通信双握手协议将激励传送到联合仿真板卡的FIFO中,随后由仿真主控模块(或BFM)模块对激励数据包进行解压处理并转换成具体的时钟经准的测试激励信号加载到被测试模块中,待相应仿真周期完成后被测试模块(DUT)将所得的响应信号传回仿真主控模块(或BFM)模块并由它按照软硬件通信协议打包,然后将这些响应数据包存储在联合仿真子板的上行FIFO中,等其软硬件通信模块握手成功后,则将响应数据包传送至PCI卡的FIFO中,最后通过PCI总线按原路传回至采用C语言编写的基于事务级的打包解包应用程序模块中,该模块将收到的响应数据包解压后,通过相应API(ApplicationProgramming Interface)函数将响应信息传回第三方仿真工具,或直接以文本形式保存。采用所述平台的这种验证方法的整个过程中用户不会感觉到整个硬件仿真环境的存在,整个仿真操作过程与通常的软件模拟仿真没什么两样,但是仿真速度有极大的提高。
如图3所示,所述一体化设计验证平台为用户从一些流行的仿真器接口到可重构的硬件原型平台之间提供一个高速的链接。系统的硬件包括为位于软件运行平台一侧的PCI接口卡和与硬件接口的联合仿真子板,其中联合仿真子板与被测试系统相联,PCI卡插在工作站或PC的PCI插槽,采用LVDS排线与联合子仿真子板相联。软件主要提供PCI接口驱动和常用仿真软件的接口C-API(与C系列的仿真器的接口库)、PLI(与verilog仿真器的接口)和FLI(与VHDL仿真器的接口)等的链接。硬件主要提供的功能是数据通道、通用控制、数据打包解包以及仿真的接口和时序控制等。
如图4所示,在采用所述一体化设计验证平台进行联合仿真(Co-emulation)模式验证时,我们将一部分模块(此处为模块B)下载到硬件平台上实现,而将其余模块(此处为模块A,C,TestBench)继续运行在硬件仿真器中,而模块B由一个包裹文件(wrapper文件)替代,该wrapper文件保持了与原设计文件相同的端口属性,所以在将传统的设计移植到SOC软硬件协同加速验证平台上,对于设计的其它部分(如测试平台,其它模块)可以完全不做任何修改。该Wrapper文件通过调用VPI/FLI接口实现与硬件侧接口的通信。真实的模块B将被综合后下载到硬件可编程逻辑器件中实现,协同验证系统程序在VPI/FLI接口和PCI驱动的支持下,驱动PCI卡与硬件侧的联合仿真子板板块行数据的交换,控制联合仿真对模块B施加激励和接受响应,并将响应传回硬件仿真器,完成协同加速验证。
如图5所示,测试向量模式是联合验证模式的更进一步的发展,它比联合验证模式有更高的验证速度。如果采用联合验证模式仍然不能达到验证速度的要求,就可以将全部用户设计都下载到硬件平台上实现,由软件程序对其施加测试向量和接受响应。测试向量在软件程序和硬件验证平台间以数据流的形式进行传递。这就是测试向量模式。采用这种模式,在计算机上不需要额外运行硬件仿真器与硬件验证平台配合工作,消除了由软件程序和硬件平台之间的相互等待造成的速度性能的下降。从而大大的提高了验证的速度。在测试向量模式中,输入激励是存储在计算机硬盘中的文件,它按照DUT功能特性,由第三方的工具生成。并将自DUT返回的响应存储到硬盘上的磁盘文件中,便于以后分析。在测试向量模式启动时,由测试向量程序读取并分析配置文件,然后对软硬件的验证环境进行初始化、设置。然后读取测试向量并传递到硬件平台上,完成软硬件协同加速验证。
如图6所示,基于事务的验证技术是结合软硬件协同加速验证技术和基于事务的仿真技术的一种快速的验证方案。将事务处理器中的BFM(总线功能模型)修改为一个可综合的Verilog HDL模型,并将该BFM下载到硬件平台中实现,DUT也下载到硬件平台中实现,由软件侧的C/C++事务模型对BFM进行控制,BFM根据C/C++模型传递过来的信息产生具有总线周期精度(cycle-accurate)的时序信号,对DUT施加激励信号和接收响应,并根据协议,将总线时序信号传递到C/C++模型中。这样在软硬件之间传输的将是一个个的事务,大大的降低了软硬件之间的通讯量,提高了仿真效率。
如图7所示,PCI卡由PCI接口I/O加速芯片,本地总线接口模块,FIFO模块,SCE-MI接口模块组成。PCI接口I/O加速芯片的主要功能是将复杂的PCI总线协议转换成简单的本地接口协议。本地总线接口模块是用来实现与PCI接口I/O加速芯片本地端的连接。FIFO是用来暂时缓存由软件通过PCI接口发送到硬件的激励数据和从硬件收回即将通过PCI接口传回软件的响应数据。SCE-MI接口模块是用来实现与联合仿真子板的通信的接口模块。
如图8所示,联合仿真板卡由软硬件通信握手协议控制模块,FIFO缓存模块。所述联合仿真板卡FPGA包括软硬件通信握手协议控制模块,FIFO缓存模块,指令处理状态机(或BFM)模块,功能配置寄存器模块,激励发送模块,响应接收模块,标准总线接口模块。联合仿真板卡是整个仿真系统硬件的核心部分,它主要是由一个多状态机协同工作的架构来实现的,其中仿真指令处理状态机是主控状态机,功能配置模块,激励发送模块,响应接收模块都是从状态机,它们在指令处理状态机的控制下协同工作,完成整个仿真过程。联合仿真板卡各模块功能见下表

权利要求
1.SOC软硬件一体化设计验证方法,包括以下步骤a、初始化;b、软件侧向硬件侧发送激励数据包;c、硬件侧根据激励数据包进行仿真处理,将处理结果发回软件侧,并为软件侧接收;d、循环步骤b-c直到仿真结束;其特征在于,所述步骤a为软件侧通过向硬件侧发送两个数据包,其中第一个数据包中包含硬件侧寄存器的配置信息,通过对硬件侧的寄存器写入相应的值,第二个数据包中对每一个数据位的输入输出方向进行定义。
2.如权利要求1所述的SOC软硬件一体化设计验证方法,其特征在于,在仿真过程中,从软件侧发送到硬件侧和从硬件侧发送到软件侧的数据包的大小在初始化化完成后是确定的。
3.如权利要求1所述的SOC软硬件一体化设计验证方法,其特征在于,所述步骤b为测试激励以及管脚映射信息经由第三方仿真工具并通过HDL应用接口函数或直接通过文本文件发送到基于事务级的打包解包应用程序模块中,打包解包应用程序模块根据所述平台的软硬件通信协议将激励信息打包为规定格式的数据包,并通过PCI总线发送到PCI卡的FIFO中,然后将激励传送到联合仿真板卡的FIFO中,随后由仿真主控模块或BFM模块对激励数据包进行解压处理并转换成具体的时钟经准的测试激励信号加载到硬件侧的被测试模块中。
4.如权利要求1所述的SOC软硬件一体化设计验证方法,其特征在于,所述步骤c为被测试模块将所得的响应信号传回仿真主控模块或BFM模块并按照软硬件通信协议打包,然后将这些响应数据包存储在联合仿真子板的上行FIFO中,等其软硬件通信模块握手成功后,则将响应数据包传送至PCI卡的FIFO中,最后通过PCI总线按原路传回至基于事务级的打包解包应用程序模块中,打包解包应用程序模块将收到的响应数据包解压后,通过相应API函数将响应信息传回第三方仿真工具,或直接以文本形式保存。
5.如权利要求1所述的SOC软硬件一体化设计验证方法,其特征在于,软件侧向硬件侧提供测试向量和接受硬件侧响应,硬件侧完成测试后将结果返回软件侧。
全文摘要
SOC软硬件一体化设计验证方法,涉及集成电路设计技术领域,特别涉及SOC(system-on-a-chip片上系统)的设计验证技术。包括以下步骤a.初始化;b.软件侧向硬件侧发送激励数据包;c.硬件侧根据激励数据包进行仿真处理,将处理结果发回软件侧,并为软件侧接收;d.循环步骤b-c直到仿真结束;其特征在于,所述步骤a为软件侧通过向硬件侧发送两个数据包,其中第一个数据包中包含硬件侧寄存器的配置信息,通过对硬件侧的寄存器写入相应的值,第二个数据包中对每一个数据位的输入输出方向进行定义。本发明使软硬件仿真过程能同步,并精确到时钟周期的对设计进行验证。
文档编号G06F17/50GK1928877SQ200610021608
公开日2007年3月14日 申请日期2006年8月17日 优先权日2006年8月17日
发明者李平, 廖永波 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1