MMMC结构
# <1> 创建Library Set: fast, slow, typical
create_library_set -name <lib_set_slow> -timing {library list for this set}
create_library_set -name <lib_set_fast> -timing {library list for this set}
create_library_set -name <lib_set_Typical> -timing {library list for this set}
# <2> 创建PVT工作条件: fast, slow, typical
# slow: low voltage, high temperature
# fast: high voltage, low temperature
create_opcond -name <opcond_slow> -process 1 -voltage 4.5 -temperature 125
create_opcond -name <opcond_fast> -process 1 -voltage 5.5 -temperature -40
create_opcond -name <opcond_typical> -process 1 -voltage 5.0 -temperature 25
# <3> 创建timing条件组合: Library set + 工作条件
create_timing_condition -name <timing_cond_slow> -opcond opcond_slow -librart_sets { lib_set_slow }
create_timing_condition -name <timing_cond_fast> -opcond opcond_fast -librart_sets { lib_set_fast }
create_timing_condition -name <timing_cond_slow> -opcond opcond_slow -librart_sets { lib_set_slow }
# <4> 创建rc_corner
create_rc_corner -name <rc_corner_name> -cap_table <path to cap_table file>
...
# <5> 创建delay corner组合: timing condition + rc_corner
create_delay_corner -name <delay_corner_slow> -early_timing_condition timing_cond_slow -late_timing_condition timing_cond_slow -early_rc_corner rc_corner_slow -late_rc_corner rc_corner_slow
create_delay_corner -name <delay_corner_fast> -early_timing_condition timing_cond_fast -late_timing_condition timing_cond_fast -early_rc_corner rc_corner_fast -late_rc_corner rc_corner_fast
create_delay_corner -name <delay_corner_typ> -early_timing_condition timing_cond_typ -late_timing_condition timing_cond_typ -early_rc_corner rc_corner_typ -late_rc_corner rc_corner_typ
# <6> 创建约束模式
create_constrain_mode -name <func_slow> -sdc_file { slow SDC file list}
create_constrain_mode -name <func_fast> -sdc_file { fast SDC file list}
create_constrain_mode -name <func_typ> -sdc_file { typ SDC file list}
# <7> 创建analysis view
create_analysis_view -name <view_slow> - constrain_mode <func_slow> -delay_corner delay_corner_slow
create_analysis_view -name <view_fast> - constrain_mode <func_fast> -delay_corner delay_corner_fast
create_analysis_view -name <view_typ> - constrain_mode <func_typ> -delay_corner delay_corner_typ
MMMC设置样例
## creating library_sets
# slow: SS, Low Voltage, High temp
create_library_set -name wcl_slow -timing { ./lib/LIBERTY/DBH_181aBD18BA_HD5P0V_NBL_SS_4P50V_125C.lib }
# fast: FF, High Voltage, Low temp
create_library_set -name wcl_fast -timing { ./lib/LIBERTY/DBH_181aBD18BA_HD5P0V_NBL_FF_5P50V_M40C.lib }
# Typical: TT, Typical Voltage, Room temp
create_library_set -name wcl_typical -timing { ./lib/LIBERTY/DBH_181aBD18BA_HD5P0V_NBL_TT_5P00V_25C.lib }
## creating operating conditions (PVT)
create_opcond -name op_cond_wcl_slow -process 1.0 -voltage 4.5 -temperature 125.0
create_opcond -name op_cond_wcl_fast -process 1.0 -voltage 5.5 -temperature -40.0
create_opcond -name op_cond_wcl_typical -process 1.0 -voltage 5.0 -temperature 25.0
## creating timing_conditions
create_timing_condition -name timing_cond_wcl_slow -opcond op_cond_wcl_slow -library_sets { wcl_slow }
create_timing_condition -name timing_cond_wcl_fast -opcond op_cond_wcl_fast -library_sets { wcl_fast }
create_timing_condition -name timing_cond_wcl_typical -opcond op_cond_wcl_typical -library_sets { wcl_typical }
## creating rc_corners
create_rc_corner -name rc_corner_min \
-cap_table ./lib/LEF/CAPTBL/DBH_181aBD18BA_3M_40K_MIN.captbl \
-pre_route_res 1.0 \
-pre_route_cap 1.0 \
-pre_route_clock_res 0.0 \
-pre_route_clock_cap 0.0 \
-post_route_res {1.0 1.0 1.0} \
-post_route_cap {1.0 1.0 1.0} \
-post_route_cross_cap {1.0 1.0 1.0} \
-post_route_clock_res {1.0 1.0 1.0} \
-post_route_clock_cap {1.0 1.0 1.0}
create_rc_corner -name rc_corner_max \
-cap_table ./lib/LEF/CAPTBL/DBH_181aBD18BA_3M_40K_MAX.captbl \
-pre_route_res 1.0 \
-pre_route_cap 1.0 \
-pre_route_clock_res 0.0 \
-pre_route_clock_cap 0.0 \
-post_route_res {1.0 1.0 1.0} \
-post_route_cap {1.0 1.0 1.0} \
-post_route_cross_cap {1.0 1.0 1.0} \
-post_route_clock_res {1.0 1.0 1.0} \
-post_route_clock_cap {1.0 1.0 1.0}
## creating delay_corners
create_delay_corner -name delay_corner_wcl_slow -early_timing_condition { timing_cond_wcl_slow } -late_timing_condition { timing_cond_wcl_slow } -early_rc_corner rc_corner_max -late_rc_corner rc_corner_max
create_delay_corner -name delay_corner_wcl_fast -early_timing_condition { timing_cond_wcl_fast } -late_timing_condition { timing_cond_wcl_fast } -early_rc_corner rc_corner_min -late_rc_corner rc_corner_min
create_delay_corner -name delay_corner_wcl_typical -early_timing_condition { timing_cond_wcl_typical } -late_timing_condition { timing_cond_wcl_typical } -early_rc_corner rc_corner_min -late_rc_corner rc_corner_max
## setting constraint_modes
create_constraint_mode -name functional_wcl_slow -sdc_files { ./functional_wcl_slow.sdc }
create_constraint_mode -name functional_wcl_fast -sdc_files { ./functional_wcl_fast.sdc }
create_constraint_mode -name functional_wcl_typical -sdc_files { ./functional_wcl_typical.sdc }
##creating analysis_views
create_analysis_view -name view_wcl_slow -constraint_mode functional_wcl_slow -delay_corner delay_corner_wcl_slow
create_analysis_view -name view_wcl_fast -constraint_mode functional_wcl_fast -delay_corner delay_corner_wcl_fast
create_analysis_view -name view_wcl_typical -constraint_mode functional_wcl_typical -delay_corner delay_corner_wcl_typical
## setting up analysis_views
set_analysis_view -setup { view_wcl_slow view_wcl_fast view_wcl_typical } -hold { view_wcl_slow view_wcl_fast view_wcl_typical }
set_analysis_view -setup { view_wcl_fast view_wcl_fast view_wcl_typical } -hold { view_wcl_fast view_wcl_fast view_wcl_typical }
MMMC Flow设置