本文深入解析Calibre LVS中三种Box流程的底层机制、SVRF配置方法和工程实践建议,帮助IC验证工程师和CAD管理员根据实际需求选择最优的验证策略。

LVS Box流程:为什么需要分层验证?

在大规模SoC设计中,完整的版图对版图(Layout vs Schematic, LVS)验证可能需要数小时甚至数天。为了提升效率,Calibre提供了”Box”机制,允许工程师对已验证的模块进行简化处理。

然而,并非所有Box都是平等的。根据验证需求的不同,Calibre提供了三种Box流程:

  1. Black Box(黑盒) - 极致性能优化
  2. Regular LVS Box(常规LVS盒) - 稳健的连接性检查
  3. Gray Box(灰盒) - 寄生参数提取专用

选择错误的Box流程可能导致验证失败、性能浪费,甚至漏掉关键的连接性错误。本文将从SRE/CAD管理员视角深入解析这三种流程的底层实现机制。

1. Black Box(黑盒流程)- 极致性能优化

SVRF关键命令

1
2
LVS BOX "cell_name"
LVS BLACK BOX PORT "port_layer_name" TEXT

底层工作机制

Black Box是一个“阻断式”操作:

  • 完全切断Box区域内的所有互连层运算
  • Calibre不读取单元内部的任何多边形(Polygon)数据
  • 仅寻找在LVS BLACK BOX PORT中定义的层上的文本标签(Label)作为端口
  • 将Box视为一个”不透明体”,只关心外部连接

性能优势

这种方式带来了显著的性能提升:

  • 🚀 内存占用减少:不加载内部几何数据
  • 🚀 运行时间缩短:跳过所有内部处理
  • 🚀 适合大规模并行:顶层验证时可大幅减少计算量

关键风险:Feed-through问题

高风险场景:如果模块被用作”穿线通道”(Feed-through),例如:

1
Input Port → Metal3 → Output Port

如果在进出点没有打上Label,Black Box会认为这是断路(Open)

// 问题场景
LVS BOX "analog_macro"
LVS BLACK BOX PORT "METAL3" TEXT

// 如果METAL3上的穿线没有配对的输入/输出Label
// LVS会报告:Net "signal_xyz" is OPEN

适用场景

推荐使用

  • 数字后端(Digital P&R)的Hard Macro
  • 超大规模SoC的顶层组装检查(Assembly Check)
  • 确信LEF/DEF导出的端口信息完美无误

避免使用

  • 模拟IP模块(经常有隐式穿线)
  • 自定义布局,端口命名不规范
  • 需要验证内部连接的场景

配置示例

// lvsbox.svrf - Black Box配置
LVS BOX "CPU_CORE"
LVS BOX "GPU_MACRO"
LVS BLACK BOX PORT "METAL5" TEXT
LVS BLACK BOX PORT "METAL6" TEXT

// 匹配规则:仅检查端口连接
LVS FILTER "CPU_CORE" OPEN SOURCE LAYOUT
LVS FILTER "GPU_MACRO" OPEN SOURCE LAYOUT

2. Regular LVS Box(常规LVS盒)- 稳健的连接性检查

SVRF关键命令

LVS BOX "cell_name"
// 注意:不使用 LVS BLACK BOX PORT

底层工作机制

Regular LVS Box是一个“过滤式”操作:

  • 仍然提取Box内部的所有金属连线和通孔
  • Calibre知道所有几何连接关系
  • 唯一屏蔽的是:器件识别(Device Recognition)
  • 不会尝试匹配MOS管、电阻、电容等器件

关键优势:支持Feed-through

这是与Black Box的最大区别:

// Regular Box场景
LVS BOX "analog_macro"

// 即使METAL3上的穿线没有Label
// 只要金属线在物理上是连通的
// Regular Box就能识别这是一条完整的Net

工程价值

  • 隐式穿线支持:模拟布局中的隐式走线仍能被正确识别
  • 电源网格验证:验证VDD/VSS树的连通性,而不关心下方逻辑
  • 容错性强:适合端口命名不规范的遗留设计(Legacy Design)

性能特征

1
2
3
内存占用:中等(需处理金属层数据)
运行时间:🐢 较Black Box慢(需提取金属连接)
准确性:高(完整的连接性分析)

适用场景

推荐使用

  • 模拟/混合信号模块的顶层验证
  • 电源网格(Power Grid)连通性检查
  • 尚未完成的IP,内部器件未最终定型
  • 需要验证Feed-through路径的场景

配置示例

// lvsbox.svrf - Regular Box配置
LVS BOX "ANALOG_IP"
LVS BOX "PLL_MODULE"

// 仍然检查连接性,但不匹配器件
LVS FILTER "ANALOG_IP" D MISMATCH
LVS FILTER "PLL_MODULE" D MISMATCH

// 对比:允许器件不匹配,但连接必须正确
LVS ABORT ON SUPPLY ERROR
LVS ABORT ON SOFTCHK

Regular Box vs Black Box对比实验

// 场景:SRAM宏单元有一条METAL4穿线

// === Black Box配置 ===
LVS BOX "SRAM_256K"
LVS BLACK BOX PORT "METAL4" TEXT
// 结果:如果穿线未标记 → OPEN ERROR ❌

// === Regular Box配置 ===
LVS BOX "SRAM_256K"
// 结果:即使未标记 → PASS ✅(物理连通)

3. Gray Box(灰盒流程)- 寄生参数提取专用

核心概念

Gray Box不是LVS概念,而是PEX(Parasitic Extraction)概念。

SVRF/PEX关键命令

// Calibre xRC命令
PEX XCELL "standard_cell_name"
PEX IGNORE CAPACITANCE "digital_macro"

底层工作机制

Gray Box采用“Phantom”模式

  • 内部:不提取内部的R(电阻)和C(电容)
  • 假设:该单元已有.lib或.spi模型描述内部寄生
  • 外部接口:重点计算外部走线单元边界之间的耦合电容(Coupling Cap)

为什么需要Gray Box?

问题场景:双重计算(Double Counting)

1
2
3
4
5
# 错误流程
1. Standard Cell自带.lib模型(已包含内部RC)
2. xRC再次提取Standard Cell内部RC
3. 仿真器加载:外部RC + 内部RC(重复!)
→ 结果:时序过度悲观,仿真速度慢

Gray Box解决方案

// xrc_rules.svrf
PEX XCELL "INV*"    // 所有反相器
PEX XCELL "NAND*"   // 所有NAND门
PEX XCELL "FF*"     // 所有触发器

// 效果:
// - 内部RC:使用.lib模型 ✅
// - 边界耦合:xRC计算 ✅
// - 避免双重计算 ✅

适用场景

必须使用

  • 数字后端的后仿真(Post-Sim)
  • 已有精确SPICE模型的Standard Cell
  • 层次化寄生提取(Hierarchical PEX)

不应使用

  • 纯LVS验证(Gray Box是PEX功能)
  • 定制模拟电路(需要完整内部寄生)

PEX Gray Box配置示例

// xrc_tech.svrf
PEX NETLIST HSPICE
PEX REDUCE COUPLING 0.05

// 定义Gray Box单元
PEX XCELL "stdcell_lib/*"

// 仅提取耦合电容
PEX COUPLING CAPACITANCE YES
PEX GROUND CAPACITANCE NO  // 内部已在.lib中

// 输出
PEX NETLIST FILE "design.pex.sp" HSPICE

完整对照表 - Quick Reference

特性 Black Box Regular LVS Box Gray Box
SVRF命令 LVS BOX + LVS BLACK BOX PORT LVS BOX PEX XCELL
内部几何 完全忽略(不读取数据) 读取并处理(提取连接性) 忽略内部提取(计算边界耦合)
Feed-through ❌ 不支持(除非有配对Port) ✅ 支持(物理连通即可) N/A(关注寄生)
器件识别 跳过 跳过 N/A
主要用途 数字Top Level快速连接检查 模拟/混合信号电源通路检查 后仿层次化提取
速度 🚀 最快 🐢 较慢(需处理金属层) ⚡ 快(跳过内部RC)
内存占用 最小 中等
风险 高(易漏检穿线) 低(但需正确.lib)

工程实践建议

决策流程图

1
2
3
4
5
6
7
8
9
10
11
12
开始验证
  ↓
是否为LVS?
  ├─ 是 → 是否为数字宏且端口完整?
  │        ├─ 是 → 使用 Black Box ✅
  │        └─ 否 → 是否需要验证穿线?
  │                 ├─ 是 → 使用 Regular Box ✅
  │                 └─ 否 → 使用 Black Box ⚠️
  │
  └─ 否(PEX) → 是否有.lib模型?
                  ├─ 是 → 使用 Gray Box (PEX XCELL) ✅
                  └─ 否 → 完整提取 ❌

CAD团队实践经验

基于多年SoC Tape-out经验的建议:

1. 模拟Top-level验证策略

// 推荐:Regular Box
// 原因:模拟工程师经常忘记在穿线打Label

LVS BOX "ADC_12BIT"
LVS BOX "PLL_2GHZ"
LVS BOX "BANDGAP_REF"

// 不使用 LVS BLACK BOX PORT
// 让Calibre自动识别金属连通性

2. 数字Top-level验证策略

// 推荐:Black Box
// 原因:LEF/DEF导出的端口信息准确

LVS BOX "CPU_CORE"
LVS BOX "GPU_ENGINE"
LVS BLACK BOX PORT "METAL5" TEXT
LVS BLACK BOX PORT "METAL6" TEXT

// 验证:运行前检查所有端口Label

3. PEX层次化提取策略

// 推荐:Gray Box
// 原因:避免双重计算,加速仿真

PEX XCELL "stdcell/*"
PEX XCELL "IO_PAD/*"

// 确保.lib库已包含内部RC

常见错误和排查

错误1:Black Box报告大量OPEN

症状

1
2
ERROR: Net 'clk_buf' is OPEN in layout
ERROR: Net 'data_bus[7]' is OPEN in layout

原因:穿线未标记Label

解决方案

// 方案A:切换到Regular Box
LVS BOX "problematic_cell"
// 删除:LVS BLACK BOX PORT

// 方案B:补充Label(推荐)
// 在Layout中为所有穿线添加TEXT标签

错误2:Regular Box运行缓慢

症状:LVS运行时间过长

优化方案

// 混合使用:大部分用Black Box,关键部分用Regular
LVS BOX "digital_macro_*"       // 数字用Black Box
LVS BLACK BOX PORT "METAL5" TEXT

LVS BOX "analog_sensitive"      // 模拟用Regular Box
// 不加 BLACK BOX PORT

错误3:PEX结果不准确

症状:仿真时序与实际不符

排查

1
2
3
4
5
6
# 检查是否双重计算
grep "XCELL" xrc_rules.svrf
grep "subckt" design.pex.sp | grep "stdcell"

# 如果Standard Cell内部有详细RC网络
# 说明XCELL未生效 → 双重计算

高级技巧:混合Box流程

在复杂SoC中,可以混合使用不同Box流程:

// Top-level混合策略
// 数字区域:Black Box
LVS BOX "ARM_CORE"
LVS BOX "DDR_CTRL"
LVS BLACK BOX PORT "METAL5" TEXT

// 模拟区域:Regular Box
LVS BOX "ANALOG_FRONTEND"
LVS BOX "PLL_COMPLEX"
// 不加 BLACK BOX PORT → 支持穿线

// PEX阶段:Gray Box
PEX XCELL "ARM_CORE"
PEX XCELL "DDR_CTRL"
// 模拟前端需要完整提取 → 不加XCELL

总结

选择正确的LVS Box流程需要权衡:

  • Black Box:极致性能,但要求严格的端口规范
  • Regular Box:稳健可靠,支持复杂连接,但运行较慢
  • Gray Box:PEX专用,避免双重计算

工程建议

  1. 数字设计:优先使用Black Box,确保端口完整性
  2. 模拟设计:优先使用Regular Box,容忍端口不规范
  3. 混合信号:分区使用,数字用Black Box,模拟用Regular Box
  4. PEX:Standard Cell必须使用Gray Box (XCELL)

在您的设计流程中,建议:

“如果Layout工程师忘记在IP输入输出打Label,Black Box会报Open(断路),而Regular Box能通过。这就是为什么我们在Analog Top Level经常被迫退回到Regular Box的原因。”

掌握这三种流程的本质区别,将使您的验证工作更加高效和可靠。


参考资源

参考视频