Top Banner
Zroute Training Lab Version 1.0 Introduction: These labs are designed to provide an introduction to Zroute concepts and flow. This guide provides instructions for running the labs. You might find it useful to refer to the general lab problem description and then review the prepared solution scripts. This lab uses the existing Customer Education Services (CES) IC Compiler training lab. This provides a good example for the Zroute flow, even if it doesn’t cover the nuances of more advanced technologies. For more details, see the Zroute training and the IC Compiler Zroute User Guide. Supported Versions: This lab supports IC Compiler versions C2009.06 and C2009.06SP1. For earlier versions of IC Compiler, please see previous versions of the lab. Available Labs: Lab 1: Translating the classic router environment to Zroute Lab 2: Multithreading with Zroute Lab 3: Running Zroute with route_opt Lab 4: Running Zroute with route_zrt_auto Lab 5: Running Zroute with basic commands Lab 6: Integrated clock global routing (ICGR) and clock routing with Zroute Lab 7: Including designformanufacturing (DFM) with Zroute Lab 8: Shielding with Zroute If you do not have enough time to complete all the labs, you should run highlighted labs first. Labs 4 and 5 are similar to Lab 3, but show slightly different methods and options.
23

Zroute Training Lab v1 0

Apr 07, 2015

Download

Documents

Chetan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Zroute Training Lab v1 0

 

Zroute Training Lab 

Version 1.0 

 

Introduction: 

These labs are designed to provide an introduction to Zroute concepts and flow.  This guide provides instructions for running the labs. You might find it useful to refer to the general lab problem description and then review the prepared solution scripts. 

This lab uses the existing Customer Education Services (CES) IC Compiler training lab. This provides a good example for the Zroute flow, even if it doesn’t cover the nuances of more advanced technologies.  For more details, see the Zroute training and the IC Compiler Zroute User Guide. 

Supported Versions: 

This lab supports IC Compiler versions C‐2009.06 and C‐2009.06‐SP1.  For earlier versions of IC Compiler, please see previous versions of the lab. 

Available Labs: 

• Lab 1: Translating the classic router environment to Zroute 

• Lab 2: Multi‐threading with Zroute 

• Lab 3: Running Zroute with route_opt 

• Lab 4: Running Zroute with route_zrt_auto 

• Lab 5: Running Zroute with basic commands 

• Lab 6: Integrated clock global routing (ICGR) and clock routing with Zroute 

• Lab 7: Including design‐for‐manufacturing (DFM) with Zroute 

• Lab 8: Shielding with Zroute   

If you do not have enough time to complete all the labs, you should run highlighted labs first. Labs 4 and 5 are similar to Lab 3, but show slightly different methods and options. 

   

Page 2: Zroute Training Lab v1 0

General Instructions for All Labs 

After untarring  and unzipping the labs, the first directory contains the reference data information in the ref directory, a README file, and these instructions.  All labs run in the zroute_lab directory.  The lab directory contains a Makefile that can run the scripts directly and an icc_scripts directory with scripts in it.  The lab instructions in the following section provide step‐by‐step instructions at the beginning, followed by more general discussions for later labs.  You can use the solutions in the scripts directory to help with labs that are more generally worded or to attempt the labs without detailed instructions. 

The Makefile assumes that icc_shell is in your path or is linked from the working directory.  You can also add the icc_shell path to the Makefile.  

LAB 1 

Translating the Classic Router Environment to Zroute 

zroute_translate.tcl 

The purpose of this lab is to introduce some concepts related to setting up Zroute based on an existing classic router script and environment.  A parameter translation program is provided that can help you accomplish this, but the translation program is not designed to become an integral part of running Zroute.  You should take the time to set up Zroute‐specific scripts based on the results of investigating your current classic router setup.  To get optimal Zroute results, you might find some concepts and parameters from the classic router are no longer applicable, and that the sequential classic router scripts can be optimized by running those steps concurrently with Zroute.  Antenna fixing, wire and via optimization, and off‐grid pin solutions are three examples of sequential scripting that can be eliminated with Zroute. 

The easiest way to check what needs to be translated is to run the translator on the existing classic router script just before you would execute the classic router command.  You might need to do this  more than once.  The translator translates the parameters or outputs different types of message for different types of parameters.  For example, 

Information: droute parameter 123PDQ is obsolete in Zroute. (ZRT-410)

Warning: droute parameter XYZ123 is not supported by Zroute. (ZRT-409)

Warning: droute parameter ABCDEF cannot be translated exactly to corresponding Zroute option. (ZRT-412)

Warning: droute parameter 456789 is supported by Zroute only in Milkyway technology file. (ZRT-411)

Page 3: Zroute Training Lab v1 0

The first part of this lab sets up the classic router environment, and then runs the translation. For more information about the translator, see SolvNet article 024478, which contains the parameter translation application note. 

1. Start IC Compiler and source the icc_setup.tcl file.  % icc_shell –f icc_setup.tcl | tee –i zroute_translate.log

The icc_setup.tcl file defines the timing library, Milkyway library, TLUPlus settings, and other setup values, including variables used in the script. 

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from clock_opt_route_icc –to zroute_translate open_mw_cel zroute_translate

3. Run the classic router script up to the point of running a routing command.  This example shows the translation after setting the routing options, after setting the signal integrity (SI) options, and after setting the antenna options. 

source icc_scripts/set_operating_conditions.tcl set_route_options \ -same_net_notch check_and_fix \ -wire_contact_eol_rule check_and_fix

4. Translate the classic router parameters into Zroute options. 

translate_zrt_parameters

5. Analyze the translation. 

######Parameters translated into Zroute options ######========================================= ######Translated droute parameter ignoreNotchDRC value 0 to set_route_zrt_detail_options -ignore_drc {{same_net_metal_space false}}  Zroute fixes notch and gap by default, so the default of ‐ignore_drc {} has the same effect as the syntax shown above. 

###### ######Parameters not translated ######========================= ######Information: droute parameter wrongWayNoVia is obsolete in Zroute. (ZRT-410)  You can ignore obsolete parameters. In the classic router, this parameter was set by the set_route_options -wire_contact_eol_rule command. 

Page 4: Zroute Training Lab v1 0

6. For the most part, the classic router is controlled by parameters, even if those parameters are set by using other functions.  To demonstrate this point, set the signal integrity options before the second translation: 

set_si_options \ -route_xtalk_prevention true \ -route_xtalk_prevention_threshold 0.25 \ -delta_delay true  

7. Translate the parameters again. 

translate_zrt_parameters

8. Analyze the translation again. Note that only new messages are shown below. 

######Warning: Hidden int parameter optXtalkDly of droute is not supported by Zroute. (ZRT-403)  The optXtalkDly parameter is set by the set_si_options -delta_delay true command. It does not need to be supported in Zroute. 

######Parameters translated into Zroute options ######========================================= ######Translated groute parameter avoidXtalk value 1 to set_route_zrt_global_options -crosstalk_driven true The avoidXtalk parameter is set by the set_si_options -route_xtalk_prevention true command. When you run the set_si_options command, it sets the appropriate Zroute global route options (set_route_zrt_global_options), so there is no need to translate this option.  ######Translated trackAssign parameter noiseThreshold value 0.25 to set_route_zrt_common_options -threshold_noise_ratio 0.25 The noiseThreshold parameter is set by the set_si_options -route_xtalk_prevention_threshold 0.25 command. When you run the set_si_options command, it sets the appropriate Zroute common route options (set_route_zrt_common_options), so there is no need to translate this option.  ######Translated trackAssign parameter runXTalkMode value 1 to set_route_zrt_track_options -crosstalk_driven true When you run the set_si_options command, it sets the appropriate Zroute track assignment options (set_route_zrt_track_options), so there is no need to translate this option.  

9. During a classic router flow, parameters are often added sequentially during the flow.  For example, antenna fixing might be done after initial routing.  When investigating parameter translation, you might want to check at subsequent steps in the flow.  To illustrate this point, 

Page 5: Zroute Training Lab v1 0

let’s look at loading the antenna rules.  Load the antenna settings before running the  third translation by running the following commands: 

echo $ANTENNA_RULES_FILE_CLASSIC source $ANTENNA_RULES_FILE_CLASSIC  

10. Translate the parameters again. translate_zrt_parameters

 11. Analyze the translation. 

######Translated droute parameter defaultDiodeProtect value 0.5 to set_route_zrt_detail_options -default_diode_protection 0.5

 If parameters are included in the antenna file, be sure to translate them to Zroute options. 

######Parameters not translated ######========================= ######Information: droute parameter doAntennaConx is obsolete in Zroute. (ZRT-410) Antenna fixing is on‐by‐default in Zroute. After you load the rules into the Milkyway library, the rules are checked and fixed unless you turn them off. Note that the rules are stored in the Milkyway library, but the Zroute options are stored in the CEL view, so if rules are loaded in the library from a previous run, subsequent runs will check and fix the antenna rules. 

12. At this point you would analyze the various translations and use that information to create a script that runs Zroute explicitly.  For example, the translation information in this lab was used to create the script in lab 3.  Using parameter translation directly in the script is not recommended as a long term solution. For example, each translation can overwrite the Zroute options that you have set, because the parameters are static and get retranslated.   

quit

LAB 2 

Multi‐Threading With Zroute 

zroute_multithreading.tcl 

The purpose of this lab is to introduce multi‐threading inside Zroute.   Multi‐threading means that the software was engineered to run in parallel on the same computer using shared memory.  Multi‐threading is different from distributed routing, which typically partitions a job and sends each partition to a different CPU, each of which uses different memory.  Zroute can be multi‐threaded up to the number of available CPU cores.  If you have a single CPU, dual core machine, you can use two threads.  A 

Page 6: Zroute Training Lab v1 0

single CPU, quad core machine or a two CPU, dual core machine can use four threads. IT departments seem to account for CPUs and cores inconsistently, especially when referring to resources on LSF or GRD systems.  Sometimes a single CPU, dual core machine is listed as two CPUs.  So don’t think it is two CPUs with two cores each if you notice it is a dual core machine. You should make sure the number of threads does not exceed the real number of cores. 

1. Start IC Compiler and source the icc_setup.tcl file.  % icc_shell –f icc_setup.tcl | tee –i zroute_multithreading.log  The icc_setup.tcl file defines the timing library, Milkyway design library, TLUPlus settings, and other setup values, including variables used in the script.  

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from clock_opt_route_icc –to zroute_multithreading open_mw_cel zroute_multithreading

3. Determine the number of CPU cores.    a. Try the cpuinfo command first. 

sh grep MHz /proc/cpuinfo Here is an example report from a two CPU, dual core machine.  Note that each core is reported once. ##cpu MHz         : 2394.245  ##cpu MHz         : 2394.245  ##cpu MHz         : 2394.245  ##cpu MHz         : 2394.245  

b. Try to use the message of the day (MOTD).  Some IT departments set this up to give CPU information. sh cat /etc/motd  ## Linux 2.6.9-55.ELsmp x86_64 ## OS: RedHat Enterprise Linux 4.0 U4 ## Hostname: azz284 ## CPU: 4 x 2394 MHz, AMDOpteron(tm)Processor280 (2 socket, dual core) ## Memory: 16 GB RAM, 33 GB Swap ## QSC: QSC-A

4. Determine the number of threads. 

 For the best results with multi‐threading, use one thread per CPU per core. For example, if you have two dual core CPUS, you can have 2 x 2 = 4 threads.   

Page 7: Zroute Training Lab v1 0

5. Specify Zroute as the router for embedded route commands. 

set_route_mode_options -zroute true

6. Enable multi‐threading by using the set_host_options command.    In the following command,  change the “2” to the number of threads you determined for your machine:  set_host_options –max_cores 2 Note that in version C‐2009.06, you also set the max_number_of_threads common Zroute option to ensure that the desired number of cores are used.  In version C‐2009.06‐SP1 or later, this is no longer necessary.   set_route_zrt_common_options -max_number_of_threads 2

7. Turn off antenna fixing. Because we loaded the antenna rules into the design library in first lab, Zroute checks and fixes antenna violations. 

set_route_zrt_detail_options -antenna false

8. Route the design.  route_zrt_auto

 9. Review the log. Search for the following text: 

####Route the design route_zrt_auto

10. Query the design to see if it is routed by Zroute.  is_zrt_routed_design

Note that the is_zrt_routed_design command returns true or false, so you can use the return value to make decisions. 

if {[is_zrt_routed_design]} { echo "Zroute is great" } else { echo "Classic router is not too bad either" }  

11. Exit the lab. quit

Page 8: Zroute Training Lab v1 0

LAB 3 

Using Zroute With route_opt 

zroute_route_opt.tcl 

The purpose of this lab is to show a typical flow using Zroute as the router that runs inside the route_opt command.  This is enabled by setting the route mode to Zroute.  Once this is set, all embedded routing is based on Zroute. 

1. Start IC Compiler and source the icc_setup.tcl file.  % icc_shell –f icc_setup.tcl | tee –i zroute_route_opt.log

The icc_setup.tcl file defines the timing library, Milkyway design library, TLUPlus settings, and other setup values, including variables used in the script. 

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from clock_opt_route_icc –to zroute_route_opt open_mw_cel zroute_route_opt

3. Set the operating conditions.  source icc_scripts/set_operating_conditions.tcl

If you want to compare memory usage with the classic router, disable splitting of the routing process.  Unless process splitting is disabled, the classic router always splits the routing process.  Zroute adaptively splits the routing process based on net count and current memory usage.  To disable process splitting in both the classic router and Zroute , enter the following command:  set_app_var physopt_enable_router_process false

Note that the set_app_var command is a special version of the Tcl set command.  If the 

variable is properly registered as an application variable, the set_app_var command verifies that the spelling and syntax are correct.  If not, it returns an error, but it still sets the variable to the specified value.  

4. Set the signal integrity options.  set_si_options \  -route_xtalk_prevention true \ -route_xtalk_prevention_threshold 0.25 \ -delta_delay true

Page 9: Zroute Training Lab v1 0

5. Specify Zroute as the router for embedded route commands.  set_route_mode_options -zroute true  

6. (Optional) Enable multi‐threading. (See Lab 2 for more details.)  set_host_options –max_cores 2

7. Read the antenna rules.  After the rules are set in the design library, Zroute checks and fixes them by default .  echo $ANTENNA_RULES_FILE source $ANTENNA_RULES_FILE  

8. Set the Zroute antenna options.  set_route_zrt_detail_options -default_diode_protection 0.5  Reminder:  These might be in the antenna file. The Zroute option is stored with the cell, so it will be set in subsequent versions of the cell.  However, if you intend to run another cell in the same library without antenna fixing, you must turn off Zroute antenna fixing because Zroute picks up the rules from the library.  If you later start fixing antenna violations in such a cell, you must remember to set any needed Zroute antenna options in the new cell.  

9. Route the design using the route_opt flow:  route_opt -initial_route_only

If you review the log you should see the following text: 

Routeopt: Using zrt router  The log shows the settings for the Zroute options that have been set by you or by the route_opt command; however, by default, it does not show the settings for Zroute options that have not been explicitly set. Lab 4 and Lab 5 show different ways to get the option settings, but by default, you can always find out what was explicitly set.  For example,  Printing options for 'set_route_zrt_common_options' -threshold_noise_ratio : 0.250000 Printing options for 'set_route_zrt_global_options' -crosstalk_driven : true -timing_driven : true Begin global routing 

Page 10: Zroute Training Lab v1 0

10. Perform postroute optimizations.  route_opt -skip_initial_route  

11. Verify the routing.  verify_zrt_route  The results should be similar to the following text:  Verify Summary: Total number of nets = 13244, of which 0 are not extracted Total number of open nets = 2, of which 0 are frozen Total number of excluded ports = 0 ports of 0 unplaced cells connected to 0 nets 0 ports without pins of 0 cells connected to 0 nets 0 ports of 0 cover cells connected to 0 non-pg nets Total number of DRCs = 0 Total number of antenna violations = 0 Total number of voltage-area violations = not checked

 Scroll back in the log to find the listed open nets. The open nets are due to via regions in the FRAM view of certain standard cells.  Note that the open nets might vary from lab to lab because route_opt might optimize the design differently.  To further debug the open nets , use the 

following command:  verify_lvs -ignore_short -ignore_min_area  

12. Report the design summary.  report_design_physical -all –verbose  

13. Exit the lab.  quit

       

Page 11: Zroute Training Lab v1 0

LAB 4 

Using Zroute With route_zrt_auto 

zroute_auto.tcl 

The purpose of this lab is to show how to explicitly set the signal integrity and timing options and to use the route_zrt_auto command to mimic the same flow as in the previous lab.  This lab also shows how to set verbose messaging in Zroute.  

1. Start IC Compiler and source the icc_setup.tcl file.  % icc_shell –f icc_setup.tcl | tee –i route_zrt_auto.log

The icc_setup.tcl file defines the timing library, Milkyway library, TLUPlus settings, and other setup values, including variables used in the script. 

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from clock_opt_route_icc –to zroute_auto open_mw_cel zroute_auto

3. Set the operating conditions.  source icc_scripts/set_operating_conditions.tcl  

4. Enable the signal integrity options. The following commands enable the same signal integrity options as in Step 5 of Lab 3. 

set_route_zrt_global_options -crosstalk_driven true set_route_zrt_track_options -crosstalk_driven true set_route_zrt_common_options -threshold_noise_ratio 0.25

5. Specify Zroute as the router for embedded routing commands.  set_route_mode_options -zroute true  

6. Enable timing‐driven routing. The following commands enable the same settings as used by the  route_opt -initial_route_only command.  set_route_zrt_global_options -timing_driven true set_route_zrt_track_options -timing_driven true set_route_zrt_detail_options -timing_driven true   

Page 12: Zroute Training Lab v1 0

7. (Optional) Enable multi‐threading. (See Lab 2 for more details.)  set_host_options –max_cores 2

8. Enable verbose reporting.  set_route_zrt_common_options -verbose_level 1  

9. Read the antenna rules.  After the antenna rules are set in the design library, Zroute checks and fixes them by default .  echo $ANTENNA_RULES_FILE source $ANTENNA_RULES_FILE  

10. Set the Zroute antenna options.  set_route_zrt_detail_options -default_diode_protection 0.5  

11. Route the design using the same number of iterations as the route_opt default.   route_zrt_auto -max_detail_route_iterations 10  By default, the maximum number of iterations is 40 for Zroute auto route (the route_zrt_auto command) and the Zroute basic routing commands.  

12. Review the log and notice that all the Zroute option settings are printed in the log during the routing command.  

13. The rest of lab is the same as the previous lab; exit the lab when ready.  quit           

Page 13: Zroute Training Lab v1 0

LAB 5 

Using Zroute With Basic Commands 

zroute_basic.tcl 

The purpose of this lab is to show a flow similar to the previous lab, but using basic commands. This lab also shows how to disable antenna fixing and how to report Zroute options.  Because this lab is so similar to the previous lab, only the changes are highlighted.  

1. Start IC Compiler and source the icc_setup.tcl file.  % icc_shell –f icc_setup.tcl | tee –i zroute_basic.log

The icc_setup.tcl file defines the timing library, Milkyway library, TLUPlus settings, and other setup values, including variables used in the script. 

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from clock_opt_route_icc –to zroute_basic open_mw_cel zroute_basic

 

3. Use the appropriate steps from the  previous lab, but replace verbose reporting with the following commands:  report_route_zrt_common_options report_route_zrt_global_options report_route_zrt_track_options report_route_zrt_detail_options  

4. Disable antenna fixing, in case the antenna rules are already loaded in the design library.   set_route_zrt_detail_options -antenna false  

5. Use the following basic commands instead of the route_zrt_auto command:  route_zrt_global route_zrt_track route_zrt_detail

Page 14: Zroute Training Lab v1 0

6. Verify the routing, but exclude antenna checking.  verify_zrt_route -antenna false Note that the summary shows that no antenna checking was done.  Total number of antenna violations = not checked  

7. Exit lab.  quit

 LAB 6 

Integrated Clock Global Routing and Clock Routing With Zroute zroute_clock_routing_with_icgr.tcl 

The purpose of this lab is to introduce you to using Zroute for clock routing.  Zroute does not do balanced clock routing directly (like the classic router can), so to get balanced routing, you must use the integrated clock global routing (ICGR) flow with Zroute.  Without the ICGR flow, you should consider using the classic router to route clock nets so that the routing will be balanced.  1. Start IC Compiler and source the icc_setup.tcl file. 

% icc_shell –f icc_setup.tcl | tee –i zroute_clk_routing_with_icgr.log

The icc_setup.tcl file defines the timing library, Milkyway library, TLUPlus settings, and other setup values, including variables used in the script.

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from place_opt_icc \ –to zroute_clock_routing_with_icgr open_mw_cel zroute_clock_routing_with_icgr

3. Set the operating conditions.  source icc_scripts/set_operating_conditions.tcl     

Page 15: Zroute Training Lab v1 0

4. Enter the clock tree synthesis setup.  set_clock_uncertainty 0.1 [all_clocks] set_clock_tree_options -target_skew 0.1 set_clock_tree_exceptions \ -stop_pins {I_SDRAM_TOP/I_SDRAM_IF/sd_mux_*/S} reset_clock_tree_references set_clock_tree_references -references $ICC_CTS_REF_LIST remove_routing_rules -all define_routing_rule double_spacing -default_reference_rule \ -spacings {METAL3 0.6 METAL4 0.8 METAL5 1.2 METAL6 1.4} set_clock_tree_options -routing_rule double_spacing \ -layer_list $ICC_CTS_LAYER_LIST \ -use_default_routing_for_sinks 1

 5. Specify Zroute as the router for embedded routing commands. 

 set_route_mode_options -zroute true

6. Run clock tree synthesis with ICGR during clock tree optimization.  set_delay_calculation -clock_arnoldi clock_opt -only_cts -no_clock_route

7. Save the design.  save_mw_cel -as clock_opt_cts_icc

8. Perform post‐clock‐tree‐synthesis  timing optimization.  set_fix_hold [all_clocks] extract_rc clock_opt -only_psyn -no_clock_route

9. Reconnect any open nets in the global routing on clock leaf nets, which are caused by optimization on flip‐flops and legalization around flip‐flops. This is useful if reporting is done after optimization or if an additional optimization will be done.   route_zrt_group -all_clock_nets \ -reuse_existing_global_route true -stop_after_global_route true

Page 16: Zroute Training Lab v1 0

 10. (Optional) Enable multi‐threading. (See Lab 2 for more details.) 

 set_host_options -max_cores 2

11. (Optional) Insert redundant vias on the clock nets during routing.  set_route_zrt_common_options \ -post_detail_route_redundant_via_insertion medium  

12. Route the clocks using the result from ICGR. 

route_zrt_group -all_clock_nets -max_detail_route_iterations 10 \ -reuse_existing_global_route true

13. Set more accurate delay calculation with only the clocks routed. 

 set_delay_calculation -clock_arnoldi

 14. Verify the routing. 

 verify_zrt_route -open_net false -antenna false

 15. Check the skew. 

 report_clock_tree

 16. Exit the lab. 

 quit

LAB 7 

Including Design‐for‐Manufacturing With Zroute 

zroute_dfm.tcl 

The purpose of this lab is to show chip finishing commands in the Zroute flow.  This includes items such as redundant vias, filler cell insertion, metal fill, critical area analysis (CAA) and improving CAA through wire spreading and wire widening, and inserting diodes.  Warning: This lab takes some time to run. You can use the Makefile to run this lab in batch mode.  

Page 17: Zroute Training Lab v1 0

1. Start IC Compiler and source the icc_setup.tcl file.  % icc_shell –f icc_setup.tcl | tee –i zroute_dfm.log  The icc_setup.tcl file defines the timing library, Milkyway design library, TLUPlus settings, and other setup values, including variables used in the script.  

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from clock_opt_route_icc –to zroute_dfm open_mw_cel zroute_dfm

3. Set the operating conditions.  source icc_scripts/set_operating_conditions.tcl  

4. Set the signal integrity options. 

set_si_options \ -route_xtalk_prevention true \ -route_xtalk_prevention_threshold 0.25 \ -delta_delay true

5. Specify Zroute as the router for the embedded routing commands.  set_route_mode_options -zroute true  

6. (Optional) Enable multi‐threading. (See Lab 2 for more details.)  set_host_options -max_cores 2

7. Read the antenna rules.  After the antenna rules are set in the design library, Zroute checks and fixes them by default.  echo $ANTENNA_RULES_FILE source $ANTENNA_RULES_FILE  

2. Set the Zroute antenna options.  set_route_zrt_detail_options -default_diode_protection 0.5

8. Check which vias will be used for redundant via insertion.  Use the 

define_zrt_redundant_vias command to customize.    insert_redundant_vias –list_only 

Page 18: Zroute Training Lab v1 0

9. Enable redundant via insertion for rest of the flow so that redundant vias are inserted after ECO routing each time it is run.  set_route_zrt_common_options \ -post_detail_route_redundant_via_insertion medium

10. Route the design.  route_opt -initial_route_only

11. Review the log to see the redundant via rate.    The following is an example report:  Redundant via conversion report: -------------------------------- Total optimized via conversion rate = 84.66% (88358 / 104367 vias) Layer VIA = 74.73% (33116 / 44314 vias) Weight 1 = 74.73% (33116 vias) Un-optimized = 25.27% (11198 vias) Layer VIA2 = 90.85% (43243 / 47600 vias) Weight 1 = 90.85% (43243 vias) Un-optimized = 9.15% (4357 vias) Layer VIA3 = 95.47% (8713 / 9126 vias) Weight 1 = 95.47% (8713 vias) Un-optimized = 4.53% (413 vias) Layer VIA4 = 99.06% (2642 / 2667 vias) Weight 1 = 99.06% (2642 vias) Un-optimized = 0.94% (25 vias) Layer VIA5 = 97.58% (644 / 660 vias) Weight 1 = 97.58% (644 vias) Un-optimized = 2.42% (16 vias) Total double via conversion rate = 84.53% (88226 / 104367 vias) Layer VIA = 74.51% (33018 / 44314 vias) Layer VIA2 = 90.82% (43229 / 47600 vias) Layer VIA3 = 95.26% (8693 / 9126 vias) Layer VIA4 = 99.06% (2642 / 2667 vias) Layer VIA5 = 97.58% (644 / 660 vias)

 12. Report the redundant via rate by layer. 

 report_design_physical -all -verbose

Page 19: Zroute Training Lab v1 0

13. Perform postroute optimizations.  route_opt -skip_initial_route

14. Report the redundant via rate by layer.  report_design_physical -all -verbose

15. Generate the preliminary critical area reports. You would normally use a text editor to view the ./output_heatmap file, but here we will rename the files.  report_critical_area -fault_type short sh mv output_heatmap caa.short.init.txt report_critical_area -fault_type open sh mv output_heatmap caa.open.init.txt  

16. Spread wires to help reduce shorts.  spread_zrt_wires  

17. Widen wires to help reduce opens.  widen_zrt_wires  

18. Regenerate the critical area reports to get the final reports.  report_critical_area -fault_type short sh mv output_heatmap caa.short.after_widen.txt report_critical_area -fault_type open sh mv output_heatmap caa.open.after_widen.txt

19. Compare one of the critical area reports by using the summary at the top.  For example,   

Critical Area     Critical Area As   layer   in sq. micron     %% of Chip Area   ‐‐‐‐‐   ‐‐‐‐‐‐‐‐‐‐‐‐‐     ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐     m1     11346.025            2.029     m2     6226.064              1.114     m3     7427.338              1.329     m4     1724.600              0.308     m5     2921.103              0.523 

Page 20: Zroute Training Lab v1 0

    m6     1415.833              0.253 

If you sum these up, there is 5.538% critical area on the design for the particular check run.  

20. Fix the remaining antenna violations, if any,  the next time you run routing.  set DIODE_NAMES adiode set_route_zrt_detail_options \ -diode_libcell_names $DIODE_NAMES \ -insert_diodes_during_routing true  

21. Insert filler cells (with and without metal).  set FILLER_CELL_METAL "feedth9 feedth3" set FILLER_CELL "feedth" ##B-2008.09-SP2 Flow – Insert filler cells with metal insert_stdcell_filler -cell_with_metal $FILLER_CELL_METAL \ -connect_to_power VDD -connect_to_ground VSS ##Insert filler cells without metal insert_stdcell_filler -cell_without_metal $FILLER_CELL \ -connect_to_power VDD -connect_to_ground VSS

22. Perform final timing cleanup.  route_opt -incremental -size_only  

23. Verify the routing.  verify_zrt_route  

24. Report the design summary.  report_design_physical -all -verbose  

25. Exit the lab.  quit

 

Page 21: Zroute Training Lab v1 0

 LAB 8 

Including Shielding With Zroute 

zroute_shielding.tcl 

The purpose of this lab is to show the shielding flow. The lab uses clock tree synthesis with ICGR and shields one of the clock nets.  The clock net is shielded after clock routing and before signal routing.  This flow maximizes the shielding rate.  Alternatively, you can shield the net after signal routing.  In that case, the shielding rate will be lower, but routing DRC closure will be easier.  

1. Start IC Compiler and source the icc_setup.tcl file.  % icc_shell –f icc_setup.tcl | tee –i zroute_clk_routing_with_shielding.log 

 The icc_setup.tcl file defines the timing library, Milkyway design library, TLUPlus settings, and other setup values, including variables used in the script.  

2. Open the library, copy the starting cell, and open it. 

open_mw_lib orca_lib.mw copy_mw_cel –from place_opt_icc \ –to zroute_clock_routing_with_shielding open_mw_cel zroute_clock_routing_with_shielding

 

3. Set the operating conditions.  source icc_scripts/set_operating_conditions.tcl  

4. Enter the clock tree synthesis setup.  set_clock_uncertainty 0.1 [all_clocks] set_clock_tree_options -target_skew 0.1 set_clock_tree_exceptions \ -stop_pins {I_SDRAM_TOP/I_SDRAM_IF/sd_mux_*/S} reset_clock_tree_references set_clock_tree_references -references $ICC_CTS_REF_LIST

Page 22: Zroute Training Lab v1 0

5. Define the routing rules for most clocks.  remove_routing_rules -all define_routing_rule double_spacing \ -default_reference_rule \ -spacings {METAL3 0.6 METAL4 0.8 METAL5 1.2 METAL6 1.4} set_clock_tree_options -routing_rule double_spacing \ -clock_trees "SD_DDR_CLK SDRAM_CLK SYS_CLK PCI_CLK" \ -layer_list $ICC_CTS_LAYER_LIST \ -use_default_routing_for_sinks 1

 6. Define the shielding rules for SYS_2x_CLK. 

 define_routing_rule \ clock_shield -default_reference_rule \ -shield_spacings {METAL5 0.4 METAL6 0.46} \ -shield_widths {METAL5 0.4 METAL6 0.44} set_clock_tree_options -routing_rule clock_shield \ -clock_trees "SYS_2x_CLK" -layer_list "METAL5 METAL6" \ -use_default_routing_for_sinks 1

 7. Run clock tree synthesis with ICGR during clock tree optimization. 

 set_delay_calculation -clock_arnoldi clock_opt -only_cts -no_clock_route  

8. Save the design.  save_mw_cel -as clock_opt_cts_icc  

9. See Lab 6 for timing optimization flow after clock tree synthesis.  

10. Specify Zroute as the router for embedded routing commands.  set_route_mode_options -zroute true  

11. (Optional) Enable multi‐threading. (See Lab 2 for more details.)  set_host_options -max_cores 2   

Page 23: Zroute Training Lab v1 0

12. Route the clocks using the result from ICGR.  route_zrt_group -all_clock_nets -max_detail_route_iterations 10 \ -reuse_existing_global_route true

13. Set more accurate delay calculation with only the clocks routed.  set_delay_calculation -clock_arnoldi  

14. Perform clock shielding for the SYS_2x_CLK net before signal routing. The shielding rate is higher, but later DRC convergence might be tougher.  create_zrt_shield  

15. Set incremental shielding options.  set_route_zrt_detail_options -reshield_rerouted_nets reshield  

16. Verify the routing.  verify_zrt_route -open_net false -antenna false  

17. Save the design.  save_mw_cel –as zroute_clock_routing_with_shielding  

18. Check the skew.  report_clock_tree  

19. Report the design summary.  report_design_physical -all -verbose  

20. Exit the lab.  quit