# 现状：碎片化的开源EDA软件栈

**URL:** <https://1nfinite.ai/t/eda/154>\
**Category:** CIRCT\
**Created:** [October 8, 2024, 1:29am UTC](https://1nfinite.ai/t/eda/154 "2024-10-08T01:29:43Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![hailong](https://1nfinite.ai/user_avatar/1nfinite.ai/hailong/32/360_2.png) [@hailong](https://1nfinite.ai/u/hailong)\
**Post date:** [October 8, 2024, 1:29am UTC](https://1nfinite.ai/t/eda/154/1 "2024-10-08T01:29:43Z")

</div>

## 引言

在EDA领域，我们经历了多个重要阶段。最初是过去的EDA 1.0时代，随后进入了当前的EDA 1.x时代。展望未来，我们将朝着EDA 2.0时代迈进。本文将回顾EDA软件栈的发展历程，重点探讨EDA 1.x时代的特点，并介绍一些常见的开源EDA工具，包括仿真工具Verilator、RTL综合工具。Yosys、时序逻辑综合与验证工具ABC、布局布线工具OpenROAD等。这将帮助我们理解当今开源EDA软件栈为何呈现出碎片化的状态。

为了解决这种碎片化的现状，以适应DSA的发展需求和朝着EDA 2.0时代迈进，本文还将探讨开源EDA软件栈需要做出哪些转变。最后我们将简要介绍满足这些发展需求的开源EDA工具：CIRCT。

## EDA发展历程

### EDA 1.0时代

在 EDA 1.0 时代，EDA 工具的特点主要体现在以下几个方面：

- 支持HDL语言的描述

- 通过系统级仿真和综合提高设计流程效率

- 以自动化设计流程为目标

然而，在这样的时代背景下，每个 EDA 工具的功能通常较为单一，专注于特定的设计阶段。同时，各个EDA工具之间的互操作性较差，缺乏开放的接口和标准化的数据格式，导致工具之间难以有效集成。此外，随着时间的推移，EDA 工具逐渐演进，积累了大量历史代码和架构，使得工具的迭代速度难以跟上现代设计需求的快速增长。这种情况限制了设计流程的自动化和定制化，不仅降低了设计效率，还增加了设计周期。

### EDA 1.x时代

目前，我们正处于这个阶段。EDA 1.x时代是在EDA 1.0时代的基础上逐渐增加各种新内容，如：

- 基于FPGA的验证

- 低功耗设计

- 工艺改进带来的各种可靠的验证

- 远程服务器运行EDA工具

- 基于IP组件的设计复用等

这些叠加式的改进基于EDA 1.0，但强调工具的集成与协同，以推动设计流程的高效化，因此在一定程度上提升了EDA设计的效率。但是从抽象层级和设计方法学角度看，整体上并没有出现显著的变化。故而在EDA 1.x时代依然保留着一些EDA 1.0时代的问题，如历史包袱严重、开放性不足、迭代和创新速度不足、验证工作复杂等。这些问题限制了设计流程的进一步优化和发展，突显了对新一代EDA工具的迫切需求。

#### EDA 1.x时代下的开源EDA工具

##### **Verilator概述**

发展历程

- Verilator 的起源可以追溯到1994年，由 Digital Equipment Corporation (DEC) 的 Core Logic Group 开发。最初的目的是将 Verilog 代码转换为 C 代码，以便与基于 C 的 Alpha 处理器模型进行共同仿真。在1998年，DEC 发布了源代码，随后该项目被 Wilson Snyder 和其他开发者接手，并作为 Veripool 开源项目继续发展。2001年，Verilator 进行了全面重写，采用 C++ 语言进行开发，并增加了对 SystemC 模式的支持。随着时间的推移，Verilator在2022年的版本5中引入了符合 IEEE 标准的调度器和延迟语义，进一步增强了其功能。

Verilator的优势

- Verilator是一款将Verilog/SystemVerilog源码直接编译成高度优化的C++/SystemC代码的开源硬件仿真工具。它允许用户在C++/SystemC测试平台中实例化和使用转换后的模块，广泛应用于验证和建模。Verilator可以充分利用多核处理器的计算能力，支持多线程仿真，从而显著提高仿真速度。此外，它还集成了静态分析工具 lint，能够进行严格的代码检查，帮助开发者识别潜在问题。Verilator 的设计目标是提供一种快速、有效的仿真解决方案，尤其适合需要高性能的应用。

Verilator的不足之处

- 尽管Verilator在仿真功能方面表现出色，但其功能却相对单一。首先，Verilator本身并不支持形式化验证，这限制了其在更复杂验证场景中的应用。此外，Verilator生成的C++代码往往较为底层和冗长，这使得与原始源代码之间的对应关系变得困难，导致可读性较差。同时，调试过程也变得更加复杂，开发者在定位问题时可能会面临挑战。另外，Verilator不会生成中间表示，这意味着缺乏额外的优化空间，用户只能依赖生成的优化过的C++/SystemC代码，这种局限性使得在某些情况下无法充分利用潜在的性能提升。

##### **Yosys概述**

发展历程

- Yosys 项目始于2013年，由 Clifford Wolf 发起，最初是作为其本科毕业论文的一部分，旨在支持粗粒度可重构架构的综合。随着项目的发展，Yosys逐渐演变为一个通用的开源硬件综合框架，专注于为EDA提供灵活且高效的解决方案。在早期阶段，Yosys主要支持基本的 Verilog 2005 语法，并逐步扩展其功能以涵盖更广泛的设计需求。Yosys被认为是“硬件综合的GCC”，因为它不仅提供了强大的综合能力，还允许用户进行逻辑优化和技术映射。随着时间的推移，Yosys不断更新和改进，增加了对多种硬件平台的支持，包括 FPGA 和 ASIC 设计。

Yosys的优势

- Yosys 是一个开源的 Verilog RTL 综合框架，旨在将硬件描述语言（HDL）代码转换为门级电路网表。Yosys 目前具有广泛的 Verilog-2005 支持，并为各种应用领域提供了一组基本的综合算法。它允许用户处理几乎所有可综合的 Verilog 设计，并将其转换为多种中间格式，如 BLIF、EDIF、BTOR、SMT-LIB 和简单的 RTL Verilog。它内置了形式化检查的方法，用于验证设计的属性（sby）和等效性（eqy）。它能够将设计映射到标准单元库（如 Liberty 文件格式）以及特定 FPGA 架构（如 Xilinx 7 系列和 Lattice iCE40）。Yosys 的设计目标是提供灵活且高效的综合解决方案，支持 ASIC 和 FPGA 的开发。

Yosys的不足之处

- 尽管 Yosys 在 RTL 综合方面表现出色，但也存在一些不足之处。首先，它需要借助其他第三方开源工具来扩展功能，例如 Verilator（用于硬件行为仿真）、Boolector（用于 SMT 求解和 BTOR 模型检测）、MyHDL（用于高层次综合）等。在使用 Yosys 时，开发者有时需要编写复杂的综合流程脚本，这对新手来说可能会造成一定的挑战，并需要花费额外的学习成本。另一个不足是，Yosys 目前支持的是 Verilog-2005 版本。虽然这个版本已经相当强大，但与后来的 SystemVerilog 相比，仍然存在一些差距。例如，对于一些高级特性的支持不够全面，如下图所示的 Verilog 语法发展脉络图：

##### **ABC概述**

发展历程

- ABC项目于2007年由加州大学伯克利分校的Alberto Sangiovanni-Vincentelli教授领导，旨在重新开发MVSIS的核心包，从而创建一个名为ABC的新编程环境。该项目的主要目标是保持数据结构的简单性和灵活性，以适应各种应用程序。在2008年，ABC项目发布了第一个版本，能够优化、映射和重定时工业门级设计，支持高达100K门和10K序列元素，并且在现代计算机上约需一分钟的CPU时间即可实现最佳延迟和启发式最小化面积。从2009年至2011年，ABC项目持续改进其算法和功能，增加了基于AIG（And-Inverter Graph）的高效组合合成流，采用DAG感知转换，并集成了时序优化技术。自2012年至今，ABC项目不断扩展其功能，增加了对外部无关项的支持、白盒技术映射以及合成历史记录等特性，以满足日益复杂的硬件设计需求。

ABC的优势

- ABC是一个不断发展的软件系统，用于综合和验证同步硬件设计中出现的二进制时序逻辑电路。它结合了基于AIG的可扩展逻辑优化、用于查找表和标准单元的基于最佳延迟DAG的技术映射，以及用于时序综合和验证的启发式算法。它支持多种二进制格式作为其输入和输出，如BLIF、PLA、BENCH、EDIF以及一种专用格式BAF（二进制AIG格式），可用于将大型AIG读写到二进制文件中。它还支持无界和简单的边界时序等价检查等。

ABC的不足之处

- ABC项目主要专注于处理二进制文件，因此在某些方面，其功能显得相对单一。尽管如此，ABC在Yosys中得到了广泛应用，主要用于逻辑优化和门级映射。这种专注使得ABC在特定领域内展现出强大的性能，但也限制了其在更广泛应用场景中的灵活性。

##### **OpenROAD概述**

发展历程

- OpenROAD（“Foundations and Realization of Open, Accessible Design”）项目于2018年6月在DARPA IDEA计划内启动。OpenROAD的目标是降低当前阻碍设计师访问先进技术硬件实现的成本、专业知识和不确定性等障碍。该项目团队由高通、ARM以及多所大学和合作伙伴组成，由加州大学圣地亚哥分校领导，旨在开发一个完全自主的开源工具链，专注于数字系统芯片（SoC）布局生成，特别是在SoC设计的RTL到GDSII阶段。因此，OpenROAD全面应对了当今设计成本危机的多个方面，包括工程资源、设计工具许可、项目进度和风险。

OpenROAD的优势

- OpenROAD是半导体数字设计领域领先的开源基础应用程序。它提供了一种自主的、无人工干预的设计流程，能够24小时不间断执行从RTL到GDSII的转换，适用于快速设计探索和物理设计实施。OpenROAD消除了硬件设计中的成本、进度风险和不确定性障碍，促进了快速、低成本的集成电路设计软件和专业知识的开放获取，以及系统创新。该应用程序通过具有TCL和Python绑定的API实现灵活的流控制。

OpenROAD的不足之处

- OpenROAD虽然致力于创建一个能够自动优化电路布局和布线的开源工具，但仍存在一些不足之处。对RTL代码进行逻辑综合时，OpenROAD依赖于Yosys等外部综合工具。此外，在芯片设计的仿真和形式化验证方面，OpenROAD同样需要借助其他工具。这使得其功能在一定程度上显得单一。

##### **Google XLS概述**

发展历程

- XLS项目于2019年由Google发起，旨在应对摩尔定律终结时代的挑战，提供一种新的SDK，以降低硬件设计的复杂性。该项目强调共享工件、理解成本模型以及共享工具和方法论的重要性，从而使软件和硬件工程师能够更好地跨越各自领域的界限，进行协同设计。XLS引入了一种名为DSLX（基于Rust设计）的语言，旨在提高开发效率。DSLX语言被转换为XLS IR，然后被编译为可综合的RTL风格代码。这种方法不仅提升了生产力，还促进了软件与硬件之间的无缝协作，使得同一设计描述可以用于生成电路的软件模型和最终的RTL描述。

XLS的优势

- XLS是一个HLS工具链，能够从灵活的高层次功能描述生成可综合的Verilog和SystemVerilog设计。它采用“软件风格”的设计方法，支持快速开发硬件知识产权（IP）。通过这种方法，XLS生成的设计不仅可以在主机软件或模拟器中以原生速度运行，还能够将设计转化为实际的硬件模块输出。这种灵活性使得开发者能够在软件和硬件之间无缝切换，提升了整体开发效率。

XLS的不足之处

- 尽管XLS引入了新的DSLX语言以提高开发效率，并采用软件风格的设计方法来促进软硬件的协同，但仍存在一些不足之处。首先，XLS本质上是一个高层次综合（HLS）工具，主要功能是将DSLX或C++代码转换为可综合的Verilog或SystemVerilog设计。目前，它仅支持使用iverilog进行仿真，以及使用Yosys进行逻辑综合以生成网表。这种功能上的限制使得XLS在某些方面显得较为单一，可能影响其在复杂设计项目中的应用灵活性。

从上述开源EDA工具的不足之处来看，可以明显看出，这些EDA工具仍然背负着EDA 1.0时代遗留下来的历史包袱，功能往往显得比较单一，这也是导致当今开源EDA工具碎片化的重要因素之一。然而，这些工具的优势同样不可忽视。例如，OpenROAD正朝着自动化目标迈进，而Google XLS则在推动更开放的硬件IP和软硬件协同方面取得了显著进展。此外，Yosys提供了更开放的接口，能够与第三方开源EDA工具良好配合。 而为了顺利跨入EDA 2.0时代，大多数工具仍然缺乏一些关键特性，如模块化设计、定制化设计、云端弹性算力、自动化布局布线及后端验证、标准化数据格式或数据访问接口等。同时这些关键特性也是开源EDA软件栈适应未来DSA快速发展的重要基础。 接下来，我们将分析EDA 2.0时代应具备的特征及其目的，以及为了适应未来DSA的快速发展，我们需要什么样的开源EDA软件栈。

## EDA发展新时代：EDA 2.0时代

随着摩尔定律的终结，芯片设计和EDA工具发展进入了新的阶段。在这一阶段，行业必须从单纯追求性能的提升，转变为在功耗和性能之间找到新的平衡点，同时支持快速迭代和验证、不断创新等，以适应快速变化的市场环境和技术要求。为此可以借鉴当今软件开发方法经验，如模块化设计、多层中间表示、智能化开发、开源与共享等。这需要EDA工具向更智能、更开放的方向发展，并与新兴技术深度融合。在此背景下，EDA 2.0时代应具备以下特征：

- 更开放的EDA工具和IP模块：推动开放标准和接口，以增强工具间的互操作性，促进设计流程的灵活性；

- 智能化EDA设计和验证平台：通过引入人工智能技术，提高设计和验证过程的自动化水平，减少人工干预，提高效率；

- 基于云平台的EDA和专业的服务平台：利用云计算的弹性资源，为用户提供更优质的使用模式和专业服务，支持快速设计、制造和部署芯片产品。

通过这些转变，EDA 2.0时代将开启后摩尔时代的新篇章，为芯片设计带来更高的灵活性和创新能力。

## DSA的发展需求与EDA软件栈的关联

随着摩尔定律（Moore’s Law）和登纳德缩放定律（Dennard Scaling）的终结，而算力需求激增，使得DSA成为现代计算架构中应对特定领域算力需求的重要解决方案，如AI、自动驾驶、物联网、高性能计算等。因此未来DSA的发展一定离不开云平台、更开放的IP生态系统，需要建立行业标准、保持创新以及平衡PPA（Power、Performance、Area）等：

- 云平台提供了近乎无限的计算弹性、存储弹性和访问便捷性，有助于满足DSA对算力的需求；

- 更开放的IP生态系统意味着DSA设计人员在设计电路时，可以复用现成的设计组件，而不用每次都从头开始；

- 建立行业标准使得不同厂商的DSA产品能够更好的互操作，有助于形成一个健康的生态系统和提高市场认可度；

- 保持创新是为了适应新的市场需求和技术趋势，保持DSA产品的长期竞争力；

- 低功耗、高性能、面积小是所有芯片设计追求的最高目标，而平衡PPA是为了适应不同的应用场景。

从EDA 2.0应具备的一些特征和DSA的发展需求来看，二者拥有着共同的追求。为了适应未来DSA的快速发展，开源EDA软件栈应具备模块化和可扩展性、统一的工具链、高质量和可靠性、IP支持与协作、支持新兴技术以及兼容性与标准化等特性。这些特性将有助于推动开源EDA工具的普及和应用，提升整个DSA行业的设计效率和创新能力。

## EDA 2.0时代的产物：CIRCT

CIRCT是 EDA 2.0时代的一个重要开源项目，旨在通过模块化的设计方法和先进的编译技术，解决开源 EDA 工具的碎片化现状，并缩短加速器的设计周期。CIRCT 基于现有的 LLVM/MLIR 框架，吸取了当今软件开发方法的优势，如模块化、多层中间表示（IR）、开源共享等。因此，CIRCT 项目的目标是创建一个统一的硬件设计工具框架，使不同的设计工具能够更好地集成和协作。

由于前文已经简要介绍过 CIRCT（详情查看[12. Dataflow 芯片加速 RTL 仿真：CIRCT 项目总览](https://terapines.feishu.cn/wiki/HHnEweUCGiF0vXkt45FcqVL9nPg)），并且后续会有一篇单独的文章对 CIRCT 进行全面的探讨，因此在此不再对其进行详细阐述。

## 总结

结合EDA的发展历程以及EDA 1.x时代的一些开源EDA工具概述，我们可以清楚地看到，当前的开源EDA工具呈现出一种碎片化的状态。这种现象主要源于各个工具仍然背负着历史遗留的包袱，不仅功能相对单一，而且存在开放性不足等问题。而为了解决当今开源EDA工具碎片化现状，以适应未来DSA的快速发展，开源EDA工具需要向更智能、更开放的方向发展，并与新兴技术深度融合，以应对瞬息万变的市场需求。在此背景下，CIRCT项目的出现正是为了解决EDA工具碎片化问题。通过引入统一的中间表示和模块化设计，使得不同EDA工具的功能之间能够更好地互操作，从而提升整个设计流程的效率。基于其模块化和灵活性，CIRCT 有望满足 DSA 的快速发展需求，为未来的硬件设计提供强有力的支持。

参考资料：

- [ABC](https://people.eecs.berkeley.edu/~alanmi/abc/)

- [Domain-specific architectures and the future of compute](https://www.mckinsey.com/industries/industrials-and-electronics/our-insights/domain-specific-architectures-and-the-future-of-compute)

- [Google XLS](https://google.github.io/xls/)

- [OpenROAD](https://openroad.readthedocs.io/en/latest/)

- [OSS CAD Suite](https://www.yosyshq.com/tabby-cad-datasheet)

- [Verilator](https://www.veripool.org/verilator/)

- [YosysHQ](https://yosyshq.net/yosys/)

- [芯华章EDA 2.0白皮书](https://www.eet-china.com/mp/a56170.html)
