Wednesday, November 25, 2015

Performing Multicorner Clock Tree Optimization

ICC can perform multicorner CTS to achieve the best QoR for your designs by processing various scenario corners simultaneously. Running multicorner clock tree optimization automatically enables the integrated clock global router and the Arnoldi delay analysis (-clock_arnoldi)  to obtain the best clock network correlation and to ensure accurate insertion delay and skew.

To run multicorner clock tree optimization, you see the following cmds:
icc_shell> set_scenario_options -scenarios [list_of_all_scenarios] \
           -cts_mode true -cts_corner [min \max \min_max \ none ]

icc_shell> compile_clock_tree
icc_shell> optimize_clock_tree


Specifying Corners Using Multicorner -Multimode Scenarios

You can use multicorner-multimode scenarios to specify clock tree optimization corners. Each multicorner-multimode scenario has two corners: One maximum and one minimum corner.
For each corner, you define an operating condition and parasitic information files,  using the 
set_operating_conditions cmd and the set_tlu_plus_files cmd respectively. For each scenario, you associate the cell libraries of both maximum and minimum corners, using the set_scaling_lib_group cmd,  not the set_min_library cmd. The set_min_library cmd, which associates a maximum library with a minimum library across all scenarios, is not scenario-specific; therefore, you use the 
set_scaling_lib_group cmd instead. The following shows an example of one scenario declaration:
icc_shell>define_scaling_lib_group -name slow $lib_slow
icc_shell>define_scaling_lib_group -name fast $lib_fast
icc_shell> create_scenario scn1
icc_shell> set_operating_conditions -max $opcond_slow -min $opcond_fast
icc_shell>set_tlu_plus_files -max_tluplus $tlu_high_r \
       -min_tluplus $tlu_low_r -tech2itf $tlu_map
icc_shell> set_scaling_lib_group -max slow -min fast

Specifying Constraints for Multicorner Optimization
ICC applies the same design rule constraints that CTS uses to all corners that you specify during multicorner CTS except the follwoing:
1. Float Pin constraints
2. Skew target goals

Setting Float Pin Constraints
When you specify a float pin value on the leaf node of a clock tree, you must scale the float pin value to apply to each scenario corner. However, achieving a single float pin phase delay across all corners is impossible because cell delays differ in speed. The float pin values that you specify using the set_clock_tree_exceptions cmd apply only to the corners of the default CTS scenario in which the CTS constraints are specified.

For other corners, specify float pin values by using one of the following two ways:
1)Scale float pin values based on the intrinsic speed of cells in different corners by using ICC automatic capability. For example, if the cells of a corner have a speed twice as fast as that of the default CTS scenario, ICC scales down the float pin values that you specify for the default CTS scenario by half for the corner.
2) Use the set_clock_tree_exceptions cmd with the -max_float_pin_scale_factor and the
 -min_float_pin_scale_factor options to specify float pin value scaling factors. You can set the scaling factors on a per scenario basis as shown in the follwoing example:
icc_shell>current_scenario scn1 
icc_shell> set_clock_tree_exceptions \
     -max_float_pin_scale_factor 1.0 -min_float_pin_scale_factor 0.6
icc_shell> current_scenario scn2
icc_shell> set_clock_tree_exceptions \
     -max_float_pin_scale_factor 0.9 -min_float_pin_scale_factor 0.5

Setting Skew Target Goals
By default, you specify the same skew target goal for all corners using the following cmd:
icc_shell> set_clock_tree_options -target_skew 0.050

You can specify various skew target goals for different corners in a multicorner-multimode design as follows:
icc_shell> set_clock_tree_optimization_options -corner_target_skew \
     "scn1:max=0.100 scan_cts:max=0.050 scn2:min=0.070"

Generating Multicorner Optimization Report
To generate a clock tree report for a particular scenario corner, you use the current_scenario cmd to set your current scenario before running the report_clock_tree cmd. For example, to report clock trees of scn1, scn2, and scn3 scenarios, enter the following:
icc_shell> set_scenario_options -scenarios scn1 \
    -cts_mode true -cts_corner min
icc_shell> current_scenario scn1
icc_shell> report_clock_tree
icc_shell> report_clock_tree -op min
icc_shell> set_scenario_options -scenarios scn2 \
       -cts_mode true -cts_corner min
icc_shell> current_scenario scn2
icc_shell> report_clock_tree
icc_shell> report_clock_tree -op min
icc_shell> set_scenario_options -scenarios scn3 \
    -cts_mode true -cts_corner min
icc_shell> current_scenario scn3
icc_shell> report_clock_tree
icc_shell> report_clock_tree -op min

Note:
When running the optimize_clock_tree cmd during multicorner CTS, ICC automatically sets the clock_arnoldi option.

Because the report_clock_tree cmd requires that you define clocks in the scenario that you want to report, you should define clocks in every scenario when using multicorner clock tree optimization.
icc_shell>create_scenario scn1
icc_shell> set_operating_conditions -max $opcond1
icc_shell>set_tlu_plus_files -max_tluplus $tlu1 -tech2itf_map $tlu_map
icc_shell>create_clock -name clock -period 4 clock
icc_shell>create_scenario scn2
icc_shell> set_operating_conditions -max $opcond2
icc_shell>set_tlu_plus_files -max_tluplus $tlu2 -tech2itf_map $tlu_map
icc_shell>create_clock -name clock -period 4 clock











       



No comments:

Post a Comment