1. 课程导入与性能优化全景

当版图规模从几十万晶体管增长到数亿甚至数十亿晶体管时,Calibre 物理验证的运行时间往往从几分钟膨胀到几十小时,内存占用从几 GB 攀升到数百 GB。很多工程师第一次遇到“DRC 跑了 18 小时还没结束”时,第一反应是加机器、加内存,但真正的问题常常不在硬件,而在于验证任务本身的组织方式、规则文件的写法、层次化结构的利用程度,以及运行参数的配置策略。本课程要解决的,正是这类“规模上去之后,验证跑不动、跑不准、跑不快”的工程问题。

一、大规模版图验证的核心挑战

Calibre 的物理验证主要包括 DRC(设计规则检查)、LVS(版图与原理图一致性检查)、ERC(电气规则检查)、天线检查、填充(Fill)与密度检查等。它们共同的特点是:输入数据量巨大、规则数量庞大、几何运算密集、结果需要与版图坐标精确对应。规模上去之后,挑战集中体现在四个方面。

第一是数据规模。一个先进工艺的全芯片版图,GDS/OASIS 文件可达几十 GB 到上百 GB,展开成 Calibre 内部数据库后,多边形数量可达 1010 量级。第二是规则复杂度。先进节点的 DRC 规则文件动辄上万条规则,包含大量条件判断、层次派生层、密度窗口和多重曝光相关检查。第三是计算密集度。DRC 本质上是基于扫描线或层次化几何引擎的布尔运算与距离检查,属于典型的计算与内存双重密集任务。第四是迭代频次。在芯片签核阶段,版图每天可能修改多次,验证需要反复运行,单次运行时间直接决定项目节奏。

二、性能瓶颈的分类

把“跑得慢”笼统归因于机器不够,是优化中最常见的误区。更有效的做法是把瓶颈拆成可定位、可度量的类别。从工程实践看,Calibre 验证的性能瓶颈通常落在以下五类:

  • CPU 计算瓶颈:几何运算、规则匹配、LVS 提取与比对消耗大量 CPU 周期,表现为多核利用率高但总时间仍长。
  • 内存瓶颈:层次化数据库、展开的派生层、比对中间结果占用大量内存,表现为换页(swap)频繁、进程被 OOM 终止。
  • I/O 瓶颈:读取 GDS/OASIS、写结果数据库、读写临时文件,表现为磁盘吞吐打满、CPU 等待 I/O。
  • 规则与算法瓶颈:规则写法导致不必要的全芯片展开、重复计算、无法利用层次结构,表现为“规则一改,时间翻倍”。
  • 调度与并行瓶颈:任务划分不合理、并行度不足或过度并行导致资源争抢,表现为加核不加速甚至变慢。
判断瓶颈类别的第一步不是改配置,而是先看 Calibre 运行日志中的阶段耗时、峰值内存和 CPU 利用率。没有度量就没有优化。

三、优化目标与度量口径

性能优化不是“越快越好”这么简单,它需要在时间、内存、精度和可维护性之间取得平衡。本课程采用的优化目标可以归纳为三条:缩短墙钟时间(wall-clock time)、控制峰值内存、保持结果与基准一致。其中第三条是底线——任何优化都不能改变验证结论,否则优化没有意义。

度量口径必须统一,否则不同人说的“快了”不是一回事。建议固定记录以下指标:

指标含义典型观察位置
墙钟时间从启动到结束的真实耗时运行脚本计时 / 日志首尾时间戳
CPU 时间各阶段累计 CPU 消耗Calibre 日志阶段统计
峰值内存进程最大 RSS日志内存报告 / 系统监控
并行效率加速比 / 核数不同核数下的墙钟时间对比
结果一致性与基准结果差异条数结果数据库比对

例如,某次 DRC 优化前墙钟时间为 6 小时、峰值内存 180 GB、使用 16 核;优化后为 2.5 小时、峰值内存 120 GB、使用 32 核。此时并行效率约为 (6/2.5)/2 ≈ 1.2,说明加速并非单纯来自加核,规则与层次化优化也贡献了显著收益。这类对比才是可复现、可讨论的优化证据。

四、课程路线图

本课程共 30 章,整体按“认知—定位—优化—验证—固化”的逻辑推进。前几章建立性能模型与度量方法,帮助读者学会看日志、找瓶颈;中间章节分别针对 DRC、LVS、层次化处理、规则文件写法、运行参数、并行与分布式调度、内存管理、I/O 与数据格式等方向展开具体优化手段;后续章节覆盖典型排障场景、优化前后对比方法、回归验证与结果一致性检查,最后落到可复用的优化清单与工程规范。

需要强调的是,本课程不会给出“万能参数”。Calibre 的优化高度依赖具体工艺、版图结构、规则文件和硬件环境。因此每一类优化都会说明适用条件、预期收益和风险,读者应结合自身项目做小范围验证后再推广。

Calibre 大规模版图验证性能优化全景 输入对象 GDS / OASIS 版图 DRC / LVS 规则文件 性能瓶颈分类 CPU 计算 内存占用 I/O 吞吐 规则算法 并行调度 度量口径 墙钟时间 / CPU 时间 峰值内存 / 并行效率 优化手段(按瓶颈对应) 规则文件优化 层次化派生层 减少全芯片展开 运行参数调优 并行核数 / 分块 内存与缓存策略 层次化处理 单元复用与继承 避免重复计算 I/O 与数据格式 OASIS 替代 GDS 临时文件与磁盘 分布式调度 任务切分 资源分配 验证与一致性检查 优化前后结果数据库比对 差异条数 / 差异类型 / 坐标定位 确认结论不变后方可推广 固化与工程规范 优化清单 / 参数模板 / 检查表 纳入回归流程与版本管理 形成可复用的项目基线 优化闭环:度量 → 定位瓶颈 → 选择手段 → 验证一致性 → 固化规范