4. ECO时序修复的物理与逻辑边界
在后期时序修复中,逻辑上“能修”和物理上“能落”是两件事。ECO 工程师最常遇到的困境是:时序报告显示某条路径需要插入两级缓冲,逻辑上完全可行,但打开物理数据库后发现目标区域没有可用的 spare cell,或者绕线通道已被占用,最终只能退而求其次选择更弱的修复方案,甚至放弃修复。理解 ECO 的物理与逻辑边界,本质上是在回答一个问题:在已有的物理版图上,我还有多少可用的修复资源,它们分布在哪里,能支撑多大力度的修复?
一、可用的逻辑资源:spare cell、gate array 与可编程单元
后期 ECO 不能随意新增标准单元,因为新增单元意味着新增版图行、新增电源轨连接,这在已经完成布局布线和签核的数据库里几乎不可接受。因此,业界普遍在布局阶段就预埋“可编程”的逻辑资源,供后期修改使用。
Spare cell(备用单元)是最常见的形式。设计者在布局阶段按一定密度撒入若干标准单元,通常包括反相器、缓冲器、与非门、触发器、多路选择器等基础类型。这些单元的输入被接到固定电平或已知信号,输出悬空或接到不影响功能的负载,因此在功能上“透明”。ECO 时,通过修改金属层和少量通孔,把这些单元重新连接到目标路径上,实现缓冲插入、逻辑重组或路径切换。Spare cell 的关键参数是类型、数量、位置和驱动能力。一个区域内只有弱驱动反相器,就无法承担长线驱动的修复任务;只有触发器而没有组合逻辑,就无法实现组合路径的重新布线。
Gate array(门阵列)则是在芯片上预先铺设规则的门阵列结构,通常由未连接的晶体管阵列组成,后期通过金属层定制实现所需逻辑。它的优势是密度高、可实现复杂逻辑,但需要专门的金属层编程,且时序特性不如标准单元可预测。在先进工艺中,gate array 更多用于结构化 ASIC 或特定可编程区域,在通用 ECO 流程中不如 spare cell 普遍。
可编程单元是更广义的概念,包括可配置的时钟单元、可编程延迟单元、可重构的缓冲链等。例如,某些设计会预埋可旁路或可级联的缓冲器链,ECO 时通过选择抽头点来调整延迟。这类资源的修复粒度更细,但灵活性受限于预定义的连接方式。
二、金属层与布线资源:ECO 的物理通道
Spare cell 只是“逻辑种子”,真正把种子连成功能电路的是金属层。后期 ECO 通常只允许修改部分金属层,常见策略是只改高层金属(如 M4 以上),因为低层金属已被标准单元引脚和局部互连大量占用,改动风险高、DRC 违例多。这意味着 ECO 工程师必须清楚:目标区域的高层金属是否还有可用的水平/垂直轨道,通孔是否还能从器件层连接到目标金属层。
布线资源分为全局路由(global route)和详细路由(detailed route)两个层次。全局路由给出每个 GCell 的通道容量和溢出情况,详细路由则决定具体轨道分配。在后期数据库中,可以通过报告每个区域的剩余轨道数、溢出量、通孔可用性来量化布线资源。一个实用的判断方法是:如果目标区域全局路由溢出为正,说明该区域已经拥塞,新增绕线大概率失败;如果溢出为零但剩余轨道很少,则只能支持短距离、少通孔的连接。
三、阻塞与拥塞:不可忽视的硬边界
阻塞(blockage)是物理数据库中明确禁止布线的区域,包括宏单元(SRAM、IP 核)内部、电源网格(power grid)、时钟树主干、模拟模块隔离区等。这些区域即使有 spare cell,也无法穿越布线。拥塞(congestion)则是软边界:区域没有明确禁布,但布线需求超过供给,导致绕线失败或时序恶化。
在评估修复空间时,需要把阻塞和拥塞叠加到 spare cell 分布图上。一个常见的误区是只看 spare cell 数量,忽略它们是否被阻塞区包围。例如,某区域有 20 个 spare cell,但全部位于 SRAM 宏单元与电源条之间,实际可用的绕线通道只有一两条,修复能力极其有限。
四、在后期物理数据库中评估修复空间
实际工程中,评估修复空间通常按以下顺序展开。首先,从物理数据库中提取所有 spare cell 的实例名、类型、坐标、驱动能力、输入输出连接状态,形成可用资源清单。其次,针对待修复路径的起点和终点,确定其所在的 GCell 和金属层范围,检查该范围内全局路由的溢出情况和详细路由的剩余轨道。然后,叠加阻塞层信息,排除被宏单元、电源网格覆盖的区域。最后,综合判断可用的修复手段:是插入缓冲、调整驱动、还是重新绕线。
以下是一个简化的评估示例,用于说明如何把上述信息组织成可判断的表格。示例数据为合理假设,不代表任何实际设计。
| 评估项 | 目标区域 A | 目标区域 B | 判断 |
|---|---|---|---|
| 可用 spare cell 数量 | 12(INV×8, BUF×4) | 3(INV×3) | A 资源充足,B 偏少 |
| 最大驱动能力 | BUF_X4 | INV_X1 | A 可驱动长线,B 只能局部修复 |
| 全局路由溢出 | 0 | +3 | A 可绕线,B 已拥塞 |
| 剩余轨道(M5) | 6 条 | 1 条 | A 支持多通孔连接,B 仅单线 |
| 阻塞覆盖 | 无 | SRAM 边界覆盖 40% | B 可用通道进一步压缩 |
| 结论 | 可插入 2 级缓冲并绕线 | 仅可插入 1 级弱缓冲,风险高 | 优先在 A 区域修复 |
五、边界意识如何影响修复策略
理解物理与逻辑边界后,修复策略会发生变化。当 spare cell 充足但布线拥塞时,优先选择利用已有连接、减少新增绕线的方案,例如调整已有单元的驱动强度、交换引脚分配,而不是插入新缓冲。当 spare cell 稀少但布线资源充裕时,可以考虑远距离调用 spare cell,通过较长绕线把信号引到资源丰富的区域再引回。当两者都受限时,需要回到逻辑层面,评估是否可以通过路径重组、时钟调整或功能降级来规避物理瓶颈。
最终,ECO 修复不是“有 spare cell 就能修”,而是在逻辑资源、金属层、布线通道、阻塞与拥塞共同构成的可行域内,寻找代价最小、风险可控的修复点。后期物理数据库中的评估工作,就是把这片可行域画出来,让每一次 ECO 决策都有据可依。