一种片上系统的验证方法、装置和系统的制作方法

文档序号:6398727阅读:180来源:国知局
专利名称:一种片上系统的验证方法、装置和系统的制作方法
技术领域
本发明涉及仿真测试领域,特别是涉及一种片上系统的验证方法、装置和系统。
背景技术
SOC (System on Chip,片上系统,又称为系统级芯片)技术,是指将系统关键部件集成在一块芯片上的技术,它通常是客户定制的或是面向特定用途的标准产品。SOC技术可以有效降低信息系统产品的开发成本,提高系统的可靠性,因此得到了广泛的应用。在SOC芯片正式投产前,一般会在主机设备上使用仿真工具进行相应的仿真测试,以验证SOC芯片的可靠性。目前常用的SOC仿真验证方法中,SOC仿真会基于一些应用程序(例如视频播放、图片处理程序等)进行仿真测试。在这种方法中,仿真工具运行在主机设备上(PC或服务器),SOC运行在仿真工具中,应用程序运行在仿真工具中,仿真工具在进行相应的仿真测试时,需要将应用程序的代码翻译成SOC中的CPU所能接收的代码,并由SOC的CPU在仿真工具中模拟运行。由于应用程序在仿真工具中的运行速度远远低于其在真实环境中的运行速度,运行速度的降低将导致SOC验证过程非常耗时,测试效率非常低下。

发明内容
为解决上述技术问题,本发明实施例提供了一种片上系统的验证方法、装置和系统,可以有效提闻SOC芯片验证过程的效率。一方面,本发明实施例提供了一种片上系统的验证方法,所述方法包括应用程序运行在主机设备的操作系统中,形成应用程序进程;仿真工具运行在所述主机设备上,形成仿真进程;其中,片上系统运行在所述仿真工具中;所述应用程序进程与所述仿真进程进行通信以实现对所述片上系统的仿真测试。优选地,所述应用程序进程与所述仿真进程进行通信以实现对所述片上系统的仿真测试包括所述应用程序进程通过第一窗口模块访问仿真进程,以向仿真工具发送激励请求,以控制片上系统产生与所述激励请求对应的仿真动作;所述仿真进程通过第二窗口模块访问应用程序进程,以对应用程序执行读写操作。优选地,所述应用程序进程通过第一窗口模块访问仿真进程,以向仿真工具发送激励,以控制片上系统产生对应的仿真动作包括应用程序进程向仿真进程发送第二通信请求;应用驱动模块将所述第二通信请求以及与所述第二通信请求对应的第二通信内容存储至与所述第一窗口模块对应的第一共享内存中,并发送第一通信信号至第一窗口模块;其中,所述第一共享内存与第一通信信号是所述应用驱动模块预先设置的,所述第一共享内存与第一通信信号具有第一标识;所述第一窗口模块监测是否有第二通信请求,当监测到有第二通信请求时,从第三共享内存获取与第二通信请求对应的第二通信内容,并根据所述第二通信内容控制所述片上系统触发对应的仿真动作;其中,所述第三共享内存是所述第一窗口模块预先设置的,所述第三共享内存具有第三标识,所述第三标识与第一标识相同。优选地,所述方法还包括所述第一窗口模块将与片上系统触发的仿真动作对应的仿真结果存储至第三共享内存中,并发送第三通信信号至应用程序,所述第三通信信号的标识与第一通信信号的标识相同。优选地,所述仿真进程通过第二窗口模块访问应用程序进程,以对应用程序执行读写操作具体包括所述仿真进程向应用程序进程发送第一通信请求;当所述第二窗口模块监测到所述第一通信请求时,将所述第一通信请求以及与所述第一通信请求对应的第一通信内容存储至第四共享内存中,并发送第四通信信号至应用程序;所述第四共享内存与第四通信信号是所述第二窗口模块预先设置的,所述第四共享内存与第四通信信号具有第四标识;所述第二窗口模块向应用程序发送软中断,以对应用程序执行读写操作。优选地,所述第二窗口模块向应用程序发送软中断具体为所述第二窗口模块根据获取的所述应用程序进程号向应用程序发送软中断,所述应用程序进程号是所述应用驱动模块存储至第二共享内存的。优选地,所述方法还包括所述应用驱动模块监测是否有所述第二窗口模块发送的第四通信信号,如果有,则从与所述第二窗口模块对应的第二共享内存读取与第一通信请求对应的第一通信内容;所述应用驱动模块根据所述第一通信内容对应用程序执行读写操作,并将执行读写操作的反馈结果存储至第二共享内存,并向第二窗口模块发送第二通信信号;其中,所述第二共享内存与第二通信信号是所述应用驱动模块预先设置的,所述第二共享内存与第二通信信号具有第二标识,所述第二标识与所述第四标识相同。另一方面,本发明实施例还提供了一种片上系统的验证系统,所述系统包括应用程序模块,用于将应用程序运行在主机设备的操作系统中,形成应用程序进程;仿真模块,用于将仿真工具运行在所述主机设备上,形成仿真进程;其中,片上系统运行在所述仿真工具中;验证模块,用于实现所述应用程序进程与所述仿真进程的通信以实现对所述片上系统的仿真测试。 优选地,所述验证模块包括第一窗口模块,用于提供所述应用程序模块向仿真模块访问的窗口,以向仿真模块发送激励请求,以控制片上系统产生与所述激励请求对应的仿真动作;第二窗口模块,用于提供所述仿真模块访问应用程序模块的窗口,以对应用程序模块执行读写操作。优选地,所述应用程序模块用于向仿真模块发送第二通信请求;所述验证模块还包括应用驱动模块,所述应用驱动模块用于接收应用程序模块向仿真模块发送的第二通信请求;将所述第二通信请求以及与所述第二通信请求对应的第二通信内容存储至与所述第一窗口模块对应的第一共享内存中,并发送第一通信信号至第一窗口模块;其中,所述第一共享内存与第一通信信号是所述应用驱动模块预先设置的,所述第一共享内存与第一通信信号具有第一标识;则所述第一窗口模块还用于监测是否有第二通信请求,当监测到有第二通信请求时,从第三共享内存获取与第二通信请求对应的第二通信内容,并根据所述第二通信内容控制所述片上系统触发对应的仿真动作;其中,所述第三共享内存是所述第一窗口模块预先设置的,所述第三共享内存具有第三标识,所述第三标识与第一标识相同。优选地,所述第一窗口模块还用于将与片上系统触发的仿真动作对应的仿真结果存储至第三共享内存中,并发送第三通信信号至应用程序,所述第三通信信号的标识与第一通信信号的标识相同。优选地,所述仿真模块具体用于向应用程序模块发送第一通信请求;则所述第二窗口模块具体用于监测到所述来自仿真模块的第一通信请求时,将所述第一通信请求以及与所述第一通信请求对应的第一通信内容存储至第四共享内存中,并发送第四通信信号至应用程序;所述第四共享内存与第四通信信号是所述第二窗口模块预先设置的,所述第四共享内存与第四通信信号具有第四标识;以及向应用程序发送软中断,以对应用程序执行读写操作。优选地,所述第二窗口模块具体用于根据获取的所述应用程序的进程号向应用程序发送软中断,所述应用程序的进程号是所述应用驱动模块存储至第二共享内存的。优选地,所述应用驱动模块还用于监测是否有所述第二窗口模块发送的第四通信信号,如果有,则从与所述第二窗口模块对应的第二共享内存读取与第一通信请求对应的第一通信内容;所述应用驱动模块还用于根据所述第一通信内容对应用程序执行读写操作,并将执行读写操作的反馈结果存储至第二共享内存,并向第二窗口模块发送第二通信信号;其中,所述第二共享内存与第二通信信号是所述应用驱动模块预先设置的,所述第二共享内存与第二通信信号具有第二标识,所述第二标识与所述第四标识相同。本发明实施例能够达到的有益效果为在本发明实施例中,将应用程序独立出来,不再由仿真工具中SOC的CPU模拟运行,而是由仿真工具所处的操作系统来运行应用程序,形成应用程序进程,仿真工具运行在主机设备上,形成仿真进程,其中,片上系统运行在仿真工具中。同时,保持应用程序进程与仿真工具中的SOC之间的通信以实现对片上系统的仿真测试,在完成SOC仿真测试的同时有效提高了 SOC芯片验证的速度,有效解决了现有技术中基于应用程序的SOC仿真测试过程测试效率低下的问题。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的片上系统的验证方法第一实施例示意图;图2为本发明实施例提供的片上系统的验证方法第二实施例示意图;图3为本发明实施例提供的片上系统验证装置示意图;图4为本发明实施例提供的片上系统验证系统示意图。
具体实施例方式本发明实施例提供了一种片上系统的验证方法、装置和系统,可以有效提高SOC芯片验证过程的效率。为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。本发明第一实施例提供的方法应用于基于应用程序的片上系统仿真测试。参见图1,为本发明提供的片上系统的验证方法第一实施例流程图,所述方法包括S101,应用程序运行在主机设备的操作系统中,形成应用程序进程。在本发明第一实施例中,改变了现有技术中将应用程序运行在仿真环境中的SOC的CPU中的做法,将测试用的应用程序独立运行在主机设备的操作系统中。其中,主机设备可以是PC、服务器等。从操作系统角度来看,应用程序运行在操作系统时构成一个进程,将其称之为应用程序进程。S102,仿真工具运行在所述主机设备上,形成仿真进程;其中,片上系统运行在仿
真工具中。仿真工具具体为EDA (Electronic Design Automation,电子设计自动化)仿真工具,例如NCsim, NCverilog, modelsim等,本发明不限定具体的仿真工具。较佳的,所述仿真工具支持PLI标准(PLI为Program Language Interface,是一种verilog的编程语言接口 )。所述仿真工具运行在主机设备上,SOC芯片即片上系统(SoC)在仿真工具中模拟运行。从操作系统角度来看,仿真工具运行时,其也形成操作系统的一个进程,称为仿真进程。S103,所述应用程序进程与所述仿真进程进行通信以实现对所述片上系统的仿真测试。应用程序进程与仿真进程实现通信,即可以实现应用程序和仿真环境中的SOC的实时交互,从而实现仿真测试。一般地,在进行SOC仿真测试时,测试的内容主要包括两方面一方面是需要测试SOC能否根据应用程序的激励请求执行相应的仿真动作;另一方面是测试SOC能否对应用程序执行读写操作,以完成正常的通信、交互。具体实现时,步骤S103具体可以包括以下两方面的内容
(I)所述应用程序进程通过第一窗口模块访问仿真进程,以向仿真工具发送激励请求,以控制片上系统产生与所述激励请求对应的仿真动作。其中,所述第一窗口模块用于提供应用程序进程向仿真进程访问的窗口。(2)所述仿真进程通过第二窗口模块访问应用程序进程,以对应用程序执行读写操作。其中,所述第二窗口模块用于提供仿真进程向应用程序进程访问的窗口。在本发明第一实施例中,将应用程序独立出来,不再由仿真工具中SOC的CPU模拟运行,而是由仿真工具所处的操作系统来运行应用程序,形成应用程序进程。由于应用程序在主机设备的操作系统中运行的速度远高于应用程序在仿真工具的CPU模拟运行时的速度,因此有效提高了 SOC芯片验证的速度。另一方面,应用程序运行在主机设备的操作系统中形成应用程序进程,片上系统运行在仿真工具中,仿真工具运行在主机设备中形成仿真进程,并保持应用程序进程与仿真工具中的SOC之间的通信以实现对片上系统的仿真测试。在完成SOC仿真测试的同时有效提高了 SOC芯片验证的速度,有效解决了现有技术中基于应用程序的SOC仿真测试过程测试效率低下的问题。参见图2,为本发明提供的片上系统的验证方法第二实施例示意图,具体过程如下S201,系统初始化。系统初始化时,应用程序运行在主机设备的操作系统中,形成应用程序进程,生成应用程序进程号。仿真工具运行在主机设备上,形成仿真进程,生成仿真进程号。其中,片上系统SOC运行在仿真工具中。在这一实施例中,为了实现应用程序进程和仿真进程之间的通信,提供了第一窗口模块CMD_C0RE、第二窗口模块MEM_C0RE、应用驱动模块。其中,所述第一窗口模块CMD_C0RE是用于提供应用程序进程访问仿真进程的窗口。当系统初始化时,第一窗口模块CMD_C0RE首先要设置第三共享内存和第三通信信号,并为所述第三共享内存和第三通信信号设置唯一的标识,即第三标识。具体实现时,可以将当前目录ID加CMD_C0RE的唯一 ID形成的ID作为第三共享内存和第三通信信号的唯一标识。其中,所述第二窗口模块MEM_C0RE用于提供仿真进程访问应用程序进程的窗口。当系统初始化时,第二窗口模块MEM_C0RE首先要设置第四共享内存和第四通信信号,并为所述第四共享内存和第四通信信号设置唯一的标识,即第四标识。具体实现时,可以将当前目录ID加MEM_C0RE的唯一 ID形成的ID作为第四共享内存和第四通信信号的唯一标识。其中,所述应用驱动模块为应用程序提供必要的软件驱动,以方便应用程序能够通过第一窗口模块CMD_C0RE访问仿真进程。具体的,当系统初始化时,应用驱动模块开通与第一窗口模块CMD_C0RE对应的第一共享内存与第一通信信号,为所述第一共享内存与第一通信信号设置第一标识,所述第一标识与第三标识相同。具体实现时,可以将当前目录ID加CMD_C0RE的唯一 ID形成的ID作为第一共享内存和第一通信信号的第一标识。同时,应用驱动模块开通与第二窗口模块MEM_C0RE对应的第二共享内存与第二通信信号,为所述第二共享内存与第二通信信号设置第二标识,所述第二标识与第四标识相同。具体实现时,可以将当前目录ID加MEM_C0RE的唯一 ID形成的ID作为第二共享内存和第二通信信号的唯一标识。
S202,应用驱动模块将获取到的应用程序进程号存储至与第二窗口模块MEM_C0RE对应的第二共享内存中,并向第二窗口模块MEM_C0RE发送第二通信信号,所述第二通信信号用于通知第二窗口模块从第二共享内存中获取应用程序进程号。S203,当第二窗口模块MEM_C0RE监测到有第二通信信号时,从第二共享内存中获取应用程序进程号;将仿真进程号写入第四共享内存,并向应用程序发送第四通信信号,所述第四通信信号用于通知所述应用驱动模块从第四共享内存中获取仿真进程号。具体的,第_■共孚内存与第四共孚内存具有对应关系,_■者具有相同的标识。应用驱动模块和第二窗口模块MEM_C0RE可以通过第二共享内存与第四共享内存交互数据,实现通信。具体实现时,第二共享内存与第四共享内存在物理上可以为分离的部件,也可以不是物理上分开的,即第二共享内存与第四共享内存可以在物理上集成在一起。下面对应用程序进程与所述仿真进程进行通信以实现仿真测试的具体实现步骤进行介绍。首先对仿真进程通过第二窗口模块访问应用程序进程,以对应用程序执行读写操作具体实现步骤进行介绍。S204,仿真进程向应用程序进程发送第一通信请求。所述第一通信请求用于请求对应用程序执行读写操作。S205,当所述第二窗口模块MEM_C0RE监测到所述第一通信请求时,将所述第一通信请求以及与所述第一通信请求对应的第一通信内容存储至第四共享内存中,并向应用程序发送第四通信信号,此时,第四通信信号用于通知应用驱动模块从第四共享内存中获取第一通信内容。具体实现时,第二窗口模块MEM_C0RE会在每一拍监测第一通信请求,当第一通信请求符合仿真环境定义的对应用程序访问的协议时,第二窗口模块MEM_C0RE会将与所述第一通信请求对应的第一通信内容写入第四共享内存中,并向应用程序发送第四通信信号,以使得所述应用驱动模块从与第四共享内存对应的第二共享内存中获取第一通信内容。所述第一通信内容包 含需要读写的数据的地址。对应读操作,所述通信内容包括读取数据的地址;对应写操作,所述通信内容包括写入的数据以及写入的地址。S206,第二窗口模块MEM_C0RE向应用程序发送软中断。当应用程序在操作系统运行时,可能会接收到针对应用程序的多个请求,且这些请求是串行的。中断是指当有请求出现时,CPU暂时停止当前进程的执行转而执行处理新的进程的情况。当接收到仿真进程向应用程序进程发送的第一通信请求时,第二窗口模块MEM_C0RE需要通过中断的形式来使得应用程序响应所述通信请求。具体实现时,第二窗口模块MEM_C0RE会通过操作系统提供的函数以及接收到的应用程序进程号向应用程序发送软中断,以通知应用程序响应第一通信请求,以便后续执行读写操作。当应用程序接收到软中断请求后,会由操作系统来决定何时以及如何响应第一通信请求。具体的实现根据不同的操作系统会有所不同,可参照现有技术提供的方法进行,本发明对此不进行限定。S207,应用驱动模块监测是否有所述第二窗口模块MEM_C0RE发送的第四通信信号,如果有,则从与所述第二窗口模块MEM_C0RE对应的第二共享内存读取通信内容。具体实现时,当第二窗口模块MEM_C0RE监测到仿真进程向应用程序进程发送的第一通信请求时,会将与所述第一通信请求对应的第一通信内容写入第四共享内存中。其中,第四共享内存与第二共享内存具有对应关系,二者具有相同的标识。应用驱动模块和第二窗口模块MEM_CORE可以通过第二共享内存与第四共享内存交互数据,实现通信。因此,当应用驱动模块检测到第四通信信号时,则可以从与第四共享内存对应的第二共享内存中读取相应的第一通信内容。其中,这里的第一通信内容可以是所述读操作对应的数据的地址、写操作对应的数据的内容以及写入的地址等。具体实现时,第四共享内存和第二共享内存也可以集成在一起,形成一块内存,以方便应用驱动模块和第二窗口模块MEM_CORE的数据交互和通信。S208,当应用驱动模块监测到第二窗口模块向应用程序发送软中断时,根据所述第一通信内容对应用程序执行读写操作,并将执行读写操作的反馈结果存储至第二共享内存,并向第二窗口模块MEM_C0RE发送第二通信信号,所述第二通信信号用于通知第二窗口模块从与第二共享内存对应的第四共享内存中获取反馈结果。所述反馈结果包括读写操作的结果,例如读取的数据以及执行写操作的反馈。具体实现时,当应用驱动模块接收到第二窗口模块MEM_C0RE的第一通信内容后,并监测到软中断信号时,应用驱动模块响应所述软中断,跳转到与所述软中断信号对应的中断响应程序,进行响应操作。所述中断响应程序是应用驱动模块在系统初始化时预先注册的。具体的,初始化时,应用驱动模块需要注册与软中断对应的中断响应程序(例如内存读mem_read操作,内存写mem_write操作等),以实现相应的操作。当应用驱动模块完成相关操作后,通过与第二窗口模块MEM_C0RE对应的通信信号向仿真工具发送反馈结果。至此,通过步骤S204至步骤S208完成了仿真进程向应用程序进程访问以执行读写操作的过程。下面对应用程序进程向仿真进程访问的过程进行介绍,需要说明的是,以下步骤与步骤S204至步骤S208并没有必然的先后执行顺序。S209,应用程序进程向仿真进程发送第二通信请求。具体的,所述第二通信请求具体为激励请求,以控制片上系统产生与所述激励请求对应的仿真动作。S210,应用驱动模块将所述第二通信请求以及与所述第二通信请求对应的第二通信内容存储至与所述第一窗口模块CMD_C0RE对应的第一共享内存中,并发送第一通信信号至第一窗口模块CMD_C0RE。此时,所述第一通信信号用于通知所述第一窗口模块从与所述第一共享内存对应的第三共享内存中获取与第二通信请求对应的第二通信内容。具体的,第一共享内存与第三共享内存具有 对应关系,二者具有相同的标识。应用驱动模块和第一窗口模块CMD_C0RE可以通过第一共享内存与第三共享内存交互数据,实现通信。具体实现时,第一共享内存与第三共享内存在物理上可以为分离的部件,也可以不是物理上分开的,即第一共享内存与第三共享内存可以在物理上集成在一起。S211,所述第一窗口模块CMD_C0RE监测是否有第二通信请求。第一窗口模块CMD_C0RE在仿真进程的每一拍均监测进程通信信号以判断是否存在第二通彳目请求。S212,第一窗口模块从第三共享内存获取与第二通信请求对应的第二通信内容,并根据所述第二通信内容控制所述片上系统触发对应的仿真动作。具体实现时,在前面的步骤中,当应用程序进程向仿真进程发送第二通信请求时,应用驱动模块将第二通信请求以及第二通信请求对应的第二通信内容存在与第一窗口模块CMD_CORE对应的第一共享内存中。其中,第一共享内存与第三共享内存具有一一对应关系,二者具有相同的标识。应用驱动模块和第一窗口模块CMD_CORE可以通过第一共享内存与第三共享内存交互数据,实现通信。因此,当第一窗口模块监测到第一通信信号时,则可以从与第一共享内存对应的第三共享内存中读取相应的第二通信内容。其中,这里的第二通信内容可以是执行仿真动作的具体内容。具体实现时,第一共享内存和第三共享内存也可以集成在一起,形成一块内存,以方便应用驱动模块和第一窗口模块CMD_CORE的数据交互和通信。所述仿真动作具体可以包括总线读写、终端屏蔽、同步、地址映射、断点控制、芯片复位等。S213,所述第一窗口模块CMD_C0RE将与片上系统触发的仿真动作对应的仿真结
果存储至第三共享内存中。S214,仿真进程CMD_C0RE发送第三通信信号至应用程序进程,第三通信信号用于通知应用程序进程从第三共享内存中获取仿真结果。至此,步骤S209至步骤S214即完成了应用程序进程访问仿真进程的一次交互。下面将从装置执行主体的角度描述本发明提供的片上系统验证方法。在本发明第三实施例中,提供了一种片上系统的验证方法,所述方法用于基于应用程序的片上系统仿真测试,其中,所述应用程序运行在主机设备的操作系统中,形成应用程序进程仿真工具运行在所述主机设备上,形成仿真进程,其中,片上系统运行在仿真工具中,所述方法包括第一窗口模块提供所述应用程序进程访问所述仿真进程的窗口。第二窗口模块提供所述仿真进程访问所述应用程序进程的窗口。应用驱动模块设置与第一窗口模块对应的第一共享内存与第一通信信号以及与第二窗口模块对应的第二共享内存与第二通信信号,以使得所述应用程序进程利用所述应用驱动模块中的第一共享内存与第一通信信号与通过所述第一窗口模块向仿真进程发送第二通信请求,以及使得所述应用程序进程利用所述应用驱动模块中的第二共享内存与第二通信信号通过第二窗口模块接收仿真进程的第一通信请求。其中,所述第一通信请求用于请求对应用程序执行读写操作。所述第二通信请求具体为激励请求,以控制片上系统产生与所述激励请求对应的仿真动作。具体实现时,第一窗口模块设置有第三共享内存和第三通信信号,所述第三共享内存与第三通信信号具有第三标识。所述应用驱动模块设置与第一窗口模块对应的第一共享内存与第一通信信号,所述第一共享内存与第一通信信号具有第一标识。其中,所述第三标识与第一标识相同。这样,当应用程序进程想访问仿真进程时,则将第二通信请求以及与第二通信请求对应的第二通信内容存储至应用驱动模块的第一共享内存中,通过应用驱动模块的第一通信信号通知第一窗口模块;当第一窗口模块检测到第一通信信号时,则读取对应的第二通信内容,并根据所述第二通信内容控制仿真进程中的SOC触发相应的仿真动作。具体实现时,第二窗口模块设置有第四共享内存与第四通信信号,所述第四共享内存与第四通信信号具有第四标识。所述应用驱动模块设置与第二窗口模块对应的第二共享内存与第二通信信号,所述第二共享内存与第二通信信号具有第二标识。其中,所述第四标识与第二标识相同。这样,当仿真进程想访问应用程序进程时,则将第一通信请求存储至第二窗口模块的第四共享内存中,通过第二窗口模块的第四通信信号通知应用程序;当应用驱动模块检测到通信信号时,则读取与第一通信请求对应的第一通信内容,并根据所述第一通信内容执行相应的读写操作。下面对本发明第四实施例提供的片上系统验证方法进行详细的介绍。在本发明第四实施例中,提供了一种片上系统的验证方法,所述方法用于基于应用程序的片上系统仿真测试,其中,所述应用程序运行在主机设备的操作系统中,片上系统运行在仿真工具中,所述仿真工具运行在所述主机设备上,所述主机设备具体为PC、服务器等。当应用程序独立运行在操作系统中,形成操作系统中的一个进程,称之为应用程序进程;当仿真工具运行在主机设备上时,其也形成操作系统的一个进程,称之为仿真进程。为了实现SOC仿真测试的目的,必须实现仿真进程与应用程序进程之间的通信以达到仿真环境与应用程序的实时交互。在这一实施例中,提供了第一窗口模块CMD_C0RE,用于提供应用程序进程向仿真进程访问的窗口 ;提供了第二窗口模块MEM_C0RE,用于提供仿真进程向应用程序进程访问的窗口 ;提供了应用驱动模块,用于设置与第一窗口模块对应的第一共享内存与第一通信信号·以及与第二窗口模块对应的第二共享内存与第二通信信号,以使得所述应用程序进程利用所述应用驱动模块通过所述第一窗口模块向仿真进程发送第二通信请求以及使得所述应用程序进程利用所述应用驱动模块通过第二窗口模块接收仿真进程的第一通信请求。下面将结合附图对第一窗口模块CMD_C0RE、第二窗口模块MEM_C0RE、应用驱动模块如何实现SOC验证的过程进行详细地介绍。(一)第一窗口模块 CMD_C0RE 侧A、当系统初始化时,第一窗口模块CMD_C0RE首先要设置第三共享内存和第三通信信号,并为所述第三共享内存和第三通信信号设置唯一的标识,即第三标识。具体实现时,可以将当前目录ID加CMD_C0RE的唯一 ID形成的ID作为第三共享内存和第三通信信号的唯一标识。B、第一窗口模块监测是否有第二通信请求,当监测到有第二通信请求时,从第三共享内存获取与第二通信请求对应的第二通信内容。其中,第二通信请求具体为激励请求,以控制片上系统产生与所述激励请求对应的仿真动作。C、第一窗口模块CMD_C0RE在读取完第二通信内容后,触发相关的仿真动作,例如总线读写,中断屏蔽等。D、第一窗口模块将触发所述仿真动作获取的仿真结果以特定的数据结构写入共享内存中,并发送第三通信信号至所述应用程序,以使得所述应用程序通过所述应用驱动模块获取所述仿真结果。(二)第二窗口模块 MEM_C0RE 侦 ^A、系统初始化时,第二窗口模块MEM_C0RE首先要设置第四共享内存和第四通信信号,并为所述第四共享内存和第四通信信号设置唯一的标识,即第四标识。具体实现时,可以将当前目录ID加MEM_C0RE的唯一 ID形成的ID作为第四共享内存和第四通信信号的唯一标识。B、第二窗口模块MEM_C0RE接收应用程序发送的应用程序进程号。C、第二窗口模块MEM_C0RE将仿真进程号写入第四共享内存并通过第四通信信号告知应用程序进程。,所述第四通信信号用于通知所述应用驱动模块从第四共享内存中获取仿真进程号。之后,初始化结束。
D、第二窗口模块MEM_C0RE会在每一拍侦测第一通信请求,当第一通信请求,符合仿真环境定义的对应用程序进程访问的协议时,MEM_C0RE将会触发接下来的机制。其中,第一通信请求用于请求对应用程序执行读写操作。E、第二窗口模块MEM_C0RE首先会将第一通信请求以及与所述第一通信请求对应的第一通信内容写入第四共享内存,并向应用程序发送第四通信信号。此时,第四通信信号用于通知应用驱动模块从第四共享内存中获取第一通信内容。F、触发软中断。具体实现时,第二窗口模块MEM_C0RE会通过操作系统提供的函数以及由接收到的应用程序进程号向应用程序发送软中断,以及时告知应用程序响应第一通
请求。G,完成E与F后,MEM_C0RE需要等待应用程序通过通信信号发回的反馈信息,并根据反馈信息,触发在仿真环境中的相应动作。(三)应用驱动模块侧A、系统初始化,当系统初始化时,应用驱动模块开通与第一窗口模块CMD_C0RE对应的第一共享内存与第一通信信号,为所述第一共享内存与第一通信信号设置第一标识,所述第一标识与第三标识相同。具体实现时,可以将当前目录ID加CMD_C0RE的唯一 ID形成的ID作为第一共享内存和第一通信信号的唯一标识。同时,应用驱动模块开通与第二窗口模块MEM_C0RE对应的第二共享内存与第二通信信号,为所述第二共享内存与第二通信信号设置第二标识,所述第二标识与第四标识相同。具体实现时,可以将当前目录ID加MEM_C0RE的唯一 ID形成的ID作为第二共享内存和第二通信信号的唯一标识。在初始化时,应用驱动模块还需要预先注册中断响应程序,例如内存读mem_read操作,内存写mem_write操作等。B,获取应用程序进程号,并通过与MEM_C0RE对应的第二共享内存与通信信号告知仿真进程中的第二窗口模块MEM_C0RE。C,应用驱动模块接收应用程序的第二通信请求,将所述第二通信请求以及与所述第二通信请求对应的第二通信内容写入与第一窗口模块对应的第一共享内存中,并通过第一通信信号向第一窗口模块发送请求消息,以使得第一窗口模块根据所述请求消息控制仿真工具触发对应的仿真动作。具体实现时,应用程序可以在需要的时候调用应用驱动所提供的函数(如cmd_core_read, cmd_core_write)来控制CMD_C0RE在仿真进程中的动作。具体的,应用驱动模块将第二通信内容写入与CMD_C0RE对应的共享内存,并通过与对应的CMD_C0RE的通信信号来告知仿真进程中的CMD_C0RE模块,并等待仿真进程中的CMD_C0RE所返回的反馈信息,以完成此次操作。D、应用驱动模块监测是否有第二窗口模块发送的通信信号,如果有,则从第二窗口模块的共享内存中读取第一通信内容,并根据所述第一通信内容执行对应的读写操作;所述第一通信内容是由所述仿真进程发送给所述应用程序进程的。具体实现时,当应用驱动模块接收到由仿真进程返回的反馈信息即软中断操作后,应用驱动模块根据预先注册的中断响应程序(如内存读mem_read,内存写mem_write操作等),响应中断,跳转到与所述软中断信号对应的中断响应程序,进行响应操作。关于mem_read与mem_write的具体实现流程如下(I)应用驱动模块查看MEM_C0RE通信信号是否有由仿真进程发过来的通信请求,如果有,则从MEM_CORE的共享内存中读取相关信息。(2)完成相关操作后,通过MEM_C0RE通信信号向仿真进程发送反馈信息,并将相关内容写入共享内存中。(3)完成此次操作,退出函数。参见图3,为本发明实施例提供的片上系统的验证装置示意图。在本发明第五实施例中,提供了一种片上系统的验证装置,所述装置用于基于应用程序的片上系统仿真测试系统中,所述应用程序运行在主机设备的操作系统中,形成应用程序进程;仿真工具运行在所述主机设备上,形成仿真进程,其中,片上系统运行在所述仿真工具中,所述装置包括第一窗口模块301,用于提供应用程序进程向仿真进程访问的窗口 ;第二窗口模块302,用于提供仿真进程向应用程序进程访问的窗口 ;应用驱动模块303,用于设置与第一窗口模块对应的第一共享内存与第一通信信号以及与第二窗口模块对应的第二共享内存与第二通信信号,以使得所述应用程序进程利用所述应用驱动模块通过所述第一窗口模块向仿真工具发送第二通信请求以及使得所述应用程序进程利用所述应用驱动模块通过第二窗口模块接收仿真进程的第一通信请求。较佳地,所述第一窗口模块具体包括第一设置模块,用于设置第三共享内存与第三通信信号,为所述第三共享内存与第三通信信号设置第三标识,所述第三标识与第一共享内存与第一通信信号的第一标识相同;第一监测模块,用于监测是否有第二通信请求,当监测到有第二通信请求时,从第三共享内存获取与第二通信请求对应的第二通信内容,并根据所述第二通信内容控制所述片上系统触发对应的仿真动作;反馈模块,用于所将触发所述仿真动作获取的仿真结果存储至第三共享内存中,并发送第三通信信号至所述应用程序,以使得所述应用程序通过所述应用驱动模块获取所述仿真结果。较佳地,所述第二窗口模块具体包括第二设置模块,用于模块设置第四共享内存与第四通信信号,为所述第四共享内存与第四通信信号设置第四标识,所述第四标识与第二共享内存与第二通信信号的第二标识相同;第二监测模块,用于当所述第二窗口模块检测到输入操作符合预设的条件时,将与所述输入操作对应的第一通信内容存储至第四共享内存,并发送第四通信信号至应用程序;软中断模块,用于利用应用程序的进程号向应用程序发送软中断,以对应用程序执行读写操作;其中,所述应用程序的进程号是所述应用驱动模块存储至第二共享内存的。较佳地,所述应用驱动模块具体包括第一通信模块,用于监测是否有第二窗口模块发送的通信信号,如果有,则从第二窗口模块的共享内存中读取第一通信内容,并根据所述第一通信内容执行对应的读写操作;所述第一通信内容是由所述仿真进程发送给所述应用程序进程的。第一通信模块,用于接收应用程序进程的通信第二请求,将所述第二通信请求以及与所述第二通信请求对应的第二通信内容写入与第一窗口模块对应的第一共享内存中,并通过第一通信信号向第一窗口模块发送请求消息,以使得第一窗口模块根据所述请求消息控制仿真工具触发对应的仿真动作;参见图4,本发明实施例片上系统的验证系统示意图。在本发明第六实施例中,还提供了一种片上系统的验证系统,所述系统用于基于应用程序的片上系统仿真测试,所述系统包括应用程序模块401,用于将应用程序运行在主机设备的操作系统中,形成应用程序进程;仿真模块402,用于将仿真工具运行在所述主机设备上,形成仿真进程;其中,片上系统运行在所述仿真工具中;验证模块403,用于实现所述应用程序进程与所述仿真进程的通信以实现仿真测试。较佳地,所述验证模块包括第一窗口模块,用于提供所述应用程序模块向仿真模块访问的窗口,以向仿真模块发送激励请求,以控制片上系统产生与所述激励请求对应的仿真动作;第二窗口模块,用于提供所述仿真模块访问应用程序模块的窗口,以对应用程序模块执行读写操作。较佳地,所述应用程序模块用于向仿真模块发送第二通信请求。较佳地,所述验证模块还包括应用驱动模块,所述应用驱动模块用于接收应用程序模块向仿真模块发送的第二通信请求;将所述第二通信请求以及与所述第二通信请求对应的第二通信内容存储至与所述第一窗口模块对应的第一共享内存中,并发送第一通信信号至第一窗口模块;其中,所述第一共享内存与第一通信信号是所述应用驱动模块预先设置的,所述第一共享内存与第一通信信号具有第一标识。则所述第一窗口模块还用于监测是否有第二通信请求,当监测到有第二通信请求时,从第三共享内存获取第二通信内容,并根据所述第二通信内容控制所述片上系统触发对应的仿真动作;其中,所述第三共享内存是所述第一窗口模块预先设置的,所述第三共享内存具有第三标识,所述第三标识与第一标识相同。较佳地,所述第一窗口模块还用于将与片上系统触发的仿真动作对应的仿真结果存储至第三共享内存中,并发送第三通信信号至应用程序,所述第三通信信号的标识与第一通信信号的标识相同。较佳地,所述仿真模块具体用于向应用程序模块发送第一通信请求。则所述第二窗口模块具体用于监测到所述来自仿真模块的第一通信请求时,将所述第一通信请求以及与所述第一通信请求对应的第一通信内容存储至第四共享内存中,并发送第四通信信号至应用程序;所述第四共享内存与第四通信信号是所述第二窗口模块预先设置的,所述第四共享内存与第四通信信号具有第四标识;以及向应用程序发送软中断,以对应用程序执行读写操作。较佳地,所述第二窗口模块具体用于根据获取的所述应用程序的进程号向应用程序发送软中断,所述应用程序的进程号是所述应用驱动模块存储至第二共享内存的。较佳地,所述应用驱动模块还用于监测是否有所述第二窗口模块发送的第四通信信号,如果有,则从与所述第二窗口模块对应的第二共享内存读取与第一通信请求对应的第一通信内容。所述应用驱动模块还用于根据所述第一通信内容对应用程序执行读写操作,并将执行读写操作的反馈结果存储至第二共享内存,并向第二窗口模块发送第二通信信号;其中,所述第二共享内存与第二通信信号是所述应用驱动模块预先设置的,所述第二共享内存与第二通信信号具有第二标识,所述第二标识与所述第四标识相同。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。以上所述仅是本发明的具体实施方式
,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。`
权利要求
1.一种片上系统的验证方法,其特征在于,所述方法包括: 应用程序运行在主机设备的操作系统中,形成应用程序进程; 仿真工具运行在所述主机设备上,形成仿真进程;其中,片上系统运行在所述仿真工具中; 所述应用程序进程与所述仿真进程进行通信以实现对所述片上系统的仿真测试。
2.根据权利要求1所述的方法,其特征在于,所述应用程序进程与所述仿真进程进行通信以实现对所述片上系统的仿真测试包括: 所述应用程序进程通过第一窗口模块访问仿真进程,以向仿真工具发送激励请求,以控制片上系统产生与所述激励请求对应的仿真动作; 所述仿真进程通过第二窗口模块访问应用程序进程,以对应用程序执行读写操作。
3.根据权利要求2所述的方法,其特征在于,所述应用程序进程通过第一窗口模块访问仿真进程,以向仿真工具发送激励,以控制片上系统产生对应的仿真动作包括: 应用程序进程向仿真进程发送第二通信请求; 应用驱动模块将所述第二通信请求以及与所述第二通信请求对应的第二通信内容存储至与所述第一窗口模块对应的第一共享内存中,并发送第一通信信号至第一窗口模块;其中,所述第一共享内存与第一通信信号是所述应用驱动模块预先设置的,所述第一共享内存与第一通信信号具有第一标识;` 所述第一窗口模块监测是否有第二通信请求,当监测到有第二通信请求时,从第三共享内存获取与第二通信请求对应的第二通信内容,并根据所述第二通信内容控制所述片上系统触发对应的仿真动作;其中,所述第三共享内存是所述第一窗口模块预先设置的,所述第三共享内存具有第三标识,所述第三标识与第一标识相同。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 所述第一窗口模块将与片上系统触发的仿真动作对应的仿真结果存储至第三共享内存中,并发送第三通信信号至应用程序,所述第三通信信号的标识与第一通信信号的标识相同。
5.根据权利要求2所述的方法,其特征在于,所述仿真进程通过第二窗口模块访问应用程序进程,以对应用程序执行读写操作具体包括: 所述仿真进程向应用程序进程发送第一通信请求; 当所述第二窗口模块监测到所述第一通信请求时,将所述第一通信请求以及与所述第一通信请求对应的第一通信内容存储至第四共享内存中,并发送第四通信信号至应用程序;所述第四共享内存与第四通信信号是所述第二窗口模块预先设置的,所述第四共享内存与第四通信信号具有第四标识; 所述第二窗口模块向应用程序发送软中断,以对应用程序执行读写操作。
6.根据权利要求5所述的方法,其特征在于,所述第二窗口模块向应用程序发送软中断具体为: 所述第二窗口模块根据获取的所述应用程序进程号向应用程序发送软中断,所述应用程序进程号是所述应用驱动模块存储至第二共享内存的。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括: 所述应用驱动模块监测是否有所述第二窗口模块发送的第四通信信号,如果有,则从与所述第二窗口模块对应的第二共享内存读取与第一通信请求对应的第一通信内容; 所述应用驱动模块根据所述第一通信内容对应用程序执行读写操作,并将执行读写操作的反馈结果存储至第二共享内存,并向第二窗口模块发送第二通信信号;其中,所述第二共享内存与第二通信信号是所述应用驱动模块预先设置的,所述第二共享内存与第二通信信号具有第二标识,所述第二标识与所述第四标识相同。
8.一种片上系统的验证系统,其特征在于,所述系统包括:应用程序模块,用于将应用程序运行在主机设备的操作系统中,形成应用程序进程; 仿真模块,用于将仿真工具运行在所述主机设备上,形成仿真进程;其中,片上系统运行在所述仿真工具中; 验证模块,用于实现所述应用程序进程与所述仿真进程的通信以实现对所述片上系统的仿真测试。
9.根据权利要求8所述的系统,其特征在于,所述验证模块包括: 第一窗口模块,用于提供所述应用程序模块向仿真模块访问的窗口,以向仿真模块发送激励请求,以控制片上系统产生与所述激励请求对应的仿真动作; 第二窗口模块,用于提供所述仿真模块访问应用程序模块的窗口,以对应用程序模块执行读写操作。
10.根据权利要求9所述的系统,其特征在于,所述应用程序模块用于向仿真模块发送第二通信请求; 所述验证模 块还包括应用驱动模块,所述应用驱动模块用于接收应用程序模块向仿真模块发送的第二通信请求;将所述第二通信请求以及与所述第二通信请求对应的第二通信内容存储至与所述第一窗口模块对应的第一共享内存中,并发送第一通信信号至第一窗口模块;其中,所述第一共享内存与第一通信信号是所述应用驱动模块预先设置的,所述第一共享内存与第一通信信号具有第一标识; 则所述第一窗口模块还用于监测是否有第二通信请求,当监测到有第二通信请求时,从第三共享内存获取与第二通信请求对应的第二通信内容,并根据所述第二通信内容控制所述片上系统触发对应的仿真动作;其中,所述第三共享内存是所述第一窗口模块预先设置的,所述第三共享内存具有第三标识,所述第三标识与第一标识相同。
11.根据权利要求10所述的系统,其特征在于,所述第一窗口模块还用于将与片上系统触发的仿真动作对应的仿真结果存储至第三共享内存中,并发送第三通信信号至应用程序,所述第三通信信号的标识与第一通信信号的标识相同。
12.根据权利要求9所述的系统,其特征在于,所述仿真模块具体用于向应用程序模块发送第一通信请求; 则所述第二窗口模块具体用于监测到所述来自仿真模块的第一通信请求时,将所述第一通信请求以及与所述第一通信请求对应的第一通信内容存储至第四共享内存中,并发送第四通信信号至应用程序;所述第四共享内存与第四通信信号是所述第二窗口模块预先设置的,所述第四共享内存与第四通信信号具有第四标识;以及向应用程序发送软中断,以对应用程序执行读写操作。
13.根据权利要求12所述的系统,其特征在于,所述第二窗口模块具体用于根据获取的所述应用程序的进程号向应用程序发送软中断,所述应用程序的进程号是所述应用驱动模块存储至第二共享内存的。
14.根据权利要求12所述的系统,其特征在于,所述应用驱动模块还用于监测是否有所述第二窗口模块发送的第四通信信号,如果有,则从与所述第二窗口模块对应的第二共享内存读取与第一通信请求对应的第一通信内容; 所述应用驱动模块还用于根据所述第一通信内容对应用程序执行读写操作,并将执行读写操作的反馈结果存储至第二共享内存,并向第二窗口模块发送第二通信信号;其中,所述第二共享内存与第二通信信号是所述应用驱动模块预先设置的,所述第二共享内存与第二通信信号具有第二标识,所 述第二标识与所述第四标识相同。
全文摘要
本发明涉及仿真测试领域,特别是涉及一种片上系统的验证方法、装置和系统,所述方法包括:应用程序运行在主机设备的操作系统中,形成应用程序进程;仿真工具运行在所述主机设备上形成仿真进程;其中,片上系统运行在仿真工具中;所述应用程序进程与所述仿真进程进行通信以实现仿真测试。本发明提供的方法在完成SOC仿真测试的同时有效提高了SOC芯片验证的速度,有效解决了现有技术中基于应用程序的SOC仿真测试过程测试效率低下的问题。
文档编号G06F11/26GK103077104SQ201310032498
公开日2013年5月1日 申请日期2013年1月28日 优先权日2013年1月28日
发明者翟云 申请人:北京君正集成电路股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1