在进行大规模或复杂层次结构的集成电路仿真时,设计人员有时会遇到如下警告信息:

WARNING (SPECTRE-294): The number of signals saved (83068) is too high and may slow down the initialization process. Remove the unnecessary signals to speed up the initialization.

这个警告明确指出,所保存的信号数量(本例中为 83,068 个)已超过了仿真器建议的阈值,这不仅会拖慢仿真的初始化阶段,还会对后续的数据存储和波形查看造成严重负担。本文将深入解析该警告的原因并提供具体的优化策略。


1. 为何会出现 SPECTRE-294?

Spectre 仿真器在开始数值计算之前,需要完成一系列初始化工作,包括网表解析、器件参数计算以及信号映射(Signal Mapping)

当用户通过 save 命令或 ADE 界面设置了过于宽泛的保存策略(如 save=allsave=allpub)时,仿真器必须为每一个待保存的节点、电流或参数在内存中创建对应的数据结构。

  • 性能损耗点
    • 初始化延迟:Spectre 需要花费大量 CPU 时间来处理和分配这数万甚至数十万个信号。
    • 内存占用:信号数量越多,仿真进程占用的内存(RAM)就越大。
    • 磁盘 I/O 瓶颈:仿真产生的 PSF/SSD 文件会变得异常巨大(动辄数百 GB),导致波形查看器 (ViVA) 加载缓慢。

通常,该警告的触发阈值在 50,000 到 100,000 个信号之间,这取决于具体的工具版本。


2. 核心解决方法:精简保存列表

A. 从 “Save All” 转向 “Selected” (ADE GUI)

许多工程师习惯将 Outputs -> Save All 中的 save 选项设为 allpub。在大型设计中,这是由于层级过深导致的“信号爆炸”的主要原因。

操作建议

  1. 在 ADE Explorer/Assembler 中,将 save 设置为 selected
  2. 使用 Outputs -> To Be Saved -> Select On Schematic,在电路图中仅点击关键的节点(如 I/O、电源轨、时钟线)。

B. 使用 depth 参数限制保存深度

如果你确实需要保存整个设计的信号,但不希望深入到晶体管内部的寄生节点,可以使用 depth 参数。

语法示例(在 save.scs 文件中):

// 仅保存顶层及向下 3 层的所有电压信号
save * depth=3

C. 过滤寄生网络节点

开启 filter=rc 可以自动过滤掉仅连接到寄生电阻电容的内部节点。这些节点在后仿真(Post-Layout)中数量极其庞大,通常不需要直接查看。


3. 进阶调优:调整工具阈值

如果你确定需要保存这些信号(例如在全芯片 EMIR 分析或大型混合信号仿真中),可以通过以下环境设置来控制 Spectre 的告警行为:

修改环境变量 (spectre.envOpts)

在 Virtuoso CIW.cdsinit 文件中设置以下 SKILL 命令,可以提高警告触发的上限:

; 将阈值提高到 150,000
envSetVal("spectre.envOpts" "totalSignalsToSaveLimit" 'string "150000")

命令行控制

在后端运行时,部分版本的 Spectre 也支持在 options 语句中通过 saveOptions 进行微调(需参考具体版本的 Product Documentation)。


4. 最佳实践 Checklist

为了确保高效仿真,建议在投片前检查以下设置:

  • 检查全局保存级别:优先使用 selected,而非 allpub
  • 手动删除无效 Save 语句:定期清理 save.scs 或模拟设置中遗留的过期信号名。
  • 关注 currents 保存:除非必须查看电流,否则将 currents 设置为 none
  • 利用时间窗口:如果只关心特定时间段的波形,使用 time_window=[t1 t2] 减少瞬态仿真的数据量。

5. 参考资料

  1. Cadence Rapid Adoption Kit: Using Spectre SAVE Effectively
  2. Troubleshooting Support Article: Article 20501907 - Spectre Simulation Error and Warning Messages
  3. Virtuoso ADE Explorer User Guide: Environment Variables Section (Spectre.envOpts)

建议截图方案 (Suggested Screenshots)

  1. ADE Save All 界面:展示 Save Options 窗口中 save 选项的下拉菜单。
  2. Schematic Selection:展示在原理图中高亮显示被选中保存的网络。
  3. Log Window:SPECTRE-294 警告在仿真 log 中的具体位置。

[!TIP] 合理配置 save 策略不仅能解决 SPECTRE-294 告警,通常还能将仿真速度提升 10%-30%,并节省数十 GB 的存储空间。