物理设计

**物理设计**（）在集成电路设计中是完成功能设计之后的一个流程。在这一步，经过布图规划、放置、布线等具体过程后，以硬件描述语言等抽象形式表达的电路网表会被转换成代表电路的几何图形，这个几何图形被称为集成电路版图。半导体工厂根据版图文件就可以制造出实际的硬件电路。除了前面提到的具体过程，物理设计还包括一系列对于版图的设计和验证。

现代集成电路（IC）设计分为“使用HDL的前端设计”和“后端设计”或“物理设计”。物理设计的输入包括： (i) 网表， (ii) 设计中基本器件的库信息， (iii) 包含制造约束的工艺文件。物理设计通常以版图后处理结束，在此对芯片版图进行修改和补充。随后是将设计转移到硅片并封装成集成电路的制造（工艺）阶段。上述每一阶段都有相应的设计流程。设计流程规定该阶段的步骤与指导框架。物理设计流程使用由代工厂提供的工艺库。工艺文件提供关于所用硅片类型、所用标准单元、版图规则（如VLSI中的DRC）等信息。物理设计工程师（有时称为物理工程师或物理设计师）负责设计与版图（包括布线），特别是在ASIC/FPGA设计中。
## 划分
通常，IC物理设计分为全定制与半定制两类。

* 全定制：设计者在版图设计上有完全自由，不使用预定义单元。
* 半定制：使用预先设计的库单元（最好经过DFM测试），设计者在单元放置和布线方面有灵活性。

可以使用ASIC流程实现全定制设计，使用FPGA流程实现半定制设计。原因在于ASIC允许对代工或供应商提供库中的模块进行设计或修改的灵活性。使用FPGA的半定制流程（例如Altera）通常缺乏此类灵活性。

## ASIC 物理设计流程

ASIC 物理设计流程的主要步骤为：

* 设计网表（综合后）
* 布图规划
* 分区
* 单元放置
* 时钟树综合
* 布线
* 物理验证
* 带掩膜数据生成的版图后处理

以上仅为基本步骤。根据所用工具、方法学与工艺，存在更为详尽的物理设计流程。后端设计中常用的一些工具/软件包括：

* Cadence（如 Cadence Encounter RTL Compiler、Encounter Digital Implementation、Cadence Voltus IC Power Integrity Solution、Cadence Tempus Timing Signoff Solution）
* Synopsys（如 Design Compiler、IC Compiler II、IC Validator、PrimeTime、PrimePower、PrimeRail）
* Magma（如 BlastFusion 等）
* Mentor Graphics（如 Olympus SoC、IC-Station、Calibre）

ASIC物理设计流程使用代工厂提供的工艺库。工艺通常按最小特征尺寸分类。典型尺寸按微缩顺序为：2μm、1μm、0.5μm、0.35μm、0.25μm、180nm、130nm、90nm、65nm、45nm、28nm、22nm、18nm、14nm等。它们也可按主要制造工艺分类：n-肼工艺、双肼（twin-well）工艺、SOI工艺等。

## 设计网表
物理设计基于网表。网表是综合过程的最终产物。综合通常把以VHDL或Verilog HDL编写的RTL设计，转换为后续工具可读的门级描述。该网表包含所用单元、互连、占用面积及其他细节信息。典型的综合工具有：

* Cadence RTL Compiler / Build Gates / Physically Knowledgeable Synthesis (PKS)
* Synopsys Design Compiler

在综合过程中会施加约束以保证设计满足功能和速度（规格）。只有在网表通过功能和时序验证后，才送入物理设计流程。
## 步骤
### 分区
分区是将芯片划分为小块的过程。主要目的是分离不同功能块并简化放置与布线。分区可在RTL设计阶段由设计工程师把整个设计划分为子模块，然后分别设计这些模块。各模块在顶层模块（TOP LEVEL）中连接。此类分区通常称为逻辑分区。分区目标是尽量减少分区之间的连接数。
### 布图规划
物理设计流程的第二步是芯片布图规划。布图规划识别应相互靠近放置的结构，并为其分配空间，以在可用面积（芯片成本）、所需性能和局部汇聚性的冲突目标间取得平衡。

根据设计面积与层次结构确定合适的布图规划。平面规划考虑设计中使用的宏单元、存储器、其他IP核及其放置需求、布线可能性以及整个设计的面积。布图规划还确定IO结构和长宽比。糟糕的布图规划会导致晶片面积浪费和布线拥塞。

在许多方法学中，面积和速度是需要权衡的目标。路由资源有限，使用更多资源通常会降低运行速度。优化最小面积可减少资源使用并提高模块间邻近性，从而缩短互连距离、减少布线资源使用、加快信号端到端延迟，并提高放置与布线的速度和稳定性。正确实施的布图规划没有负面影响。

一般规则是，数据通路模块最受益于布图规划，而随机逻辑、状态机及其他非结构化逻辑可交由布局工具的放置阶段处理。

数据通路通常是并行处理多位且每位以相同方式被修改的设计区域，可能受相邻位影响。数据通路示例包括加法器、减法器、计数器、寄存器和多路复用器。

### 放置

在开始放置优化前，会移除所有线负载模型（Wire Load Models，WLM）。放置使用来自虚拟路径（Virtual Route，VR）的RC值来计算时序。VR是两引脚间的最短曼哈顿距离。VR的RC比WLM的RC更精确。

放置分四个优化阶段进行：

# 放置前优化（Pre-placement optimization）
# 放置中优化（In-placement optimization）
# 时钟树综合（CTS）前的放置后优化（Post Placement Optimization，PPO）
# 时钟树综合后的放置后优化

* 放置前优化对网表进行预优化。高扇出网（HFN）将被折叠。也可对单元进行降级尺寸处理。
* 放置中优化基于VR重新优化逻辑。可执行单元尺寸调整、单元移动、单元旁路、网拆分、门复制、缓冲插入、面积回收。优化以修复建立时间为迭代目标，并结合增量时序与拥塞驱动放置。
* CTS前的放置后优化在理想时钟下进行网表优化。可修复建立/保持问题及最大电容/电阻违规。可基于全局布线做放置优化，并重新进行高扇出网综合。
* CTS后的放置后优化在传播时钟下优化时序，尽量保持时钟偏斜。

### 时钟树综合

时钟树综合（Clock Tree Synthesis, CTS）的目标是最小化时钟偏斜和插入延迟。时钟在CTS前并不传播。CTS后应改善保持裕量（hold slack）。时钟树起始于.sdc中定义的时钟源，终止于触发器的停止引脚（stop pins）。停止引脚分为ignore引脚和sync引脚两类。前端（逻辑综合）中标记为“不可触碰”的电路和引脚，在后端（物理综合）一般视为“忽略”电路或引脚。被标为ignore的引脚在时序分析中被忽略。如果时钟被分割，需进行单独的偏斜分析。

* 全局偏斜（global skew）在不考虑逻辑关系时，力求两个同步引脚间零偏斜。
* 局部偏斜（local skew）在考虑逻辑关系时，力求两个同步引脚间零偏斜。
* 有用偏斜（useful skew）指故意施加时钟偏斜以改善建立裕量的情形。

在Astro中使用术语 rigidity 来表示约束的松弛程度。刚性越高表示约束越紧。
在时钟树优化（CTO）中，可对时钟线进行屏蔽以避免噪声耦合。但屏蔽会使面积增加约12-15%。由于时钟信号的全局性，通常使用与电源布线相同的金属层来布时钟。CTO通过缓冲器尺寸调整、门尺寸调整、缓冲器重定位、层级调整和高扇出网合成来实现。我们在放置前、放置中及CTS前的放置后优化阶段努力改善建立裕量，同时暂时忽略保持裕量。CTS后的放置后优化会改善保持裕量。CTS通常会添加大量缓冲器。大约每100k门级设计会增加约650个缓冲器。

### 布线

物理设计流程中有两类布线：全局布线和详细布线。全局布线分配用于连接的布线资源，且为具体网进行轨道分配。详细布线执行实际连线。布线过程中需处理的约束包括 DRC、线长、时序等。

### 物理验证

物理验证检查生成的版图设计是否正确。包括验证版图是否：

* 符合所有工艺要求——设计规则检查（Design Rule Checking, DRC）
* 与原始网表一致——版图与原理图比对（Layout vs. Schematic, LVS）
* 无天线效应——天线规则检查（Antenna Rule Checking）
* 在全芯片级别进行密度验证。对较小工艺节点，清洁密度验证非常关键。
* 符合所有电气要求——电气规则检查（Electrical Rule Checking, ERC）。

### 版图后处理

版图后处理，也称为掩模数据准备，通常结束物理设计与验证。它将物理版图（多边形）转换为掩模数据（用于掩膜写入器的指令）。该步骤包括：

* 芯片收尾，例如插入公司/芯片标识和最终结构（如封闭环、填充结构），
* 生成带测试图案和对准标记的母版（reticle）布局，
* 版图到掩模的准备，通过图形操作扩展版图数据（例如，RET）并调整数据以适应掩模生产设备（掩模写入器）。

## 相关

* 前道工序
* 后道工序
* 集成电路设计
* 布图规划、放置 (集成电路)、布线 (集成电路)

## 参考