Uploaded by jingying Z

ECF

advertisement
Usage of Early Clock Flow (ECF) in
Innovus
Product Version 18.1
July, 2018
Copyright Statement
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are
registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective
holders.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 2
Usage of Early Clock Flow (ECF) in Innovus
Contents
Purpose ....................................................................................................................... 4
Audience...................................................................................................................... 4
Terms .......................................................................................................................... 4
1.
Overview ............................................................................................................ 5
2.
ECF flow steps ................................................................................................... 6
2.1 Preparation......................................................................................................... 6
2.2 Steps inside ECF ............................................................................................... 7
2.3 Results and outputs ......................................................................................... 10
2.3.1 Information about useful skew advancing and delaying ................................ 11
2.3.2 GigaOpt and CCOpt progress and summary information .............................. 12
2.3.3 Pin insertion delays output ............................................................................ 12
3.
Pin insertion delays .......................................................................................... 13
Example..................................................................................................................... 14
Summary ................................................................................................................... 16
Support ...................................................................................................................... 16
Feedback ................................................................................................................... 16
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 3
Usage of Early Clock Flow (ECF) in Innovus
Purpose
In the default Innovus implementation flow, the clock tree cells are not yet inserted
during placement. Therefore, Innovus cannot consider routing congestion caused by the
addition of clock tree cells and the clock gating timing paths are inaccurate. This
application note describes the different steps done by the so-called ECF. Although it is
very design dependent, ECF can be used to get better placement and therefore better
congestion estimation, as well as clock gate enable timing estimation / optimization.
Audience
Since Innovus 18.1, ECF is no longer limited access. This document is intended for
Innovus users who are running into timing problems or routing congestion and want to
use ECF to achieve better timing and/or routability results.
Terms
CTD Clock Tree Debugger
CTS Clock Tree Synthesis
ECF Early Clock Flow
FF
Flip Flop
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 4
Usage of Early Clock Flow (ECF) in Innovus
1. Overview
ECF is inserting a preliminary clock tree during place_opt_design (note: place_design
is not sufficient – it will not launch ECF) using a fast clock tree clustering of CCOpt and
annotates the clock latencies for timing optimization. Figure 1 shows the basic steps
inside place_opt_design. Although it is very design dependent, building a clock tree
during place_opt_design normally results in a better placement and congestion
estimation. ECF includes clock gating timing path estimation as well. This can result in
better timing, because pre-CTS optimization has more timing impact than post-CTS and
ccopt_design has a better starting point. ECF uses CCOpt useful skew technologies,
doing late as well as early skewing.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 5
Usage of Early Clock Flow (ECF) in Innovus
2. ECF flow steps
This section describes the different steps inside ECF.
2.1 Preparation
Since Innovus 18.1, ECF is no longer a limited access feature. ECF is invoking fast
CCOpt CTS clustering during place_opt_design. Therefore, the CTS setup must be
done before invoking place_opt_design. At the end of this application note is a basic
script file example running ECF. You enable ECF with:
setDesignMode -earlyClockFlow true # default is false
As shown in Table 1, useful skew is turned on during place_opt_design by default. You
can turn off useful skew during place_opt_design by using one of the following
variables:
setOptMode -usefulSkewPreCTS false # default is true
setOptMode -usefulSkew false
# default is true, master switch for useful
skew
When ECF is turned on (default set to false) and useful skew is turned off (default set to
true), you will get early clock buffering and better congestion estimation caused by CTS
without useful skewing.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 6
Usage of Early Clock Flow (ECF) in Innovus
2.2 Steps inside ECF
See Figure 2 for steps inside place_opt_design using ECF. For detailed information,
refer to the Innovus .log files and the corresponding documentation (for example,
InnovusUG.pdf > Clock Tree Synthesis).
place_opt_design starts with extracting the clock tree specification. You create a clock
tree specification with create_ccopt_clock_tree_spec or by sourcing an appropriate
specification file. If there is no clock specification in the memory, Innovus will create it
on the fly and delete it at the end of place_opt_design. This can be seen in the log file at
the beginning of the place_opt_design_step:
…
Begin: Create ccopt clock spec
Creating clock tree spec for modes (timing configs): f_mode test_cmode
…
And at the end of place_opt_design:
…
CCOpt: Deleting clock spec ...
…
Whereas if the clock tree specification file already exists in the memory, you will see it
as well in the log file at the beginning of place_opt_design:
…
CCOpt: Pre-existing ccopt clock spec ...
…
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 7
Usage of Early Clock Flow (ECF) in Innovus
After extracting the clock tree specification, there is a global placement step followed by
an initial timing summary:
-----------------------------------------------------------Initial Summary
-----------------------------------------------------------Setup views included:
func_max_view test_max_view
+--------------------+---------+
|
Setup mode
|
all
|
+--------------------+---------+
|
WNS (ns):| -2.251 |
|
TNS (ns):|-223.050 |
|
Violating Paths:|
289
|
|
All Paths:| 4307
|
+--------------------+---------+
Then, the preliminary clock tree is built. At the end of the clustering, several useful
reports are written into the log file. Look for DAG (Directed Acyclic Graph) to find it in
the log file. This information includes number and type of buffers and inverters used for
the clock tree, clock tree wire lengths for top, trunk and leaf nets, clock net violations,
skew group summary together with its minimal, maximal insertion delay, skew, skew
targets, … Similar information is written into the log file during CTS (ccopt_design).
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 8
Usage of Early Clock Flow (ECF) in Innovus
Clock DAG stats at the end of CTS:
==============================
-------------------------------------------------------------Cell type
Count
Area
Capacitance
-------------------------------------------------------------Buffers
88
3768.218
1.351
Inverters
0
0.000
0.000
…
Clock DAG library cell distribution at end of CTS:
==================================================
-------------------------------------------Name
Type
Inst
Inst Area
Count
(um^2)
-------------------------------------------Clkbufx12
buffer
67
3361.792
Clkbufxx8
buffer
1
40.141
…
Skew group summary at end of CTS:
=================================
---------------------------------------------------------------------Half-corner
Skew Group
Min ID Max ID Skew Skew target …
---------------------------------------------------------------------Setup_max:setup.late clk_f/f_mode 0.864
1.588
0.724
0.432*
…
…
Slew violation summary across all clock trees - Top 10 violating pins:
======================================================================
Target and measured clock slews (in ns):
--------------------------------------------------------------------------------------------Half corner
Violation Slew
Slew
Dont
Ideal Target
Pin
amount
target achieved touch net?
source
net?
--------------------------------------------------------------------------------------------Setup_max:setup.late
0.000
0.300
0.300
N
N
auto extracted /test_des/FF3/CK
…
After building the initial clock tree, several iterations between incremental placement,
timing optimization, useful skewing (if useful skew is set to true; see table 1), congestion
repair, power optimization, … will follow. Inside optimization, there are several useful
skew passes. These passes start in the log file with the following:
CCOptDebug: Before useful skew*: reg2cgate* WNS -1.696ns TNS -4.003ns;
and ending with the following:
CCOptDebug: After useful skew*: reg2cgate* WNS -1.376ns TNS -3.683ns;
At the end of place_opt_design is a summary table about the progress of these different
useful skew passes (see an example in section 2.3.2, GigaOpt and CCOpt progress
and summary information). After place_opt_design, ccopt_design will follow as the next
major step inside the Innovus implementation flow.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 9
Usage of Early Clock Flow (ECF) in Innovus
2.3 Results and outputs
With ECF, a preliminary clock tree is created during place_opt_design using CCOpt
clustering. Therefore, information about the clock tree such as CTS cell usage, counts
and area, CTS slew violations … can be found in the log file. Similar information is
written into the log file during ccopt_design. As in a non-ECF flow, the progress of
timing closure is also written into the log file. Additional useful information using ECF is
in the log file at the end of place_opt_design. This includes statistical information about
useful skew advancing and delaying, the timing progress of place_opt_design and a
dump of the applied pin insertion delays. The additional information about useful skew
(sections 2.3.1 – 2.3.3) is only written into the log file if you have turned on useful skew
during place_opt_design (see Table 1).
Clock gate latencies are updated irrespective of whether you are using the ECF flow
with or without useful skew. Latency updated SDC are written into the
<design_database>/mmmc/views/<view>/latency.sdc file. These latencies are
translated into pin insertion delays (see the Pin insertion delays section) when read into
Innovus. Following is an example of such a SDC update:
set_clock_latency -clock_gate -0.47 [get_pins {test/clk_u/CK}] -clock [get_clocks {clk_r}]
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 10
Usage of Early Clock Flow (ECF) in Innovus
2.3.1 Information about useful skew advancing and delaying
The following information about useful skew advancing and delaying can be found in the
log file at the end of place_opt_design. The equivalent Innovus command to get useful
skew advancing and delaying statistics is report_ccopt_pin_insertion_delays.
Useful skew: advancing
======================
Found 31 advances (1.085% of 2679 clock tree sinks)
----------------------------From (ns)
To (ns)
Count
----------------------------0.000
0.090
12
0.090
0.180
11
…
1.620
1.710
0
1.710
1.800
1
----------------------------Total
Mean
Std.Dev
: 7.876ns
: 0.272ns
: 0.416ns
Smallest advance : 0.003ns at test_design/FF1/CK
Largest advance : 1.765ns at test_design/FF35/CK
Useful skew: delaying
=====================
Found 41 delays (1.235% of 2679 clock tree sinks)
----------------------------From (ns)
To (ns)
Count
-----------------------------0.170
-0.160
9
-0.160
-0.150
11
….
-0.030
-0.020
0
-0.020
-0.010
1
----------------------------Total
Mean
Std.Dev
: -4.157ns
: -0.126ns
: 0.049ns
Smallest delay : -0.013ns at
Largest delay : -0.163ns at
test_design/FF95CK
test_design/FF63CK
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 11
Usage of Early Clock Flow (ECF) in Innovus
2.3.2 GigaOpt and CCOpt progress and summary information
The following information about the timing progress is written into the log file after
place_opt_design when ECF is used together with useful skew:
2.3.3 Pin insertion delays output
Pin insertion delays as a result of ECF and useful skew are also written to the log file:
Begin: Dump ccopt insertion delays
set_ccopt_property insertion_delay -delay_corner max -late -rise -pin <pin-name> 1.76493
set_ccopt_property insertion_delay -delay_corner max -late -rise -pin <pin-name> 0.310455
set_ccopt_property insertion_delay -delay_corner max -late -rise -pin <pin-name> -0.0327267
set_ccopt_property insertion_delay -delay_corner max -late -rise -pin <pin-name> -0.0454266
set_ccopt_property insertion_delay -delay_corner max -late -rise -pin <pin-name> -0.042
...
set_ccopt_property insertion_delay -delay_corner max -late -rise -pin <pin-name> 0.0103148
set_ccopt_property insertion_delay -delay_corner max -late -rise -pin <pin-name> 0.08515
End: Dump ccopt insertion delays
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 12
Usage of Early Clock Flow (ECF) in Innovus
3. Pin insertion delays
Pin insertion delays are used to forward latencies to CTS (ccopt_design). Therefore, do
not use reset_cts_config or reset_ccopt_config before running ccopt_design. These
commands will delete pin insertion delays. Skew measurements of CTS includes the pin
insertion delay. Pin insertion delays are also displayed in the clock tree debugger
window after place_opt_design or ccopt_design. Figure 5 at the end of this application
note shows an example.
Be aware of the different prefixes of the SDC command versus the insertion_delay
command inside Innovus.
In SDC, a negative offset means the sink is advanced – for CTS it is a positive offset as
shown in Figure 3.
SDC:
In Innovus:
set_clock_latency -0.25 [get_pins {m0/ck}]
set_ccopt_property insertion_delay -pin m0/ck 0.25
A positive offset in SDC means the sink is delayed – for CTS it is a negative offset.
SDC:
In Innovus:
set_clock_latency 0.3 [get_pins {f2/CK}]
set_ccopt_property insertion_delay -pin f2/CK -0.3
Using ECF, there is a preliminary clock tree (using CCOpt clustering algorithm) after
running place_opt_design. These clock tree cells will get removed at the invocation of
ccopt_design. Inside ccopt_design, the clock tree will be recreated using CCOpt
clustering, balancing and skewing algorithms.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 13
Usage of Early Clock Flow (ECF) in Innovus
Example
In this section, the results of a small design with clock gating timing problems are
described. For this design, the following basic script file was used. There have been two
runs – one with ECF (and useful skew) and the other without ECF. Routability was not a
problem for both runs. Using this design, ECF helped to fix clock gating violations – but
this is of course very design dependent.
# very basic script file for running ECF
setMultiCpuUsage -localCpu 4
#
restoreDesign testDesign.enc
#
# early clock flow till 17.x is limited access
# setLimitedAccessFeature innovusEarlyClockFlow 1
setDesignMode -earlyClockFlow true
#
set clock_buffer_cells {clkbufx2 clkbufx4 clkbufx8 clkbufx12 clkbuf16}
set clock_inverter_cells {clkinvx2 clkinvx4 clkinvx8 clkinvx12 clkinvx16}
set icgCells {clkicg1 clkicg2 clkicg4 clkicg6 clkicg8 clkicg12 clkicg16}
#
create_ccopt_clock_tree_spec
set_ccopt_property buffer_cells $clock_buffer_cells
set_ccopt_property inverter_cells $clock_inverter_cells
set_ccopt_property clock_gating_cells $icgCells
# additional ccopt settings like
#
create_route_type ...
# should be made here
place_opt_design
#
ccopt_design
#
The timing after ccopt_design without ECF (setDesignMode -earlyClockFlow false)
shows timing violations:
-----------------------------------------------------------optDesign Final Summary
-----------------------------------------------------------Setup views included:
func_max_view
+--------------------+---------+---------+---------+---------+
|
Setup mode
|
all
| reg2reg |reg2cgate| default |
+--------------------+---------+---------+---------+---------+
|
WNS (ns):| -0.710 | -0.369 | -0.710 | 4.940 |
|
TNS (ns):| -7.589 | -6.646 | -0.943 | 0.000 |
|
Violating Paths:|
51
|
47
|
4
|
0
|
|
All Paths:| 2781
| 2708
|
73
|
175
|
+--------------------+---------+---------+---------+---------+
Total CPU time:
0:14:27
Peak memory (main): 1791.05MB
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 14
Usage of Early Clock Flow (ECF) in Innovus
Using ECF results in significantly better timing. As already mentioned, this is very
design dependent!
-----------------------------------------------------------optDesign Final Summary
-----------------------------------------------------------Setup views included:
func_max_view
+--------------------+---------+---------+---------+---------+
|
Setup mode
|
all
| reg2reg |reg2cgate| default |
+--------------------+---------+---------+---------+---------+
|
WNS (ns):| 0.011 | 0.011 | 0.046 | 5.941 |
|
TNS (ns):| 0.000 | 0.000 | 0.000 | 0.000 |
|
Violating Paths:|
0
|
0
|
0
|
0
|
|
All Paths:| 2781
| 2708
|
73
|
175
|
+--------------------+---------+---------+---------+---------+
Total CPU time:
0:14:42
Peak memory (main): 1819.89MB
The runtime of flows is in the same range, because the time you spent for ECF during
place_opt_design will be saved during timing optimization (ccopt_design).
The clock tree debugger (CTD) after place_opt_design displays the preliminary
implemented clock tree (see Figure 4).
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 15
Usage of Early Clock Flow (ECF) in Innovus
Pin insertion delays are displayed as vertical dotted lines. The insertion delays are
visible after place_opt_design (see Figure 5) or ccopt_design.
Summary
This application note described how to use ECF inside Innovus. The document
explained the setup of ECF, its steps preformed inside place_opt_design, its results and
outputs, and how the results of ECF are forwarded to ccopt_design.
Support
Cadence Support Portal provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to
interact with Cadence Customer Support. Visit https://support.cadence.com.
Feedback
Email comments, questions, and suggestions to content_feedback@cadence.com.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2018 Cadence Design Systems, Inc. All rights reserved worldwide.
Page 16
Download