ICC - MCMM


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流程 MCMM的设置。

    • 表中setup和hold的corner可以去signoff中表格查找。如果使用innovus,可以将所有的Corner都添加进去,让工具去选择合适的Corner进行分析。
    • 注意,MCMM的分析是一个不断迭代的过程,最后得到的输出文件需要满足所有Corner。
      流程 MultiCorner
      FloorPlan Setup
      Placement Setup
      pre-CTS Hold
      post-CTS Hold
      Route Hold
    • 在CTS之前,只需要对func mode进行优化即可,scan mode在CTS及CTS之后进行优化。
      • 因为scan_mode的setup是很容易满足的,所以只需要在hold需要覆盖的corner打开即可。
  • 数字设计流程中的 timing correlation

    • 相邻两个阶段,需要预留的margin差异越小,这两个阶段的correlation越好。
      • 例如:如果逻辑综合使用的是DCT工具,那么DCT估算的连线延迟较placement之间的延迟差别不大。
    flow timing correlation
    DC -> FloorPlan/Placement net延迟估计从WLM模型到virtual route(即使使用DCT,精度还是有差别)
    Placement -> CTS Clock skew的差别以及需要加OCV的估计
    CTS -> Route Detail Route以及SI-delta delay
    Route -> Signoff StarRC提取RC,还需考虑Foundry给的Signoff表格

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_case_analysis
      • 设置工作mode,Func/Scan。每个mode下,时序都需要满足要求。设置mode之后,工具只能看见当前mode下的timing path,所以也只能优化当前mode的path。
    • set_operating_conditions
      • 时序分析工具一般有3中分析模式,这里的-analysis_type可选bc-wc/ocv分析模型。bc-wc模型较为悲观,一般选择ocv模型。
      • 可以通过-max_library、-max以及-min_library、-min指定 库和operating conditions。其中operating conditions在前面的max/min库中有指定。
    • set_tlu_plus_files
      • 可选 -max_tluplus 和 -min_tluplus,对应max condition和min condition相关的tluplus文件。因为考虑到一个scenario只有一个RC Corner,所以只需要指定一个就可以。
      • 如果有tluplus emulation相关的文件,可以添加选项:-max/min_emulation_tluplus.
      • tech2itf_map:itf和tf之间的映射关系,itf中包含了RC寄生参数信息,而tf则提供了technology-specific信息,例如:每层金属的名称、物理和电学特性。另外,ICC要求TF必须包含Design Rules。两者需要一个map表格将两个文件中相同的物理信息映射起来。
      • 必须要指定的是: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]
      	
      }
      
posted @ 2023-08-17 16:45  可达达鸭  阅读(420)  评论(0编辑  收藏  举报