Flow Setup
Flow Setup
Flow Setup
Contents
1
11
Overview
11
11
12
12
13
13
Flow Variations
13
14
15
TCL Variables
15
15
16
Describing setup.tcl
17
18
19
21
22
22
25
25
30
30
31
October 2014
Defining OpenAccess
33
35
Miscellaneous Variables
36
Describing edi_config.tcl
37
38
39
39
40
41
43
45
46
47
48
Reporting Power
50
51
52
55
58
59
60
61
63
63
63
66
67
Example 1:
67
Example 2:
68
Example 3:
69
October 2014
70
70
71
73
74
75
77
79
79
83
84
86
86
88
90
92
94
96
98
100
103
104
105
106
109
112
114
116
119
121
October 2014
123
124
126
Completing Setup
129
132
Code Generator
132
132
Advantages
133
TCL Command
135
135
Usage
136
Execution Tips
137
138
138
Example Scripts
139
SINGLE STEP
139
STEP RANGE
139
ALL STEPS
140
141
Results
144
144
145
Error.Warning Messages
148
149
149
151
151
151
152
152
October 2014
153
Additional Input
154
154
Describing lp_config.tcl
155
159
159
162
162
162
163
164
165
166
166
Define setup and hold Analysis Views and Enable the Default Views
168
168
169
169
CPF File_3a
170
post_cts_tcl_3a
195
post_init_tcl_3a
196
post_place_tcl_3a
200
post_prects_tcl_3a
202
pre_cts_tcl_3a
203
pre_init_tcl_3a
203
pre_place_tcl_3a
203
211
Hierarchical Flow
211
211
212
October 2014
212
212
213
214
215
215
216
217
217
218
222
222
223
224
225
225
226
226
228
228
10
243
243
243
243
October 2014
243
October 2014
10
Overview
In this section we cover a basic introduction to how foundation flows are implemented in EDI System.
Introduction to Foundation Flow
Foundation Flow Overview Diagram
Before You Begin
Input for Running Foundation Flows
Additional Inputs for Running Foundation Flows
Flow Variations
About the Flow Documentation
11
October 2014
12
Flow Variations
Based on the timing model you use, there are three variations of the flat implementation flow:
MMMC: the flow uses the MMMC timing throughout the flow. You may use the MMMC flow in designs that require
October 2014
13
October 2014
14
TCL Variables
In this section we cover the Tool Command Language (Tcl) variables and descriptions for
foundation flows.
The section covers:
Installing Foundation Flows
Starting Foundation Flows
15
generateFFSetupFile
3. This will generate the following files: setup.auto.tcl and edi_config.auto.tcl
4. Respectively copy to setup.tcl and edi_config.tcl.
5. (optional) Review and edit the files, if necessary.
Or: Copy the template files from TEMPLATES/EDI and edit them manually.
The following Tcl scripts are described in this guide:
Describing setup.tcl
Defines the variables to use in the flow. This script is unique for each design and is the only
script you must edit. It is the source of all flow input, and is a superset of the configuration file
that includes design data, library information, and flow control.
Describing edi_config.tcl
This is the EDI Foundation Flow configuration file. It contains the necessary flow options to
drive the Flat and/or Hierarchical implementation flows. This file is optional and is intended to
support design projects where the setup.tcl is shared between team members and
defines common design data such as library, timing, and technology information and
the edi_config.tcl is a local file that contains flow related information that is unique to
a particular block or run.
Example Settings for Each Script
Contains the Metal Fill rules.
See also,
Describing setup.tcl
Describing edi_config.tcl
Example Settings for Each Script
October 2014
16
Describing setup.tcl
Defines the variables to use in the flow. This script is unique for each design and is the only script
that is required. It contains variable settings that define the necessary information to drive the
foundation flow; including design data, library information, and flow control.
The following variables are defined in setup.tcl. They are put into an array named vars.
To use them enter:
Note: The vars in the column Variable Name in italics are actually placeholders and can be
substituted with your own values. For example in rc_max,cap_table the value rc_max is a
placeholder and can be a value you want to specify in cap_table.
You can also specify a view_definition_tcl file in place of the MMMC vars. For this, you
must define either of the following:
vars(view_definition_tcl)
OR
October 2014
17
Value
Type
Usage Description
fp_file
string
def_files
name
Specify the name of the initial DEF file. The fp_file is the
alternate recommended file.
cts_spec
list
max_route_layer
integer
process
integer
scan_def
name
dbs_dir
string
fp_tcl_file
text
fp_tcl_proc
text
rpt_dir
string
<step>,rpt_dir
string
script_root
string
design
name
October 2014
18
generate_tracks
boolean
netlist
string
version
integer
cell_check_early
float
cell_check_late
float
honor_pitch
boolean
design_root
name
critical_range
float
October 2014
Value
Type
19
Usage Description
set vars(placement_based_ptn) 1
float
float
set vars(insert_feedthrough) 1
float
set vars(abutted_design) 1
set
vars(use_proto_net_delay_model)
1
float
Specify the option to use picosecond per micro model for quick
timing estimation.
Default: 0
float
set vars(use_flexmodels) 1
float
set vars(flexmodel_as_ptn) 1
float
October 2014
20
Value
Type
Usage Description
lef_files
list
library_sets
list
Specify one or more library set names for slow and fast
processes. The library_sets must be one of the Constraint
Modes and a list member.
enable_ldb
list
library_set
,timing
list
library_set ,si
list
library_set,aocv
list
October 2014
21
Value Type
set vars(library_sets)
slow fast
set vars(slow,timing)
libs/slow.lib libs/rams_slow.lib
set vars(fast,timing)
libs/fast.lib libs/rams_fast.lib
set vars(slow,si)
libs/slow.cdb
set vars(fast,si)
libs/fast.cdb
Value
Type
Usage Description
rc_corners
list
rc_corner ,cap_table
list
rc_corner ,T
list
rc_corner ,qx_tech_file
list
October 2014
22
rc_corner ,qx_lib_file
list
rc_corner ,qx_conf_file
list
rc_corner , xcap_factor
list
rc_corner , scale_factor
float*
rc_corner
,pre_route_res_factor
float
rc_corner
,pre_route_clk_res_factor
float
rc_corner
,pre_route_cap_factor
float
October 2014
23
rc_corner
,pre_route_clk_cap_factor
float
rc_corner
,post_route_res_factor
float
rc_corner
,post_route_clk_res_factor
float
rc_corner
,post_route_cap_factor
float
rc_corner
,post_route_clk_cap_factor
float
rc_corner
,post_route_clk_res_factor
float
rc_corner
,post_route_xcap_factor
float
October 2014
24
file
rc_corner ,scale_tcl
Note: ** For backward compatibility, the script retains both the variables.
Also see Example of RC Corner Information
For other setup.tcl variables, see:
Defining Floorplanning, Scan, CTS, SDC, and Routing Layer
Defining Library and Technology File
Defining RC Corner Information
Defining Delay Corner Information
Defining Constraint Modes and Analysis Views
Defining OpenAccess
Mailing Results and Updates
Miscellaneous Variables
For edi_config.tcl variables see Describing edi_config.tcl
For examples see Example Settings for Each Script
Value Type
set vars(rc_corners)
worst best
set vars(worst,cap_table)
tech/worst/capTable
set vars(worst,T)
125
set vars(best,cap_table)
tech/best/capTable
set vars(best,T)
October 2014
25
Variable Name
Value
Type
Usage Description
delay_corners
list
delay_corner ,library_set
string
delay_corner ,rc_corner
string
Delay corner RC
corner name
delay_corner ,derate_factor
float
Specify derating
factors*.
Note: The valid factors
are listed below this
table.
delay_corner ,cell_worst_late
float
delay_corner ,cell_worst_early
float
delay_corner ,cell_best_late
float
delay_corner ,cell_best_early
float
delay_corner ,wire_worst_late
float
delay_corner ,wire_worst_early
float
delay_corner ,wire_best_late
float
delay_corner ,wire_best_early
float
October 2014
26
float
delay_corner ,derate_tcl
delay_corner, cell_check_early
float
delay_corner, cell_check_late
float
set
vars(delay_corner,late_opcond_library)
list
set
vars(delay_corner,early_opcond_library)
list
set vars(delay_corner,late_opcond)
list
October 2014
27
set vars(delay_corner,early_opcond)
list
*Derating Factors
The valid derating factors are described below:
Variable Name
Usage Description
data_cell_late
data_cell_early
data_net_late
data_net_early
clock_cell_late
clock_cell_early
clock_net_late
clock_net_early
set_timing_derate
28
Usage Description
set vars(library_sets)
set vars(delay_corners)
set vars(power_domains)
set vars(dc,power_domains)
set
vars(dc,ls,power_domains)
Support for Power Domain - Per Delay Corner AND Per Library Set
Variable Name
Usage Description
set vars(library_sets)
set vars(delay_corners)
set vars(power_domains)
set
vars(dc1,pd1,early_library_set)
set
vars(dc1,pd1,late_library_set)
set vars(dc2,pd2,library_set)
October 2014
29
Value Type
set vars(worst,pre_route_cap_factor)
1.08
set vars(worst,pre_route_res_factor)
1.12
30
Value
Type
Usage Description
constraints_modes
list
constraint_mode
,pre_cts_sdc
list
constraints_mode
,post_cts_sdc
list
constraints_mode
,incr_cts_sdc
list
analysis_views
list
analysis_view
,delay_corner
string
analysis_view
,constraint_mode
setup_func
setup_analysis_views
list
hold_analysis_views
list
default_setup_view
list
default_hold_view
list
step ,active_setup_views
list
step ,active_hold_views
list
step
,setup_analysis_views
list
step
,hold_analysis_views
list
October 2014
31
Value Type
set vars(constraint_modes)
func_mode test_mode
set vars(func_mode,pre_cts_sdc)
sdc/functional.sdc
set vars(test_mode,pre_cts_sdc)
sdc/test_mode.sdc
set vars(func_mode,post_cts_sdc)
sdc/postcts.sdc
set vars(delay_corners)
slow_worst fast_best
set vars(slow_worst,library_set)
slow
set vars(slow_worst,rc_corner)
worst
set vars(fast_best,library_set)
fast
set vars(fast_best,rc_corner)
best
set vars(slow_worst,clock_cell_early)
0.95
set vars(fast_worst,clock_cell_late)
1.05
October 2014
32
set vars(analysis_views)
func_slow_worst
func_fast_best
test_slow_worst
test_fast_best
set
vars(func_slow_worst,delay_corner)
slow_worst
set
vars(func_slow_worst,constraint_mode)
func_mode
set vars(func_fast_best,delay_corner)
fast_best
set
vars(func_fast_best,constraint_mode)
func_mode
set
vars(test_slow_worst,delay_corner)
slow_worst
set
vars(test_slow_worst,constraint_mode)
test_mode
set vars(test_fast_best,delay_corner)
fast_best
set
vars(test_fast_best,constraint_mode)
test_mode
set vars(setup_analysis_view)
func_slow_worst
test_slow_worst
set vars(hold_analysis_view)
func_fast_best
test_fast_best
set vars(active_setup_views)
func_slow_worst
set vars(active_hold_views)
func_fast_best
test_fast_best
set vars(default_setup_view)
func_slow_worst
set vars(default_hold_view)
func_fast_best
Defining OpenAccess
October 2014
33
Defining OpenAccess
Defining OpenAccess
Varible Name
Value
Type
Usage Description
oa_ref_lib
string
oa_abstract_name
name
oa_layout_name
string
dbs_format
string
netlist_type
string
oa_design_lib
string
oa_design_cell
strings
oa_design_view
strings
oa_fp
string
When running the flow using OpenAccess libraries there are two ways in which to initalise the flow.
With a netlist and floorplan or with an already initialised OA view.
If the design database needs to interoperable with virtuoso it may be necessary to use the
setOaxMode command. This should be included in a plug script.
For other setup.tcl variables, see:
October 2014
34
Value Type
Usage Description
mail ,to
text
mail ,steps
text
Miscellaneous Variables
October 2014
35
Miscellaneous Variables
Variable Name
Value
Type
Usage Description
flat
[off,
partial,
full]
verbose
boolean
tags,verbose
boolean
tags,verbosity_level
[low |
high]
log_dir
name
plug_dir
string
skew_buffers
list
set
vars(enable_flexilm)
boolean
October 2014
36
Describing edi_config.tcl
This is an optional configuration file intended to support design projects where the setup.tcl is
shared between team members and defines common design data such as library, timing, and
technology information and the edi_config.tcl is a local file that contains flow related
information that is unique to a particular block or run.
The following variables are put in an array named vars and defined in edi_config.tcl.
To use them enter:
37
Value Type
Usage Description
relative_c_thresh
float
total_c_thresh
float
coupling_c_thresh
float
qrc_config_file
file
qrc_layer_map
file
qrc_library
directory
38
Value Type
Usage Description
delta_delay_threshold
float
Value Type
Usage Description
power_nets
list
ground_nets
list
October 2014
39
Value
Type
Usage Description
distribute
custom,script
script
distribute , queue
string
distribute , resource
string
distribute , args
string
distribute,
host_list
list
distribute_timeout
seconds
October 2014
40
local_cpus
integer
remote_hosts
integer
cpus_per_remote_host
integer
October 2014
Example Value
41
set vars(distribute)
custom
set vars(local_cpus)
set vars(remote_hosts)
set vars(custom,script)
Example 2
Variable Name
Example Value
set vars(distribute)
lsf
set vars(local_cpus)
set vars(remote_hosts)
set vars(lsf,queue)
nx64
set vars(lsf,resource)
<resource string>
The execution host on which you want to run the job.
set vars(lsf,args)
42
Value Type
Usage Description
cpf_timing
boolean
cpf_file
cpf_file_name
resize_shifter_and_iso_insts
boolean
opconds
list
opcond ,voltage
voltage
Specify voltage
opcond ,temperature
temp
Specify temperature
opcond ,process
process scale
factor
Specify process
opcond ,library_file
file
cpf_isolation
boolean
cpf_keep_rows
boolean
cpf_level_shifter
boolean
cpf_power_domain
boolean
cpf_power_switch
boolean
cpf_state_retention
boolean
October 2014
43
The tcl file view_definition.tcl will be created to define RC Corners and to update the
Delay Corners.
2. Variables vars(cpf_file) + !vars(cpf_timing) will not set
the init_cpf_file but will set the init_mmmc_file. The variable init_design will
be executed which means that the timing will be derived from mmmc_file.
44
Value
Type
Usage Description
use_list
list
dont_use_list
list
size_only_file
list
dont_use_file
file
clock_gating_cells
list
jtag_cells
list
cts_cells
list
jtag_rows
integer
spare_cells
list
filler_cells
list
delay_cells
list
tie_cells
list
gds_files
list
gds_layer_map
file
buffer_name
list
buffer_tie_assign
boolean
assign_buffer
boolean
October 2014
45
Value
Type
Usage Description
tie_cells
list
filler_cells
list
tie_cells,
max_distance
vars
tie_cells,
max_fanout
vars
October 2014
46
Value
Type
Usage Description
welltaps
name
welltaps ,checkerboard
boolean
welltaps ,max_gap
float
welltaps
,cell_interval
float
welltaps ,verify_rule
float
October 2014
47
pre_endcap
cell_name
post_endcap
cell_name
October 2014
Value
Type
Usage Description
48
domain
,welltaps
name
domain
,checkerboard
boolean
domain
,max_gap
float
domain
,cell_interval
float
domain
,pre_endcap
cell_name
domain
,post_endcap
cell_name
October 2014
49
Reporting Power
Reporting Power
Variable Name
Value
Type
Usage Description
activity_file
string
activity_file_format
enum
report_power
boolean
power_analysis_view
list
October 2014
50
Value
Type
Usage Description
ilm_non_sdc_file
ilm
ilm_list
ilm
lef_file
ilm
ilm_dir
ilm
pre_cts_ilm_sdc
mode
enable_dlm
true |
false
October 2014
51
Value
Type
Usage Description
activity_file
string
activity_file_format
enum
report_power
boolean
power_analysis_view
list
enable_ocv
enum
enable_cppr
enum
enable_ss
enum
enable_si_aware
boolean
October 2014
52
fix_hold
enum
catch_errors
string
save_on_catch
string
antenna_diode
string
save_constraints
string
abort
boolean
enable_pac
boolean
flow
MMMC
report_run_time
boolean
useful_skew
boolean
postroute_spread_wires
boolean
signoff_extraction_effort
string
postroute_extraction_effort
enum
hier_flow_type
October 2014
53
enable_aocv
rc_corner,atf_file
delay_corner,power_domains
absolute_lib_path
relative_path
cts_engine
enable_celtic_steps
setAnalysisMode -aocv
true |
false
October 2014
54
Default
place_io_pins
false
clock_gate_aware
true
congestion_effort
auto
in_place_opt
false
no_pre_place_opt
false
place_opt_design
false
Default
high_timing_effort
false
In hierarchical flow, the final full flat timing analysis is done with the original constraints and it
does not take into account the block level constraint files (that may have been modified). Use
-preserveAssertions {true | false} to avoid issues related to buffer removal. It may be
beneficial to run the first pass of hold fixing with setup degradation disallowed to see how
many hold violations are left, and then check if the violations are real and decide how to
October 2014
55
proceed.
To enable leakage power optimization throughout the flow, use leakagePowerEffort
{low | high}. An high effort may impact timing and will have an impact on run-time.
For pre-route optimization, set critical range to the percentage of sub-critical paths to be
optimized, for example, 0.2 or 0.5.
Variable Name
Default
preserve_assertions
false
leakage_power_effort
none
dynamic_power_effort
none
fix_hold
true
fix_hold_ignore_ios
false
fix_hold_allow_tns_degradation
true
The high effort hold fixing should improve the quality of results at the expense of runtime.
Set CTS options; the recommendation is to route the clock nets during CTS. If some signals
should not be routed, set the clock nets option to false and use RouteClkNet true in the
spec file.
Variable Name
Default
Usage Description
route_clock_nets
true
clock_eco
false
clock_gate_clone
false
Set the routing options. The recommended options for multicut via insertion and litho driven
routing incur run-time penalties but yield advantages so they are included here. The
routeWithLithoDriven option is recommended for 45 nm but may also be used at
65 nm.
October 2014
56
Default
Usage Description
multi_cut_effort
low
litho_driven_routing
false
in_route_opt
false
Set the noise analysis options. Existing CeltIC users should preserve existing settings if
applicable. Consult the SI Analysis application note for more information on these settings.
You can get the application note from your Cadence Support Representative.
Variable Name
Default
Usage Description
delta_delay_threshold
undefined
celtic_settings
undefined
total_c_thresh
undefined
relative_c_thresh
undefined
coupling_c_thresh
undefined
si_analysis_type
enum
acceptable_wns
float
October 2014
57
Value Type
Usage Description
cts_inverter_cells
list
cts_buffer_cells
list
clock_gate_cells
list
cts_use_inverters
boolean
update_io_latency
boolean
October 2014
58
cts_target_skew
float
cts_target_slew
float
cts_io_opt
enum
cts_effort
enum
Value Type
Usage Description
clk_tree_top_layer
string
clk_tree_bottom_layer
string
clk_leaf_top_layer
string
clk_leaf_bottom_layer
string
clk_tree_ndr
string
clk_leaf_ndr
string
clk_tree_shield_net
string
59
Description
cts_engine
ccopt_executable
cts_buffer_cells
cts_inverter_cells
cts_use_inverters
cts_target_slew
cts_target_skew
cts_io_opt
cts_effort
pre_ccopt_tcl
post_ccopt_tcl
clk_tree_top_layer
clk_tree_bottom_layer
clk_tree_ndr
clk_leaf_top_layer
clk_leaf_bottom_layer
cts_leaf_ndr
October 2014
60
clk_tree_shield_net
clock_gate_cells
update_io_latency
vars(congestion_effort)
vars(clock_gate_aware)
vars(place_io_pins)
vars(in_place_opt)
vars(preserve_assertions)
vars(leakage_power_effort)
vars(dynamic_power_effort)
vars(clock_gate_aware)
vars(critical_range)
PreCTS
October 2014
vars(process)
vars(preserve_assertions)
vars(leakage_power_effort)
vars(dynamic_power_effort)
vars(clock_gate_aware)
vars(critical_range)
vars(useful_skew)
61
- vars(skew_buffers)
CTS
vars(process)
vars(route_clock_nets)
vars(litho_driven_routing)
vars(multi_cut_effort)
PostCTS
- vars(process)
- vars(enable_cppr)
- vars(clock_gate_clone)
See Sample Script - Code Generator for an example implementation.
October 2014
62
Value
Type
Usage Description
always_source_tcl
string
pre_init_tcl
string
October 2014
63
post_init_tcl
string
pre_place_tcl
string
place_tcl
string
post_place_tcl
string
pre_prects_tcl
string
post_prects_tcl
string
cts_tcl
string
pre_cts_tcl
string
post_cts_tcl
string
pre_postcts_tcl
string
post_postcts_tcl
string
pre_postcts_hold_tcl
string
post_postcts_hold_tcl
string
The content of the file will be sourced after before postCTS Hold Fixing
October 2014
64
pre_route_tcl
string
post_route_tcl
string
pre_postroute_tcl
string
post_postroute_tcl
string
pre_postroute_hold_tcl
string
post_postroute_hold_tcl
string
pre_postroute_si_tcl
string
post_postroute_si_tcl
string
pre_postroute_si_hold_tcl
string
post_postroute_si_hold_tcl
string
postroute_spread_wires
boolean
pre_signoff_tcl
string
post_signoff_tcl
string
metal_fill_tcl
string
final_always_source_tcl
string
October 2014
65
metalfill_tcl
string
metalfill
string
pre_model_gen_tcl
string
pre_assign_pin_tcl
string
Below is a list of commands that can be tagged with the following tags:
October 2014
66
Example 1:
set vars(prects,opt_design,post_tcl) file
set var(flat) full
...
October 2014
67
saveDesign $vars(dbs_dir)/prects1.enc
...
By setting, vars(flat) to full, the contents of the tag script get imported into the run script to
create a fully flattened script. Otherwise, there would simply be source file.
Example 2:
By default, time_design for place, cts, and route are skipped. If you want to enable timing
reports for any of them, just set vars( step ,time_design,skip) true.
set vars(cts,time_design,skip)
true
...
createClockTreeSpec
...
October 2014
68
Example 3:
Steps to create directories inside the RPT directory where reports can be appended while running
the flow:
Create a final_always_source_tcl plug-in:
October 2014
69
October 2014
70
This command will start the Encounter Digital Implementation System in the graphical mode.
Choose Flow - Foundation Flow Wizard.
Note: The wizard allows you to start from scratch, from the current design in memory, or from an existing
setup.tcl. In this section we will discuss starting from scratch.
October 2014
71
October 2014
72
Start from
Scratch
Choose this option to automatically configure the Wizard. You will still need to select
files and enter names of files but the background process will take care of most of the
configurations. In this section we will discuss starting from scratch.
Load the
Design
Setup from
Memory
Choose this option if you have already created a setup.tcl file or the system has it in
memory. Click Load.
Load
Previously
Installed
Script
Click the icon on the field to select a file from the system and to modify it as you go
along creating the configurations to save in setup.tcl.
Continue
October 2014
73
You can also save the script by clicking the Save button top right. Choose where you want to save the
different scripts: Setup, EDI Configure and LP Configure.
October 2014
74
October 2014
75
Displays the type of node you specified. Click Edit to go back to the Library form
and change value.
Technology LEF
Displays the LEF file you specified. Click Edit to go back to the Library form and
change value.
October 2014
76
Physical LEF
Displays the LEF file you specified. Click Edit to go back to the Library form and
change value.
See also,
Setting Up the Library Information
77
78
Back
Continue
See also,
Adding Library to the Flow - Summary
October 2014
79
80
No
Back
Click to move to the previous screen and change any entry, if needed.
Continue
Notes
October 2014
81
Notes
During the course of this wizard you may need to find files from your system. When you click ... the
following type of screen will show up.
Displays the relevant files and folders in the system. You can browse and select the other
directories.
Add
Select the file that you need and click Add. The right pane opens. Select the file and click
<<. The file is added to the left pane.
Delete
Filter
See also,
October 2014
82
October 2014
83
Setup Your Clock Tree Synthesis Constraints - Basic Fields and Options
Automatically by EDI Using the
Following Clock Cells
Back
Continue
October 2014
84
Displays the netlist you specified. Click Edit to go back to the Library form and
change value.
Floorplan
Displays the floorplan you specified. Click Edit to go back to the Library form and
change value.
October 2014
85
Clock
Tree
Displays the clock tree you specified. Click Edit to go back to the Library form and
change value.
See also,
Designing the Flow - Netlist
Designing the Flow - Clock Tree
Adding Design to the Flow - Summary
October 2014
86
87
Select Yes or No
Back
Continue
See also,
Timing the Flow - Timing
Timing the Flow - Library Set
Timing the Flow - RC Corner
Timing the Flow - Delay Corner
Timing the Flow - Constraint Mode
Timing the Flow - Analysis View
Reviewing the Timing Setup
October 2014
88
89
Use right mouse click to Add and once added, to Edit or Delete. The following
form opens File Menu > Add Library Set. This form will take you to further forms
where you make selections and then come back to the Wizard.
Back
Click to move to the previous screen and change any entry, if needed.
Continue
See also,
Timing the Flow - Timing
Timing the Flow - Library Set
Timing the Flow - RC Corner
Timing the Flow - Delay Corner
Timing the Flow - Constraint Mode
Timing the Flow - Analysis View
Reviewing the Timing Setup
October 2014
90
91
Use right mouse click to Add and once added, to Edit or Delete. The following
form opens File Menu > Add RC Corner. This form will take you to further forms
where you make selections and then come back to the Wizard.
Back
Click to move to the previous screen and change any entry, if needed.
Continue
See also,
Timing the Flow - Timing
Timing the Flow - Library Set
Timing the Flow - RC Corner
Timing the Flow - Delay Corner
Timing the Flow - Constraint Mode
Timing the Flow - Analysis View
Reviewing the Timing Setup
October 2014
92
October 2014
93
Specify Delay
Corner(s) Using
the Matrix Table
Select the button to turn it On or OFF. When you click OFF the following form
opens File Menu > Add Delay Corner. This form will take you to further forms
where you make selections and then come back to the Wizard.
Back
Click to move to the previous screen and change any entry, if needed.
Continue
See also,
Timing the Flow - Timing
Timing the Flow - Library Set
Timing the Flow - RC Corner
Timing the Flow - Delay Corner
Timing the Flow - Constraint Mode
Timing the Flow - Analysis View
Reviewing the Timing Setup
October 2014
94
95
Use mouse right-click Add Constraint Mode and the form will take you
to File Menu > Add Constraint Mode where you make selections and
then come back to the Wizard.
Back
Click to move to the previous screen and change any entry, if needed.
Continue
See also,
Timing the Flow - Timing
Timing the Flow - Library Set
Timing the Flow - RC Corner
Timing the Flow - Delay Corner
Timing the Flow - Constraint Mode
Timing the Flow - Analysis View
Reviewing the Timing Setup
October 2014
96
97
Back
Continue
See also,
Timing the Flow - Timing
Timing the Flow - Library Set
Timing the Flow - RC Corner
Timing the Flow - Delay Corner
Timing the Flow - Constraint Mode
Timing the Flow - Analysis View
Reviewing the Timing Setup
October 2014
98
See also,
Timing the Flow - Timing
Timing the Flow - Library Set
Timing the Flow - RC Corner
October 2014
99
October 2014
100
101
The name of the file appears in a drop-down list, choose it or any other.
Do You Want to
Optimize Power
Specify the activity file if you have one and select it from the system. Else,
select No. (Default)
Do you want to
Generate Power
Reports?
Select Yes if you want to generate reports. Else, select No. (Default)
Specify the CPF file if you have MSO or PSV requirements and you can
additionally keep DEF rows. Else, select No. (Default)
Select from options if you want to commit certain sections of the CPF
files. This option is active if you specify a CPF file in the previous option.
Back
Click to move to the previous screen and change any entry, if needed.
Continue
October 2014
102
October 2014
103
Displays the name you specified for the power analysis view.
Optimize Power
Activity File
Report Power
CPF File
Edit
104
105
Back
Continue
See also,
Setting up the Tool - Setup
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
October 2014
106
107
Place IO Pins
Check the box to enable clock gate aware if you have clock gating
cells in your design
Select the file from a new screen that shows you the selected Hi/Lo
Cells cells in right hand folder. You can Add or Delete cells to the left
hand folder. Then click Apply
Select the file from a new screen that shows you the selected Filler
Cells cells in right hand folder. You can Add or Delete cells to the left
hand folder. Then click Apply
Select the file from a new screen that shows you the selected Well
Tap cells in right hand folder. You can Add or Delete cells to the left
hand folder. Then click Apply
Select the file from a new screen that shows you the selected JTAG
Cells in right hand folder. You can Add or Delete cells to the left
hand folder. Then click Apply
Select
Click to select the required file from a new screen that shows you the
selected cells in right hand folder. You can Add or Delete cells to the
left hand folder. Then click Apply.
See also,
Setting up the Tool - Placement
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
October 2014
108
October 2014
109
110
Back
Continue
See also,
Setting up the Tool - Optimization
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
October 2014
111
October 2014
112
113
Back
Continue
See also,
Setting up the Tool - CTS
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
October 2014
114
115
Back
Continue
See also,
Setting up the Tool - Route
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
October 2014
116
117
Back
Continue
See also,
Setting up the Tool - Signal Intergrity
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
118
119
Select the file from a Windows Explorer format which shows the files in
directories
Select the file from a Windows Explorer format which shows the files in
directories
Select the file from a Windows Explorer format which shows the files in
directories
Select the file from a Windows Explorer format which shows the files in
directories
Select the file from a Windows Explorer format which shows the files in
directories
List of GDS Files opens. Click >> to open right pane for you to browse
the exact file, select and Add.
The file and path shows up on the left pane. Provide a name for the GDS
File and click Close.
Back
Click to move to the previous screen and change any entry, if needed.
Continue
See also,
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
120
121
Number of Remote
Machines
Setup Distribute
Processing
Back
Click to move to the previous screen and change any entry, if needed.
Continue
See also,
Setting up the Tool - Multi-CPU
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
122
Custom
Local
October 2014
123
RSH
See also,
Setting up the Tool - Multi-CPU - Distributed Processing
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
October 2014
124
125
Optimize
CTS
Route
SI
DFM
Multi-CPU
Edit
See also,
Reviewing the Tool Setup
Setting up the Tool - Placement
Setting up the Tool - Optimization
Setting up the Tool - CTS
Setting up the Tool - Route
Setting up the Tool - Signal Intergrity
Setting up the Tool - Design For Manufacture (DFM)
Setting up the Tool - Multi-CPU
Setting up the Tool - Multi-CPU - Distributed Processing
Reviewing the Tool Setup
October 2014
126
127
Post-Route Optimization + Hold Fixing - Before PostRoute Optimization or After Post-Route Optimization
Back
Continue
October 2014
128
Completing Setup
The following screen appears:
October 2014
129
October 2014
130
October 2014
131
Code Generator
From this release, EDI system provides a code generator to enable users to quickly generate scripts
to load their design data, setup their timing environment, and execute the recommended
implementation flow from placement through signoff.
Note: Foundation Flow code generator generates EDI System 11.1 based scripts automatically. No
changes to setup.tcl are required. With this release, the design import command
init_design replaces the command loadConfig.
In this section we cover:
Introduction to Code Generator
Usage
Example Scripts
Results
Error.Warning Messages
October 2014
132
The foundation flow is in the SCRIPTS directory and the code generator is
SCRIPTS/gen_flow.tcl (symbolic link to gen_edi_flow.tcl).
To learn more on EDI System Code Generator follow these links:
Advantages
TCL Command
Command Line Options
Advantages
The following are the advantages of the Code Generator:
Through the Code Generator the scripts will be generated instead of being executed.
All flow will have the command sequence based on the user settings. A clean, flat script will
be generated for conditional code that is based on static user settings (for example,
setup.tcl).
All conditional code branches that require run time specific data will be generated as
conditionals (that is, they cannot be flattened).
For example, since analysis view can be altered via user plug-ins, checks must be made to
determine which corners are active:
October 2014
133
Type
system_info
Description
Reports system info of the host machine
vars(report_system_info)
source_file
file
source_plug
plug_in
report_time
The code generator is backwards compatible (it will work with existing code).
For the LP flow, there are these additional procedures:
Procedure
Description
get_power_domains
modify_power_domains
add_power_switches
route_secondary_pg_nets
insert_welltaps_endcaps
Note: Once the scripts have been generated, the use model will be identical to previous releases
When the scripts are generated, the code generator will check for data consistency; i.e. all
October 2014
134
TCL Command
Usage: tclsh SCRIPTS/gen_flow.tcl options steps
Step
Description
a-b
a-
all
Note: "a" and "b" should be valid steps for the specific mode.
Description
-h | -help
-m | -mode
-f | -flat
Flatten/unroll levels
- full
Unroll plug-ins and tags (include contents in the main flow script)
- none
-d | -dir
The code generator creates a design specific set of run scripts in a FF directory in
the local user directory. You can optionally change the name of the output
directory using this option.
October 2014
135
-s | -setup
Provide the directory containing the setup.tcl setup file required to run the
Foundation Flow.
Default is ..
-e | -edi
Use EDI System to run the code generator vs tclsh. This is necessary if the
setup.tcl utilizes EDI System commands that are not available in tclsh (for
example, getenv)
See also,
Usage
Example Scripts
Results
Error.Warning Messages
Usage
Below are the steps to use the Code Generator:
1. Dump the foundation flow code generator from the EDI System interface (GUI or TUI) or
download from the download manager.
GUI: Flows > Create Foundation Flow Template
TUI: writeFlowTemplate --directory directory
2. Create a setup.tcl using either the foundation flow wizard Using the Wizard or using
gen_setup.tcl.
To create using wizard, simply invoke the wizard and follow the on screen instructions.
When finished, save as setup.tcl.
To create using gen_setup.tcl,
load an existing EDI database
and source directory /SCRIPTS/gen_setup.tcl (the existing data
base should be the starting point for the foundation flow)
Edit the resulting setup.auto.tcl and edi_config.auto.tcl files (if
necessary)
October 2014
136
Execution Tips
Once the flow scripts are generated the use model for the flow execution differs from earlier in these
ways:
The generated scripts are expaned (unrolled) based on the variables in the setup.tcl, so
any change in the setup.tcl will only affect the scripts if they are regenerated.
-
make init
The code generator runs again automatically. This is intended to keep the generated scripts
synchronized with setup.tcl. This can be disabled by running:
make UPDATE=no
The flow will run the steps from <last completed> to prects
The flow can be executed either in a single process or in multi-process; the default is multiprocess (i.e. each step runs a separate EDI System process). This is more deterministic but
also increases runtime due to re-loading and re-timing the step databases. To run a single
process flow, use
make single FF_STOP=prects
October 2014
137
Any completed step in the flow can be checked for logical equivalence (against
vars(netlist)) by running:
make lec_<step>
Any completed step in the flow loaded into an EDI GUI session by running:
make debug_<step>
Note: A new option ?u|-rundir allows the scripts/Makefile to be generated elsewhere than
the current work directory ".".
.
October 2014
138
Example Scripts
Results
Error.Warning Messages
Example Scripts
Following are the examples of the code generation:
SINGLE STEP
STEP RANGE
ALL STEPS
HIERARCHICAL FLOW - Example Scripts
Introduction to Code Generator
Usage
Results
Error.Warning Messages
SINGLE STEP
% tclsh SCRIPTS/gen_flow.tcl init
-------------------------------------------------
-------------------------------------------------
STEP RANGE
% tclsh SCRIPTS/gen_flow.tcl route-signoff
October 2014
139
-------------------------------------------------
-------------------------------------------------
ALL STEPS
w/OUTPUT DIRECTORY RENAMED (-d MYFF)
-------------------------------------------------
-------------------------------------------------
October 2014
140
w/setup.tcl located in another directory (-s MYSETUPDIR) and plug-ins/tags imported (-f full)
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
October 2014
141
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
October 2014
142
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
October 2014
143
-------------------------------------------------
-------------------------------------------------
Results
The code generator default to creating an instance of the foundation flow in a FF directory in the
local user directory. The user can optionally override this using the option
-d directory.
FF/vars.tcl
FF/run.conf
FF/procs.tcl
October 2014
144
FF/EDI
FF/EDI/run_all.tcl
FF/EDI/run_init.tcl
FF/EDI/run_place.tcl
FF/EDI/run_prects.tcl
FF/EDI/run_cts.tcl
FF/EDI/run_postcts.tcl
FF/EDI/run_route.tcl
FF/EDI/run_postroute.tcl
FF/EDI/run_postroute_si.tcl
FF/EDI/run_signoff.tcl
FF/EDI/run_debug.tcl
FF/EDI/gen_html.tcl
Makefile
October 2014
145
FF/vars.tcl
FF/run.conf
FF/procs.tcl
FF/EDI/run_assemble.tcl
FF/EDI/run_partition.tcl
FF/EDI/run_debug.tcl
PARTITION
PARTITION/Makefile.partition
PARTITION/Makefile
PARTITION/dtmf_recvr_core/FF
PARTITION/dtmf_recvr_core/FF/vars.tcl
PARTITION/dtmf_recvr_core/FF/EDI
PARTITION/dtmf_recvr_core/FF/EDI/run_all.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_init.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_place.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_prects.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_cts.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_postcts.tcl
October 2014
146
PARTITION/dtmf_recvr_core/FF/EDI/run_postcts_hold.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_route.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_postroute.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_postroute_hold.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_postroute_si_hold.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_postroute_si.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_signoff.tcl
PARTITION/dtmf_recvr_core/FF/EDI/run_debug.tcl
PARTITION/dtmf_recvr_core/FF/procs.tcl
PARTITION/dtmf_recvr_core/Makefile
PARTITION/tdsp_core/FF
PARTITION/tdsp_core/FF/vars.tcl
PARTITION/tdsp_core/FF/EDI
PARTITION/tdsp_core/FF/EDI/run_all.tcl
PARTITION/tdsp_core/FF/EDI/run_init.tcl
PARTITION/tdsp_core/FF/EDI/run_place.tcl
PARTITION/tdsp_core/FF/EDI/run_prects.tcl
PARTITION/tdsp_core/FF/EDI/run_cts.tcl
October 2014
147
PARTITION/tdsp_core/FF/EDI/run_postcts.tcl
PARTITION/tdsp_core/FF/EDI/run_postcts_hold.tcl
PARTITION/tdsp_core/FF/EDI/run_route.tcl
PARTITION/tdsp_core/FF/EDI/run_postroute.tcl
PARTITION/tdsp_core/FF/EDI/run_postroute_hold.tcl
PARTITION/tdsp_core/FF/EDI/run_postroute_si_hold.tcl
PARTITION/tdsp_core/FF/EDI/run_postroute_si.tcl
PARTITION/tdsp_core/FF/EDI/run_signoff.tcl
PARTITION/tdsp_core/FF/EDI/run_debug.tcl
PARTITION/tdsp_core/FF/procs.tcl
PARTITION/tdsp_core/Makefile
Error.Warning Messages
The following are the most frequent error and warning messages.
Warning on Missing Required Data
Warning to Replace Old Variables
Introduction to Code Generator
Usage
Example Scripts
Results
148
-------------------------------------------------
-------------------------------------------------
-----------------------------------------------------
Error Summary
-----------------------------------------------------
---------------------------------------
October 2014
149
October 2014
150
This guide describes the sequence and details of the tasks in the default and recommended
Encounter Digital Implementation System (EDI System) software flow to implement a block or flat
chip using low power techniques such as multiple-supply voltage (MSV) and power shutoff. This flow
assumes that the floorplan is complete (though it does allow the flexibility to implement floorplanning
tasks through plug-in which can be called in the flow). The flow lets you finish the implementation
while,
meeting the timing and physical design requirements,
resolving signal integrity (SI) problems,
and considering on-chip variation (OCV).
The flow also takes advantage of the EDI System software multiple-CPU processing capabilities to
accelerate the design process and, where appropriate, runs features in the multi-threading or
distributed processing mode. As input, you provide a Common Power Format (CPF) file that captures
design and technology-related power constraints. CPF lets you define those rules that EDI System
implements for those objects that the low power design uses. These objects could be: level shifters,
isolation cells, power domains, and power switches. CPF also includes the information EDI System
needs for multi-mode multi-corner (MMMC) timing analysis. With the CPF-Based Low Power
Implementation Flow design, you do not need EDI System commands to define views, corners, and
modes for MMMC.
October 2014
151
For the main design tasks the flow uses the EDI System supercommands with as few nondefault
options as possible.
For a block or a flat chip, these commands are the starting point for the low power design. Ultimately,
each design that you implement might have a different final set of commands, but this flow is the
recommended starting point before customizing a specific design or technology. When you have
completed the tasks described in this guide, you will have a flat MSV design that is ready for DRC
and LVS checks and other sign-off tasks.
152
The CPF-Based low power implementation flow assumes that timing and routing constraints are
feasible. Make sure the following tasks are complete before starting this flow:
Floorplanning. The information is optional. If you have the floorplan file, you can use it as an
input, or you can perform the floorplanning tasks through the plug-ins in the flow.
Hard block placement
Region definition
I/O pad placement
Creation of placement and routing blockages
Creation of the clock tree specification file
Creation of RC scale factors
Creation of CPF file
Layer map file for the QRC and GDS export
Config. file for the QRC extraction
For more information, see the following sections of the EDI System User Guide
In the Data Preparation chapter Data Preparation
In the Synthesizing Clock Trees chapter Synthesizing Clock Trees
In the RC Extraction chapter RC Extraction
The following list specifies the input for the CPF-Based low power implementation flow:
EDI System configuration file (setup.tcl) with the following information specified:
Timing libraries (*.lib)
LEF libraries (*.lef)
Timing constraints (*.sdc)
Capacitance table or QRC technology file
SI libraries (*.cdb or *.udn) (recommended but not required)
Verilog netlist (*.v)
Floorplan file (*.fp or *.def)
Clock tree specification file
Scan chain information (*.tcl or *.def)
GDS Layer map file (*.gds)
CPF files (*.cpf)
For more information, see Data Preparation chapter in the EDI System User Guide
October 2014
153
Additional Input
In addition, depending on the design and technology, you may need to supply values for the
following items:
RC scaling factors
OCV derating factors
Metal fill parameters
Filler cell names
Tie cell names
Welltap cells
Endcap cells
Secondary power cell:pin pair
Clock gating cell names
Spare instance names
JTAG instance names
JTAG rows
LSF queue
Dont Use Cells
Delay Cells
CTS Cells
See also,
Defining Variables and Specifying Values for Command Modes
Creating Variables for CPF-based Low Power Flow
Results for CPF-based Low Power Flow
Example - CPF-Based Low Power Foundation Flow
October 2014
154
This file is unique for each low power design. For Low Power design, the user must edit this file
along with the setup.tcl and edi_config.tcl. This file contains Low Power variables such as:
TIE cells for PD
FILLER cells for PD
ENDCAP and WELLTAP implementation
Secondary PG Routing
AON Net synthesis
Modify Power Domains (size, clearance, etc)
Power switch planning
In this section we also cover:
Timing Environment Initialization
MMMC Timing and SI Setup for Low Power P&R Implementation
See also,
Creating Variables for CPF-based Low Power Flow
Results for CPF-based Low Power Flow
Example - CPF-Based Low Power Foundation Flow
Describing lp_config.tcl
Describing lp_config.tcl
Low power configuration file overlay. This file contains foundation flow variables that are specific to the
LP/CPF flow and should be used in addition to the setup.tcl and edi_config.tcl.
set vars(cpf_keep_rows) true | false
The vars(power_domains) is optional. If not defined, the power domain list will be picked up
automatically.
set vars(power_domains) power domain list
October 2014
155
October 2014
156
In addition, the following can optionally defined either globally or per p/g net
set vars(secondary_pg,max_fanout) max fanout for secondary power routing
set vars(secondary_pg,pattern) secondary power routing pattern trunk | steiner
set vars(secondary_pg,non_default_rule) non-default rule for secondary p/g/
routing
runCLP options
set vars(clp_options) options for runCLP
Ex: set vars(clp_options) " -cmd ../DATA/chip_top_backend_clp.do extraVlog\../DATA/dummy.v"
October 2014
157
set
set
set
set
set
set
set
set
set
set
set
set
Connects the enableNetOut at the top of a column to the enableNetIn at the top of the next column,
and connects the enableNetOut at the bottom of the column to the enableNetIn at the bottom of the
next column. Below variables are for ring based PSO implementation:
set
set
set
set
vars(power_domain,top_ring) 1|0
vars(power_domain,bottom_ring) 1|0
vars(power_domain,right_ring) 1|0
vars(power_domain,left_ring) 1|0
... define pso cell name for each side of the power domain
set
set
set
set
set
... define filler cell name for each side of the power domain
October 2014
158
set
set
set
set
vars(power_domain,top_switches)
vars(power_domain,bottom_switches)
vars(power_domain,left_switches)
vars(power_domain,right_switches)
<"number
<"number
<"number
<"number
-distribute">
-distribute">
-distribute">
-distribute">
... define the number of switches for each side of the power domain
See also,
Describing lp_config.tcl
Timing Environment Initialization
MMMC Timing and SI Setup for Low Power P_R Implementation
Create RC Corners
October 2014
159
-cap_table\
-preRoute_res $vars($rc_corner,pre_route_res_factor)\
-preRoute_cap $vars($rc_corner,pre_route_cap_factor)\
-preRoute_clkres\ $vars($rc_corner,pre_route_clk_res_factor)\
-preRoute_clkcap\ $vars($rc_corner,pre_route_clk_cap_factor)\
-postRoute_res\ $vars($rc_corner,post_route_res_factor)\
-postRoute_cap\ $vars($rc_corner,post_route_cap_factor)\
-postRoute_clkres\ $vars($rc_corner,post_route_clk_res_factor)\
-postRoute_clkcap\ $vars($rc_corner,post_route_clk_cap_factor)\
-postRoute_xcap\ $vars($rc_corner,post_route_xcap_factor)\
-T $vars($rc_corner,T)\
October 2014
160
Note: If the low power P&R implementation is not CPF-based or the CPF file does not have its
analysis-views defined, then the user has to create library sets, delay corners, constraint mode and
analysis views.
Please refer to the following section in this guide for these:
Describing setup.tcl
Describing edi_config.tcl
Example Settings for Each Script
See also,
Describing lp_config.tcl
October 2014
161
-timing $vars($library_set,timing) \
-si $vars($library_set,si)
} else {
October 2014
162
See also,
Create Library Sets
Create Delay Corners
Create Constraint Modes
Create Analysis Views
Attach RC Corners to Delay Corners
Update library_sets with SI Libraries, if defined
Define setup and hold Analysis Views and Enable the Default Views
October 2014
163
eval $command
See also,
Create Library Sets
Create Delay Corners
Create Constraint Modes
Create Analysis Views
Attach RC Corners to Delay Corners
Update library_sets with SI Libraries, if defined
Define setup and hold Analysis Views and Enable the Default Views
-sdc_files $vars($constraint_mode,pre_cts_sdc)
See also,
Create Library Sets
Create Delay Corners
Create Constraint Modes
Create Analysis Views
October 2014
164
-constraint_mode \ $vars($analysis_view,constraint_mode) \
-delay_corner $vars($analysis_view,delay_corner)
Note: The steps mentioned below are common for CPF and non-CPF based low power P&R
implementation.
See also,
Create Library Sets
Create Delay Corners
Create Constraint Modes
Create Analysis Views
Attach RC Corners to Delay Corners
Update library_sets with SI Libraries, if defined
October 2014
165
Define setup and hold Analysis Views and Enable the Default Views
See also,
Create Library Sets
Create Delay Corners
Create Constraint Modes
Create Analysis Views
Attach RC Corners to Delay Corners
Update library_sets with SI Libraries, if defined
Define setup and hold Analysis Views and Enable the Default Views
-si $vars($library_set,si)
}
}
October 2014
166
Set derating factors for delay corners and enable CPPR. CPPR should only be enabled for designs
using derating or designs with specific requirements
See also,
Create Library Sets
Create Delay Corners
Create Constraint Modes
Create Analysis Views
Attach RC Corners to Delay Corners
Update library_sets with SI Libraries, if defined
Define setup and hold Analysis Views and Enable the Default Views
167
See also,
Create Library Sets
Create Delay Corners
Create Constraint Modes
Create Analysis Views
Attach RC Corners to Delay Corners
Update library_sets with SI Libraries, if defined
Define setup and hold Analysis Views and Enable the Default Views
October 2014
168
Description
always_source_tcl
pre_partition_tcl
Before partitioning
post_partition
After partitioning
pre_init_tcl
post_init_tcl
pre_place_tcl
Before placeDesign
place_tcl
post_place_tcl
After placeDesign
pre_cts_tcl
Before clockDesign
cts_tcl
October 2014
169
post_cts_tcl
After clockDesign
pre_route_tcl
Before routeDesign
post_route_tcl
After routeDesign
pre_si_tcl
Before SI fixing
post_si_tcl
After SI fixing
pre_signoff_tcl
post_signoff_tcl
The sections below describe some of the plug-in enabled in the reference design.
See also,
Defining Variables and Specifying Values for Command Modes
Creating Variables for CPF-based Low Power Flow
Results for CPF-based Low Power Flow
CPF File_3a
CPF File:
Define Library Sets and Low Power Cells
set_cpf_version 1.0e
define_library_set -name 0v864 -libraries " \
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtwc0d720d72.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtwc0d720d72.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpwc0d720d72.lib \
October 2014
170
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtwc0d72.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtwc0d72.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpwc0d72.lib \
../LIBS/STDCELL/LIBERTY/HVT_CG/tcbn65lphvtcgwc0d72.lib \
../LIBS/STDCELL/LIBERTY/LVT_CG/tcbn65lplvtcgwc0d72.lib \
../LIBS/STDCELL/LIBERTY/NVT_CG/tcbn65lpcgwc0d72.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_0864/ulp_dp_512x36cm4sw1bk1.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_0864/ulp_rom_512x32cm16.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_0864/ulp_sp_2kx32cm8sw1bk2.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_0864/ulp_sp_4kx32cm8sw1bk4.lib \
../LIBS/IO/LIBERTY/tpzn65lpgv2wc_0864.lib \
../LIBS/ANALOG/LVDS/LIBERTY/lvds_wc_0864.lib \
../LIBS/IP/LIBERTY/pso_wc_0864.lib \
../LIBS/IP/LIBERTY/Module_A_wc_0864.lib \
../LIBS/IP/LIBERTY/Module_B_wc_0864.lib \
../LIBS/IP/LIBERTY/Module_U_wc_0864.lib \
../LIBS/IP/LIBERTY/Module_W_wc_0864.lib \
October 2014
171
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtwc0d720d9.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtwc0d720d9.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpwc0d720d9.lib \
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtwc0d90d9.lib \
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtwc.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtwc.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtwc0d90d9.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpwc0d90d9.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpwc.lib \
../LIBS/STDCELL/LIBERTY/HVT_CG/tcbn65lphvtcgwc.lib \
../LIBS/STDCELL/LIBERTY/LVT_CG/tcbn65lplvtcgwc.lib \
../LIBS/STDCELL/LIBERTY/NVT_CG/tcbn65lpcgwc.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_1080/ulp_dp_512x36cm4sw1bk1.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_1080/ulp_rom_512x32cm16.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_1080/ulp_sp_2kx32cm8sw1bk2.lib \
../LIBS/RAMS_ROMS/LIBERTY/WORST_1080/ulp_sp_4kx32cm8sw1bk4.lib \
../LIBS/IO/LIBERTY/tpzn65lpgv2wc.lib \
October 2014
172
../LIBS/ANALOG/PLL/LIBERTY/PL0042.scx3_tsmc_cln80gt_hvt_ss_1p08v_125c.lib \
../LIBS/IP/LIBERTY/pso_wc_1080.lib \
../LIBS/IP/LIBERTY/Module_A_wc_1080.lib \
../LIBS/IP/LIBERTY/Module_B_wc_1080.lib \
../LIBS/IP/LIBERTY/Module_U_wc_1080.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtbc0d881d1.lib \
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtbc0d881d1.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpbc0d881d1.lib \
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtbc1d11d1.lib \
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtbc.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtbc.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtbc1d11d1.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpbc.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpbc1d11d1.lib \
../LIBS/STDCELL/LIBERTY/HVT_CG/tcbn65lphvtcgbc.lib \
../LIBS/STDCELL/LIBERTY/LVT_CG/tcbn65lplvtcgbc.lib \
../LIBS/STDCELL/LIBERTY/NVT_CG/tcbn65lpcgbc.lib \
October 2014
173
../LIBS/RAMS_ROMS/LIBERTY/BEST_1320/ulp_dp_512x36cm4sw1bk1.lib \
../LIBS/RAMS_ROMS/LIBERTY/BEST_1320/ulp_rom_512x32cm16.lib \
../LIBS/RAMS_ROMS/LIBERTY/BEST_1320/ulp_sp_2kx32cm8sw1bk2.lib \
../LIBS/RAMS_ROMS/LIBERTY/BEST_1320/ulp_sp_4kx32cm8sw1bk4.lib \
../LIBS/IO/LIBERTY/tpzn65lpgv2bc.lib \
../LIBS/ANALOG/PLL/LIBERTY/PL0042.scx3_tsmc_cln80gt_hvt_ff_1p32v_0c.lib \
../LIBS/IP/LIBERTY/pso_bc_1320.lib
../LIBS/IP/LIBERTY/Module_A_bc_1320.lib \
../LIBS/IP/LIBERTY/Module_B_bc_1320.lib \
../LIBS/IP/LIBERTY/Module_U_bc_1320.lib \
"
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtbc0d880d88.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtbc0d880d88.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpbc0d880d88.lib \
../LIBS/STDCELL/LIBERTY/HVT/tcbn65lphvtbc0d88.lib \
../LIBS/STDCELL/LIBERTY/LVT/tcbn65lplvtbc0d88.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpbc0d88.lib \
October 2014
174
../LIBS/STDCELL/LIBERTY/HVT_CG/tcbn65lphvtcgbc0d88.lib \
../LIBS/STDCELL/LIBERTY/LVT_CG/tcbn65lplvtcgbc0d88.lib \
../LIBS/STDCELL/LIBERTY/NVT_CG/tcbn65lpcgbc0d88.lib \
../LIBS/RAMS_ROMS/LIBERTY/BEST_1056/ulp_dp_512x36cm4sw1bk1.lib \
../LIBS/RAMS_ROMS/LIBERTY/BEST_1056/ulp_rom_512x32cm16.lib \
../LIBS/RAMS_ROMS/LIBERTY/BEST_1056/ulp_sp_2kx32cm8sw1bk2.lib \
../LIBS/RAMS_ROMS/LIBERTY/BEST_1056/ulp_sp_4kx32cm8sw1bk4.lib \
../LIBS/IO/LIBERTY/tpzn65lpgv2bc_1056.lib \
../LIBS/ANALOG/LVDS/LIBERTY/lvds_bc_1056.lib \
../LIBS/IP/LIBERTY/pso_bc_1056.lib
../LIBS/IP/LIBERTY/Module_A_bc_1056.lib \
../LIBS/IP/LIBERTY/Module_B_bc_1056.lib \
../LIBS/IP/LIBERTY/Module_U_bc_1056.lib \
../LIBS/IP/LIBERTY/Module_W_bc_1056.lib \
"
../LIBS/IP/LIBERTY/Module_U.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpwc.lib \
October 2014
175
"
../LIBS/IP/LIBERTY/Module_U.lib \
../LIBS/STDCELL/LIBERTY/NVT/tcbn65lpwc.lib \
"
-enable
ISO -valid_location to
NSLEEP -valid_location to
October 2014
176
-valid_location to
RSDFCD4LVT
October 2014
177
set_hierarchy_separator /
set_design chip_top
Macro Models
set_macro_model Module_U
October 2014
178
-default -external_controlled_shutoff
PD_2p5v@ana_2p5 PDdvfs@norm_0v864 }
PD_2p5v@ana_2p5 PDdvfs@off }
-primary_ground_net vssa
-primary_ground_net vssa
-primary_ground_net VSSsoc
end_macro_model
October 2014
179
i_pad_frame/i_pin_12M i_pad_frame/i_pll_clk
i_pad_frame/*PLL_AGND1_H \
i_pad_frame/*PLL_AVDD1_H \
i_pad_frame/*PLL_DGND_i* \
i_pad_frame/*PLL_DVDD_i* \
i_pad_frame/*PLL_AGND0_H \
i_pad_frame/*PLL_AVDD0_H \
*FILLER_PDpll_*} -boundary_ports { \
-shutoff_condition !power_on_pin
i_pad_frame/rf_SW[1].i_rf_SW i_pad_frame/rf_SW[2].i_rf_SW \
October 2014
180
-shutoff_condition !power_on_pin
i_rom_subsystem/i_rom_wrap/i_rom_core } -shutoff_condition \
-shutoff_condition !i_apb_subsystem/i_power_ctrl/pwr1_on_smc \
-secondary_domains { PDdvfs }
October 2014
181
-primary_ground_net VSSsoc
VSSsoc
VSSsoc
VSSsoc
VSSsoc
-primary_ground_net VSSsoc
-primary_ground_net vssa
-primary_ground_net vssa
October 2014
182
-average_ir_drop_limit 0
-peak_ir_drop_limit 0 -average_ir_drop_limit 0
-peak_ir_drop_limit 0 -average_ir_drop_limit 0
October 2014
183
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
October 2014
184
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-average_ir_drop_limit 0
-library_set 1v056
October 2014
185
October 2014
186
PDrom@norm_1v080 PDsmc@norm_1v080 \
i_apb_subsystem__i_uart1__PDuart_SW@norm_1v080 PD_3p3v@ana_3p3 \
PD_2p5v@ana_2p5 }
i_apb_subsystem__i_uart1__PDuart_SW@norm_1v080 PD_3p3v@ana_3p3 \
PD_2p5v@ana_2p5 }
PD_2p5v@ana_2p5 }
October 2014
187
i_apb_subsystem__i_uart1__PDuart_SW@norm_1v080 PD_3p3v@ana_3p3 \
PD_2p5v@ana_2p5 }
PDsmc@norm_0v864 i_apb_subsystem__i_uart1__PDuart_SW@norm_0v864 \
PD_3p3v@ana_3p3 PD_2p5v@ana_2p5 }
../DATA/chip_top.sdc
../DATA/chip_top_dvfs2.sdc
PDsmc@PDdvfs1_bc i_apb_subsystem__i_uart1__PDuart_SW@PDdvfs1_bc \
October 2014
188
PDwakeup@PDdvfs1_bc }
PDsmc@PDdvfs1_wc i_apb_subsystem__i_uart1__PDuart_SW@PDdvfs1_wc \
PDwakeup@PDdvfs1_wc }
PDsmc@PDdvfs2_bc i_apb_subsystem__i_uart1__PDuart_SW@PDdvfs2_bc \
PDwakeup@PDdvfs1_bc }
PDsmc@PDdvfs2_wc i_apb_subsystem__i_uart1__PDuart_SW@PDdvfs2_wc \
PDwakeup@PDdvfs1_wc }
October 2014
189
October 2014
190
VDDdvfs
VDDdvfs
i_apb_subsystem/i_uart1/ua_nrts } -from { \
-isolation_output high
i_apb_subsystem__i_uart1__PDuart_SW } -exclude { \
low
October 2014
191
i_apb_subsystem/i_power_ctrl/isolate_smc } -pins { \
i_apb_subsystem/i_smc/smc_n_be[0] i_apb_subsystem/i_smc/smc_n_be[1] \
i_apb_subsystem/i_smc/smc_n_be[2] i_apb_subsystem/i_smc/smc_n_be[3] \
i_apb_subsystem/i_smc/smc_n_cs[0] i_apb_subsystem/i_smc/smc_n_cs[1] \
i_apb_subsystem/i_smc/smc_n_cs[2] i_apb_subsystem/i_smc/smc_n_cs[3] \
i_apb_subsystem/i_smc/smc_n_cs[4] i_apb_subsystem/i_smc/smc_n_cs[5] \
i_apb_subsystem/i_smc/smc_n_cs[6] i_apb_subsystem/i_smc/smc_n_cs[7] \
i_apb_subsystem/i_smc/smc_hready i_apb_subsystem/i_smc/smc_hresp[0] \
i_apb_subsystem/i_smc/smc_n_ext_oe i_apb_subsystem/i_smc/smc_n_rd \
i_apb_subsystem/i_smc/smc_n_we[3] i_apb_subsystem/i_smc/smc_n_we[2] \
i_apb_subsystem/i_smc/smc_n_we[1] i_apb_subsystem/i_smc/smc_n_we[0] \
-isolation_output high
October 2014
192
i_apb_subsystem/i_smc/smc_hready i_apb_subsystem/i_smc/smc_hresp[0] \
i_apb_subsystem/i_smc/smc_n_be* i_apb_subsystem/i_smc/smc_n_cs* \
i_apb_subsystem/i_smc/smc_n_wr i_apb_subsystem/i_smc/smc_n_we* \
i_apb_subsystem/i_smc/smc_n_rd i_apb_subsystem/i_smc/smc_n_ext_oe } \
-isolation_output high
i_apb_subsystem/i_smc/i_apb/i_cfreg0 i_apb_subsystem/i_smc/i_apb/i_cfreg1 \
i_apb_subsystem/i_smc/i_apb/i_cfreg2 i_apb_subsystem/i_smc/i_apb/i_cfreg3 \
i_apb_subsystem/i_smc/i_apb/i_cfreg4 i_apb_subsystem/i_smc/i_apb/i_cfreg5 \
i_apb_subsystem/i_smc/i_apb/i_cfreg6 i_apb_subsystem/i_smc/i_apb/i_cfreg7 \
i_apb_subsystem/i_smc/eco_logic_type4[0].smc_eco_type4 \
i_apb_subsystem/i_smc/eco_logic_type4[1].smc_eco_type4 \
October 2014
193
i_apb_subsystem/i_smc/eco_logic_type4[2].smc_eco_type4 } -restore_edge \
!i_apb_subsystem/i_power_ctrl/nrestore_smc -save_edge \
-peak_ir_drop_limit 0 -average_ir_drop_limit 0
-peak_ir_drop_limit 0 -average_ir_drop_limit 0
-prefix CPF_ISO_
-prefix CPF_ISO_
October 2014
194
post_cts_tcl_3a
post_cts_tcl:
This plug-in is called after CTS inside the run_cts.tcl flow script. You can use this plug-in to adjust IO
timings based on clock insertion delays. The sample commands mentioned below are incorporated in
the post_cts plug-in. You can modify these commands according to your design needs.
set_interactive_constraint_modes [all_constraint_modes -active]
set_propagated_clock [all_clocks]
set_clock_propagation propagated
set_interactive_constraint_modes {}
set_interactive_constraint_modes {PMdefault}
source ../DATA/chip_top_propagated.sdc
set_interactive_constraint_modes {}
set_interactive_constraint_modes {PMdvfs2}
source ../DATA/chip_top_dvfs2_propagated.sdc
set_interactive_constraint_modes {}
post_init_tcl_3a
October 2014
195
post_init_tcl_3a
post_init_tcl:
This plug-in is called after importing the database and CPF inside the run_init.tcl flow script. You can
use this plug-in for floorplan related tasks, which cover:
Die/core boundary creation
Placement of hard macros/blocks
Power domain sizing and clearance surrounding to it
Placement and routing blockages in the floorplan
IO ring creation
And PSO planning
Below are some of the sample commands incorporated in the post_init plug-in. You can modify
these commands according to your design needs:
i_sram_subsystem/i_1_sram_voltage_island/i_0_SRAM_2kx32_wrap/i_sram_core \
relativePlace \
i_sram_subsystem/i_2_sram_voltage_island/i_0_SRAM_2kx32_wrap/i_sram_core \
i_sram_subsystem/i_1_sram_voltage_island/i_0_SRAM_2kx32_wrap/i_sram_core \
October 2014
196
-rsExts 15 15 15 15 -minGaps 15 15 15 15
-column
-powerDomain i_apb_subsystem__i_uart1__PDuart_SW \
-backToBackChain \
-bottomOffset 60 \
-enableNetIn $n \
-enableNetOut pduart_powered_off \
-enablePinIn NSLEEPIN \
-enablePinOut NSLEEPOUT \
-globalSwitchCellName HDRSID2 \
-leftOffset 20 \
-reportFile $vars(rpt_dir)/PDurt_pso.rpt \
October 2014
197
-switchModuleInstance i_apb_subsystem/i_uart1 \
-topOffset 2 \
-rightOffset 2 \
-horizontalPitch 70 \
-height 125 \
-skipRows 5
-switchModuleInstance i_apb_subsystem/i_smc \
-enableNetIn $n \
-enableNetOut pdsmc_powered_off \
-enablePinIn NSLEEPIN \
-enablePinOut NSLEEPOUT \
-reportFile
$vars(rpt_dir)/PDsmc_pso.rpt \
-cornerCellList CDN_RING_CORNER_UL \
-fillerCellNameBottom CDN_RING_FILLER \
-fillerCellNameLeft CDN_RING_FILLER \
-fillerCellNameRight CDN_RING_FILLER \
-fillerCellNameTop CDN_RING_FILLER \
October 2014
198
-bottomSide 1 \
-leftSide 1 \
-rightSide 1 \
-topSide 1 \
-leftOffset 2 \
-rightOffset 2 \
-topOffset 2 \
-bottomOffset 2 \
-bottomNumSwitch 4 -distribute \
-leftNumSwitch 3 -distribute \
-topNumSwitch 4 -distribute \
-rightNumSwitch 3 -distribute \
-switchCellNameLeft CDN_RING_SW \
-switchCellNameRight CDN_RING_SW \
-switchCellNameTop CDN_RING_SW \
-switchCellNameBottom CDN_RING_SW
October 2014
199
addHaloToBlock 2 2 2 2 i_D0TCM/i_sram_core_1
addHaloToBlock 2 2 2 2 i_D1TCM/i_sram_core_1
addHaloToBlock 2 2 2 2 i_D0TCM/i_sram_core_0
addHaloToBlock 2 2 2 2 i_ITCM/i_sram_core
post_place_tcl_3a
post_place_tcl:
This plug-in is called after cell placement inside the run_place.tcl flow script. You can use this plug-in
for standard cell rail creation and check the connectivity and geometry on power nets.
October 2014
200
-targetViaTopLayer 4 \
-crossoverViaTopLayer 4 -verbose
-targetViaTopLayer 4 \
-crossoverViaTopLayer 4 -layerChangeTopLayer 4
October 2014
201
verifyGeometry -allowPadFillerCellsOverlap \
-allowRoutingBlkgPinOverlap -allowRoutingCellBlkgOverlap
post_prects_tcl_3a
post_prects_tcl:
This plug-in is called after the prects optimization is completed inside the run_prects.tcl flow script.
You can use this plug-in for secondary power pin routing for low power cells (State retention
flops/always-on-buffers/level-shifters) and check the connectivity and geometry on power nets. The
sample commands below are incorporated in the post_prects plug-in. You can modify these
commands according to your design needs.
Note: route_secondary_pg_nets is a procedure implemented in utils.tcl, it does
secondary pg routing.
route_secondary_pg_nets
route_secondary_pg_nets is part of utils.tcl and it internally calls for
October 2014
202
pre_cts_tcl_3a
pre_cts_tcl:
This plug-in is called before CTS inside the run_cts.tcl flow script. You can use this plug-in to define
non-default CTS mode settings. The sample below displays commands incorporated in the pre_cts
plug-in. You can modify these commands according to your design needs.
setCTSMode -topPreferredLayer 9 -bottomPreferredLayer 3
-preferredExtraSpace 2
pre_init_tcl_3a
pre_init_tcl:
This plug-in is called before importing the database, inside the run_init.tcl flow script. You can use this
plug-in for tasks which can be done before importing the design. For example, use this plug-in to insert
buffers on tie-high/tie-low assign statements. The sample commands mentioned below are
incorporated in the pre_init plug-in. You can modify these commands according to your design needs.
setImportMode -bufferTieAssign $vars(buffer_tie_assign)
pre_place_tcl_3a
pre_place_tcl:
This plug-in is called before doing cell placement inside the run_place.tcl flow script.
User can use this plug-in for:
Power planning related tasks which includes:
Power planning for power domains (ring/stripe creations)
Power Shut-off cell power hookup
Welltap/Bias cell power hookup
And commands for enabling always-on-net synthesis as part of preCTS optimization.
Below are some of the sample commands incorporated in the pre_place plug-in. You can modify
these commands according to your design needs.
October 2014
203
October 2014
204
-stacked_via_bottom_layer M1 -layer_left M4 \
-snap_wire_center_to_grid Grid
-stacked_via_bottom_layer M1 -layer_left M4
-padPinAllGeomsConnect -padPinMaxLayer 2 \
October 2014
205
addStripe -block_ring_top_layer_limit M5 \
-max_same_layer_jog_length 0.8
-over_power_domain 1 \
-padcore_ring_bottom_layer_limit M1 -set_to_set_distance 70 \
-skip_via_on_pin {} -stacked_via_top_layer M5 \
-snap_wire_center_to_grid Grid
October 2014
206
addStripe -block_ring_top_layer_limit M5 \
-padcore_ring_bottom_layer_limit M1 -set_to_set_distance 35 \
-skip_via_on_pin {} -stacked_via_top_layer M5 \
-stacked_via_bottom_layer M8 -layer_leftM8
October 2014
207
addStripe -block_ring_top_layer_limit M9 \
-set_to_set_distance 35 -stacked_via_top_layer M9 \
-block_ring_bottom_layer_limit M5 \
-allow_jog_block_ring 0
-padcore_ring_bottom_layer_limit M5 -set_to_set_distance 35 \
-stacked_via_top_layer M9 -padcore_ring_top_layer_limit M9 \
October 2014
208
-ybottom_offset 18
For welltap/Bias/Power-Switch cells PG pin connection, you can run strap over/off-set with regard to
these cells so that the PG connection is established easily. For example, in the below stripe creation
command, the stripe is created over welltap cells (FILLBIAS2A9TH) so that PG connection is easily
established.
addStripe -nets {VDDcpu} -layer ME4 -direction vertical -width 0.2 \
-switch_layer_over_obs 1
To handle always-on net synthesis as part of preCTS optimization, you have to enable these:
setDontUse PTBUFFD* false
setvar dpgOptSupportAOFeedThru 1
October 2014
209
October 2014
210
Hierarchical Flow
Hierarchical Flow is a more complex implementation of the flat foundation flow.
In this section we cover:
Using Interface Logic Models
About the Hierarchical One-Pass ILM Flow and Diagram
Hierarchical Foundation Flow with FlexILM
Results for Hierarchical Flow Implementation
211
October 2014
212
EDI System configuration file (setup.tcl) with the following information specified:
Timing libraries (*.lib)
LEF libraries (*.lef)
Timing constraints (*.sdc)
Capacitance table or QRC technology file
SI libraries (*.cdb or *.udn) (recommended but not required)
Verilog netlist (*.v)
Floorplan file (*.fp or *.def)
Clock tree specification file
Scan chain information (*.tcl or *.def)In addition, depending on the design and technology,
you may need to supply values for the following items:
RC scaling factors
OCV derating factors
Metal fill parameters
Filler cell names
Tie cell names
Clock gating cell names
Spare instance names
JTAG instance names
JTAG rows
LSF queue
Dont Use Cells
Delay Cells
CTS Cells
213
214
The hierarchical flow lets you implement the top-level design and the blocks concurrently.
When you partition a design, the EDI System software creates LEF files and budgeted timing
models for the blocks. You can treat the blocks as blackboxes from the top-level perspective
and thus implement the top-level and the blocks concurrently.
During the flow, as the block implementation progresses, the budgeted timing models for the
blocks are often replaced with Interface Logic Models (ILMs) or with more accurate budgeted
timing models. You can also add new LEF files that contain the antenna information for the
blocks.
See also,
Using Interface Logic Models
About the Hierarchical One-Pass ILM Flow and Diagram
Hierarchical Foundation Flow with FlexILM
Results for Hierarchical Flow Implementation
215
optDesign automatically manage the flattened and unflattened ILM states. For other
commands, you should flatten or unflatten the design as required with the
flattenIlm and the unflattenIlm commands.
See also,
Using the Flattened and Unflattened ILM States
Performing Multi-Mode Multi-Corner Timing Analysis and Optimization
Managing Clock Latencies
Deriving Clock Tree Estimation for Budgeting and CTS
Preventing Hierarchical Signal Integrity Issues
216
October 2014
217
latency)
During the post-CTS stage, the delays of the clock tree are calculated and latencies asserted
on pins or with -source are retained.
The deriveTimingBudget command and savePartitioncommand will generate a
budgeted library for use at the top level:
This model assumes zero delay on the clock tree
For pre-CTS optimization, any clock latencies applied to the clock pins of the model
should represent the full clock insertion (top and block)
This model cannot be used in the post-CTS stage. Use the saveModel command to
create new models for each partition in the post-CTS stage.
See also,
Using the Flattened and Unflattened ILM States
Performing Multi-Mode Multi-Corner Timing Analysis and Optimization
Managing Clock Latencies
Deriving Clock Tree Estimation for Budgeting and CTS
Preventing Hierarchical Signal Integrity Issues
October 2014
218
Example
The following example illustrates the use flow for deriving CTS files and latencies separately for the
top level and for each block.
For this example, assume a single clock FCLK that attaches to pin pll/clk at the top level and enters
partitions A and B at port clk
The insertion delay target for flat full chip insertion 5 ns. The insertion delay target for partition A is 3
ns and that for partition B is 2 ns.
AutoCTSRootPin clk
MinDelay 3ns
MaxDelay 3ns
# Ptn B
AutoCTSRootPin clk
October 2014
219
MinDelay 2ns
MaxDelay 2ns
# Top Level
AutoCTSRootPin pll/clk
MinDelay 5ns
MaxDelay 5ns
# Ptn B
# Full Chip
Note: MacroModels are not required in the ILM flow because CTS automatically calculates the
latency based on the spef file. The saveModel command produces the MacroModels
automatically
October 2014
220
-fileName PartitionLatencySDCFile
-ptnName PartitionName
In the budgeted SDCs for each partition, the IO arrival and departure times reflect the assigned
latencies. The source and network latencies are also assigned
For this example, the source latency will be 2 ns for partition A (5 ns 3 ns) and 3 ns for partition B
(5 ns -2 ns)
The same budgeted SDCs can be used for pre-CTS and post-CTS optimization. The network
latencies will be ignored once the tree is synthesized
Related Topics:
Creating a Clock Tree Specification File in the Synthesizing Clock Trees chapter in the EDI
System User Guide
Timing Budgeting chapter in the EDI System User Guide
See also,
Using the Flattened and Unflattened ILM States
Performing Multi-Mode Multi-Corner Timing Analysis and Optimization
Managing Clock Latencies
Deriving Clock Tree Estimation for Budgeting and CTS
Preventing Hierarchical Signal Integrity Issues
October 2014
221
adding placement halos to the partitions to limit the need for routing close to the partition
boundaries
adding routing halos to the partition to limit cross-coupling between routes in the partitions
and top level
Some methodologies such as routing over, or through, partitions using partition feedthroughs
can increase the SI sensitivity. In such cases, you can reduce the SI sensitivity by attaching
buffers to the I/O ports of each partitionthis reduces SI sensitivity by limiting the I/O nets to
short routes and filtering injected noise.
See also,
Using the Flattened and Unflattened ILM States
Performing Multi-Mode Multi-Corner Timing Analysis and Optimization
Managing Clock Latencies
Deriving Clock Tree Estimation for Budgeting and CTS
Preventing Hierarchical Signal Integrity Issues
October 2014
222
See also,
Hierarchical Flow
Using Interface Logic Models
Hierarchical Foundation Flow with FlexILM
Results for Hierarchical Flow Implementation
October 2014
223
224
October 2014
225
October 2014
226
Verify geometry
Verify metal density
Verify process antenna
See also,
Hierarchical Flow
Using Interface Logic Models
About the Hierarchical One-Pass ILM Flow and Diagram
Hierarchical Foundation Flow with FlexILM
October 2014
227
value
vars(init,set_multi_cpu_usage,tag)
value
vars(init,set_rc_factor,tag)
value
vars(init,derate_timing,tag)
value
vars(init,create_rc_corner,tag)
value
vars(init,create_library_set,tag)
value
vars(init,create_delay_corner,tag)
value
vars(init,create_constraint_mode,tag)
value
vars(init,create_analysis_view,tag)
value
vars(init,update_delay_corner,tag)
value
vars(init,update_library_set,tag)
value
vars(init,set_default_view,tag)
value
vars(init,set_power_analysis_mode,tag)
value
October 2014
228
vars(init,load_config,tag)
value
vars(init,load_floorplan,tag)
value
vars(init,generate_tracks,tag)
value
vars(init,load_cpf,tag)
value
vars(init,commit_cpf,tag)
value
vars(init,read_activity_file,tag)
value
vars(init,specify_ilm,tag)
value
vars(init,load_ilm_non_sdc_file,tag)
value
vars(init,initialize_timing,tag)
value
vars(init,load_scan,tag)
value
vars(init,specify_spare_gates,tag)
value
vars(init,set_dont_use,tag)
value
vars(init,set_max_route_layer,tag)
value
vars(init,set_design_mode,tag)
value
vars(init,insert_welltaps_endcaps,tag)
value
vars(init,load_config,tag)
value
vars(init,time_design,tag)
value
vars(init,check_design,tag)
value
October 2014
229
vars(init,check_timing,tag)
value
vars(init,report_power_domains,tag)
value
vars(place,set_distribute_host,tag)
value
vars(place,set_multi_cpu_usage,tag)
value
vars(place,restore_design,tag)
value
vars(place,initialize_step,tag)
value
vars(place,set_design_mode,tag)
value
vars(place,set_delay_cal_mode,tag)
value
vars(place,set_place_mode,tag)
value
vars(place,set_opt_mode,tag)
value
vars(place,cleanup_specify_clock_tree,tag)
value
vars(place,specify_clock_tree,tag)
value
vars(place,specify_jtag,tag)
value
vars(place,place_jtag,tag)
value
vars(place,place_design,tag)
value
vars(place,add_tie_cells,tag)
value
vars(place,time_design,tag)
value
vars(place,save_design,tag)
value
October 2014
230
vars(place,report_power,tag)
value
vars(place,verify_power_domain,tag)
value
vars(place,run_clp,tag)
value
vars(prects,set_distribute_host,tag)
value
vars(prects,set_multi_cpu_usage,tag)
value
vars(prects,initialize_step,tag)
value
vars(prects,set_design_mode,tag)
value
vars(prects,set_ilm_type,tag)
value
vars(prects,cleanup_specify_clock_tree,tag)
value
vars(prects,create_clock_tree_spec,tag)
value
vars(prects,specify_clock_tree,tag)
value
vars(prects,set_useful_skew_mode,tag)
value
vars(prects,set_opt_mode,tag)
value
vars(prects,set_design_mode,tag)
value
vars(prects,set_delay_cal_mode,tag)
value
vars(prects,set_dont_use,tag)
value
vars(prects,opt_design,tag)
value
vars(prects,ck_clone_gate,tag)
value
October 2014
231
vars(prects,save_design,tag)
value
vars(prects,report_power,tag)
value
vars(prects,verify_power_domain,tag)
value
vars(prects,run_clp,tag)
value
vars(cts,set_distribute_host,tag)
value
vars(cts,set_multi_cpu_usage,tag)
value
vars(cts,initialize_step,tag)
value
vars(cts,set_design_mode,tag)
value
vars(cts,set_cts_mode,tag)
value
vars(cts,set_nanoroute_mode,tag)
value
vars(cts,enable_clock_gate_cells,tag)
value
vars(cts,clock_design,tag)
value
vars(cts,disable_clock_gate_cells,tag)
value
vars(cts,run_clock_eco,tag)
value
vars(cts,update_timing,tag)
value
vars(cts,time_design,tag)
value
vars(cts,save_design,tag)
value
vars(cts,report_power,tag)
value
October 2014
232
vars(cts,verify_power_domain,tag)
value
vars(cts,run_clp,tag)
value
vars(postcts,set_distribute_host,tag)
value
vars(postcts,set_multi_cpu_usage,tag)
value
vars(postcts,initialize_step,tag)
value
vars(postcts,set_design_mode,tag)
value
vars(postcts,set_delay_cal_mode,tag)
value
vars(postcts,set_analysis_mode,tag)
value
vars(postcts,set_opt_mode,tag)
value
vars(postcts,opt_design,tag)
value
vars(postcts,save_design,tag)
value
vars(postcts,report_power,tag)
value
vars(postcts,verify_power_domain,tag)
value
vars(postcts,run_clp,tag)
value
vars(postcts_hold,set_distribute_host,tag)
value
vars(postcts_hold,set_multi_cpu_usage,tag)
value
vars(postcts_hold,initialize_step,tag)
value
vars(postcts_hold,set_dont_use,tag)
value
October 2014
233
vars(postcts_hold,set_opt_mode,tag)
value
vars(postcts_hold,opt_design,tag)
value
vars(postcts_hold,save_design,tag)
value
vars(postcts_hold,report_power,tag)
value
vars(postcts_hold,verify_power_domain,tag)
value
vars(postcts_hold,run_clp,tag)
value
vars(route,set_distribute_host,tag)
value
vars(route,set_multi_cpu_usage,tag)
value
vars(route,initialize_step,tag)
value
vars(route,set_nanoroute_mode,tag)
value
vars(route,add_filler_cells,tag)
value
vars(route,route_secondary_pg_nets,tag)
value
vars(route,check_place,tag)
value
vars(route,route_design,tag)
value
vars(route,run_clock_eco,tag)
value
vars(route,spread_wires,tag)
value
vars(route,initialize_timing,tag)
value
vars(route,time_design,tag)
value
October 2014
234
vars(route,save_design,tag)
value
vars(route,report_power,tag)
value
vars(route,verify_power_domain,tag)
value
vars(route,run_clp,tag)
value
vars(postroute,set_distribute_host,tag)
value
vars(postroute,set_multi_cpu_usage,tag)
value
vars(postroute,initialize_step,tag)
value
vars(postroute,set_design_mode,tag)
value
vars(postroute,set_extract_rc_mode,tag)
value
vars(postroute,set_analysis_mode,tag)
value
vars(postroute,set_delay_cal_mode,tag)
value
vars(postroute,add_metalfill,tag)
value
vars(postroute,delete_filler_cells,tag)
value
vars(postroute,opt_design,tag)
value
vars(postroute,add_filler_cells,tag)
value
vars(postroute,trim_metalfill,tag)
value
vars(postroute,save_design,tag)
value
vars(postroute,report_power,tag)
value
October 2014
235
vars(postroute,verify_power_domain,tag)
value
vars(postroute,run_clp,tag)
value
vars(postroute_hold,set_distribute_host,tag)
value
vars(postroute_hold,set_multi_cpu_usage,tag)
value
vars(postroute_hold,initialize_step,tag)
value
vars(postroute_hold,set_dont_use_mode,tag)
value
vars(postroute_hold,set_opt_mode,tag)
value
vars(postroute_hold,delete_filler_cells,tag)
value
vars(postroute_hold,opt_design,tag)
value
vars(postroute_hold,add_filler_cells,tag)
value
vars(postroute_hold,trim_metalfill,tag)
value
vars(postroute_hold,save_design,tag)
value
vars(postroute_hold,report_power,tag)
value
vars(postroute_hold,verify_power_domain,tag)
value
vars(postroute_hold,run_clp,tag)
value
vars(postroute_si_hold,set_distribute_host,tag)
value
vars(postroute_si_hold,set_multi_cpu_usage,tag)
value
vars(postroute_si_hold,initialize_step,tag)
value
October 2014
236
vars(postroute_si_hold,set_design_mode,tag)
value
vars(postroute_si_hold,set_dont_use,tag)
value
vars(postroute_si_hold,set_opt_mode,tag)
value
vars(postroute_si_hold,set_extract_rc_mode,tag)
value
vars(postroute_si_hold,set_si_mode,tag)
value
vars(postroute_si_hold,set_delay_cal_mode,tag)
value
vars(postroute_si_hold,set_analysis_mode,tag)
value
vars(postroute_si_hold,add_metalfill,tag)
value
vars(postroute_si_hold,delete_filler_cells,tag)
value
vars(postroute_si_hold,opt_design,tag)
value
vars(postroute_si_hold,add_filler_cells,tag)
value
vars(postroute_si_hold,trim_metalfill,tag)
value
vars(postroute_si_hold,save_design,tag)
value
vars(postroute_si_hold,report_power,tag)
value
vars(postroute_si_hold,verify_power_domain,tag)
value
vars(postroute_si_hold,run_clp,tag)
value
vars(postroute_si,set_distribute_host,tag)
value
vars(postroute_si,set_multi_cpu_usage,tag)
value
October 2014
237
vars(postroute_si,initialize_step,tag)
value
vars(postroute_si,set_design_mode,tag)
value
vars(postroute_si,set_extract_rc_mode,tag)
value
vars(postroute_si,set_si_mode,tag)
value
vars(postroute_si,set_analysis_mode,tag)
value
vars(postroute_si,set_delay_cal_mode,tag)
value
vars(postroute_si,add_metalfill,tag)
value
vars(postroute_si,delete_filler_cells,tag)
value
vars(postroute_si,opt_design,tag)
value
vars(postroute_si,add_filler_cells,tag)
value
vars(postroute_si,trim_metalfill,tag)
value
vars(postroute_si,save_design,tag)
value
vars(postroute_si,report_power,tag)
value
vars(postroute_si,verify_power_domain,tag)
value
vars(postroute_si,run_clp,tag)
value
vars(signoff,set_distribute_host,tag)
value
vars(signoff,set_multi_cpu_usage,tag)
value
vars(signoff,initialize_timing,tag)
October 2014
value
238
vars(signoff,initialize_step,tag)
value
vars(signoff,set_analysis_mode,tag)
value
vars(signoff,set_extract_rc_mode,tag)
value
vars(signoff,extract_rc,tag)
value
vars(signoff,dump_spef,tag)
value
vars(signoff,time_design_setup,tag)
value
vars(signoff,time_design_hold,tag)
value
vars(signoff,stream_out,tag)
value
vars(signoff,save_oa_design,tag)
value
vars(signoff,create_ilm,tag)
value
vars(signoff,summary_report,tag)
value
vars(signoff,verify_connectivity,tag)
value
vars(signoff,verify_geometry,tag)
value
vars(signoff,verify_metal_density,tag)
value
vars(signoff,verify_process_antenna,tag)
value
vars(signoff,save_design,tag)
value
vars(signoff,report_power,tag)
value
vars(signoff,verify_power_domain,tag)
value
October 2014
239
vars(signoff,ru_clp,tag)
value
vars(partition_list)
value
vars(partition,initialize_timing,tag)
value
vars(partition,load_cpf,tag)
value
vars(partition,commit_cpf,tag)
value
vars(partition,run_clp_init,tag)
value
vars(partition,save_init_dbs,tag)
value
vars(partition,set_budgeting_mode,tag)
value
vars(partition,update_constraint_mode,tag)
value
vars(partition,set_ptn_user_cns_file,tag)
value
vars(partition,set_place_mode,tag)
value
vars(partition,place_design,tag)
value
vars(partition,save_place_dbs,tag)
value
vars(partition,trial_route,tag)
value
vars(partition,assign_ptn_pins,tag)
value
vars(partition,check_pin_assignment,tag)
value
vars(partition,report_unaligned_nets,tag)
value
vars(partition,set_ptn_pin_status,tag)
value
October 2014
240
vars(partition,derive_timing_budget,tag)
value
vars(partition,save_budget_dbs,tag)
value
vars(partition,run_clp,tag)
value
vars(partition,partition,tag)
value
vars(partition,save_partition,tag)
value
vars(assemble,assemble_design,tag)
value
vars(assemble,specify_ilm,tag)
value
vars(assemble,load_ilm_non_sdc_file,tag)
value
vars(assemble,load_cpf,tag)
value
vars(assemble,commit_cpf,tag)
value
vars(assemble,initialize_timing,tag)
value
vars(assemble,update_timing,tag)
value
vars(assemble,pre_pac_verify_connectivity,tag)
value
vars(assemble,pre_pac_verify_geometry,tag)
value
vars(assemble,set_module_view,tag)
value
vars(assemble,delete_filler_cells,tag)
value
vars(assemble,opt_design,tag)
value
vars(assemble,add_filler_cells,tag)
value
October 2014
241
vars(assemble,post_pac_verify_connectivity,tag)
value
vars(assemble,post_pac_verify_geometry,tag)
value
October 2014
242
10
source FF/procs.tcl
setDistributeHost -local
See also,
Executing the Flow
October 2014
243
generateTracks
-cap_table $vars(rc_min,cap_table) \
-preRoute_res $vars(rc_min,pre_route_res_factor) \
-preRoute_cap $vars(rc_min,pre_route_cap_factor) \
-preRoute_clkres $vars(rc_min,pre_route_clk_res_factor) \
-preRoute_clkcap $vars(rc_min,pre_route_clk_cap_factor) \
-postRoute_res $vars(rc_min,post_route_res_factor) \
-postRoute_cap $vars(rc_min,post_route_cap_factor) \
-postRoute_clkres $vars(rc_min,post_route_clk_res_factor) \
-postRoute_clkcap $vars(rc_min,post_route_clk_cap_factor) \
-postRoute_xcap $vars(rc_min,post_route_xcap_factor) \
-T $vars(rc_min,T) \
-qx_tech_file $vars(rc_min,qx_tech_file)
-cap_table $vars(rc_max,cap_table) \
-preRoute_res $vars(rc_max,pre_route_res_factor) \
October 2014
244
-preRoute_cap $vars(rc_max,pre_route_cap_factor) \
-preRoute_clkres $vars(rc_max,pre_route_clk_res_factor) \
-preRoute_clkcap $vars(rc_max,pre_route_clk_cap_factor) \
-postRoute_res $vars(rc_max,pre_route_res_factor) \
-postRoute_cap $vars(rc_max,pre_route_cap_factor) \
-postRoute_clkres $vars(rc_max,pre_route_clk_res_factor) \
-postRoute_clkcap $vars(rc_max,pre_route_clk_cap_factor) \
-postRoute_xcap $vars(rc_max,pre_route_xcap_factor) \
-T $vars(rc_max,T) \
-qx_tech_file $vars(rc_max,qx_tech_file)
create_library_set \
-name fast \
create_library_set \
-name slow \
-rc_corner rc_min
October 2014
245
-rc_corner rc_max
-constraint_mode $vars(hold_view,constraint_mode) \
-delay_corner fast_min
-constraint_mode $vars(setup_view,constraint_mode) \
-delay_corner slow_max
October 2014
246
# begin derate.tcl
set_timing_derate -clock \
-cell_delay \
-early \
set_timing_derate -clock \
-cell_delay \
-late \
# <end derate.tcl>
set_analysis_view \
October 2014
247
setMaxRouteLayer 6
setDesignMode -process 90
-prefix WELLTAP \
-maxGap $vars(welltaps,max_gap) \
-inRowOffset $vars(welltaps,row_offset) \
-checkerboard
Variables affecting this step are listed here: Place [ on page 49|Example Settings for Each
Script#892148]
setDesignMode -process 90
October 2014
248
-clkGateAware $vars(clock_gate_aware) \
-placeIoPins $vars(place_io_pins)
-leakagePowerEffort $vars(leakage_power_effort) \
-dynamicPowerEffort medium$vars(dynamic_power_effort) \
-clkGateAware $vars(clock_gate_aware) \
-criticalRange $vars(critical_range)
-maxDistance $vars(tie_cells,max_distance) \
addTieHiLo
October 2014
249
setDesignMode -process 90
cleanupSpecifyClockTree
-leakagePowerEffort $vars(leakage_power_effort) \
-dynamicPowerEffort medium$vars(dynamic_power_effort) \
-clkGateAware $vars(clock_gate_aware) \
-criticalRange $vars(critical_range) \
-usefulSkew false
October 2014
250
The variables affecting this step are: CTS [ on page 50|Example Settings for Each Script#892076]
setDesignMode -process 90
setNanoRouteMode \
-routeWithLithoDriven $vars(litho_driven_routing) \
-drouteMultiCutViaEffort $vars(multi_cut_effort)
-leakagePowerEffort $vars(leakage_power_effort) \
-dynamicPowerEffort medium$vars(dynamic_power_effort) \
-clkGateAware $vars(clock_gate_aware) \
-criticalRange $vars(critical_range) \
-usefulSkew false
October 2014
251
setDesignMode -process 90
setNanoRouteMode \
-routeWithLithoDriven $vars(litho_driven_routing) \
-drouteMultiCutViaEffort $vars(multi_cut_effort)
The variables affecting this step are: PostCTS [ on page 50|Example Settings for Each
Script#892284]
setOptMode -postCtsClkGateCloning true
October 2014
252