2. Cadence MMMC环境搭建

MMMC(Multi-Mode Multi-Corner)环境搭建的本质,是把“设计在什么条件下被分析”这件事,用一组可被工具识别的对象描述清楚。它不是一个孤立的命令,而是由库、工艺文件、RC角、模式、视图五类对象共同构成的配置体系。理解它们之间的引用关系,比记住命令顺序更重要。

五类对象的分工与引用关系

在MMMC配置中,各对象承担不同职责:库(Library)提供标准单元、宏单元和IO单元的时序与功能模型;工艺文件(Technology / QRC Tech File)提供金属层、介质厚度、电阻率等寄生参数提取所需的工艺信息;RC角(RC Corner)把工艺文件与温度、电压、互连层选择组合成一个可提取的寄生条件;模式(Mode)描述功能场景,如功能模式、扫描测试模式、低功耗模式,包含SDC约束、时钟定义和例外;视图(View / Analysis View)则是“模式 + RC角 + 延迟计算角”的组合,是工具真正执行时序分析的最小单元。

它们的关系可以概括为:库和工艺文件是底层资源,RC角引用工艺文件,模式引用SDC与库,视图引用模式与RC角。任何一个引用断裂,都会导致视图无法建立或分析结果失真。

MMMC 对象引用关系与视图生成 标准单元/宏单元库 .lib / .db / .lef 工艺文件 QRC Tech File / ITF RC 角 Cmax / Cmin / Rcmax… 模式 Mode func / scan / lowpower SDC 约束 时钟/IO/例外 分析视图 View Mode + RC Corner + Delay Corner 视图生成逻辑: 每个 View = 一个 Mode × 一个 RC Corner × 一个 Delay Corner,工具按 View 逐一执行时序分析。 示例:func_ss_125c = func模式 + Cmax(RC) + ss_125c(延迟角);scan_ff_m40c = scan模式 + Cmin(RC) + ff_m40c。 若某 Mode 未绑定 SDC,或某 RC Corner 未绑定工艺文件,对应 View 将无法建立。

库与工艺文件的配置要点

库配置通常通过 set_db 或 init_lib 类命令完成,需要区分时序库与物理库。时序库(.lib/.db)提供延迟计算模型,物理库(.lef)提供版图抽象。在MMMC中,不同RC角可能对应不同的时序库版本,例如SS角使用慢速库、FF角使用快速库。配置时应确保每个角引用的库与PVT条件一致,否则会出现“库角不匹配”的隐性错误。

工艺文件方面,Cadence通常使用QRC Tech File(.qrc)或ITF文件。它定义了金属层数、每层的电阻率、电容耦合系数、通孔电阻等。RC角通过引用工艺文件并叠加温度、电压、互连层选择来生成具体的寄生提取条件。例如:

create_rc_corner -name Cmax \
  -qx_tech_file ./tech/tsmc28.qrc \
  -temperature 125 \
  -cap_table ./tech/cmax.capTbl

create_rc_corner -name Cmin \
  -qx_tech_file ./tech/tsmc28.qrc \
  -temperature -40 \
  -cap_table ./tech/cmin.capTbl

这里Cmax和Cmin共享同一工艺文件,但温度与电容表不同,从而形成不同的寄生条件。实际项目中,RC角数量通常控制在3~5个,过多会显著增加分析时间。

模式与视图的配置方法

模式配置的核心是绑定SDC。每个模式对应一个功能场景,例如功能模式、扫描模式、低功耗模式。配置时需要指定该模式使用的SDC文件、时钟定义以及是否启用特定约束。示例:

create_mode -name func \
  -sdc_file ./sdc/func.sdc

create_mode -name scan \
  -sdc_file ./sdc/scan.sdc \
  -apply_clock_gating_check false

视图则是模式与RC角的笛卡尔积。工具通常提供自动生成或手动指定两种方式。手动指定可以精确控制哪些组合需要分析,避免无效视图浪费资源:

create_analysis_view -name func_ss_125c \
  -mode func -rc_corner Cmax \
  -delay_corner ss_125c

create_analysis_view -name scan_ff_m40c \
  -mode scan -rc_corner Cmin \
  -delay_corner ff_m40c

set_analysis_view -setup {func_ss_125c scan_ff_m40c} \
  -hold {func_ff_m40c scan_ss_125c}

注意setup与hold使用的视图通常不同:setup关注最慢路径,hold关注最快路径。因此需要分别指定,而不是简单复用同一组视图。

常见环境初始化任务与检查

环境搭建完成后,必须执行初始化检查,确认所有引用关系完整。常见任务包括:

  • 库完整性检查:确认每个角引用的库文件存在且版本匹配,避免“missing library”或“library version mismatch”。
  • 工艺文件路径检查:QRC Tech File路径必须可访问,且与工艺节点一致。
  • RC角与延迟角绑定检查:每个RC角应绑定到对应的延迟计算角,确保延迟计算使用正确的库。
  • 模式SDC检查:每个模式必须绑定SDC,且SDC中的时钟定义与设计一致。
  • 视图覆盖检查:确认setup和hold视图覆盖了所有关键模式与角组合,没有遗漏。
初始化完成后,可用 report_analysis_view 或 check_mmmc 类命令输出视图列表与绑定关系,逐项核对。若某视图显示“incomplete”,通常意味着Mode、RC Corner或Delay Corner中至少有一项未正确绑定。
常见错误:多个模式共用同一SDC但未区分时钟约束,导致扫描模式下时钟被错误约束;或RC角引用了错误的工艺文件,使寄生提取结果与预期PVT不符。这类问题在时序报告里往往表现为“某角结果异常乐观或悲观”,需要回到MMMC配置层排查,而不是在时序路径上反复调试。

总结来说,MMMC环境搭建的关键不是命令数量,而是引用链的完整性:库和工艺文件支撑RC角,SDC支撑模式,RC角与模式共同生成视图。把这条链理顺,后续的时序收敛才有可靠的分析基础。