⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock_opt_psyn_icc.tcl

📁 synopsys icc 使用参考脚本
💻 TCL
字号:
## ICC RM Version: B-2008.09        ################################################# clock_opt_psyn_icc: Post CTS optimization #################################################source -echo icc_setup.tcl open_mw_lib $MW_DESIGN_LIBRARYredirect /dev/null "remove_mw_cel -version_kept 0 ${ICC_CLOCK_OPT_PSYN_CEL}" copy_mw_cel -from $ICC_CLOCK_OPT_CTS_CEL -to $ICC_CLOCK_OPT_PSYN_CELopen_mw_cel $ICC_CLOCK_OPT_PSYN_CELlink## Optimization Common Session Options - set in all sessionssource -echo common_optimization_settings_icc.tclsource -echo common_placement_settings_icc.tcl## Source CTS Options source -echo common_cts_settings_icc.tcl## Source Post CTS Optionssource -echo common_post_cts_timing_settings.tclset_app_var compile_instance_name_prefix icc_clock ## Remove any remaining ideal networks if {!$MCMM_MODE } {  remove_ideal_network [all_fanout -flat -clock_tree]} else {   set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO]   foreach scenario [all_active_scenarios] {     current_scenario $scenario     remove_ideal_network [all_fanout -flat -clock_tree]   };  }## Set Hold fixingif {!$MCMM_MODE } {  set_fix_hold [all_clocks] } else {   set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO]    foreach scenario [all_active_scenarios] {      current_scenario $scenario      set_fix_hold [all_clocks]    };    set ICC_DOMINANT_SCENARIOS [get_dominant_scenarios]     if {$ICC_DOMINANT_SCENARIOS != ""} {set_active_scenarios $ICC_DOMINANT_SCENARIOS}   update_timing   }if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }if {$DFT } {  if {$LEAKAGE_POWER || $DYNAMIC_POWER} {    ##Optimize DFT and Power    if {$ICC_STRATEGY == "TTR" } {       clock_opt -no_clock_route -only_psyn -optimize_dft -power     }     if {$ICC_STRATEGY == "QOR" } {       clock_opt -no_clock_route -only_psyn -optimize_dft -power -area_recovery     }  } else {    ##Optimize DFT     if {$ICC_STRATEGY == "TTR" } {       clock_opt -no_clock_route -only_psyn -optimize_dft     }    if {$ICC_STRATEGY == "QOR" } {       clock_opt -no_clock_route -only_psyn -optimize_dft -area_recovery     }  }} else {  if {$LEAKAGE_POWER || $DYNAMIC_POWER } {    ##Optimize Power     if {$ICC_STRATEGY == "TTR" } {       clock_opt -no_clock_route -only_psyn -power      }     if {$ICC_STRATEGY == "QOR" } {       clock_opt -no_clock_route -only_psyn -power -area_recovery     }    } else {    ##Default clock_opt -no_clock_route -only_psyn    if {$ICC_STRATEGY == "TTR" } {       clock_opt -no_clock_route -only_psyn      }    if {$ICC_STRATEGY == "QOR" } {       clock_opt -no_clock_route -only_psyn -area_recovery     }  }}if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }############################################################################################################# ADDITIONAL FEATURES FOR THE POST CTS OPTIMIZATION############################################################################################################## When the design has congestion issues post CTS, use :# refine_placement -congestion_effort medium -num_cpus $ICC_NUM_CPUS ## Additional optimization can be done using the psynopt command# psynopt -effort "medium|high"if {$MV_MODE != "NONE" } {  ## in case new nets are created that go from one VA to another, level shifters need to be inserted on these nets    # insert_level_shifters -all_clock_nets -verbose   ## optionally insert isolation cells    # insert_isolation_cell -reference $lib_cell -enable [find net $enable_net] -object_list [get_net $nets_missing_isolation_cells] }#########################################           CONNECT P/G                ########################################### Connect Power & Ground for non-MV and MV-modeif { $CUSTOM_CONNECT_PG_NETS_SCRIPT != ""} {  if {[file exists [which $CUSTOM_CONNECT_PG_NETS_SCRIPT]]} {    source -echo $CUSTOM_CONNECT_PG_NETS_SCRIPT   }} else { if {$MV_MODE == "NONE"} {  derive_pg_connection -create_net  derive_pg_connection -reconnect } if {$MV_MODE == "NONUPF"} {  source -echo mv_pg_connect.tcl  } if {$MV_MODE == "UPF"} {  derive_pg_connection -create_net -verbose  derive_pg_connection -reconnect -verbose  redirect -file $REPORTS_DIR/clock_opt_psyn.mv {check_mv_design -power_nets -verbose}  save_upf $RESULTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.upf }}if {$MCMM_MODE } { set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO] update_timing}redirect -file $REPORTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.qor {report_qor}redirect -file $REPORTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.con {report_constraints}if {$MCMM_MODE } {  redirect -file $REPORTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.max.tim {report_timing -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay max}  redirect -file $REPORTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.min.tim {report_timing -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay min} } else { redirect -file $REPORTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.max.tim {report_timing -capacitance -transition_time -input_pins -nets -delay max}  redirect -file $REPORTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.min.tim {report_timing -capacitance -transition_time -input_pins -nets -delay min} }## Create Snapshot and Savecreate_qor_snapshot -timing -constraint -congestion -clock_tree -name $ICC_CLOCK_OPT_PSYN_CELsave_mw_cel -as $ICC_CLOCK_OPT_PSYN_CEL redirect -file $REPORTS_DIR/$ICC_CLOCK_OPT_PSYN_CEL.qor_snapshot.rpt {report_qor_snapshot}exit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -