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