专利名称:仿真方法及系统的制作方法
技术领域:
本发明涉及通信领域,具体而言,涉及一种仿真方法及系统。
技术背景集成电^各或现场可编禾呈门阵列(Field Programable Gate Array , 简称为FPGA)都需要在驱动和业务软件的支持下才能实现其特定 功能,在芯片开发仿真阶段,如何实现驱动和业务软件的配置管理 功能,决定了芯片仿真的充分性和完备性。目前,常规的做法是在功能开发阶段,采用寄存器传输语言 (Register Transfer Language,筒称为RTL )或SYSTEMC描述语言 编写程序,才莫拟驱动和业务软件功能,完成对芯片的初始化、配置 和管理,完成芯片的功能仿真和验证。在硬件调试阶段,在目标软 件环境实现真实的驱动和业务專欠件。该方法可以满足功能不多、配置管理相对简单的芯片仿真需求。 但是,对于大规模和功能复杂芯片,用RTL实现与实际功能一致的 业务软件的工作是一项庞大的工作,在转换成实际驱动和业务软件 过程中,会再次消耗大量工作量。模拟程序和实际软件之间的微小 差异,将导致硬件调试时遇到的问题无法在仿真环境中的再现。同 时真实驱动軟件的开发需要在硬件阶段才能完成,导致开发周期的 延长。目前,在芯片仿真阶段,相关技术中缺少完整的跨平台软硬件十办同开发方法。
发明内容
针对相关技术中的在芯片开发仿真阶段中工作量大、调试复杂、开发周期长的问题而提出本发明,为此,本发明的主要目的在于提供一种仿真方案,以解决上述问题至少之一。
为了实现上述目的, 一艮据本发明的一个方面,才是供了一种仿真方法。
根据本发明的仿真方法,用于硬件设备驱动和/或业务软件的开
发,包括设置硬件接口抽象模块,硬件接口抽象模块用于为硬件设备驱动和/或业务软件提供真实的访问接口 ;设置中央处理器CPU接口抽象模块,CPU接口抽象模块用于与芯片仿真模型连接,产生符合芯片仿真模型的时序;硬件接口抽象模块与CPU接口抽象模块进行报文交互。
优选地,硬件接口抽象模块与CPU接口抽象模块通过虚拟总线连接,并通过虚拟总线进行报文交互。
优选地,硬件接口抽象模块与CPU接口抽象模块通过虚拟总线连接并进行交互包括硬件接口抽象模块与CPU接口抽象模块通过通讯协议连接,硬件接口抽象模块和CPU接口抽象模块之间交互的数据被封装成通讯协议所要求的格式的数据包。
优选地,硬件接口抽象模块与CPU接口抽象模块通过虚拟总线进行交互包括硬件接口抽象模块接收来自硬件设备驱动的读/写命令,并将根据以下至少之一产生读/写命令的数据包读/写命令的地
6址、读/写命令对应的数据的长度、读/写命令对应的数据的类型;硬件接口抽象模块通过虚拟总线向CPU接口抽象模块发送数据包。
优选地,硬件接口抽象模块与CPU接口抽象模块通过虚拟总线进行交互包括在硬件接口抽象模块接收来自硬件设备驱动的写命令时,硬件接口抽象模块将写命令对应的待写的数据封装成数据包,并通过虚拟总线发送给CPU接口抽象模块。
优选地,石更件4妄口抽象4莫块与CPU 4妄口抽象才莫块通过虚拟总线进行交互包括硬件接口抽象模块通过虚拟总线获取来自CPU接口抽象才莫块的消息,其中,当消息为读返回命令时,则结束石更件i殳备驱动的读i青求,并返回读请求所对应的翁:据;当命令为来自外部i殳备的读命令时,则直一妄发起直4妄存储寄存器访问DMA读取4喿作,在读取到读命令对应的数据后,向外部设备返回读取到的数据;当命令为来自外部设备的写命令时,则直接发起DMA写操作,将写命令对应的数据写入内存。
优选地,通讯协议包括传输控制协议。
为了实现上述目的,才艮据本发明的另一方面, -提供了一种仿真系统。
根据本发明的仿真系统,用于硬件设备驱动和/或业务软件的开发包括硬件接口抽象模块,用于为硬件设备驱动和/或业务软件提供真实的访问接口; CPU接口抽象模块,与芯片仿真模型连接,用于产生符合芯片仿真模型的时序;硬件接口抽象模块与CPU接口抽象^t块进行报文交互。
优选地,上述系统还包括虚拟总线,用于连接硬件4妄口抽象模块与CPU接口抽象模块,并在硬件接口抽象模块和CPU接口抽象模块之间进行报文交互。优选地,虚拟总线具体用于通过通讯协议连接硬件接口抽象模
块与CPU 4妄口抽象才莫块,并将硬件接口抽象才莫块和CPU接口抽象
模块之间交互的数据封装成通讯协议所要求的格式的数据包。
通过本发明,采用设置向上层提供硬件操作设置硬件接口抽象模块、硬件抽象接口模块和连接至硬件接口抽象模块的芯片仿真模型,解决了相关技术中的在芯片开发仿真阶段中工作量大、调试复杂、开发周期长的问题,4吏驱动和业务软件可以无缝移植到实际的软硬件环境,实现并行开发,进而加快了项目开发进度。
此处所说明的附图用来^是供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并
不构成对本发明的不当限定。在附图中
图1是才艮据本发明实施例的仿真方法的流程图2是根据本发明实施例的仿真方法中模块的示意图一;
图3是根据本发明实施例的仿真方法中模块的示意图二;
示意图5是根据本发明实施例的硬件接口抽象模块处理驱动硬件操作的功能流程图6是根据本发明实施例的硬件接口抽象模块和虚拟总线之间消息的处理流^f呈图;图7是根据本发明实施例的硬件接口抽象模块处理虚拟总线报文消息的流程图8是根据本发明实施例的硬件接口抽象模块处理片上总线或芯片外部总线直接存储寄存器访问操作请求和中断处理的流程图9是4艮据本发明实施例的仿真系统的结构框图。
具体实施例方式
功能相克述
相关技术中的在芯片开发仿真阶段中工作量大、调试复杂、开发周期长的问题,本发明实施例4是供了一种仿真方案,通过该方案在仿真才莫型和软件环境之间建立通信,将软件对石更件访问需求传输
到仿真平台中由模型来完成,同时模型执行的结果和模型产生的中断消息以及才莫型的直4妄存4渚寄存器访问(Directory Memory Access ,简称为DMA):燥作传替给软件环境。虚拟总线屏蔽了硬件的实现细节,l是供一个真实的石更件环境给软件,实现虚拟和真实环境的统一。该方案的处理原则如下设置硬件接口抽象模块,硬件接口抽象模块用于为硬件设备驱动和/或业务软件提供真实的访问接口 ;设置中央处理器CPU接口抽象模块,CPU接口抽象模块用于与芯片仿真模型连接,产生符合芯片仿真模型的时序;硬件接口抽象模块与CPU接口抽象模块进行报文交互。
需要说明的是,在不沖突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
在以下实施例中,在附图的;克禾呈图示出的步骤可以在i者如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,^f旦是在某些情况下,可以以不同于此处的顺序冲丸行所示出或描述的步骤。
方法实施例
根据本发明的实施例,提供了一种仿真方法,用于硬件设备驱动和/或业务软件的开发,图1是根据本发明实施例的仿真方法的流
程图,如图1所示,该流程包括如下步骤S102至步骤S106:
步骤S102,设置硬件接口抽象模块,硬件接口抽象模块用于为硬件设备驱动和/或业务软件提供真实的访问接口 ;
步骤S104,设置中央处理器CPU接口抽象模块,CPU接口抽象模块用于与芯片仿真模型连接,产生符合芯片仿真模型的时序;
步骤S106,硬件4妄口抽象才莫块与CPU 4妄口抽象才莫块进行净艮文交互。
在步骤S106中,硬件接口抽象模块与CPU接口抽象模块通过虛拟总线连接,并通过虚拟总线进行报文交互。
硬件接口抽象模块与CPU接口抽象模块通过通讯协议连接,硬件接口抽象模块和CPU接口抽象模块之间交互的数据被封装成通讯协议所要求的格式的数据包,下面从以下几个方面对此进行详细的描述。
方面 一 ,硬件接口抽象模块接收来自硬件设备驱动的读/写命令,并将根据以下至少之一产生读/写命令的数据包读/写命令的地址、读/写命令对应的数据的长度、读/写命令对应的数据的类型;硬件接口抽象模块通过虚拟总线向CPU接口抽象模块发送数据包。
10方面二 ,在硬件接口抽象模块接收来自硬件设备驱动的写命令时,硬件接口抽象模块将写命令对应的待写的数据封装成数据包,
并通过虚拟总线发送给CPU接口抽象模块。
方面三,硬件4妄口抽象才莫块通过虚拟总线获取来自CPU 4妄口抽
象才莫块的消息,其中,当消息为读返回命令时,则结束硬件设备驱
动的读请求,并返回读请求所对应的数据;当命令为来自外部设备的读命令时,则直接发起直接存储寄存器访问DMA读取操作,在读取到读命令对应的数据后,返回外部设备的读操作;当上述命令为来自外部设备的写命令时,则直接发起DMA写操作,将写命令对应的凄史据写入内存。
优选地,通讯协议包括传输控制协议。
下面乂人四个方面7于本实施例进4于详细的i兌明。
方面一
在目标软件(即,业务软件)环境底层实现一个硬件接口抽象模块,该硬件接口抽象一莫块对上层驱动(即,硬件设备驱动)和业务软件4是供基本的石更件l喿作,其中,硬件才喿作可以包括^f旦不限于对硬件寄存器读写访问、系统内存和目标期间的块数据拷贝、响应硬件中断功能等,该模块用于将硬件操作封装成和目标软件系统一致的系统调用,以便上层的硬件设备驱动和/或业务软件进行调用。而在实际硬件环境中,该硬件接口抽象模块被实际硬件提供的硬件操作代替,实际的硬件接口为PCI或者LOCAL BUS,因此,只需要开发接口的驱动,位于基本硬件操作之上的驱动和业务软件无需j奮改可以直4妄4吏用。方面二
在本实施例中还涉及到一个和芯片仿真模型连接的CPU接口 抽象模块。该CPU接口抽象模块连接到芯片内部片上总线或者直接 连接到芯片的外部CPU接口总线,实现对内部设备的访问和控制。 屏蔽掉CPU侧接口硬件细节,直接连接到软件开发环境。
方面三
在实际的开发中,常用的才喿作系统平台有vxworks, linux, windows mobile系统等,常用的才莫型<方真淬欠件有Modelsim, Ncsim, SystemC等。因此,各种仿真平台需要在不同的才乘作系统环境运4亍, 例如Windows, Linux等。可以采用TCP协议实现3争平台通信,但 是不仫 f又限于此通信协议,例如,如果仿真和软件环境在同一台计 算机上运行,也可以采用共享存贮器方式实现进程间通信,或者在 通信要求较高的场合,采用专用硬件来实现跨平台间通信。
方面四
在硬件接口抽象模块和CPU接口抽象模块之间可以采用通信 协议进行通讯,该通信协议把硬件接口抽象模块的基本硬件操作封 装成数据包传输给芯片仿真平台的CPU接口抽象模块,交给仿真模 型执行。需要返回给软件平台的数据由CPU接口抽象模块封装成包
后再传输给硬件接口抽象模块,通过基本硬件抽象接口模块传输给 软件。模型的中断信号状态也封装成数据包传输给硬件接口抽象才莫 块,交给中断服务程序执行。
下面将结合附图和实施例对本发明进行详细描述。
图2是根据本发明实施例的仿真方法中模块的示意图一,如图 2所示,包括业务软件101,硬件设备驱动程序102 (即,硬件设备驱动),硬件接口抽象模块103, CPU接口抽象模块104,虚拟总 线105,芯片外部总线106和芯片仿真环境107。
图3是根据本发明实施例的仿真方法中模块的示意图二,如图 3所示,包括业务软件IOI,硬件设备驱动程序102,硬件接口抽 象模块103, CPU接口抽象模块104,虚拟总线105,芯片片上总线 106和芯片仿真环境107,与图2不同的是,在图3中CPU接口抽 象模块直接和内部总线相连。下面基于图2和图3对本实施例进行 说明。
图2和图3中的业务软件IOI是实现芯片功能对应的应用软件, 其功能实现构建在硬件设备驱动程序102的基础上。硬件设备驱动 程序102封装了;更件的实现细节,将不同的硬件实现封装成统一的 接口。硬件设备驱动程序102调用基本硬件操作来实现对硬件的控 制和访问。对新开发的芯片,需要重新开发全部硬件设备驱动程序 102和部分业务库t件101.
图2和图3中的硬件接口抽象模块用于硬件驱动和仿真模型间 的通信。对驱动侧,该接口模拟实际的硬件行为,提供硬件操作接 口 ,并采用虚拟总线105和芯片仿真环境107连接,如果是实际的 单板,则釆用实际总线连接到芯片。
CPU接口抽象模块104接收来自虚拟总线105的报文,并产生 符合芯片接口要求的时序,从而实现对芯片外部或内部总线106的 访问。
其中,虚拟总线105是某种跨平台的通信手段,其命令和数据 采用封包的方式传输,图4是才艮据本发明实施例的虚拟总线上的数 据报文组成结构的示意图,如图4所示,硬件操作被转换成报文头 和可选的数据部分,报文头包括一个报文类型,例如,写命令、读命令、读返回命令、中断状态更新命令等。对于写命令和读返回命 令,后面需要有相应的数据部分,其长度由报文头中的长度字段决 定。另外定义了一个起始地址字段。但是,实际实现时根据硬件支 持的命令会有所增减。
CPU接口抽象模块104和硬件接口抽象模块103需要根据硬 件、软件的要求产生相应的命令及数据,并对返回的数据进行处理。 下面结合图5至图8对进行详细的说明。
图5是根据本发明实施例的硬件接口抽象模块处理驱动硬件操 作的功能流程图,如图5所示,硬件接口抽象模块103如果接收到 来自硬件设备驱动(即,驱动层)的读写命令,会根据读写命令的 地址,数据长度及类型产生对应的4艮文头并通过虚拟总线发送给 CPU接口抽象才莫块104,如果是写命令,再把待写的数据也通过虚 拟总线105发送给CPU接口抽象模块104。
图6是根据本发明实施例的硬件接口抽象模块和虚拟总线之间 消息的处理流程图,如图6所示,硬件接口抽象模块103也不断的 监测来自虚拟总线的消息报文。如果是读返回命令,则结束驱动层 的都请求,返回数据;如果是来自外部设备(外设)的读写命令, 则直接发起DMA操作,对写操作直接把数据写入指定内存,对读 操作则从内存取数据,结束外设读操作。如果来自外设的是中断状 态切换,则根据中断信号状态决定是否执行驱动程序的中断服务程 序。
图7是根据本发明实施例的硬件接口抽象模块处理虚拟总线报 文消息的流程图,图8是根据本发明实施例的硬件接口抽象模块处 理片上总线或芯片外部总线DMA才喿作i青求和中断处理的流程图, 如图7和图8所示,CPU接口抽象模块功能和硬件接口功能基本相 似,对于相同的在此不再赘述,不同的在于,CPU接口模块只会产生中断状态更新命令,而硬件接口抽象模块只会响应中断请求。硬
件接口抽象模块对驱动软件提供接口 ,没有时序,而CPU接口抽象
模块需要和芯片接口模型通信,其接口时序必须满足设计要求。
综上所述,由图2和图3可见,如果采用真实的硬件单板调试 软件,只需要用硬件接口驱动程序代替硬件接口抽象模块,而其他 软件模块完全相同。因此,通过本实施例可以实现基于仿真模型基 础上的驱动和业务软件开发,移植到实际硬件系统中时只需要增加 实际石更件4妄口的驱动,而石更件驱动和业务软件可以无缝移才直。
系乡克实施例
根据本发明的实施例,提供了一种仿真系统,用于硬件设备驱 动和/或业务软件的开发,图9是根据本发明实施例的仿真系统的结 构框图,如图9所示,该系统包括硬件接口抽象模块92、 CPU接 口抽象沖莫块94,下面对该系统进行详细的描述。
硬件接口抽象才莫块92,用于为硬件设备驱动和/或业务软件提 供真实的访问接口; CPU接口抽象模块94,与芯片仿真模型连接, 用于产生符合芯片仿真模型的时序;硬件接口抽象模块与CPU接口 抽象纟莫块进行^艮文交互。
如图8所示,该系统还包^"虚拟总线,该虚拟总线用于连4妄石更 件接口抽象模块与CPU接口抽象模块,并在硬件接口抽象模块和 CPU接口抽象才莫块之间进行报文交互。
虚拟总线具体用于通过通讯协议连4妄 >硬件4妄口抽象才莫块与 CPU接口抽象模块,并将硬件接口抽象模块和CPU接口抽象模块 之间交互的数据封装成通讯协议所要求的格式的数据包。综上所述,通过本发明的上述实施例,可以实现基于模型的驱
动和业务软件的开发,方《更芯片功能的仿真和调试;同时,开发的 石更件驱动和业务4欠件可以无缝移才直到实际的4欠石更件环境中,,人而实 现了并行开发,加快了项目开发进度。
显然,本领域的技术人员应该明白,上述的本发明的各模块或 各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算 装置上,或者分布在多个计算装置所组成的网络上,可选地,它们 可以用计算装置可执行的程序代码来实现,从而,可以将它们存储
在存储装置中由计算装置来执行,或者将它们分别制作成各个集成 电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模 块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述〗又为本发明的优选实施例而已,并不用于限制本发明, 》寸于本4页i或的才支术人员来i兌,本发明可以有各种更改和变"i匕。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1.一种仿真方法,用于硬件设备驱动和/或业务软件的开发,其特征在于,包括设置硬件接口抽象模块,所述硬件接口抽象模块用于为硬件设备驱动和/或业务软件提供真实的访问接口;设置中央处理器CPU接口抽象模块,所述CPU接口抽象模块用于与芯片仿真模型连接,产生符合所述芯片仿真模型的时序;所述硬件接口抽象模块与CPU接口抽象模块进行报文交互。
2. 根据权利要求1所述的方法,其特征在于,所述硬件接口抽象 模块与所述CPU接口抽象模块通过虚拟总线连接,并通过所述虚拟总线进4于4良文交互。
3. 根据权利要求2所述的方法,其特征在于,所述硬件接口抽象 模块与所述CPU接口抽象模块通过所述虚拟总线连接并进行 交互包括所述石更件4妄口抽象冲莫块与所述CPU 4妄口抽象才莫块通过通 讯协议连接,所述硬件接口抽象模块和所述CPU接口抽象模 块之间交互的数据被封装成所述通讯协议所要求的格式的数 据包。
4. 根据权利要求2所述的方法,其特征在于,所述硬件接口抽象 才莫块与所述CPU接口抽象模块通过所述虚拟总线进行交互包 括所述硬件接口抽象模块接收来自所述硬件设备驱动的读/ 写命令,并将根据以下至少之一产生所述读/写命令的数据包 所述读/写命令的地址、所述读/写命令对应的ft据的长度、所 述读/写命令对应的数据的类型;所述硬件接口抽象一莫块通过所述虚拟总线向所述CPU接 口抽象模块发送所述数据包。
5. 根据权利要求2所述的方法,其特征在于,所述硬件接口抽象 模块与所述CPU接口抽象模块通过所述虚拟总线进行交互包 括在所述硬件接口抽象模块接收来自所述硬件设备驱动的 写命令时,所述硬件接口抽象模块将所述写命令对应的待写的 数据封装成数据包,并通过所述虚拟总线发送给所述CPU接 口抽象模块。
6. 根据权利要求2所述的方法,其特征在于,所述硬件接口抽象 模块与所述CPU接口抽象模块通过所述虚拟总线进行交互包 括所述硬件接口抽象模块通过所述虚拟总线获取来自所述 CPU接口抽象模块的消息,其中,当所述消息为读返回命令时,则结束所述硬件设备驱动的 读请求,并返回所述读请求所对应的数据;当所述命令为来自外部设备的读命令时,则直接发起直接 存4诸寄存器"i方问DMA读耳又」燥作,在读取到所述读命令对应的 数据后,向所述外部设备返回所述读取到的数据;当所述命令为来自所述外部设备的写命令时,则直接发起DMA写操作,将所述写命令对应的数据写入内存。
7. 才艮据4又利要求3所述的方法,其特4正在于,所述通讯协i义包4舌 传输控制协议。
8. —种仿真系统,用于硬件设备驱动和/或业务软件的开发,其 特征在于,包4舌硬件接口抽象模块,用于为硬件设备驱动和/或业务软件 提供真实的访问接口;CPU接口抽象模块,与芯片仿真模型连接,用于产生符 合所述芯片仿真模型的时序;所述硬件4妾口抽象冲莫块与CPU才秦口抽象冲莫块进行纟艮文交互。
9. 根据权利要求8所述的系统,其特征在于,还包括虚拟总线,用于连接所述硬件接口抽象模块与所述CPU 接口抽象模块,并在所述硬件接口抽象模块和所述CPU接口 抽象模块之间进行报文交互。
10. 根据权利要求9所述的系统,其特征在于,所述虚拟总线具体 用于通过通讯协议连接所述硬件接口抽象模块与所述CPU接 口抽象模块,并将所述硬件接口抽象模块和所述CPU接口抽 象模块之间交互的数据封装成所述通讯协议所要求的格式的 数据包。
全文摘要
本发明公开了一种仿真方法及系统,该方法用于硬件设备驱动和/或业务软件的开发,包括设置硬件接口抽象模块,硬件接口抽象模块用于为硬件设备驱动和/或业务软件提供真实的访问接口;设置中央处理器CPU接口抽象模块,CPU接口抽象模块用于与芯片仿真模型连接,产生符合芯片仿真模型的时序;硬件接口抽象模块与CPU接口抽象模块进行报文交互。通过本发明使驱动和业务软件可以无缝移植到实际的软硬件环境,实现并行开发,进而加快了项目开发进度。
文档编号G06F17/50GK101630343SQ20091016618
公开日2010年1月20日 申请日期2009年8月18日 优先权日2009年8月18日
发明者刘衡祁, 彧 李, 王志忠, 缪众林 申请人:中兴通讯股份有限公司