1. 关于 MCMM
- ICC可以读入多Corner、多Mode组合的scenarios,并行优化。
- 可以由PVT Corner、RC Corner以及工作模式组合成多种scenario的组合。
- PVT Corner:需要覆盖:WC/WCL/BC/ML。
- RC Corner:需要覆盖:Cworst/Cbest/RCworst/RCbest。
- PVT和RC Corner相关内容可以看这篇博客。
- 需要注意,ICC目前还不支持CTS的MCMM功能。在post_CTS之前只能选择一种scenario进行分析。
2. MCMM 脚本设置
- scenario 声明
- 学习中首先考虑三个scenario,并指定了两种模式(func和scan)的时序约束sdc文件,以及包含PVT Corner的.db文件和包含RC Corner的TLUPLUS文件。
set SCENARIO_1 "func_wc_cworst" set ICC_IN_SDC_1_FILE "../input_data/oc8051_func.postCTS.sdc" set OPCOND_1 "WORST" set OPCOND_1_LIB "saed90nm_max_hth" set TLUPLUS_1_FILE "$TLUPLUS_CWORST" set SCENARIO_2 "func_ml_cbest" set ICC_IN_SDC_2_FILE "../input_data/oc8051_func.postCTS.sdc" set OPCOND_2 "BEST" set OPCOND_2_LIB "saed90nm_min_ht_lvt" set TLUPLUS_2_FILE "$TLUPLUS_CBEST" set SCENARIO_3 "scan_ml_cworst" set ICC_IN_SDC_3_FILE "../input_data/oc8051_scan.postCTS.sdc" set OPCOND_3 "BEST" set OPCOND_3_LIB "saed90nm_min_ht_lvt" set TLUPLUS_3_FILE "$TLUPLUS_CWORST"
- 设置OCV timing derate
- OCV相关内容可以看这篇博客。
#timing derate ## for setup proc set_derate_worst_case {} { set_timing_derate -clock -early 0.92 -cell_delay set_timing_derate -clock -early 0.92 -net_delay set_timing_derate -clock -late 1.00 -cell_delay set_timing_derate -clock -late 1.00 -net_delay } ## for hold proc set_derate_best_case {} { set_timing_derate -clock -early 1.00 -cell_delay set_timing_derate -clock -early 1.00 -net_delay set_timing_derate -clock -late 1.12 -cell_delay set_timing_derate -clock -late 1.12 -net_delay } proc set_derate_typical_case {} { set_timing_derate -clock -early 0.95 -cell_delay set_timing_derate -clock -early 0.95 -net_delay set_timing_derate -clock -late 1.05 -cell_delay set_timing_derate -clock -late 1.05 -net_delay }
- 每个scenario分析脚本
- set_operating_conditions
- 时序分析工具一般有3中分析模式,这里的-analysis_type可选bc-wc/ocv分析模型。bc-wc模型较为悲观,一般选择ocv模型。
- 可以通过-max_library、-max以及-min_library、-min指定 库和operating conditions。其中operating conditions在库中有指定。
- set_tlu_plus_files
- 可选 -max_tluplus 和 -min_tluplus,对应max condition和min condition相关的tluplus文件。
- 如果有tluplus emulation相关的文件,可以添加选项:-max/min_emulation_tluplus.
- tech2itf_map:itf和tf之间的映射关系,itf中包含了RC寄生参数信息,而tf则提供了technology-specific信息,例如:每层金属的名称、物理和电学特性。另外,ICC要求TF必须包含Design Rules。
- 必须要指定的是:maximum tluplus文件和mapping file。如果还指定了minimum tluplus文件,还会进行min condition的RC提取.
- set_scenario_options
- 可以指定多个选项进行优化,如setup/hold/leakage_power/dynamic_power。
if {$SCENARIO_1 != "" && $ICC_IN_SDC_1_FILE != ""} { create_scenario $SCENARIO_1 set auto_link_disable true source $ICC_IN_SDC_1_FILE set auto_link_disable false set_operating_conditions \ -analysis_type on_chip_variation -max_library $OPCOND_1_LIB -max $OPCOND_1 set_tlu_plus_files -max_tluplus $TLUPLUS_1_FILE -tech2itf_map $TLUPLUS_MAP set_clock_uncertainty -setup 0.30 [all_clocks] set_clock_uncertainty -hold 0.12 [all_clocks] set_max_transition 0.6 [current_design] set_max_fanout 64 [current_design] set_scenario_options -setup true -hold true -leakage_power true -dynamic_power true set_derate_worst_case # post cts 需要移除所有时钟的理想特性 remove_input_delay clk set_propagated_clock [all_clocks] remove_ideal_network -all # 修hold violation set_fix_hold [all_clocks] }
- set_operating_conditions