CN102480467B - 一种基于网络通讯协议的soc软硬件协同仿真验证方法 - Google Patents
一种基于网络通讯协议的soc软硬件协同仿真验证方法 Download PDFInfo
- Publication number
- CN102480467B CN102480467B CN201010559014.9A CN201010559014A CN102480467B CN 102480467 B CN102480467 B CN 102480467B CN 201010559014 A CN201010559014 A CN 201010559014A CN 102480467 B CN102480467 B CN 102480467B
- Authority
- CN
- China
- Prior art keywords
- test
- data
- excitation
- write
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于网络通讯协议的SOC软硬件协同仿真验证方法,先构建测试平台端与测试激励端,测试平台端即为网络服务器端,包括在第三方仿真器运行下的verilog设计、SystemC模型以及由C++编写的服务器打包/解包模块,测试激励端即为网络客户端,包括测试软件与客户打包/解包模块,然后通过自我解释的数据包格式进行数据交换,自我解释的数据包格式包括总线上的读/写格式、VPI的读/写格式以及仿真行为控制等三种。本发明不仅可以简化测试激励的编写、节省编译时间,而且提高了仿真速度、改善了verilog设计的验证完备性。
Description
技术领域
本发明涉及SOC软硬件协同仿真验证的平台搭建及测试激励软件开发,尤其涉及一种基于网络通讯协议的SOC软硬件协同仿真验证方法,具体适用于自我解释的数据包格式在SOC软硬件协同仿真验证方法中的应用。
背景技术
SOC的验证包括对硬件电路设计的验证和对软件的验证,而将其二者结合起来的就叫做软硬件协同仿真,目前主要的验证方案有:verilog直接激励、模型仿真或者FPGA:
Verilog直接激励:是在测试平台中用verilog语言,把软件测试激励翻译成硬件设计的输入端口的时序,直接驱动verilog设计,并在硬件设计的输出端口采集比较数据。其缺点是:每次测试激励有改动,需要重新编译整个测试平台,当需要测试的模块很大,甚至是整个芯片,编译时间会很长,导致整个仿真、调试、修改的迭代周期很长。
模型仿真:是把DSM模型,或者verilog的CPU模型,在测试平台里连接到硬件设计的输入输出端口,把C语言写的激励软件用和CPU相应的gcc编译器编译成二进制指令,然后把二进制指令初始化到verilog的存储器模型中,启动仿真后,CPU模型通过总线从存储器模型中取指令,解释执行。结果的采集和比对一般通过在激励软件中编程,从CPU读取硬件寄存器的值来判断或者直接在测试平台中硬编码进行硬件信号采集和判断。其缺点是:CPU仿真模型是时钟精确的模型,其通过实际的、需要花费仿真时间的取指来运行测试软件,所以仿真速度很慢;而且无法在总线上产生更为复杂、严苛的时序,导致对总线的测试压力不够。
FPGA:则是在FPGA中实现包括CPU和硬件设计,通过JTAG接口灌入激励进行的测试,测试结果一般依靠读取存储器的值或者直接使用外设。其缺点是:调试手段少,对出现的问题不容易定位;对硬件设计的规模有要求,如果硬件设计很大,甚至是整个芯片,FPGA也无能为力。
此外,以上现有技术还存在一些共同问题:测试激励必须用c语言编写,对于验证中常用的文字的处理能力较差,测试激励编写不灵活;测试激励只能操作总线上的读写,一旦出现因为硬件潜在的问题造成的系统死锁,读写无法进行,测试激励无能为力。
发明内容
本发明的目的是克服现有技术中存在的测试激励的编写语言单一、编译时间较长、仿真速度较低、对verilog设计验证不完善的缺陷与问题,提供一种测试激励的编写语言自由、编译时间较短、仿真速度较高、对verilog设计验证较完善的基于网络通讯协议的SOC软硬件协同仿真验证方法。
为实现以上目的,本发明的技术解决方案是:一种基于网络通讯协议的SOC软硬件协同仿真验证方法,该验证方法依次包括以下步骤:
第一步:先构建测试平台端与测试激励端,测试平台端即为网络服务器端,测试激励端即为网络客户端,测试平台端包括在第三方仿真器运行下的verilog设计、SystemC模型以及由C++编写的服务器打包/解包模块,测试激励端包括测试软件与客户打包/解包模块,然后将测试平台端与测试激励端之间通过网络协议隔开以便于各自独立运行;所述服务器打包/解包模块与客户打包/解包模块在网络上通过自我解释的数据包格式进行数据交换;
第二步:先在测试激励端通过用C或其他编程语言编写的测试激励和数据打包程序接口,再把编写的测试激励以交易为单位发送到测试平台端,并从测试平台端得到相应的反馈并解包成需要的数据;
第三步:当测试平台端收到测试激励端发来的数据包时,先把数据包解包、拆分还原,然后通过其中的路径字符串找到相应的测试平台端的模块,并对其发出操作指令,其中,对verilog设计,使用VPI/PLI的程序接口对其进行读写操作;对SystemC模型,通过其继承的C++基类进行回调操作;对仿真工具的行为,通过调用第三方仿真工具提供的API进行控制;然后将需要反馈到测试激励端的数据打包发回测试激励端。
所述第一步中的自我解释的数据包格式包括总线上的读/写格式、VPI的读/写格式以及仿真行为控制等三种;所述总线上的写格式在打包后的数据格式为:字段一:数据类型,即写,字段二:数据长度,即16个byte加上总线上master模型的路径字符串长度,字段三:总线上master模型的路径字符串,字段四:写操作的地址,字段五:写操作的数据;所述VPI的写格式在打包后的数据格式为:字段一:数据类型,即VPI写,字段二:数据长度,即12个byte加上verilog寄存器或者端口的路径字符串长度,字段三:verilog寄存器或者端口的路径字符串,字段四:写操作的数据。
与现有技术相比,本发明的有益效果为:
1、由于本发明一种基于网络通讯协议的SOC软硬件协同仿真验证方法中的测试平台端即为网络服务器端,测试激励端即为网络客户端,测试平台端包括在第三方仿真器运行下的verilog设计、SystemC模型以及由C++编写的服务器打包/解包模块,测试激励端包括测试软件与客户打包/解包模块,且服务器打包/解包模块与客户打包/解包模块在网络上通过自我解释的数据包格式进行数据交换,而该种一整套可以自我解释的数据打包格式包括数据类型、数据长度及数据本身等信息,有利于测试平台端与测试激励端之间的数据交流,同时,在测试平台端即网络服务器端还可以对verilog设计进行VPI/PLI操作、对SystemC模块的基类进行回调操作,该些功能设计能够使得本发明对于SOC验证仿真起到以下作用:首先,测试平台一次编译,多次运行,只要verilog设计不改动,SystemC模型的接口不变,测试平台就不需要重新编译,节省编译时间;其次,测试激励可以根据硬件的行为的结果进行逻辑分支判断,并且不会因为硬件设计问题导致的系统死锁破坏测试激励的运行,因为不需要花费仿真时间从存储器模型中取指令,仿真速度也大大的加快了;再次,可以根据实际需要选择测试激励的编程语言,例如,如果需要从文本文件提取测试条件,可以使用perl脚本语言版本;如果有现成的C程序,也可以使用C的版本直接编译,大大简化测试激励的编写;最后在测试激励中可以完全的控制硬件设计,以模拟出一些纯软件无法造出的测试情况,并改善verilog设计的测试完备性。因此本发明不仅可以简化测试激励的编写、节省编译时间,而且提高了仿真速度、改善了verilog设计的验证完备性。
附图说明
图1是本发明的结构示意图。
图2是本发明中自我解释的数据包格式的结构示意图。
具体实施方式
以下结合附图说明和具体实施方式对本发明作进一步详细的说明。
参见图1及图2,一种基于网络通讯协议的SOC软硬件协同仿真验证方法,该验证方法依次包括以下步骤:
第一步:先构建测试平台端与测试激励端,测试平台端即为网络服务器端,测试激励端即为网络客户端,测试平台端包括在第三方仿真器运行下的verilog设计、SystemC模型以及由C++编写的服务器打包/解包模块,测试激励端包括测试软件与客户打包/解包模块,然后将测试平台端与测试激励端之间通过网络协议隔开以便于各自独立运行;所述服务器打包/解包模块与客户打包/解包模块在网络上通过自我解释的数据包格式进行数据交换;
第二步:先在测试激励端通过用C或其他编程语言编写的测试激励和数据打包程序接口,再把编写的测试激励以交易为单位发送到测试平台端,并从测试平台端得到相应的反馈并解包成需要的数据;
第三步:当测试平台端收到测试激励端发来的数据包时,先把数据包解包、拆分还原,然后通过其中的路径字符串找到相应的测试平台端的模块,并对其发出操作指令,其中,对verilog设计,使用VPI/PLI的程序接口对其进行读写操作;对SystemC模型,通过其继承的C++基类进行回调操作;对仿真工具的行为,通过调用第三方仿真工具提供的API进行控制;然后将需要反馈到测试激励端的数据打包发回测试激励端。
所述第一步中的自我解释的数据包格式包括总线上的读/写格式、VPI的读/写格式以及仿真行为控制等三种;所述总线上的写格式在打包后的数据格式为:字段一:数据类型,即写,字段二:数据长度,即16个byte加上总线上master模型的路径字符串长度,字段三:总线上master模型的路径字符串,字段四:写操作的地址,字段五:写操作的数据;所述VPI的写格式在打包后的数据格式为:字段一:数据类型,即VPI写,字段二:数据长度,即12个byte加上verilog寄存器或者端口的路径字符串长度,字段三:verilog寄存器或者端口的路径字符串,字段四:写操作的数据。
本发明的原理说明如下:
名词解释:
SOC(SystemOnChip):一种高度集成化、固件化的集成系统,包括硬件电路设计及其专用的软件。
SystemC:是一种软/硬件协同设计语言,一般用于对硬件设计或者外设建模,在第三方仿真器上可以和verilog设计作联合仿真。
VPI(VerilogProceduralInterface):一种用于verilog硬件描述语言的c编程接口,又叫PLI2.0。
PLI(ProgrammingLanguageInterface):一种用于verilog硬件描述语言的c编程接口,相对于VPI,又叫PLI1.0。
DSM(DesignSimulationModel):用于仿真的CPU模型,可以在verilog边界上的输入输出端口产生精确的时序。
针对现有技术中的缺点与问题,本发明的目的在于提供一整套完整的验证方法,使其能够加快仿真速度、方便调试和衡量验证结果、加强测试激励的灵活性、增加测试激励可使用的功能。
参见图1,图中左侧为测试平台,即第三方仿真器上的verilog设计、SystemC模型以及C++编写的服务器打包/解包模块,右侧为测试激励,即使用C、perl或其他编程语言编写的测试软件和相应的客户打包/解包模块,服务器打包/解包模块与客户打包/解包模块在网络上通过自我解释的数据包格式进行数据交换。本发明的内容为将测试平台端和测试激励端用tcp/ip或其他网络协议隔开,使其各自独立运行,以使其互相影响牵制最小。其中测试平台端,即在第三方仿真器运行下的verilog设计和SystemC模型以及由C++编写的服务器打包/解包模块,为网络服务器端,而测试激励端,即C或其他编程语言编写的测试软件以及由C或其他编程语言编写的客户打包/解包模块,为网络客户端。
参见图2,本发明的核心在于一整套可以自我解释的数据打包格式,该打包格式包括数据类型、数据长度及数据本身等信息。对于总线上的写格式在打包后的数据格式为:字段一:数据类型,即写,字段二:数据长度,即16个byte加上总线上master的路径字符串长度,字段三:总线上master的路径字符串,字段四:写操作的地址,字段五:写操作的数据;对于VPI的写格式在打包后的数据格式为:字段一:数据类型,即VPI写,字段二:数据长度,即12个byte加上verilog寄存器或者端口的路径字符串长度,字段三:verilog寄存器或者端口的路径字符串,字段四:写操作的数据。
在测试激励端,即网络客户端,通过用C或其他编程语言编写的测试激励和之前编写的数据打包程序接口,把测试激励以“交易”为单位发送到网络服务器端,并从服务器端得到相应的反馈并解包成需要的数据。在测试激励端中,除了可以通过连接在总线上的SystemC的master模型对总线读写操作,也可以通过“路径”的字符串对verilog设计的端口、寄存器等进行直接读写;对SystemC的其他模型进行控制;对仿真工具进行控制。
在测试平台端,即网络服务器端,当收到客户端发来的数据包,把数据包解包、拆分还原,就可以通过其中的“路径”字符串找到相应的测试平台中的模块——无论是verilog设计还是SystemC模型——并对其发出操作指令,其中,对verilog设计,使用VPI/PLI的程序接口对其进行读写操作;对SystemC模型,则通过其继承的C++基类进行回调操作。同时也可以通过调用第三方仿真工具提供的API,对仿真工具的行为进行控制,以实现例如动态开关波形文件的功能。随后,将需要反馈到客户端的数据打包发回客户端。
通过上述设计,本发明对于SOC验证仿真可起到以下作用:
首先,测试平台一次编译,多次运行,只要verilog设计不改动,SystemC模型的接口不变,测试平台就不需要重新编译,节省编译时间。
其次,测试激励可以根据硬件的行为的结果进行逻辑分支判断,并且不会因为硬件设计问题导致的系统死锁破坏测试激励的运行,因为不需要花费仿真时间从存储器模型中取指令,仿真速度也大大的加快了。
再次,可以根据实际需要选择测试激励的编程语言,例如,如果需要从文本文件提取测试条件,可以使用perl脚本语言版本;如果有现成的C程序,也可以使用C的版本直接编译。大大简化测试激励的编写。
最后,在测试激励中可以完全的控制硬件设计,以模拟出一些纯软件无法造出的测试情况,从而改善verilog设计的测试完备性。
由上可见,本发明不仅可以简化测试激励的编写、节省编译时间,而且提高了仿真速度、改善了verilog设计的测试完备性。
以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。
Claims (2)
1.一种基于网络通讯协议的SOC软硬件协同仿真验证方法,其特征在于:该验证方法依次包括以下步骤:
第一步:先构建测试平台端与测试激励端,测试平台端即为网络服务器端,测试激励端即为网络客户端,测试平台端包括在第三方仿真器运行下的verilog设计、SystemC模型以及由C++编写的服务器打包/解包模块,测试激励端包括测试软件与客户打包/解包模块,然后将测试平台端与测试激励端之间通过网络协议隔开以便于各自独立运行;所述服务器打包/解包模块与客户打包/解包模块在网络上通过自我解释的数据包格式进行数据交换;
第二步:先在测试激励端通过用C或其他编程语言编写的测试激励和数据打包程序接口,再把编写的测试激励以交易为单位发送到测试平台端,并从测试平台端得到相应的反馈并解包成需要的数据;
第三步:当测试平台端收到测试激励端发来的数据包时,先把数据包解包、拆分还原,然后通过其中的路径字符串找到相应的测试平台端的模块,并对其发出操作指令,其中,对verilog设计,使用VPI/PLI的程序接口对其进行读写操作;对SystemC模型,通过其继承的C++基类进行回调操作;对仿真工具的行为,通过调用第三方仿真工具提供的API进行控制;然后将需要反馈到测试激励端的数据打包发回测试激励端。
2.根据权利要求1所述的一种基于网络通讯协议的SOC软硬件协同仿真验证方法,其特征在于:所述第一步中的自我解释的数据包格式包括总线上的读/写格式、VPI的读/写格式以及仿真行为控制等三种;所述总线上的写格式在打包后的数据格式为:字段一:数据类型,即写,字段二:数据长度,即16个byte加上总线上master模型的路径字符串长度,字段三:总线上master模型的路径字符串,字段四:写操作的地址,字段五:写操作的数据;所述VPI的写格式在打包后的数据格式为:字段一:数据类型,即VPI写,字段二:数据长度,即12个byte加上verilog寄存器或者端口的路径字符串长度,字段三:verilog寄存器或者端口的路径字符串,字段四:写操作的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010559014.9A CN102480467B (zh) | 2010-11-25 | 2010-11-25 | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010559014.9A CN102480467B (zh) | 2010-11-25 | 2010-11-25 | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102480467A CN102480467A (zh) | 2012-05-30 |
CN102480467B true CN102480467B (zh) | 2016-02-03 |
Family
ID=46092949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010559014.9A Expired - Fee Related CN102480467B (zh) | 2010-11-25 | 2010-11-25 | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102480467B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704260A (zh) * | 2019-09-11 | 2020-01-17 | 无锡江南计算技术研究所 | 一种用于处理器io寄存器测试激励的可重用方法 |
CN111310396B (zh) * | 2020-02-13 | 2023-10-03 | 深圳航天科技创新研究院 | 一种fpga虚拟平台及实现fpga虚拟平台的方法 |
CN111950212B (zh) * | 2020-08-13 | 2024-04-26 | 湖南进芯电子科技有限公司 | 高效的多模式验证平台及方法 |
CN112241347B (zh) * | 2020-10-20 | 2021-08-27 | 海光信息技术股份有限公司 | 实现SystemC验证的方法和验证平台组件架构 |
CN112329366A (zh) * | 2020-12-04 | 2021-02-05 | 国微集团(深圳)有限公司 | 一种提高仿真效率的soc系统验证方法、装置及系统 |
CN112632885B (zh) * | 2020-12-25 | 2023-01-03 | 山东产研鲲云人工智能研究院有限公司 | 软硬件联合验证系统及方法 |
CN112818616B (zh) * | 2021-01-15 | 2024-03-12 | 珠海泰芯半导体有限公司 | 管脚命名方法、寄存器激励源添加方法及电子装置 |
CN113157573B (zh) * | 2021-04-19 | 2024-06-07 | 上海湃星信息科技有限公司 | 一种软件测试验证系统及其构建方法 |
CN116932412B (zh) * | 2023-09-12 | 2024-01-23 | 厦门优迅高速芯片有限公司 | 可生成不同格式测试激励文件的共享平台和方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928877A (zh) * | 2006-08-17 | 2007-03-14 | 电子科技大学 | Soc软硬件一体化设计验证方法 |
-
2010
- 2010-11-25 CN CN201010559014.9A patent/CN102480467B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928877A (zh) * | 2006-08-17 | 2007-03-14 | 电子科技大学 | Soc软硬件一体化设计验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102480467A (zh) | 2012-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102480467B (zh) | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 | |
US9058447B2 (en) | Modifying a virtual processor model for hardware/software simulation | |
CN100487709C (zh) | Soc软硬件一体化设计验证方法 | |
US7472361B2 (en) | System and method for generating a plurality of models at different levels of abstraction from a single master model | |
US10180850B1 (en) | Emulating applications that use hardware acceleration | |
CN108038294B (zh) | Uvm环境搭建方法和系统 | |
US7424416B1 (en) | Interfacing hardware emulation to distributed simulation environments | |
CN101231589B (zh) | 用于原位开发嵌入式软件的系统和方法 | |
CN102521444A (zh) | 软硬件协同仿真/验证方法及装置 | |
EP1913410B1 (en) | Method and system for debug and test using replicated logic | |
CN102289593A (zh) | 多学科虚拟实验交互式仿真解算系统 | |
CN115686655B (zh) | 用于gpu ip验证的联合仿真系统 | |
US6959272B2 (en) | Method and system for generating an ATPG model of a memory from behavioral descriptions | |
US7437282B2 (en) | Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator | |
CN115688676B (zh) | 基于tlm的gpu联合仿真系统 | |
CN113835945A (zh) | 芯片的测试方法、装置、设备及系统 | |
US7184946B2 (en) | Co-simulation via boundary scan interface | |
Gong et al. | ReSim: A reusable library for RTL simulation of dynamic partial reconfiguration | |
US20130024178A1 (en) | Playback methodology for verification components | |
JP2008140405A (ja) | 電子回路と制御プログラムとのコバリデーション方法 | |
Pohl et al. | vMAGIC—automatic code generation for VHDL | |
CN100433024C (zh) | 软硬件协同仿真通信方法 | |
Gao et al. | Software and hardware co-verification technology based on virtual prototyping of RF SOC | |
US10816600B1 (en) | Protocol analysis and visualization during simulation | |
CN116340150A (zh) | 一种基于uvm的可重用的寄存器性能交互验证系统及其应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160203 Termination date: 20181125 |
|
CF01 | Termination of patent right due to non-payment of annual fee |