ICC - MCMM
发布时间 2023-08-17 16:47:49作者: 可达达鸭
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
#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]
}