CN117692344A - 一种基于fpga代码编译的网络设备仿真方法 - Google Patents

一种基于fpga代码编译的网络设备仿真方法 Download PDF

Info

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
Application number
CN202410148246.7A
Other languages
English (en)
Other versions
CN117692344B (zh
Inventor
张纯熠
顾宏业
吕厚军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Dazheng Chuangzhi Technology Co ltd
Original Assignee
Chengdu Dazheng Chuangzhi Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Dazheng Chuangzhi Technology Co ltd filed Critical Chengdu Dazheng Chuangzhi Technology Co ltd
Priority to CN202410148246.7A priority Critical patent/CN117692344B/zh
Publication of CN117692344A publication Critical patent/CN117692344A/zh
Application granted granted Critical
Publication of CN117692344B publication Critical patent/CN117692344B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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代码编译的网络设备仿真方法
技术领域
本发明属于计算机技术领域,具体涉及一种基于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程序,通过网卡接口发送和接收真实流量包,获得网络设备的行为和性能数据。
CN202410148246.7A 2024-02-02 2024-02-02 一种基于fpga代码编译的网络设备仿真方法 Active CN117692344B (zh)

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)

* Cited by examiner, † Cited by third party
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软核的程序调试方法、验证方法、系统、计算机设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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