不用官方EDA怎么开发FPGA?

article/2025/8/16 14:26:16

目前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.hkcw.cn/article/GrObDUUsJQ.shtml

相关文章

群体智能优化算法-沙丁鱼群优化算法(Salp Swarm Algorithm (SSA,含Matlab源代码)

摘要 Salp Swarm Algorithm(SSA,沙丁鱼群优化算法)是一种基于群体智能的元启发式优化算法,灵感来自沙丁鱼群在水中的游动模式。SSA 在求解复杂优化问题时表现出良好的全局搜索能力和收敛性能。本文详细介绍SSA的数学原理&#xf…

Linux网络基础全面解析:从协议分层到局域网通信原理

Linux系列 文章目录 Linux系列前言一、计算机网络背景1.1 认识网络1.2 认识协议 二、网络协议初识2.1 协议分层2.2 OSI七层模型2.3 TCP/IP协议栈2.4 网络协议栈与OS的关系2.5 网络协议在网络传输时的作用 三、网络通信局域网通信的安全隐患与应对总结 前言 Linux系统部分的学习…

【网络协议】一文带你搞懂Tcp和Udp(万字详解)

文章目录 前言一、端口号端口号的范围划分 二、UDP和TCP2.1 UDP2.2 UDP的特点 三、TCP四、TCP的十个核心机制1.确认应答机制2.超时重传3.连接管理--三次握手 四次挥手**三次握手**四次挥手 4.滑动窗口5.流量控制6.阻塞控制7.延迟应答8.捎带应答9.粘包问题10.异常情况 前言 再上…

Kile5报错—>Target ‘Target 1‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available

一、错误分析 出现这个报错Target l uses ARM-Compiler Default Compiler Version 5 which is not available.是因为使用的 ARM 编译器“ Use Default Compiler Version 5”不可用,这是因为最新版本Keil5不再自动提供编译器(旧版本是自动安装编译器的&…

假水玩具超半数硼迁移超标 安全隐患引担忧

网红“假水”在部分中小学校园周边和电商平台热销,这种颜色丰富、黏性强的起泡胶玩具,别称史莱姆、水晶泥或“不沾手的水”,因其解压特性和价格低廉受到欢迎。然而,这类玩具存在安全隐患。电商平台上的“假水”名称和内容五花八门,价格低廉且销量大。六一儿童节前夕,从多…

美国提出伊核协议新方案 伊朗将回应 基于国家利益

伊朗外交部长阿巴斯阿拉格齐表示,阿曼外交大臣赛义德巴德尔布赛义迪访问了德黑兰,并介绍了美国提出的新伊核协议部分内容。伊朗将根据原则、国家利益和人民权利对美方提议作出回应。美国白宫新闻秘书卡罗琳莱维特称,美国中东问题特使史蒂文威特科夫已向伊朗发出一份详细的可…

印军高官称赞印巴两国军人都很理性 避免核冲突风险

在新加坡出席香格里拉对话会的印度国防参谋长阿尼尔乔汉5月31日在接受媒体采访时,称赞印度和巴基斯坦军人都很理性,不会因常规冲突诱发核冲突。他表示,当冲突发生时,最理性的人是身穿制服的人,因为他们明白冲突可能朝任何一方倾斜,并且理解这种冲突的后果。此前,乔汉在接…

买基金亏损30万状告银行 法院判了 二审驳回投资者请求

一位年过八旬的投资者在2021年投入105万元购买了一只公募基金产品,两年多时间亏损约30万元,随后将相关代销银行告上法庭,要求赔偿损失。案件经过两次审理,一审法院判决银行承担70%的损失赔偿责任并支付利息,但二审法院认为投资者自主决定购买理财产品,且亏损原因是金融市…

江苏省城市足球联赛 全民足球热潮席卷江苏

虎扑App紧急新增了“江苏联”频道。在“苏超”第三轮于5月31日开打之前,一票难求和诸梗风行的情势深度交织,让越来越多的网友沉醉其间。玩梗层出不穷:“我从来不关心足球,这次特别关注”“我都不是球迷,我就是为了争口气”“没有假球,全是世仇”“比赛第一,友谊第十四”…

安徽4300多万亩小麦丰收 生产形势良好

安徽省农业农村厅发布的信息显示,2024年安徽小麦收获期间天气状况良好,有利于机械化收割。截至5月31日17时,全省已收割小麦超过3833万亩,进度接近九成。安徽作为中国农村改革的发源地之一,是中国主要的粮食生产和调出省份,其粮食种植面积和产量一直位居全国前列。2024年,…

孙中山长孙女孙穗瑛去世 享年103岁 家人举办追思会

2025年5月,孙穗瑛的家人在美国加州为她举办了追思会。孙中山长孙女孙穗瑛于2025年3月24日在美国去世,享年103岁。孙穗瑛出生于1922年1月16日,出生地为中国广州,父亲是时任广州市长的孙科,母亲为陈淑英。她的两位兄长孙治平、孙治强以及妹妹孙穗华此前均已辞世。童年时期,…

知情人回应迪士尼情侣和一家三口扭打 因拍照起冲突

5月31日,有网友发布视频称,上海迪士尼内一对情侣和一家三口发生冲突并扭打起来,此事引发热议。视频显示,双方在现场激烈争执,周围游客纷纷上前劝阻。据了解,事件发生在5月31日,地点并非排队区域,而是游客自由打卡拍照的地方。情侣与一家三口因拍照问题产生矛盾,进而发…

2025年渗透测试面试题总结-匿名[校招]渗透测试工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]渗透测试工程师 1. 自我介绍 2. 印象深刻的一次渗透 3. 渗透测试流程 4. SQL注入原理及Payl…

“公安英模”邱建军雕像揭幕 缅怀英烈激励警心

6月1日是邱建军牺牲一周年,当天,他的雕像回到了汉兴派出所,仿佛又将大家带回到他保护群众安全而壮烈牺牲的那一瞬间,诉说着往昔的故事。为缅怀英烈、弘扬楷模精神,激励担当作为、凝聚奋进力量,江汉区公安分局邀请武汉泥塑艺术家胡作林制作了邱建军的雕像,并将其存放在汉…

硬核龙舟祝福端午 粽香飘飘竞渡忙

今天,端午节粽香飘飘、龙舟竞渡在守护家国安宁的“赛道”上战士们时刻奋楫争先硬核端午壁纸上新,请查收↓责任编辑:zhangxiaohua

专家谈以色列在约旦河西岸行事激进 侵蚀“两国方案”基础

当地时间5月30日,以色列国防部长卡茨宣布将在约旦河西岸地区建立“犹太人以色列国家”。此前,以色列安全内阁已决定在该地区新建22处犹太人定居点。中国国际问题研究院助理研究员李子昕指出,当前以色列的激进做法源于国内形势。以色列在加沙地带和约旦河西岸继续开展军事行动…

回顾香港演员方刚经典作品 致敬“第一恶人”

香港影坛“第一恶人”方刚于5月30日去世,享年78岁。方刚原名梁芳纲,曾是无线电视及亚视电视演员,出演过多部经典作品如《人在边缘》《豪门》《胜者为王lll王者之战》等。方刚1947年11月出生,学生时代就热爱舞台表演,12岁时开始客串影视作品。22岁时参演武侠电影《黑豹》和…

圆明园端午“十二花神”亮相 沉浸式体验传统文化魅力

端午节期间,圆明园变身为“东方美学乐园”。5月31日,“爱在海淀 曲动端阳”2025圆明园端午文化活动拉开帷幕,市民可以一站式体验传统民俗、非遗手作、汉服乐舞和创意市集,感受中华文化的魅力。《胤禛美人图》中的古典美人仿佛从画卷中走出,化身“十二花神”来到圆明园。她…

大朋友也能过六一 找回童趣与热爱

在阳光下,我们像孩子一样纯真;在风雨中,我们则要坚强如大人。长大后,我们常常怀念过去的时光,想念儿时那份无忧无虑的快乐。今天,无论年龄多大,都可以过一个充满童真的六一儿童节。让我们暂时抛开生活的重担和伪装,找回那份久违的童趣和对生活的热爱。勇敢地做自己,无…

男子长期喝生水致肾脏长出巨大结石 罕见348克“生姜”石

唐先生长期喝生水,导致肾脏长出巨大结石。湖南省人民医院岳麓山院区泌尿外科从患者右肾中取出一个潜伏20年、重达348克、形状酷似姜块的铸型结石。术后,唐先生恢复顺利,目前已经出院。59岁的唐先生来自湖南永州,20年前因血尿被诊断为右肾结石,做了体外碎石手术后症状缓解,…