YosysHQ/yosys

硬件与物联网

把 Verilog/SystemVerilog RTL 综合成门级网表的开源框架,面向硬件设计者和开源 ASIC/FPGA 流程。

4,842
1,192
C++
ISC
创建于 13 年前

如果你的工作涉及数字设计,并且想要一个可脚本化、可检查、可扩展的开源综合引擎,Yosys 值得投入时间。它不是厂商工具链的替代品,但可以成为开源硬件流程的核心一环。

解决什么问题

你写好了 Verilog 或 SystemVerilog RTL,接下来要确认它能否映射到目标工艺库的真实单元,而不只是语法能不能过。使用封闭的综合器时,这一步往往是个黑盒:输入源码,输出网表,中间 always 块、存储器和状态机怎样变成门电路,你很难看清。Yosys 把这一步交到你手里:在交互式 shell 或脚本里按顺序执行各个 pass,最后得到可检查的网表,以及一份可以重复运行、随时修改的综合脚本。

有什么不同

Yosys 是一个框架,不是固定流水线。综合过程被拆成一系列 pass,README 的示例把顺序写得很清楚:用 read -sv 和 hierarchy 做展开,用 proc 转换 always 块,优化后用 techmap 映射到内部单元,再用 dfflibmap 和 abc 按 Liberty 文件映射触发器与逻辑。每一步都是具名命令,所以你可以停在展开阶段、导出 RTLIL,或者按自己的需要调整顺序。文档中还有 synth 和 prep 两个默认脚本,分别面向门级映射和字级形式验证,初学者不必从零组装每个 pass。

真正拉开差距的是扩展方式:README 明确说可以通过组合 pass、用 C++ 增加新 pass 来让 Yosys 完成任意综合任务。这既是优点也是门槛。可脚本化的 pass 流程让从源码到网表的路径可审计,也让同一个前端可以面向不同单元库;但它默认你理解每个 pass 在做什么,它是给搭建流程的人用的框架,不是一个按钮。Verilog-2005 支持被描述为较完整,SystemVerilog 则依赖 sv-elab 和 slang,覆盖 IEEE 1800-2017 或 1800-2023 中一个非正式定义的、可综合的子集。看到“支持 SystemVerilog”时要按这个范围理解,不要假设任意测试平台代码都能综合。

谁值得试

适合:做开源 ASIC、教数字设计,或者要搭建自动化 RTL 到网表流水线的人,需要逐步脚本化和检查综合过程。也适合已经在用开源 CAD 工具链做形式验证的人,因为 SBY 是文档给出的形式验证前端。

不适合:想要对大尺寸 SystemVerilog 设计一键综合、并期待厂商级前端的人。项目材料自己就把行业级 SystemVerilog 和 VHDL 解析器指向 Tabby CAD Suite,这划出了免费工具前端的边界。也不适合只想做语法检查的人:README 说明 read_verilog 不做语法检查,建议先用 Verilator 之类的工具 lint 源码。

使用条件与边界

安装有两条路。最省事的是二进制套件,免费 OSS CAD Suite 或商业 Tabby CAD Suite,文档给了安装说明。另一条是从源码构建,需要一长串依赖(clang、bison、flex、Tcl、zlib、libffi、graphviz 等),并递归拉取子模块;官方流程使用 CMake preset,测试另有命令,要准备比较完整的工具链,而不是装一个包就结束。README 还提醒,各 Linux 发行版提供的 Yosys 二进制新旧不一,依赖发行版前要留意版本。

长期要处理的两件事是单元库和语言子集。要映射到真实硬件,你得提供 Liberty 文件;README 给出了可免费获取的标准单元库链接用于试验,而整个流程只相对于你选的库才有意义。SystemVerilog 支持是可综合子集,不是整个语言,Verilog 的 lint 明确不在范围内。项目也没有承诺覆盖大型设计中的所有构造。

HotRepo 点评

HotRepo 唯一记录到的观察是 2026-10-25 一次日榜出现,当天 4,840 stars,增加 5 颗。只有一个日期、没有更早历史,无法判断关注度能否持续,这个数字也不能说明综合质量。项目本身创建于 2013 年,属于长期存在的代码库,而非新鲜事物。采用前先确认你的 SystemVerilog 构造是否落在文档所述的可综合子集内,以及目标库是否有可用的 Liberty 文件;这两点直接决定流程能不能用。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 2026年10月25日,以项目官方文档为准。