2. 设计数据准备与MMMC配置
在Innovus中启动一个物理实现项目之前,必须先把设计数据完整、正确地加载进来。这一步决定了后续floorplan、placement、CTS和routing能否顺利推进。Innovus需要的数据大致分为五类:工艺库文件、物理抽象文件、设计交换文件、逻辑网表和时序约束。它们分别回答“用什么工艺制造”“单元长什么样”“设计当前是什么状态”“逻辑连接关系是什么”“时序目标是什么”这五个问题。
五类输入数据的职责与加载顺序
工艺库文件通常包括.lib/.db(或Cadence的.lib/.lef组合中的时序部分)以及.tlf/.cdb等,描述标准单元、宏单元、IO单元的时序、功耗和功能信息。物理抽象文件以LEF为主,包含层定义、via定义、单元pin形状与布线阻挡、宏单元尺寸等。DEF描述设计的物理状态,例如die面积、row、已放置的宏、pin位置、电源网络等。网表一般是Verilog或OA格式,给出模块、实例、端口和连接关系。SDC则给出时钟、输入输出延迟、多周期路径、false path等时序约束。
合理的加载顺序是:先读工艺库和LEF,让工具知道可用单元和物理规则;再读网表建立逻辑层次;然后读DEF恢复物理信息;最后读SDC施加时序约束。如果顺序颠倒,例如先读DEF再读LEF,工具可能因为找不到单元物理视图而报错或忽略部分信息。
MMMC场景的定义与约束映射
多模式多端角(MMMC)是先进工艺设计的标配。一个“模式”代表一种工作条件,例如功能模式、扫描测试模式、低功耗模式;一个“端角”代表一种工艺-电压-温度组合,例如ss_0p72v_125c、ff_0p88v_m40c。MMMC就是把模式与端角组合成若干场景,每个场景对应一组SDC约束和一组库文件。
在Innovus中,MMMC通过一个view definition文件描述。典型写法如下:
create_rc_corner -name rc_worst -temperature 125 \
-qx_tech_file ./qrc/tech.tch \
-cap_table ./qrc/cap.tbl
create_library_set -name lib_ss -timing { \
./lib/ss_0p72v_125c.lib }
create_delay_corner -name dc_ss -library_set lib_ss \
-rc_corner rc_worst
create_constraint_mode -name func -sdc_files { \
./sdc/func.sdc }
create_analysis_view -name func_ss \
-constraint_mode func -delay_corner dc_ss
set_analysis_view -setup {func_ss} -hold {func_ss}
这段配置的含义是:先定义RC corner,再定义库集合,然后组合成delay corner;同时定义约束模式,最后把约束模式和delay corner组合成analysis view。set_analysis_view指定setup和hold分别使用哪些view。实际项目中通常会有多个view,例如func_ss、func_ff、scan_ss、scan_ff,分别用于不同分析目的。
数据加载后的检查要点
数据加载完成后,不能直接进入floorplan,必须先做检查。常用命令包括:
checkDesign -all:检查网表、库、约束的一致性,报告未解析的引用、缺失的库单元、悬空端口等。report_analysis_views:列出当前定义的所有analysis view及其约束、库、RC corner,确认MMMC配置生效。check_timing:检查时钟是否定义、输入输出延迟是否完整、是否存在未约束的路径。report_lib:确认库已正确加载,单元数量与预期一致。
如果checkDesign报告“unresolved reference”,通常意味着网表里用到的某个单元在库中不存在,或者LEF与lib的单元名不一致。如果check_timing报告“no clock defined”,说明SDC没有正确加载或时钟定义缺失。这些问题必须在设计导入阶段解决,否则后续时序分析结果不可信。
常见问题与处理思路
LEF与lib单元名不匹配是常见问题。例如lib中单元名为NAND2X1,而LEF中为NAND2_X1,工具会认为这是两个不同单元。处理方法是统一命名,或在加载时使用set_db lib_cell_name_mapping做映射。另一个常见问题是SDC中的时钟端口名与网表端口名不一致,导致时钟未定义。需要对照网表顶层端口逐一核对。
MMMC配置中最容易出错的是view的setup/hold指定。如果只定义了setup view而没有定义hold view,hold分析会使用默认view,可能得到错误结果。建议在set_analysis_view中显式指定setup和hold,并确保每个view都有对应的constraint mode和delay corner。
完成上述检查后,如果checkDesign无error、check_timing无unconstrained路径、report_analysis_views中setup和hold view均正确指定,就可以进入floorplan阶段。建议把MMMC配置文件和SDC文件纳入版本管理,每次修改后重新执行检查,避免因约束变更导致后续阶段返工。