CN117692344A - 一种基于fpga代码编译的网络设备仿真方法 - Google Patents
一种基于fpga代码编译的网络设备仿真方法 Download PDFInfo
- Publication number
- CN117692344A CN117692344A CN202410148246.7A CN202410148246A CN117692344A CN 117692344 A CN117692344 A CN 117692344A CN 202410148246 A CN202410148246 A CN 202410148246A CN 117692344 A CN117692344 A CN 117692344A
- Authority
- CN
- China
- Prior art keywords
- fpga
- network
- simulation
- code
- network equipment
- 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.)
- Granted
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000006870 function Effects 0.000 claims abstract description 11
- 241000571697 Icarus Species 0.000 claims description 7
- 238000011161 development Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Environmental & Geological Engineering (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请公开了一种基于FPGA代码编译的网络设备仿真方法,包括以下步骤:S1:获得目标网络设备的FPGA源代码;S2:将FPGA源代码转换为C语言代码;S3:开发网卡与处理机交换数据的虚拟PCIe接口;S4:对C语言代码进行编译,优化,产生可在目标操作系统上执行的机器代码,得到完成的C程序;S5:虚拟机运行时,安装网卡驱动,网卡驱动通过虚拟PCIe接口调用C程序;S6:运行仿真,构建网络拓扑,配置参数,运行主机或虚拟机进行仿真,调用C程序执行网络功能;S7:分析结果验证仿真正确性,本申请提高了灵活性和可扩展性,可在软件环境中准确仿真网络设备的功能和性能,使网络设备仿真达到比现有技术更高的精度和扩展性。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种基于FPGA代码编译的网络设备仿真方法。
背景技术
随着互联网的发展,网络设备类型和规模持续扩大,如路由器、交换机、防火墙等。要在实际大规模网络中测试新设备或新技术的影响,需要搭建成本极高的测试环境。网络仿真技术可以在软件环境中模拟网络Topology拓扑、配置网络设备、注入实际流量包,观测整个网络的运行状态。这样可以大大降低新技术验证的成本。传统网络仿真平台的典型实现包括NS-3和OPNET。
然而传统网络仿真平台存在以下局限:
1、难以准确反映真实网络设备的性能指标,不同网卡拥有不同寄存器数量、内存大小、数据包收发处理逻辑等,会导致真实的吞吐量、延迟存在差异性。
2、这些平台没有提供仿真网卡接口来注入实际流量,进行实际业务的仿真。
发明内容
为解决上述背景技术中提出的问题,本发明提供一种基于FPGA代码编译的网络设备仿真方法,以解决现有技术中真实的吞吐量、延迟存在差异性,没有提供仿真网卡接口的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于FPGA代码编译的网络设备仿真方法,包括以下步骤:
S1:获得目标网络设备的FPGA源代码;
S2:使用FPGA开发工具将FPGA源代码转换为C语言代码;
S3:根据PCIe接口标准,开发网卡与处理机交换数据的虚拟PCIe接口;
S4:使用C编译器,对C语言代码进行编译,优化,产生可在目标操作系统上执行的机器代码,得到完成的C程序;
S5:虚拟机运行时,安装网卡驱动,网卡驱动通过虚拟PCIe接口调用C程序,完成FPGA逻辑仿真;
S6:运行仿真,构建网络拓扑,配置参数,运行主机或虚拟机进行仿真,调用C程序执行网络功能;
S7:分析结果,收集网络运行指标,分析性能参数,验证仿真正确性。
优选地,S1中FPGA源代码的语言为Verilog HDL或VHDL,FPGA源代码中定义了FPGA逻辑块及其互连的用于实现网络设备的功能模块。
优选地,S2中,使用的FPGA开发工具为Icarus Verilog, 使用Icarus Verilog将Verilog HDL源代码转换为C语言代码。
优选地,S3中,虚拟PCIe接口的具体实现方法为:基于Linux系统的libpci库,实现包括pci_init()、pci_scan_bus()、pci_get_device()的主要函数,开发网卡与处理机交换数据的虚拟PCIe接口。
优选地,S4中,使用的C编译器包括GCC。
优选地,S6中调用C程序执行网络功能具体为:在仿真环境中调用网卡驱动, 执行编译后的C程序,通过网卡接口发送和接收真实流量包,获得网络设备的行为和性能数据。
与现有技术相比,本发明的有益效果是:
本申请通过调用第三方FPGA编译工具,将FPGA代码编译生成软件代码,不依赖物理FPGA硬件环境, 通过虚拟PCIE与主机进行连接,可在主机上执行仿真,与仅软件仿真的技术相比,本申请通过编译FPGA源代码的方式实现了对网络硬件性能的精确仿真,与需要FPGA硬件的仿真技术相比,本专利是完全基于软件的仿真方法,提高了灵活性和可扩展性,本申请技术可以在软件环境中准确仿真网络设备的功能和性能,使网络设备仿真达到比现有技术更高的精度和扩展性。
附图说明
图1为本发明的方法流程示意图。
具体实施方式
为便于本领域技术人员理解本发明的技术内容,以下结合附图和具体的实例对本发明作进一步地详细说明。应当理解,此处所描述的具体实例仅用以解释本发明,并不用于限定本发明。
实施例1
如图1所示,一种基于FPGA代码编译的网络设备仿真方法,包括以下步骤:
S1:获得FPGA源代码;
获取目标网络设备FPGA源代码,源代码语言为Verilog HDL或VHDL,代码中定义了FPGA逻辑块及其互连,用于实现网络设备的各种功能模块;
S2:编译FPGA源代码;
使用FPGA开发工具Icarus Verilog, Icarus Verilog可将FPGA Verilog源码转换为C语言代码,Icarus Verilog基于语法书实现代码转换,可保证C代码实现的寄存器操作、运算逻辑与FPGA一致;
S3:实现PCIe虚拟接口;
根据PCIe接口标准,基于Linux系统的libpci库,实现pci_init()、pci_scan_bus()、pci_get_device()等主要函数,开发网卡与处理机交换数据的虚拟PCIe接口;
S4:编译;
使用GCC等C编译器,对以上C代码进行编译,优化,产生可在目标操作系统上执行的机器代码,形成一个完成的应用程序;
S5:虚拟机调用;
虚拟机运行时,通过虚拟PCIe接口调用链接的C程序,完成FPGA逻辑仿真;
S6:运行仿真;
构建网络拓扑,配置参数,运行主机或虚拟机进行仿真,调用C程序执行网络功能;
S7:分析结果;
收集网络运行指标,分析性能参数,验证仿真正确性。
在本实施例中,本申请的具体工作原理为:首先获得目标网络设备的FPGA源代码,该FPGA源代码实现了该网络设备的全部功能逻辑,然后进行FPGA源代码到软件代码的转换,其中使用FPGA开源仿真器Icarus Verilog将Verilog代码编译成C代码,然后编写PCIe虚拟接口,并进行编译,形成可执行程序,接着在主机环境中安装网卡驱动,该驱动可通过PCIe虚拟接口调用仿真网卡,然后在仿真环境中调用网卡驱动, 执行编译后的仿真软件程序,通过仿真网卡接口发送和接收真实流量包,实现对网络设备行为和性能的精确仿真。
本申请提出并实现了一种基于FPGA代码编译的网络设备仿真方法,该方法通过调用第三方FPGA编译工具,将FPGA代码编译生成软件代码,不依赖物理FPGA硬件环境, 通过虚拟PCIE与主机进行连接,在主机上执行仿真。
与仅软件仿真的技术相比,本专利通过编译FPGA源代码的方式实现了对网络硬件性能的精确仿真。
与需要FPGA硬件的仿真技术相比,本专利是完全基于软件的仿真方法,提高了灵活性和可扩展性。
本申请的优势在于可以最大程度保真地复刻网络硬件设备的工作机制,无需建立复杂的数学模型,也避免了硬件平台的限制。因此,可以实现对整体网络环境的精确仿真,特别适合针对依赖硬件优化的网络设备和定制协议进行仿真测试,可实现比现有网络仿真平台更高精度、更全面的大规模网络环境仿真,使网络设备和定制协议的开发测试变得更加简便可靠。
Claims (6)
1.一种基于FPGA代码编译的网络设备仿真方法,其特征在于,包括以下步骤:
S1:获得目标网络设备的FPGA源代码;
S2:使用FPGA开发工具将FPGA源代码转换为C语言代码;
S3:根据PCIe接口标准,开发网卡与处理机交换数据的虚拟PCIe接口;
S4:使用C编译器,对C语言代码进行编译,优化,产生可在目标操作系统上执行的机器代码,得到完成的C程序;
S5:虚拟机运行时,安装网卡驱动,网卡驱动通过虚拟PCIe接口调用C程序,完成FPGA逻辑仿真;
S6:运行仿真,构建网络拓扑,配置参数,运行主机或虚拟机进行仿真,调用C程序执行网络功能;
S7:分析结果,收集网络运行指标,分析性能参数,验证仿真正确性。
2.根据权利要求1所述的一种基于FPGA代码编译的网络设备仿真方法,其特征在于,S1中FPGA源代码的语言为Verilog HDL或VHDL,FPGA源代码中定义了FPGA逻辑块及其互连的用于实现网络设备的功能模块。
3.根据权利要求2所述的一种基于FPGA代码编译的网络设备仿真方法,其特征在于,S2中,使用的FPGA开发工具为Icarus Verilog, 使用Icarus Verilog将Verilog HDL源代码转换为C语言代码。
4.根据权利要求1所述的一种基于FPGA代码编译的网络设备仿真方法,其特征在于,S3中,虚拟PCIe接口的具体实现方法为:基于Linux系统的libpci库,实现包括pci_init()、pci_scan_bus()、pci_get_device()的主要函数,开发网卡与处理机交换数据的虚拟PCIe接口。
5.根据权利要求1所述的一种基于FPGA代码编译的网络设备仿真方法,其特征在于,S4中,使用的C编译器包括GCC。
6.根据权利要求1所述的一种基于FPGA代码编译的网络设备仿真方法,其特征在于,S6中调用C程序执行网络功能具体为:在仿真环境中调用网卡驱动, 执行编译后的C程序,通过网卡接口发送和接收真实流量包,获得网络设备的行为和性能数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410148246.7A CN117692344B (zh) | 2024-02-02 | 2024-02-02 | 一种基于fpga代码编译的网络设备仿真方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410148246.7A CN117692344B (zh) | 2024-02-02 | 2024-02-02 | 一种基于fpga代码编译的网络设备仿真方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117692344A true CN117692344A (zh) | 2024-03-12 |
CN117692344B CN117692344B (zh) | 2024-04-16 |
Family
ID=90135675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410148246.7A Active CN117692344B (zh) | 2024-02-02 | 2024-02-02 | 一种基于fpga代码编译的网络设备仿真方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117692344B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030061580A1 (en) * | 2001-06-21 | 2003-03-27 | Greaves David J. | Simulation method and compiler for hardware/software programming |
JP2009009325A (ja) * | 2007-06-27 | 2009-01-15 | Tokushu Denshi Kairo Kk | Icエミュレーション装置およびicエミュレーション方法 |
CN102147760A (zh) * | 2011-04-22 | 2011-08-10 | 中国电子科技集团公司第三十八研究所 | 一种基于网络传输的处理器协同验证平台及其测试方法 |
CN105279127A (zh) * | 2015-11-25 | 2016-01-27 | 哈尔滨工业大学 | 一种基于PCI或PCIe总线的FPGA程序下载系统及方法 |
CN112036023A (zh) * | 2020-08-26 | 2020-12-04 | 南京国电南自维美德自动化有限公司 | 一种发电机变压器组保护装置软件一体化生成系统 |
CN113961453A (zh) * | 2021-09-30 | 2022-01-21 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航空机载软件全数字仿真测试系统 |
CN117407301A (zh) * | 2023-10-23 | 2024-01-16 | 国电南瑞科技股份有限公司 | Fpga软核的程序调试方法、验证方法、系统、计算机设备及存储介质 |
-
2024
- 2024-02-02 CN CN202410148246.7A patent/CN117692344B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030061580A1 (en) * | 2001-06-21 | 2003-03-27 | Greaves David J. | Simulation method and compiler for hardware/software programming |
JP2009009325A (ja) * | 2007-06-27 | 2009-01-15 | Tokushu Denshi Kairo Kk | Icエミュレーション装置およびicエミュレーション方法 |
CN102147760A (zh) * | 2011-04-22 | 2011-08-10 | 中国电子科技集团公司第三十八研究所 | 一种基于网络传输的处理器协同验证平台及其测试方法 |
CN105279127A (zh) * | 2015-11-25 | 2016-01-27 | 哈尔滨工业大学 | 一种基于PCI或PCIe总线的FPGA程序下载系统及方法 |
CN112036023A (zh) * | 2020-08-26 | 2020-12-04 | 南京国电南自维美德自动化有限公司 | 一种发电机变压器组保护装置软件一体化生成系统 |
CN113961453A (zh) * | 2021-09-30 | 2022-01-21 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航空机载软件全数字仿真测试系统 |
CN117407301A (zh) * | 2023-10-23 | 2024-01-16 | 国电南瑞科技股份有限公司 | Fpga软核的程序调试方法、验证方法、系统、计算机设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
MOSTAFA W. NUMAN等: ""Towards Automatic High-Level Code Deployment on Reconfigurable Platforms"", IEEE ACCESS ( VOLUME: 8), 14 September 2020 (2020-09-14) * |
刘超等: ""开源模拟器"Icarus Verilog"的模拟技术分析"", 《科技信息》, 9 February 2009 (2009-02-09) * |
姚大勇;杨广文;卢琳;: "基于Impulse C的软硬件协同设计及应用", 辽宁工学院学报, no. 03, 15 June 2007 (2007-06-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN117692344B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lockhart et al. | PyMTL: A unified framework for vertically integrated computer architecture research | |
CN102508753B (zh) | Ip核验证系统 | |
CN116681013B (zh) | 网络芯片的仿真验证方法、平台、装置、设备及介质 | |
Calazans et al. | From VHDL register transfer level to SystemC transaction level modeling: a comparative case study | |
CN116414526B (zh) | 一种基于虚拟机的仿真装置和方法 | |
US7711535B1 (en) | Simulation of hardware and software | |
CN117692344B (zh) | 一种基于fpga代码编译的网络设备仿真方法 | |
Gao et al. | Software and hardware co-verification technology based on virtual prototyping of RF SOC | |
US8689153B1 (en) | M and A for importing hardware description language into a system level design environment | |
CN107526585B (zh) | 基于Scala的FPGA开发平台及其调试、测试方法 | |
Lezhnev et al. | Electronic Computer-Aided Design for Low-Level Modeling of Networks-on-Chip | |
CN114282464A (zh) | 芯片仿真验证中的协同仿真方法及应用 | |
CN113792522A (zh) | 仿真验证方法、装置及计算设备 | |
CN113496108A (zh) | 一种应用于仿真的cpu模型 | |
CN102760097B (zh) | 一种计算机体系结构性能模拟方法及系统 | |
Seok et al. | An hla-based formal co-simulation approach for rapid prototyping of heterogeneous mixed-signal socs | |
Aubury et al. | Advanced silicon prototyping in a reconfigurable environment | |
US12032932B2 (en) | Compiler-based generation of transaction accurate models from high-level languages | |
Cordibella et al. | A HW/SW co-simulation framework for the verification of multi-CPU systems | |
Butkowski et al. | CO-SIMULATION OF HDL USING PYTHON AND MATLAB OVER TCL TCP/IP SOCKET IN XILINX VIVADO AND MODELSIM TOOLS | |
Liang et al. | System prototyping based on SystemC transaction-level modeling | |
Gioulekas et al. | Heterogeneous system level co-simulation for the design of telecommunication systems | |
TWI411930B (zh) | 系統階層模擬/驗證系統及其方法 | |
Dashkin et al. | Mixed-Level Emulation of Asynchronous Circuits on Synchronous FPGAs | |
US20060085176A1 (en) | Generating an optimized system-level simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |