一种芯片验证C模型的驱动系统及方法转让专利

申请号 : CN201610065948.4

文献号 : CN105740053B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨宗悦

申请人 : 烽火通信科技股份有限公司

摘要 :

本发明公开了一种芯片验证C模型的驱动系统及方法,涉及通信技术芯片开发领域。该系统的虚拟仪表用于:将驱动信息发送至C模型接口模块;收包模块用于:从虚拟仪表中接收驱动信息得到包,将包发送至收包队列模块;收包队列模块用于:将包形成收包队列,将经C模型模块处理完毕的原始包弹出,将处理模块的发送包链表返回至虚拟仪表;处理模块用于:收取收包队列模块中的包,调用C模型模块处理包;将处理产生的发送包链表发送至收包队列模块;C模型模块用于:根据寄存器表项模拟模块的寄存器表项,对处理模块收取的包进行处理,得到发送包链表。本发明能够提高芯片验证C模型的转发效率和工作效率,简化芯片验证C模型的驱动过程。

权利要求 :

1.一种芯片验证C模型的驱动系统,其特征在于:该系统包括虚拟仪表、和虚拟仪表进行通信的C模型(C MODEL,C语言建模模型)接口模块、内嵌于C模型接口模块中的C模型模块、以及和C模型接口模块进行通信的寄存器表项模拟模块;虚拟仪表和C模型接口模块各自的进程独立;C模型接口模块和寄存器表项模拟模块为同一进程,C模型接口模块和寄存器表项模拟模块直接通过函数调用进行访问;

所述虚拟仪表用于:将驱动信息通过socket机制发送至C模型接口模块;

所述C模型接口模块包括收包模块、收包队列模块和处理模块;

所述收包模块用于:从虚拟仪表中接收驱动信息得到包,将包发送至收包队列模块;

所述收包队列模块用于:将从收包模块接收的包形成收包队列,将经C模型模块处理完毕的原始包弹出,将处理模块的发送包链表返回至虚拟仪表;

所述处理模块用于:收取收包队列模块中的包,调用C模型模块处理包;将C模型模块处理产生的发送包链表发送至收包队列模块;

所述C模型模块用于:根据寄存器表项模拟模块的寄存器表项,对处理模块收取的包进行处理,得到发送包链表。

2.如权利要求1所述的芯片验证C模型的驱动系统,其特征在于:所述C模型模块的总入口以回调函数的形式,内嵌在C模型接口模块中。

3.一种基于权利要求1或2所述系统的芯片验证C模型的驱动方法,其特征在于:该方法包括独立的收包线程和处理线程;收包线程包括以下步骤:S101:收包模块判断是否有驱动信息从虚拟仪表发送至收包模块,若是,转到S102,否则重新执行S101;

S102:收包模块解析驱动信息,提取解析得到的包后,调用收包队列模块的专用插入函数,将解析的包发送至收包队列模块;

所述处理线程包括以下步骤:

S201:处理模块判断收包队列模块中是否存在包,若是,转到S202,否则重新执行S201;

S202:处理模块收取收包队列模块中的包后,调用C模型对当前包进行处理,得到当前包的发送包链表,转到S203;

S203:收包队列模块将经C模型模块处理完毕的原始包弹出,处理模块将当前包的发送包链表通过收包队列模块返回至虚拟仪表,返回成功后释放当前包的发送包链表。

4.如权利要求3所述的芯片验证C模型的驱动方法,其特征在于:S101中所述收包模块判断是否有驱动信息从虚拟仪表发送至收包模块时,通过收包专用socket句柄进行判断。

5.如权利要求3所述的芯片验证C模型的驱动方法,其特征在于:S201中所述处理模块判断收包队列模块中是否存在包时,调用收包队列模块的专用get函数进行判断。

6.如权利要求3所述的芯片验证C模型的驱动方法,其特征在于,S202具体包括以下步骤:处理模块收取收包队列模块中的包后,调用C模型模块的入口回调函数、并根据寄存器表项模拟模块的寄存器表项,对当前包进行处理,得到当前包的发送包链表。

7.如权利要求3所述的芯片验证C模型的驱动方法,其特征在于,S203之后还包括以下步骤:S204:判断当前包是否为收包队列模块中的最后一个包,若是,结束,否则继续执行S202。

说明书 :

一种芯片验证C模型的驱动系统及方法

技术领域

[0001] 本发明涉及通信技术芯片开发领域,具体涉及一种芯片验证C模型的驱动系统及方法。

背景技术

[0002] 随着全球通信技术的IP化进程不断深入,例如包处理芯片之类芯片的应用需求日益增多,包处理相关的协议也随之增多,从而使得此类芯片的开发日趋复杂。为解决这些问题,产生了以C语言开发的模型验证作为功能验证方法。
[0003] 但是,现有的功能验证方法对包处理芯片进行验证时,只能依次处理对包处理芯片中待处理的包,不仅操作过程比较复杂,而且工作效率和包转发效率均较低。

发明内容

[0004] 针对现有技术中存在的缺陷,本发明解决的技术问题为:提高芯片验证C模型的转发效率和工作效率,简化芯片验证C模型的驱动过程。
[0005] 为达到以上目的,本发明提供的芯片验证C模型的驱动系统,该系统包括虚拟仪表、和虚拟仪表进行通信的C MODEL wrapper、内嵌于C模型接口模块中的C模型模块、以及和C模型接口模块进行通信的寄存器表项模拟模块;虚拟仪表和C模型接口模块各自的进程独立;C模型接口模块和寄存器表项模拟模块为同一进程,C模型接口模块和寄存器表项模拟模块直接通过函数调用进行访问;
[0006] 所述虚拟仪表用于:将驱动信息通过socket机制发送至C模型接口模块;
[0007] 所述C模型接口模块包括收包模块、收包队列模块和处理模块;
[0008] 所述收包模块用于:从虚拟仪表中接收驱动信息得到包,将包发送至收包队列模块;
[0009] 所述收包队列模块用于:将从收包模块接收的包形成收包队列,将经C模型模块处理完毕的原始包弹出,将处理模块的发送包链表返回至虚拟仪表;
[0010] 所述处理模块用于:收取收包队列模块中的包,调用C模型模块处理包;将C模型模块处理产生的发送包链表发送至收包队列模块;
[0011] 所述C模型模块用于:根据寄存器表项模拟模块的寄存器表项,对处理模块收取的包进行处理,得到发送包链表。
[0012] 在上述技术方案的基础上,所述C模型模块的总入口以回调函数的形式,内嵌在C模型接口模块中。
[0013] 本发明提供的基于上述系统的芯片验证C模型的驱动方法,该方法包括独立的收包线程和处理线程;收包线程包括以下步骤:
[0014] S101:收包模块判断是否有驱动信息从虚拟仪表发送至收包模块,若是,转到S102,否则重新执行S101;
[0015] S102:收包模块解析驱动信息,提取解析得到的包后,调用收包队列模块的专用插入函数,将解析的包发送至收包队列模块;
[0016] 所述处理线程包括以下步骤:
[0017] S201:处理模块判断收包队列模块中是否存在包,若是,转到S202,否则重新执行S201;
[0018] S202:处理模块收取收包队列模块中的包后,调用C模型对当前包进行处理,得到当前包的发送包链表,转到S203;
[0019] S203:收包队列模块将经C模型模块处理完毕的原始包弹出,处理模块将当前包的发送包链表通过收包队列模块返回至虚拟仪表,返回成功后释放当前包的发送包链表。
[0020] 在上述技术方案的基础上,S101中所述收包模块判断是否有驱动信息从虚拟仪表发送至收包模块时,通过收包专用socket句柄进行判断。
[0021] 在上述技术方案的基础上,S201中所述处理模块判断收包队列模块中是否存在包时,调用收包队列模块的专用get函数进行判断。
[0022] 在上述技术方案的基础上,S202具体包括以下步骤:处理模块收取收包队列模块中的包后,调用C模型模块的入口回调函数、并根据寄存器表项模拟模块的寄存器表项,对当前包进行处理,得到当前包的发送包链表。
[0023] 在上述技术方案的基础上,S203之后还包括以下步骤:S204:判断当前包是否为收包队列模块中的最后一个包,若是,结束,否则继续执行S202。
[0024] 与现有技术相比,本发明的优点在于:
[0025] (1)本发明的收包线程和处理线程独立运行,C-MODEL平台运行时,本发明能够同时接收和处理从虚拟仪表发送过来的包;与此同时,本发明的收包队列模块暂存有虚拟仪表发送过来的所有包,进而使得本发明的收包模块能够同时接收多个待处理包,工作效率较高。
[0026] (2)本发明的C模型模块的总入口以回调函数的形式,内嵌在C模型接口模块中,进而使得C模型接口模块和C模型模块之间采用函数调用方式工作,转发效率较高。
[0027] (3)本发明实际使用时,C模型接口模块可灵活嵌入不同的C模型模块,C模型接口模块中处理模块的处理过程能够写成回调函数,具体的回调函数实体在C模型接口模块初始化时指向C模型模块的入口函数,其操作过程比较简单,适于推广。

附图说明

[0028] 图1为本发明实施例中芯片验证C模型的驱动系统的连接框图;
[0029] 图2为本发明实施例中C模型接口模块的工作流程框图;
[0030] 图3为本发明实施例中芯片验证C模型的驱动方法中收包线程的流程图;
[0031] 图4为本发明实施例中芯片验证C模型的驱动方法中处理线程的流程图。

具体实施方式

[0032] 以下结合附图及实施例对本发明作进一步详细说明。
[0033] 本发明实施例中的芯片验证C模型的驱动系统,属于完整的进行模型验证的软件平台(C-MODEL平台)的一部分,C-MODEL平台还包括命令行模块、消息交换模块和SDK interface模块。
[0034] 参见图1所示,本发明实施例中的芯片验证C模型的驱动系统包括虚拟仪表(tester sim)、和虚拟仪表进行通信的C模型接口模块(C MODEL wrapper)、内嵌于C模型接口模块中的C模型模块(C MODEL,C MODEL的总入口以回调函数的形式,内嵌在C MODEL wrapper中)、以及和C模型接口模块进行通信的寄存器表项模拟模块(host sim)。虚拟仪表和C模型接口模块各自的进程独立;C模型接口模块和寄存器表项模拟模块为同一进程,C模型接口模块和寄存器表项模拟模块可直接通过函数调用进行访问。
[0035] 虚拟仪表用于:将驱动信息通过socket机制发送至C模型接口模块。
[0036] 参见图2所示,C模型接口模块包括收包模块(Recv msg thread)、处理模块(cmodel_wrapper_process_thread)和收包队列模块(Packet list)。
[0037] 收包模块用于:从虚拟仪表中接收驱动信息得到包,将包发送至收包队列模块。
[0038] 收包队列模块用于:将从收包模块接收的包形成收包队列,将经C模型模块处理完毕的原始包弹出,将处理模块的发送包链表返回至虚拟仪表。
[0039] 处理模块用于:收取收包队列模块中的包,调用C模型模块处理包;将C模型模块处理产生的发送包链表发送至收包队列模块。
[0040] C模型模块用于:根据寄存器表项模拟模块的寄存器表项,对处理模块收取的包进行处理,得到发送包链表。
[0041] 本发明实施例中基于上述系统的芯片验证C模型的驱动方法,包括独立的收包线程和处理线程。参见图3所示,收包线程包括以下步骤:
[0042] S101:收包模块通过收包专用socket句柄(收包专用socket句柄为cmodel_wrapper_socket_fd),判断是否有驱动信息从虚拟仪表发送至收包模块,若是,转到S102,否则重新执行S101。
[0043] S102:收包模块解析驱动信息,提取解析得到的包后,调用收包队列模块的专用插入函数,将解析的包发送至收包队列模块。
[0044] 参见图4所示,处理线程包括以下步骤:
[0045] S201:处理模块调用收包队列模块的专用get函数,判断收包队列模块中是否存在包,若是,转到S202,否则重新执行S201(即待下次收包后继续判断)。
[0046] S202:处理模块收取收包队列模块中的包后,调用C模型模块的入口回调函数(cmodel_callback_func)、并根据寄存器表项模拟模块的寄存器表项,对当前包进行处理,得到当前包的发送包链表,转到S203。
[0047] S203:收包队列模块将经C模型模块处理完毕的原始包弹出,处理模块将当前包的发送包链表通过收包队列模块返回至虚拟仪表,返回成功后释放当前包的发送包链表,转到S204。
[0048] S204:判断当前包是否为收包队列模块中的最后一个包,若是,结束,否则继续执行S202。
[0049] 本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。