不用官方EDA怎么開發FPGA?

目前FPGA的開發和官方的EDA工具是高度綁定的,用哪家的芯片只能用其配套的EDA工具進行開發(綜合可選工具,布局布線沒有可選的工具),那么有沒有其他的開發方式呢?今天就介紹一個使用開源工具鏈來開發FPGA的方式。

本文核心:開源 FPGA 工具鏈,例如 APIO、IceStrom、yosys OssCAD 等使用。

工具鏈簡介

APIO

簡介:

APIO(Advanced Python Integration for OpenFPGA)是一個基于Python的FPGA開發工具鏈封裝器,旨在簡化開源FPGA工具的使用。它整合了IceStorm、yosys等工具,提供一鍵式編譯、燒錄和調試功能。

官網/GitHub: https://github.com/FPGAwars/apio (注:APIO 是 FPGAwars 社區項目,GitHub 是主要資源庫)

特點:

支持多平臺(Linux/macOS/Windows)。

自動化依賴管理(如自動安裝IceStorm工具鏈)。

支持常見的FPGA開發板(如iCE40、ECP5等)。

提供項目模板和快速構建腳本。

用途:

適合快速原型開發,尤其適合初學者或希望避免手動配置工具鏈的用戶。

IceStorm

簡介:

IceStorm是Lattice iCE40 FPGA的開源工具鏈,包含綜合(yosys)、布局布線(arachne-pnr/nextpnr)、位流生成(icepack)和燒錄工具(iceprog)。

官網: http://www.clifford.at/icestorm/

GitHub: https://github.com/YosysHQ/icestorm

關鍵組件:

Yosys:RTL綜合工具,將Verilog轉換為iCE40支持的網表。

nextpnr:新一代布局布線工具,支持iCE40和ECP5。

iceprog:通過USB燒錄位流到FPGA。

特點:

完全開源,無需商業許可證。

支持低功耗、低成本FPGA開發。

用途:

適用于iCE40 FPGA的開發,如Lattice IceStick、TinyFPGA等開發板。

Yosys

簡介:

Yosys(Yosys Open SYnthesis Suite)是一個開源的RTL綜合工具,支持Verilog/VHDL到目標網表的轉換。

官網: https://yosyshq.net/yosys/

GitHub: https://github.com/YosysHQ/yosys

功能:

邏輯綜合、優化、形式化驗證。

支持多種FPGA架構(iCE40、ECP5、Xilinx 7系列等)。

可擴展的插件系統(如TinyTapeout流程)。

用途:

作為IceStorm和許多其他開源工具鏈的核心綜合引擎,廣泛應用于學術研究和工業項目。

OssCAD(或 OSSCAD)

簡介:

OssCAD(Open Source System for Chip and ASIC Design)是一個開源硬件設計生態系統,強調從RTL到GDSII的全流程工具鏈。

說明: "OssCAD" 并非單一工具,而是開源硬件工具鏈的統稱,指以下生態:

OSSCAD Suite(社區項目): https://github.com/osscda

相關工具鏈(Yosys + nextpnr + OpenROAD):

OpenROAD (ASIC 設計): https://theopenroadproject.org/

關鍵工具:

包含Yosys、nextpnr、OpenROAD(用于ASIC布局布線)、Magic(版圖編輯)等。

支持FPGA和ASIC設計。

特點:

社區驅動,強調開放性和協作。

與商業工具(如Cadence/Synopsys)互補,適合教學和小規模項目。

用途:

ASIC原型設計、FPGA驗證及開源芯片(如RISC-V)開發。

工具鏈關系與典型流程

FPGA開發流程(以iCE40為例):

使用Yosys將Verilog綜合為網表(.blif)。

用nextpnr進行布局布線,生成位流(.asc)。

通過icepack生成二進制文件(.bin),用iceprog燒錄到FPGA。

APIO可自動化上述步驟。

ASIC/OSSCAD流程:

Yosys + OpenROAD + Magic 實現從RTL到版圖的全流程。

其他關鍵鏈接

FPGAwars(APIO 所屬社區): https://fpgawars.github.io/

YosysHQ(Yosys/IceStorm/nextpnr 維護團隊): https://yosyshq.net/

注意事項

部分工具(如 IceStorm/Yosys)已合并到 YosysHQ 組織下統一維護。

開源工具更新較快,建議通過 GitHub 獲取最新版本。

雖然這些軟件在基于 Linux 的發行版或 WSL 中運行效果最佳,但在這里我們將在 Windows(10)上完成所有操作。

步驟 0. 準備系統。

要開始使用工具鏈,系統應該包含 Python 3.5 或更高版本,可以使用以下命令檢查系統上的 Python 版本

$ python --version

應該得到這樣的輸出。

如果沒有,需要在系統上下載安裝 python 和 pip。

步驟1. 獲取系統上的 API

系統準備就緒后,我們現在需要在系統上安裝 apio。在 Windows 終端中使用此命令即可輕松完成。

pip install -U apio

此命令將下載系統上的 apio,apio 作為將用于 FPGA 開發的所有項目和工具的管理器。

步驟3. 安裝所有軟件(Yosys,GTKwave,nxtpnr)

FPGA 開發過程中使用各種工具,這些是需要的

  • OSS CAD -Yosys(驗證)

  • Gtkwave(仿真)

  • IceStrom

這些軟件可以單獨下載安裝,但我們將使用命令下載完整的包。

apio install --all

apio 將開始下載所有支持文件,這可能需要一些時間,具體取決于網絡速度。

可以在此文檔頁面上閱讀 apio 文檔

https://apiodoc.readthedocs.io/en/stable/source/quick_start.html

下載后,可以使用此命令檢查版本。

apio --version

這顯示了系統中現有的 apio 版本。

下面這些都是我們將要使用的各種 apio 命令。

$ apio
Usage: apio [OPTIONS] COMMAND [ARGS]...Options:--version ?Show the version and?exit.--help? ? ?Show this message and?exit.Project commands:build ? ? ?Synthesize the bitstream.clean ? ? ?Clean the previous generated files.lint ? ? ? Lint the verilog code.sim ? ? ? ?Launch the verilog simulation.time ? ? ? Bitstream timing analysis.upload ? ? Upload the bitstream to the FPGA.verify ? ? Verify the verilog code.Setup commands:drivers ? ?Manage FPGA boards drivers.init ? ? ? Manage apio projects.install ? ?Install packages.uninstall ?Uninstall packages.Utility commands:boards ? ? Manage FPGA boards.config ? ? Apio configuration.examples ? Manage verilog examples.raw ? ? ? ?Execute commands using Apio packages.system ? ? System tools.upgrade ? ?Check the latest Apio version.

可以在apio 的文檔中詳細閱讀這些命令

https://apiodoc.readthedocs.io/en/stable/index.html

安裝 apio 及其所需的所有軟件包后,將在系統中啟用串口和安裝 ftdi 驅動程序,需要在管理員模式下打開 Windows cmd 。

然后運行此命令。

apio drivers --ftdi-enable

完成后關閉管理員提示。

到目前為止,無論主板是否受 apio 項目支持,都可以使用此命令找出所有受支持的主板的列表。

apio boards --list

步驟4.創建第一個項目

現在研究如何創建我們的第一個項目。

現在打開或創建選擇的文件夾。

完成后,會顯示你想要的位置。

apio 的一大亮點是它自帶了所有支持板卡的示例。現在,我們將在 apio 項目中使用內置的示例文件。使用此命令,我們可以列出所有示例。

apio examples -l

應該得到這樣的列表。

現在我們可以用列表中的示例來對應你的主板。我的主板是 ULX3S- 12f。

因此我將使用該命令來使用示例,可以根據自己板卡對其進行修改。

apio examples -f ulx3s-12f\Blinky

如果示例創建成功,將看到如下輸出

該示例文件包含所有需要的 Verilog、Testbench、Simulation 和 Constraints 文件。

現在必須執行以下基本步驟

使用命令驗證 Verilog 代碼

apio verify

如果所有語法都正確,將獲得如下輸出,因為這是一個示例,所以出現語法錯誤的可能性較小(幾乎為 0)。

驗證完成后,我們需要仿真這段代碼,我們的文件夾必須包含一個測試平臺文件。將使用這個命令進行仿真,并使用 Icarus Veriog 和 GTKwave 進行仿真,這樣我們就能看到波形了。

apio sim

下一步是為項目構建比特流,使用以下命令完成。

apio build

現在比特流已經生成。我們將把這個比特流上傳到我們的開發板,首先我們需要使用這個命令將開發板連接到我們的電腦,然后運行這個命令。

apio upload

恭喜您已成功安裝開源 apio 項目和工具鏈,并創建了一個示例項目。可以通過板上的 LED 閃爍來確認。

總結

簡單且高效,主要是不需要License,如果你對FPGA這一套EDA比較感興趣,那么這套工具也可以研究一下。

另外這一套工具其實也是某平臺官方源碼流出來后魔改的(流傳~)。

最后是一些相關參考資料:

https://apiodoc.readthedocs.io/en/stable/index.html

https://github.com/FPGAwars/apio

https://clifford.at/icestorm

https://www.youtube.com/watch?v=gtkQ84Euyww&list=PPSV

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80360.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80360.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QuecPython+Aws:快速連接亞馬遜 IoT 平臺

提供一個可接入亞馬遜 Iot 平臺的客戶端,用于管理亞馬遜 MQTT 連接和影子設備。 初始化客戶端 Aws class Aws(client_id,server,port,keep_alive,ssl,ssl_params)參數: client_id (str) - 客戶端唯一標識。server (str) - 亞馬遜 Iot 平臺服務器地址…

44.輻射發射整改簡易摸底測試方法

輻射發射整改簡易摸底測試方法 1. 正式摸底預測試2. 簡易方法預測試3. 分析頻譜4. 探查傳播路徑5. 施加措施6. 與簡易方法預測試效果對比 1. 正式摸底預測試 去正式實驗室做一次預測試,取得頻譜圖;確定超標頻點和超標量(備用)。 …

OpenCV中適用華為昇騰(Ascend)后端的逐元素操作(Per-element Operations)

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 針對華為昇騰(Ascend)后端的逐元素操作(Per-element Operations),這些操作通常用于圖…

Web前端VSCode如何解決打開html頁面中文亂碼的問題(方法2)

Web前端—VSCode如何解決打開html頁面中文亂碼的問題(方法2) 1.打開VScode后,依次點擊 文件 >> 首選項 >> 設置 2.打開設置后,依次點擊 文本編輯器 >> 文件(或在搜索框直接搜索“files.autoGuessEnc…

【UltralyticsYolo11圖像分類完整項目-04】代碼重構

經過上一篇博客,我們實現 了一個cpp文件,可以預測單個圖像和多個圖像。為了更加簡化代碼,方便部署,我們需要對代碼進行重構:將功能模塊化到頭文件中。 完整代碼下載鏈接:點擊這里 重構的優點 模塊化設計:將不同功能分離到不同的類中,每個類有明確的職責更好的可維護性:…

Debezium RelationalSnapshotChangeEventSource詳解

Debezium RelationalSnapshotChangeEventSource詳解 1. 類的作用與功能 1.1 核心功能 RelationalSnapshotChangeEventSource是Debezium中用于關系型數據庫快照的核心抽象類,主要負責: 數據快照:對數據庫表進行全量數據快照模式捕獲:捕獲數據庫表結構事務管理:確保快照過…

DeepInjectSQL - 基于 AI 生成對抗網絡(GAN)的下一代 SQL 注入自動化漏洞獵手

概述 SQLMap本身是一個成熟的自動化SQL注入工具,可以與GAN結合起來,讓GAN生成的Payload替代傳統的手工或規則生成的測試用例,從而提高檢測的覆蓋率和效率。 分析可行性 GAN通常用于生成類似真實數據分布的數據,例如圖片、文本等。…

Python 爬蟲之 XPath 元素定位

XPath 簡介 XPath (XML Path Language) 最初是為了在 XML 文檔中進行導航而設計的語言,后來被廣泛應用于 HTML 文檔的解析。與 BeautifulSoup 相比,XPath 有以下特點: 語法強大:可以通過簡潔的表達式精確定位元素跨平臺性&#…

聊聊自動化辦公未來趨勢

1. 自動化辦公未來趨勢 1.1 智能化與AI融合加深 隨著人工智能技術的不斷成熟,其在自動化辦公中的應用將更加廣泛和深入。未來,辦公軟件將具備更強的智能交互能力,能夠理解自然語言指令,自動完成復雜的任務,如文檔編輯…

智慧工會服務平臺建設方案Word(23頁)

1. 引言 隨著信息技術的快速發展,傳統工會服務模式面臨挑戰,智慧工會服務平臺應運而生。該平臺旨在通過數字化手段,整合工會資源,優化服務流程,提高工作效率,為會員提供更加便捷、高效、個性化的服務體驗。…

React Hooks 深入淺出

目錄 引言:React Hooks 的革命基礎 Hooks useState:狀態管理的新方式useEffect:組件生命周期的替代方案useContext:簡化 Context API 額外的 Hooks useReducer:復雜狀態邏輯的管理useCallback 與 useMemo:…

【應急響應】- 日志流量如何分析?

【應急響應】- 日志流量如何下手?https://mp.weixin.qq.com/s/dKl8ZLZ0wjuqUezKo4eUSQ

stm32 debug卡在0x1FFFxxxx

自己畫的一個四軸飛機電路板,之前還能debug,改了一下mos管兩端的電阻,還能正常下載,藍牙接收也正常,但是debug出問題了,剛下載就自動運行,然后程序就在0x1FFFxxxx附近循環運行,這一塊…

java-----------------多態

多態,當前指的是 java 所呈現出來的一個對象 多態 定義 多態是指同一個行為具有多個不同表現形式或形態的能力。在面向對象編程中,多態通過方法重載和方法重寫來實現。 強弱類型語言 javascript 或者python 是弱類型語言 C 語言,或者 C…

Java 23種設計模式 - 結構型模式7種

Java 23種設計模式 - 結構型模式7種 1 適配器模式 適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。 優點 將目標類和適配者類解耦增加了類的透明性和復用性,將具體的實現封…

Git clone時出現SSL certificate problem unable to get local issuer certificate

正確解決方法 git config --global http.sslVerify false錯誤解決方法:(主要是看錯了嘿嘿,但是如果是 OpenSSL SSL_read: Connection was reset, errno 10054 Failed to connect to github.com port 443: Timed out 原…

DevExpressWinForms-AlertControl-使用教程

文章目錄 AlertControl-使用教程一、將 AlertControl 添加到 Form二、編輯 AlertControl 的 HtmlTemplateHTML Template Editor介紹編輯HTML Template 三、使用AlertControl彈出AlertAlert中的按鈕事件獲取 Alert 標題等信息向Alert傳遞參數 總結源碼 AlertControl-使用教程 一…

制作項目進度表常用的 8 款項目管理工具分享

在數字化管理和高效協作的今天,項目進度表軟件已經成為企業管理不可或缺的工具。無論是中小型企業還是大型機構,都需要通過精準的項目計劃和實時的進度跟蹤來確保業務目標的順利達成。這篇文章將聚焦項目進度表軟件,深入探討市場上8款主流產品…

SecureCRT網絡穿透/代理

場景 公司的辦公VPN軟件只有Windows系統版本,沒有Macos系統版本,而日常開發過程中需要先登錄VPN后,然后才能登錄應用服務器。 目的:Macos系統在使用SecureCRT時,登錄服務器,需要走Parallels Desktop進行網絡…

【計算機網絡-傳輸層】傳輸層協議-TCP核心機制與可靠性保障

📚 博主的專欄 🐧 Linux | 🖥? C | 📊 數據結構 | 💡C 算法 | 🅒 C 語言 | 🌐 計算機網絡 上篇文章:傳輸層協議-UDP 下篇文章: 網絡層 我們的講解順序是&…