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

📄 route_icc.tcl

📁 synopsys icc 使用参考脚本
💻 TCL
字号:
## ICC RM Version: B-2008.09         ########################## route_icc: Routing ##########################source -echo icc_setup.tclopen_mw_lib $MW_DESIGN_LIBRARYredirect /dev/null "remove_mw_cel -version_kept 0 ${ICC_ROUTE_CEL}"copy_mw_cel -from $ICC_CLOCK_OPT_ROUTE_CEL -to $ICC_ROUTE_CELopen_mw_cel $ICC_ROUTE_CELlinksource -echo common_optimization_settings_icc.tclsource -echo common_placement_settings_icc.tclsource -echo common_post_cts_timing_settings.tcl#########################################    LOAD THE ROUTE AND SI SETTINGS    #########################################source -echo common_route_si_settings_zrt_icc.tclif {$MV_MODE != "NONE" } {  ##########################  ## FIX SPECIAL MV CELLS  ##########################    if {$LS_CELLS != ""} {    set LS [get_cells -hier -f "ref_name =~ ${LS_CELLS}*"]    set_dont_touch $LS    set_attribute $LS is_fixed true  }  if {$RR_CELLS != ""} {    set RR [get_cells -hier -f "ref_name =~ ${RR_CELLS}*"]    set_dont_touch $RR    set_attribute $RR is_fixed true  }  if {$AO_CELLS != ""} {    set AO [get_cells -hier -f "ref_name =~ ${AO_CELLS}*"]    set_dont_touch $AO    set_attribute $AO is_fixed true  }}  if { $MV_MODE == "UPF" } {  #############################  ## COMPLETE POWER CONNECTIONS  #############################    derive_pg_connection -create_net -verbose   derive_pg_connection -reconnect -verbose   check_mv_design -power_nets -verbose   }####Pre route_opt checks##Check for Ideal Netsset num_ideal [sizeof [all_ideal_nets]]if {$num_ideal >= 1} {echo "SCRIPT-Error-Info: $num_ideal Nets are ideal prior to route_opt. Please investigate."}##Check for HFNsset hfn_thres "41 101 501"foreach thres $hfn_thres {  set num_hfn [sizeof [all_high_fanout -nets -threshold $thres]]  echo "SCRIPT-Info: Number of nets with fanout > $thres = $num_hfn"  if {$thres == 501 && $num_hfn >=1} {    echo "SCRIPT-Error-Info: $num_hfn Nets with fanout > 500 exist prior to route_opt - Please check if marked ideal - possibly add buffer tree"  }}if {$MCMM_MODE } { set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO] update_timing }if {$MV_MODE != "NONE" } {  if {[file exists [which $CUSTOM_SECONDARY_POWER_ROUTE_SCRIPT]]} {         source -echo $CUSTOM_SECONDARY_POWER_ROUTE_SCRIPT    } }if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }#########################################       ROUTE_OPT CORE COMMAND         ########################################### some checks upfront #check_routeabilityreport_preferred_routing_direction## Route first the design report_tlu_plus_files ## Optimizing wirelenght and vias . Add the switch : -optimize_wire_via_effort_level to the set_route_zrt_detail_options command.## Use default low for your runs except when you run double via insertion, use in that case medium effort to reduce the initail amount of vias.#   set_route_zrt_detail_options -optimize_wire_via_effort_level mediumset_route_mode_options -zroute trueroute_opt -initial_route_onlyif { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }if {$ICC_DBL_VIA } {    save_mw_cel -as ${ICC_ROUTE_CEL}_NO_DBL_VIA  ########################################  #           REDUNDANT VIA              #  ########################################      ## When running Via insertion in MCMM mode, be aware that it works only from the current_scenario -   ## You can use [get_dominant scenarios] to get a critical one loaded  # set_active_scenarios [get_dominant_scenarios]    ## Optionally, manual mode :  # define_zrt_redundant_vias  # insert_zrt_redundant_vias -list_only  insert_zrt_redundant_vias     if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." } }#########################################           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 -verbose   derive_pg_connection -reconnect -verbose  } 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/route.mv {check_mv_design -power_nets -verbose}  save_upf $RESULTS_DIR/$ICC_ROUTE_CEL.upf }}if {$MCMM_MODE } { set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO] update_timing}redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.qor {report_qor}redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.con {report_constraints}if {$MCMM_MODE } {  redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.max.tim {report_timing -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay max}  redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.min.tim {report_timing -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay min} } else { redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.max.tim {report_timing -capacitance -transition_time -input_pins -nets -delay max}  redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.min.tim {report_timing -capacitance -transition_time -input_pins -nets -delay min} }## Uncomment if you want detailed routing violation report with or without antenna info# if {$ICC_FIX_ANTENNA} {#    verify_zrt_route -antenna true # } else {#    verify_zrt_route -antenna false #   }create_qor_snapshot -timing -constraint -congestion -clock_tree -route -name $ICC_ROUTE_CELsave_mw_cel -as $ICC_ROUTE_CELredirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.qor_snapshot.rpt {report_qor_snapshot}exit

⌨️ 快捷键说明

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