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]
    	
    }