超越RTL的系统设计:ESL设计的新范式与CIRCT的桥梁作用
在数字芯片设计领域,我们越来越靠近一个范式转移的临界点。随着摩尔定律的放缓,以及领域专用架构(DSA)的兴起,传统的寄存器传输级(RTL)设计方法已经无法满足现代复杂系统对设计效率、正确性和性能探索的需求。电子系统级(ESL)设计方法学应运而生,它承诺在更高的抽象层次上进行设计。而像 CIRCT 这样的开源编译器基础设施,正在成为连接 ESL 与成熟 EDA 工具链的关键桥梁,催生一种全新的、更强大的设计模式。
1. 重新认识ESL——不仅仅是C/C++模型
很多人将ESL简单地等同于用 C/C++ 写一个系统模型。这虽然没错,但远非全貌。ESL 是一个完整的方法学体系,其核心思想是 “在正确的抽象层次上,做正确的事”。
1.1 ESL的核心内涵
抽象层次更高
ESL工作在算法和系统行为层面,远离具体的时序、时钟和硬件结构。设计者关注的是功能和架构,而不是线、寄存器和状态机。
关键支柱
虚拟原型 一个可执行的、时序近似或功能准确的软件模型。它允许在芯片制造前数年就开始软件开发、系统验证和性能分析;
高层次综合 这是ESL落地的关键技术。HLS 自动将用 C/C++/SystemC 描述的高级行为,转换为 RTL 代码(如 Verilog/VHDL),极大地提升了设计效率;
事务级建模 在 TLM 中,通信(如总线传输)被建模为“事务”(例如,read(addr, data)
),而不是具体的信号翻转。这极大地提升了仿真速度,便于进行架构探索;
1.2 ESL的优势与挑战
优势
早期验证与软件开发 实现硬件未定,软件先行;
更广阔的架构探索空间 可以快速评估不同算法、数据流和微架构对性能、功耗的影响;
更高的设计生产力 HLS 将设计师从繁琐的 RTL 编码中解放出来,专注于优化算法和架构;
更好的可移植性和重用性 算法模型与目标工艺库无关,更容易在不同代工厂和工艺节点间迁移;
挑战
“抽象鸿沟” 如何确保 ESL 模型与最终实现的 RTL 在功能和性能上完全一致;
与现有流程的集成 如何将 ESL 工具无缝地接入以 RTL 为中心的传统 EDA 流程(如逻辑综合、形式验证、时序分析);
工具链的成熟度与碎片化 商业 ESL 工具昂贵且可能存在互操作性问题;
2. CIRCT——编译器技术注入EDA的“心脏起搏器”
要解决上述挑战,我们需要一个更强健、更通用的中间层。这就是 CIRCT 项目的用武之地。
2.1 CIRCT是什么
CIRCT(Circuit IR Compilers and Tools)是一个基于 MLIR(多级中间表示)的开源项目,旨在将现代编译器技术应用于电路设计领域。可以把 CIRCT 理解为 “硬件设计的 LLVM”。
它的核心是一个分层的、可互操作的中间表示集合。不同的设计描述(如 SystemVerilog、FIRRTL、C/C++ via HLS)都可以被“降低”到这些IR中,进行优化和转换,最终生成优化的 RTL 或网表。
2.2 CIRCT带来的革命性变化
统一的中间表示
CIRCT 提供了如 HWDialect
、CombDialect
、FIRRTLDialect
等,作为各种前端和后端工具的共同语言。这打破了传统 EDA 工具之间“点对点”集成导致的混乱。
可组合的、可重用的优化通道
基于编译器的架构,使得每个优化(如死代码消除、循环展开、常量传播)都成为一个独立的、可组合的“Pass”。设计者可以像搭积木一样构建自己的优化流程。
真正的多级降低
从高级行为描述到门级网表,不是一个“大爆炸”式的转换,而是一个通过多级IR逐步降低的过程。每一步都可以进行验证和优化,极大地增强了流程的可控性和可调试性。
3. ESL + CIRCT + 传统EDA——新一代设计模式
现在,让我们将这三大要素组合起来,描绘一个理想化的未来设计流程。
新模式的核心思想:将 CIRCT 作为 ESL 与下游 EDA 工具之间的“编译器中间层”和“协调器”。
流程详解:
ESL入口
设计师使用 C/C++/SystemC/Python(如 Calyx, PyRTL)等在 ESL 层次进行设计和架构探索。
此时,设计是纯粹的行为或事务级模型。
CIRCT前端与 lowering
前端 相应的编译器前端(例如,一个基于 MLIR 的 HLS 工具)将 C/C++ 代码解析并生成 CIRCT 中的高级 IR(可能是一个自定义的
ESLDialect
)。lowering 与优化
在 CIRCT 框架内,设计从高级IR逐步降低。例如,从行为描述降低到包含显式状态机和数据通路的
HWDialect
表示。在此过程中,可以应用大量编译器优化:循环流水线、数组分区、内存接口推断等。这些优化是通用的、可重用的,而不是某个 HLS 工具私有的。
生成高质量的RTL
CIRCT 的后端将优化后的
HWDialect
IR 转换为高质量的、可综合的 System Verilog 代码。由于 CIRCT 的 IR 设计非常贴近硬件,生成的 RTL 通常比传统 HLS 工具更简洁、更可预测、更易于下游工具处理。
与传统EDA工具无缝集成
生成的SystemVerilog代码被送入传统的EDA流程 逻辑综合(Design Compiler)、布局布线(Innovus, ICC2)、时序验证(PrimeTime)等。
关键优势 由于 CIRCT 生成的 RTL 是标准的、高质量的,传统 EDA 工具可以更好地理解和优化它,减少了“黑盒”问题。
反馈循环 来自布局布线后的时序和功耗信息,可以反标回 CIRCT 框架。设计师可以在 ESL 层次,利用这些物理信息来指导HLS的约束和优化策略,形成一个闭环。例如,如果某条路径时序违例,可以在 CIRCT 的 lowering 过程中对该部分插入更多流水线级数。
验证的一致性
CIRCT 框架可以支持共同编译。同一个 ESL 模型既可以编译成软件可执行文件用于快速验证,又可以降低为 RTL。
形式验证工具可以利用 CIRCT 的 IR,在中间表示层面进行等价性检查,确保 lowering 过程中的每一步转换都是正确的。
4. 深入思考与展望
这种新模式不仅仅是工具的简单叠加,它代表着设计哲学的转变:
从“工具流”到“编译器流水线”
我们将硬件设计流程视为一个可编程的编译器流水线,CIRCT 是这个流水线的核心引擎。
开放与协作
CIRCT 作为开源项目,打破了商业工具的壁垒,催生更丰富的工具生态和创新。
领域专用设计的催化剂
对于AI加速器、网络处理器等 DSA,设计师可以快速创建自己的 DSL(领域专用语言),并利用CIRCT的基础设施轻松地将其 lowering 到 RTL,极大地降低了定制芯片的门槛。
挑战依然存在
CIRCT 项目本身还在快速发展中,生产就绪度有待提高;需要培养既懂硬件设计又懂编译器技术的复合型人才;传统设计团队需要改变工作习惯。
然而,趋势是清晰的。未来,成功的设计团队将是那些能够熟练运用 ESL 进行架构创新,并善于利用像 CIRCT 这样的现代化基础设施,将创意高效、正确地传递到硅片上的团队。
ESL 定义了“我们要做什么”,CIRCT 解决了“我们如何高效、正确地转换”,而传统 EDA 工具则负责“我们如何最终实现它”。 这三者的紧密结合,正是通往下一代芯片设计的康庄大道。