0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開源100 Gbps NIC Corundum環(huán)境的搭建

李繼明 ? 來(lái)源:中華鉛筆 ? 作者:h1654155275.6473 ? 2022-08-02 08:03 ? 次閱讀

一、Corundum簡(jiǎn)介

GitHub repository: https://github.com/corundum/corundum

GitHub wiki: https://github.com/corundum/corundum/wiki

Corundum是一個(gè)基于FPGA的開源原型平臺(tái),用于高達(dá)100Gbps及更高的網(wǎng)絡(luò)接口開發(fā)。Corundum平臺(tái)包括一些用于實(shí)現(xiàn)實(shí)時(shí),高線速操作的核心功能,包括:高性能數(shù)據(jù)路徑,10G/ 25G / 100G以太網(wǎng)MAC,PCIExpress第3代,自定義PCIeDMA引擎以及本機(jī)高精確的IEEE 1588 PTP時(shí)間戳。一個(gè)關(guān)鍵功能是可擴(kuò)展隊(duì)列管理,它可以支持超過10,000個(gè)隊(duì)列以及可擴(kuò)展的傳輸調(diào)度程序,從而可以對(duì)包傳輸進(jìn)行細(xì)粒度的硬件控制。結(jié)合多個(gè)網(wǎng)絡(luò)接口,每個(gè)接口多個(gè)端口以及每個(gè)端口事件驅(qū)動(dòng)的傳輸調(diào)度,這些功能可實(shí)現(xiàn)高級(jí)網(wǎng)絡(luò)接口,體系結(jié)構(gòu)和協(xié)議的開發(fā)。這些硬件功能的軟件接口是Linux網(wǎng)絡(luò)協(xié)議棧的高性能驅(qū)動(dòng)程序。該平臺(tái)還支持分散/聚集DMA,校驗(yàn)和卸載,接收流散列和接收端縮放。一個(gè)全面的,基于Python的開放源代碼仿真框架促進(jìn)了開發(fā)和調(diào)試,該框架包括整個(gè)系統(tǒng),從驅(qū)動(dòng)程序和PCIExpress接口的仿真模型到以太網(wǎng)接口。通過實(shí)現(xiàn)微秒級(jí)時(shí)分多址(TDMA)硬件調(diào)度程序,以100Gbps的線速執(zhí)行TDMA調(diào)度,而沒有CPU開銷,證明了Corundum的強(qiáng)大功能和靈活性。

二、環(huán)境準(zhǔn)備

2.1:Linux系統(tǒng)

本機(jī)為win10專業(yè)版,由于環(huán)境需要

在VMware虛擬機(jī)安裝Ubuntu 20.04 LTS系統(tǒng)供日常學(xué)習(xí)測(cè)試使用

安裝python庫(kù)

使用tox嘗試仿真

安裝雙系統(tǒng)Ubuntu 20.04 LTS

在Ubuntu系統(tǒng)上安裝vivado 2019.2

注意vivado 2019.2的license,基本組件的license會(huì)編譯出錯(cuò),需要添加IP license。

2.2:Obtaining the source code

直接從git地址下載zip壓縮包使用;

$ git clone https://github.com/corundum/corundum.git

2.3:FPGA仿真環(huán)境搭建
2.3.1 system packages
Python3.9;當(dāng)前ubuntu 20.04自帶python3版本為python3.8,需要下載python3.9并配置系統(tǒng)python3為python3.9。其中遇到很多問題需要百度自行解決。。。

$ sudo apt-get install python3.9
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.8 2 auto mode
1 /usr/bin/python3.8 2 manual mode
2 /usr/bin/python3.9 1 manual mode

Press to keep the current choice[*], or type selection number: 2

測(cè)試python版本:

$ python3 -V
Python 3.9

安裝/升級(jí)pip

$ sudo apt-get install python3-pip
$ sudo pip3 install --upgrade pip

安裝python-dev

$ sudo apt install python3-dev

安裝Icarus Verilog

$ sudo apt-get install iverilog

安裝GTKWave

$ sudo apt-get install gtkwave

2.3.2 required python packages

cocotb

cocotb-bus

cocotb-test

cocotbext-axi

cocotbext-eth

cocotbext-pcie

pytest

scapy

Recommended additional python packages:

tox (to run pytest inside a python virtual environment)

pytest-xdist (to run tests in parallel with pytest -n auto)

pytest-sugar (makes pytest output a bit nicer)

$ pip3 install cocotb
$ pip3 install cocotb-bus
$ pip3 install cocotb-test
$ pip3 install cocotbext-axi
$ pip3 install cocotbext-eth
$ pip3 install cocotbext-pcie
$ pip3 install pytest
$ pip3 install scapy
$ pip3 install tox
$ pip3 install pytest-xdist
$ pip3 install pytest-sugar

注意:安裝完package可能會(huì)報(bào)warning提示package不在PATH內(nèi)

pYYBAGGYHLSASbzdAAPio1RRXEw816.png

此時(shí)需要將package添加到系統(tǒng)PATH中

$ sudo gedit ~/.bashrc

在bashrc中添加

export PAT

然后在終端source

$ sudo source ~/.bashrc

2.4 安裝雙系統(tǒng)Ubuntu 20.04
在win10下的機(jī)械盤上分了一塊200G大小的空間用于安裝新系統(tǒng),事實(shí)證明200G有點(diǎn)小。

安裝過程見:

https://www.jianshu.com/p/54d9a3a695cc
https://zhuanlan.zhihu.com/p/135953477
https://www.zhihu.com/question/34611974

注意分區(qū)時(shí):/boot在UEFI上是非必要的,系統(tǒng)直接安在efi上即可。

將分區(qū)/:的空間設(shè)置足夠大,這是總目錄,以后安裝的軟件默認(rèn)在此目錄下,vivado2019占用90多G,因此此塊空間或者/home的空間要足夠大。

安裝完系統(tǒng)配置環(huán)境,同時(shí)安裝vivado2019.2,裝在/opt/xilinx下即可。

三、Running test

單核的PC不建議(太慢了),建議上服務(wù)器跑。

確保Linux下所需要的package都安裝完畢。

在corundum根目錄下運(yùn)行仿真。

$ cd /path/to/corundum-master
$ tox
py39 installed: apipkg==1.5,attrs==21.2.0,cocotb==1.5.2,cocotb-bus==0.1.1,cocotb-test==0.2.0,cocotbext-axi==0.1.12,cocotbext-eth==0.1.14,cocotbext-pcie==0.1.10,execnet==1.8.0,iniconfig==1.1.1,packaging==20.9,pluggy==0.13.1,py==1.10.0,pyparsing==2.4.7,pytest==6.2.4,pytest-forked==1.3.0,pytest-split==0.1.5,pytest-xdist==2.2.1,scapy==2.4.5,toml==0.10.2
py39 run-test-pre: PYTHONHASHSEED='438068548'
py39 run-test: commands[0] | pytest -n auto
============================= test session starts ==============================
platform linux -- Python 3.9.2, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
cachedir: .tox/py39/.pytest_cache
rootdir: /path/to/corundum, configfile: tox.ini, testpaths: fpga/common/tb, fpga/mqnic, fpga/mqnic_tdma
plugins: xdist-2.2.1, forked-1.3.0, cocotb-test-0.2.0, split-0.1.5
gw0 [38] / gw1 [38] / gw2 [38] / gw3 [38] / gw4 [38] / gw5 [38] / gw6 [38] / gw7 [38] / gw8 [38] / gw9 [38] / gw10 [38] / gw11 [38] / gw12 [38] / gw13 [38] / gw14 [38] / gw15 [38] / gw16 [38] / gw17 [38] / gw18 [38] / gw19 [38] / gw20 [38] / gw21 [38] / gw22 [38] / gw23 [38] / gw24 [38] / gw25 [38] / gw26 [38] / gw27 [38] / gw28 [38] / gw29 [38] / gw30 [38] / gw31 [38] / gw32 [38] / gw33 [38] / gw34 [38] / gw35 [38] / gw36 [38] / gw37 [38] / gw38 [38] / gw39 [38] / gw40 [38] / gw41 [38] / gw42 [38] / gw43 [38] / gw44 [38] / gw45 [38] / gw46 [38] / gw47 [38] / gw48 [38] / gw49 [38] / gw50 [38] / gw51 [38] / gw52 [38] / gw53 [38] / gw54 [38] / gw55 [38] / gw56 [38] / gw57 [38] / gw58 [38] / gw59 [38] / gw60 [38] gw0 [38] / gw1 [38] / gw2 [38] / gw3 [38] / gw4 [38] / gw5 [38] / gw6 [38] / gw7 [38] / gw8 [38] / gw9 [38] / gw10 [38] / gw11 [38] / gw12 [38] / gw13 [38] / gw14 [38] / gw15 [38] / gw16 [38] / gw17 [38] / gw18 [38] / gw19 [38] / gw20 [38] / gw21 [38] / gw22 [38] / gw23 [38] / gw24 [38] / gw25 [38] / gw26 [38] / gw27 [38] / gw28 [38] / gw29 [38] / gw30 [38] / gw31 [38] / gw32 [38] / gw33 [38] / gw34 [38] / gw35 [38] / gw36 [38] / gw37 [38] / gw38 [38] / gw39 [38] / gw40 [38] / gw41 [38] / gw42 [38] / gw43 [38] / gw44 [38] / gw45 [38] / gw46 [38] / gw47 [38] / gw48 [38] / gw49 [38] / gw50 [38] / gw51 [38] / gw52 [38] / gw53 [38] / gw54 [38] / gw55 [38] / gw56 [38] / gw57 [38] / gw58 [38] / gw59 [38] / gw60 [38] / gw61 [38] / gw62 [38] / gw63 [38]
...................................... [100%]
======================== 38 passed in 792.90s (0:13:12) ========================
___________________________________ summary ____________________________________
py39: commands succeeded
congratulations :)

poYBAGGYHLaAUcU8AALnyCQhuUw511.png

我在虛擬機(jī)里面跑的大概時(shí)間37分鐘。。。

$ cd /path/to/corundum-master
$ pytest -n auto (多核)
$ pytest (單核)

$ cd /path/to/corundum/
$ pytest -n auto
Test session starts (platform: linux, Python 3.9.2, pytest 6.2.2, pytest-sugar 0.9.4)
rootdir: /path/to/corundum, configfile: tox.ini, testpaths: fpga/common/tb, fpga/mqnic, fpga/mqnic_tdma
plugins: parallel-0.1.0, cocotb-test-0.2.0, split-0.1.6.dev1+g97d96c2, sugar-0.9.4, xdist-2.2.1, forked-1.3.0, metadata-1.11.0, html-3.1.1, flake8-1.0.7, cov-2.11.1
gw0 [38] / gw1 [38] / gw2 [38] / gw3 [38] / gw4 [38] / gw5 [38] / gw6 [38] / gw7 [38] / gw8 [38] / gw9 [38] / gw10 [38] / gw11 [38] / gw12 [38] / gw13 [38] / gw14 [38] / gw15 [38] / gw16 [38] / gw17 [38] / gw18 [38] / gw19 [38] / gw20 [38] / gw21 [38] / gw22 [38] / gw23 [38] / gw24 [38] / gw25 [38] / gw26 [38] / gw27 [38] / gw28 [38] / gw29 [38] / gw30 [38] / gw31 [38] / gw32 [38] / gw33 [38] / gw34 [38] / gw35 [38] / gw36 [38] / gw37 [38] / gw38 [38] / gw39 [38] / gw40 [38] / gw41 [38] / gw42 [38] / gw43 [38] / gw44 [38] / gw45 [38] / gw46 [38] / gw47 [38] / gw48 [38] / gw49 [38] / gw50 [38] / gw51 [38] / gw52 [38] / gw53 [38] / gw54 [38] / gw55 [38] / gw56 [38] / gw57 [38] / gw58 [38] / gw59 [38] / gw60 [38] gw0 [38] / gw1 [38] / gw2 [38] / gw3 [38] / gw4 [38] / gw5 [38] / gw6 [38] / gw7 [38] / gw8 [38] / gw9 [38] / gw10 [38] / gw11 [38] / gw12 [38] / gw13 [38] / gw14 [38] / gw15 [38] / gw16 [38] / gw17 [38] / gw18 [38] / gw19 [38] / gw20 [38] / gw21 [38] / gw22 [38] / gw23 [38] / gw24 [38] / gw25 [38] / gw26 [38] / gw27 [38] / gw28 [38] / gw29 [38] / gw30 [38] / gw31 [38] / gw32 [38] / gw33 [38] / gw34 [38] / gw35 [38] / gw36 [38] / gw37 [38] / gw38 [38] / gw39 [38] / gw40 [38] / gw41 [38] / gw42 [38] / gw43 [38] / gw44 [38] / gw45 [38] / gw46 [38] / gw47 [38] / gw48 [38] / gw49 [38] / gw50 [38] / gw51 [38] / gw52 [38] / gw53 [38] / gw54 [38] / gw55 [38] / gw56 [38] / gw57 [38] / gw58 [38] / gw59 [38] / gw60 [38] / gw61 [38] / gw62 [38] / gw63 [38]

fpga/common/tb/tdma_scheduler/test_tdma_scheduler.py ? 3% ▍
fpga/common/tb/tdma_ber/test_tdma_ber.py ? 5% ▌
fpga/common/tb/queue_manager/test_queue_manager.py ? 8% ▊
fpga/common/tb/cpl_queue_manager/test_cpl_queue_manager.py ? 11% █▏
fpga/common/tb/rx_checksum/test_rx_checksum.py ?? 18% █▉
fpga/common/tb/rx_hash/test_rx_hash.py ?? 24% ██▍
fpga/common/tb/tdma_ber_ch/test_tdma_ber_ch.py ? 21% ██▏
fpga/common/tb/tx_checksum/test_tx_checksum.py ?? 29% ██▉
fpga/mqnic/VCU108/fpga_10g/tb/fpga_core/test_fpga_core.py ? 32% ███▎
fpga/mqnic/ExaNIC_X10/fpga/tb/fpga_core/test_fpga_core.py ? 34% ███▌
fpga/mqnic/AU50/fpga_100g/tb/fpga_core/test_fpga_core.py ? 37% ███▊

######## SNIP ########

fpga/mqnic/fb2CG/fpga_25g/tb/fpga_core/test_fpga_core.py ? 92% █████████▎
...ic/ADM_PCIE_9V3/fpga_25g/tb/fpga_core/test_fpga_core.py ? 95% █████████▌
...nic_tdma/VCU118/fpga_10g/tb/fpga_core/test_fpga_core.py ? 97% █████████▊
...ma/ADM_PCIE_9V3/fpga_10g/tb/fpga_core/test_fpga_core.py ? 100% ██████████

Results (797.62s):
38 passed

電腦還在跑。。。

poYBAGGYHLeAICgMAAZkxO9ufEk614.png

pYYBAGGYHLmAWB9jAAYK5AtHLTM845.png

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21738

    瀏覽量

    603461
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8605

    瀏覽量

    151191
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84694
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何搭建企業(yè)AI開發(fā)環(huán)境

    搭建企業(yè)AI開發(fā)環(huán)境是一個(gè)復(fù)雜而細(xì)致的過程,涉及硬件選擇、操作系統(tǒng)配置、軟件安裝、工具選用以及實(shí)踐等多個(gè)方面。下面,AI部落小編將詳細(xì)介紹如何搭建企業(yè)AI開發(fā)環(huán)境。
    的頭像 發(fā)表于 12-20 10:37 ?125次閱讀

    搭建開源大語(yǔ)言模型服務(wù)的方法

    本文我們將總結(jié)5種搭建開源大語(yǔ)言模型服務(wù)的方法,每種都附帶詳細(xì)的操作步驟,以及各自的優(yōu)缺點(diǎn)。
    的頭像 發(fā)表于 10-29 09:17 ?192次閱讀

    中國(guó)移動(dòng)發(fā)布廣域高吞吐100Gbps網(wǎng)卡

    10月10日,中國(guó)移動(dòng)研究院透露,在2024中國(guó)算力大會(huì)的一個(gè)分論壇上,中國(guó)移動(dòng)正式推出了其廣域高吞吐100Gbps網(wǎng)卡。   據(jù)悉,這款網(wǎng)卡基于中國(guó)移動(dòng)自主研發(fā)的廣域高吞吐協(xié)議,能在
    的頭像 發(fā)表于 10-12 15:11 ?446次閱讀

    TI RF Transceiver EVM自動(dòng)化環(huán)境搭建方法

    電子發(fā)燒友網(wǎng)站提供《TI RF Transceiver EVM自動(dòng)化環(huán)境搭建方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-04 09:35 ?0次下載
    TI RF Transceiver EVM自動(dòng)化<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>方法

    SemiDrive X9 AI 開發(fā)環(huán)境搭建

    SemiDrivex9AI開發(fā)環(huán)境搭建分開發(fā)機(jī)端,開發(fā)板端。主要的工具是SDNN,它是一個(gè)基于開源編譯器框架TVM的端到端的AI編譯器框架,Semidrive對(duì)TVM編譯器框架做了適配,主要特性如下
    的頭像 發(fā)表于 08-03 08:27 ?396次閱讀
    SemiDrive X9 AI 開發(fā)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    pytorch環(huán)境搭建詳細(xì)步驟

    PyTorch作為一個(gè)廣泛使用的深度學(xué)習(xí)框架,其環(huán)境搭建對(duì)于從事機(jī)器學(xué)習(xí)和深度學(xué)習(xí)研究及開發(fā)的人員來(lái)說至關(guān)重要。以下將介紹PyTorch環(huán)境搭建的詳細(xì)步驟,包括安裝Anaconda、配
    的頭像 發(fā)表于 08-01 15:38 ?824次閱讀

    PyTorch深度學(xué)習(xí)開發(fā)環(huán)境搭建指南

    PyTorch作為一種流行的深度學(xué)習(xí)框架,其開發(fā)環(huán)境搭建對(duì)于深度學(xué)習(xí)研究者和開發(fā)者來(lái)說至關(guān)重要。在Windows操作系統(tǒng)上搭建PyTorch環(huán)境,需要綜合考慮多個(gè)方面,包括軟件安裝、
    的頭像 發(fā)表于 07-16 18:29 ?1059次閱讀

    DS38EP100 1至5 Gbps省電均衡器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DS38EP100 1至5 Gbps省電均衡器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-05 09:43 ?0次下載
    DS38EP<b class='flag-5'>100</b> 1至5 <b class='flag-5'>Gbps</b>省電均衡器數(shù)據(jù)表

    DS80EP100 5至12.5 Gbps省電均衡器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DS80EP100 5至12.5 Gbps省電均衡器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-05 09:36 ?0次下載
    DS80EP<b class='flag-5'>100</b> 5至12.5 <b class='flag-5'>Gbps</b>省電均衡器數(shù)據(jù)表

    請(qǐng)問Eclipse環(huán)境如何搭建IoT Solution?

    的平臺(tái)搭建步驟又搞成命令行的,不知道有沒有方法直接集成到Eclipse環(huán)境中,知道的伙伴還請(qǐng)不吝指教,謝謝了。
    發(fā)表于 06-27 06:00

    日本6G原型設(shè)備亮相,數(shù)據(jù)傳輸速度高達(dá)100Gbps,是5G的10倍

    據(jù)悉,這一聯(lián)盟旨在突破無(wú)線通信技術(shù)的極限,并成功研發(fā)出這款原型設(shè)備。該原型設(shè)備已經(jīng)在戶外(100 GHz頻段)和室內(nèi)(300 GHz頻段)環(huán)境下實(shí)現(xiàn)了100 Gbps的高速傳輸。
    的頭像 發(fā)表于 05-07 14:37 ?394次閱讀

    OFC 2024:Trumpf、Optomind展示800Gbps收發(fā)器中的100Gbps VCSEL

    舉行的光網(wǎng)絡(luò)與通信研討會(huì)及博覽會(huì) (OFC) 上展示了其100Gbps VCSEL性能。該演示是與韓國(guó)水原市的客戶Optomind聯(lián)合展示的。 TPC 表示,“隨著基于AI/ML的超大規(guī)模云計(jì)算領(lǐng)域
    的頭像 發(fā)表于 04-07 16:07 ?445次閱讀

    TLT507-Android開發(fā)環(huán)境搭建

    TLT507-Android開發(fā)環(huán)境搭建
    的頭像 發(fā)表于 01-26 17:03 ?597次閱讀
    TLT507-Android開發(fā)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    鴻蒙開發(fā)南向環(huán)境搭建教學(xué)

    南向開發(fā)環(huán)境搭建教學(xué),更多鴻蒙開發(fā)資料可以前往高清完整版 《鴻蒙開發(fā)4.0基礎(chǔ)-高階文檔》找保存。(附鴻蒙文檔)
    發(fā)表于 01-05 16:38

    使用VeriStand搭建MIL測(cè)試環(huán)境

    MIL(Model In The Loop)模型在環(huán)仿真測(cè)試用于在實(shí)際系統(tǒng)搭建完成之前進(jìn)行模型測(cè)試,使用VeriStand搭建MIL測(cè)試環(huán)境,可以在不需要硬件資源的情況下測(cè)試控制模型。
    的頭像 發(fā)表于 01-05 10:42 ?4622次閱讀
    使用VeriStand<b class='flag-5'>搭建</b>MIL測(cè)試<b class='flag-5'>環(huán)境</b>