硅编译器

硅编译器（silicon compiler）是一种专用的電子設計自動化（EDA）工具。它能自动把高层次的行为描述转换为集成电路（IC）设计。该工具接受规格说明，通常以像C++这样的高级编程语言或专用领域语言（DSL）编写，然后生成一组可用于制造的版图文件（例如GDSII），并可送到半導體製造廠进行加工。

硅编译器的主要目标是提高设计抽象层次，使工程师能把精力放在电路的预期功能上，而不是实现的低层细节。这个过程有时称为“硬件编译”，它显著提高了设计效率，类似于现代软件编译器让程序员不再编写汇编语言。

 历史 
“硅编译器”这一概念首次由David L. Johannsen在1979年于加州理工學院（Caltech）提交的博士论文中正式描述，其导师为卡弗·米德。该工作促成了Silicon Compilers Inc.（SCI）于1981年由Johannsen、Mead与Edmund K. Cheng创立。

该方法的早期重要成功之一是 1982 年设计的以太网数据链路控制器芯片。该项目从规格到流片仅用了五个月，当时大幅缩短了设计周期。Edmund K. Cheng, "The Design of an Ethernet Data Link Controller Chip", 26th IEEE Computer Society International Conference, COMPCON Spring 83, San Francisco, Feb 25-Mar 3, 1983, pp. 157–160.随后在1983-1984年间，SCI团队在七个月内为迪吉多的设计了数据通路芯片。该芯片包含37,000个晶体管，其复杂度通常手工设计需约三年时间。"Silicon compiler lets systems engineers design their own VLSI chips", article by Stephen C. Johnson of Silicon Compilers Inc. in "Electronic Design" magazine, October 4, 1984, pp. 167–181.

 编译过程 
硅编译把高层描述转换为物理版图，经过若干主要阶段。

 高级综合 
过程从硬件的行为描述开始，通常用C、C++或SystemC等语言编写。此阶段称为高级综合（HLS），把高层代码翻译为结构化表示，通常为寄存器传输级（RTL）描述。HLS允许设计者通过修改源代码快速探索不同架构，而不用手工重写RTL。Lahti, Sakari; Sjövall, Panu; Vanne, Jarno; Hämäläinen, Timo D. (May 2019). "Are We There Yet? A Study on the State of High-Level Synthesis". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems. 38 (5): 898–911. Bibcode:2019ITCAD..38..898L. doi:10.1109/TCAD.2018.2834439. ISSN 1937-4151.

 中間語言 
为弥合高级编程语言与低层硬件细节之间的差距，编译器常使用中間語言（IR）。IR 提供标准化格式，便于进行模块化且面向硬件的优化。现代开源项目引入了专用IR以改进编译过程。

 CIRCT（Circuit IR for Compilers and Tools）是基于LLVM的项目，旨在为硬件设计工具创建通用基础设施。它提供一组模块化的IR（称为“方言”），用于表示不同抽象层次的硬件，从而优于传统的、灵活性较差的格式如Verilog。

 Calyx 是一种IR，旨在支持同时需要结构信息和控制流信息的优化。它采用独特的分裂表示法，既有类似硬件的结构语言，也有类似软件的控制语言（含循环与条件），从而实现传统IR难以完成的强大硬件特定优化。

 逻辑综合 
逻辑综合阶段把RTL描述转换为门级网表。该网表是简单逻辑门（如与门、或门、非门）及其互连的详细映射，用以实现RTL指定的功能。

 物理设计 
物理设计是最后阶段，把抽象的门级网表转换为几何版图。该版图指明最终芯片上每个组件和连线的精确位置。此阶段包含若干复杂步骤：

 布图规划（Floorplanning）：规划芯片上主要功能模块的整体布局。该步骤决定芯片的尺寸与形状，对性能与功耗至关重要。优化常使用元启发式算法来探索庞大的设计空间。

 放置（Placement）：将网表中的各逻辑门和标准单元分配到芯片上的具体位置。

 布线（Routing）：创建连接已放置组件的物理连线。这是一项高度复杂的任务，特别是在现代工艺下，需遵守大量复杂的设计规则。

 设计范式与优化 

 智能编译 
早期的硅編譯器演进出更复杂的设计探索能力。“智能编译”概念引入了一种将决策制定与综合过程分离的设计范式。在此模型中，设计者使用“旋钮和度量”的方法。

 度量（Gauges）是由编译器生成的设计质量指标，例如芯片面积、成本和性能。

 旋钮（Knobs）是设计者可以调整的高层参数和约束，例如处理单元数量或流水线（pipelining）级别。

这允许人工设计者或专家系统通过调整旋钮并观察度量的变化来探索权衡，而无需理解综合过程的低级细节。Pangrle, B.M.; Gajski, D.D. (November 1987). "Design Tools for Intelligent Silicon Compilation". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems. 6 (6): 1098–1112. doi:10.1109/TCAD.1987.1270350. ISSN 1937-4151.

 人工智能和机器学习的作用 
现代硅编译器越来越多地集成人工智能（AI）和机器学习（ML）以应对芯片设计的巨大复杂性。这些技术被用于自动化和优化编译过程的各个阶段，尤其是物理设计。例如，深度强化学习（deep reinforcement learning）已被用于解决芯片布图规划与放置问题，其中AI代理通过经验学习以比许多人工专家和传统自动化工具更有效地安排芯片组件。

 与手工RTL设计的比较 
使用硅编译器在设计生产力与最终硬件质量之间存在根本性权衡。

优点：

 增加生产力：主要优点是显著缩短设计时间。一项2018年的调查研究发现，使用高级综合（HLS）将开发时间降至手工RTL设计所需时间的大约三分之一。平均而言，这使得设计者每小时设计产出的性能提高约4.4倍。
 更容易的设计空间探索：由于可以在高抽象层进行更改，工程师可以更快地尝试不同的架构和算法。

缺点：

 结果质量：抽象层次的提高可能有代价。由HLS工具生成的设计通常在性能、芯片面积和功耗上不如人工调优的RTL设计。相同的2018年研究发现，HLS设计在现场可编程逻辑门阵列（FPGA）上平均比手工RTL设计多消耗41%的资源。不过，随着编译器技术的进步，这一差距正在缩小。

 开源运动 
近年来，硅编译领域出现了强烈的开源工具与协作开发趋势，旨在民主化芯片设计并加速创新。

 CIRCT项目：作为LLVM生态系统的一部分发起，CIRCT（Circuit IR for Compilers and Tools）旨在将现代编译器设计原则应用到硬件领域。通过提供共享且模块化的基础设施，CIRCT希望终结EDA工具生态的碎片化，并围绕一套通用且可重用的强大工具建立社区，类似于LLVM在软件开发中的作用。Lattner, Chris; Lenharth, Andrew (November 17, 2021). CIRCT: Lifting hardware development out of the 20th century (PDF). LLVM Developer Meeting.
 SiliconCompiler：SiliconCompiler是一个开源构建系统，自动化完整的硅编译流程，从源代码到GDSII。其目标是通过提供模块化框架和标准化的模式与API来规范化编译过程。这允许不同工具、工艺设计包（PDK）和设计无缝组合，从而简化构建芯片的复杂任务。

 参见 



 高级综合
 電子設計自動化
 硬件描述语言

 参考 

Category:電腦術語
Category:電子設計自動化