Tutorial Innovus

Download as pdf or txt
Download as pdf or txt
You are on page 1of 47

EE434

ASIC & Digital Systems

Automatic Layout Generation


(Cadence Innovus)

Spring 2020
Dae Hyun Kim
[email protected]
1
Preparation for Lab2

• Download the following file into your working directory.


– wget http://eecs.wsu.edu/~ee434/Labs/lab2.tar.gz

• Unzip it.
– tar xvfz lab2.tar.gz

• Before you run Innovus, you should source the following files:
– source ictools_generic.sh
– source cadence_innovus17.sh

2
Benchmark

• VQS64_4 (four-input 64-bit pipelined quick sort)


– input [63:0] mX1, mX2, mX3, mX4
– input mCLK
– output [63:0] mY1, mY2, mY3, mY4

rC1
mX1 mY1

rC2
mX2 mY2

mX3 mY3
rC3

mX4 mY4
rC4
Registers Comparators
Level 0 Level 1 Level 2
3
What We Are Going To Do

1. Chip outlining
2. P/G network design
3. Placement
4. Pre-CTS optimization
5. CTS
6. Post-CTS optimization
7. Routing
8. Post-routing optimization
9. Fill insertion

4
1. Chip Outlining

• Run Innovus.
– innovus
• See the terminal.

• You can use


– GUI
– Text commands

5
1. Chip Outlining

• Click “File” → “Import Design…”.


• In the “Design Import” window, click “Load…” and choose
“VQS64_4_m.globals”. This will automatically fill up the settings.
Then, click “OK”.

6
1. Chip Outlining

• See the terminal for Innovus messages. There might be some


Error or Warning messages. You can ignore them.
• In the Innovus main window, press “f” to see the outline of the
layout.
• Innovus automatically computes and prepares the layout area.
• Let’s modify the layout area.
• In the main window, click “Floorplan” → “Specify Floorplan…”.
• Set the core utilization to 0.6.
• Set the core-to-left, core-to-top, core-to-right, and core-to-bottom
to 5.0.
• Then, click OK.

7
1. Chip Outlining

8
1. Chip Outlining

• Now, you will see the following window.

Power/Ground rings will


be laid out in this area.

Std. cells will be


placed in this core area.

9
Save

• Let’s save the current design.


• In the terminal, run the following command to save the current
design into “test_01_floorplan.enc”.
innovus #> saveDesign test_01_floorplan.enc

• Later on, you can load the design as follows.


– Run Innovus, click File → Restore Design → Data Type:
Innovus → select the .enc file.

10
2. P/G Network Design

• Click “Power” → “Power Planning” → “Add Rings…”.

11
2. P/G Network Design

• Fill in the input boxes as shown in the previous page and click
OK. Now you can see the power and ground rings.

12
2. P/G Network Design

• Zoom in the top-left corner (Mouse right click – hold – drag –


release). As shown below, the outer ring is VSS and the inner
ring is VDD. Blue: Metal 1. Red: Metal 2. Zoom in the via arrays.

Zoom in

13
2. P/G Network Design

• The “X” squares are vias connecting the M1 and M2 wires.

14
2. P/G Network Design

• Press “f” to zoom out to the full design.

• Now, we will draw power/ground stripes to connect the P/G


rings to standard cells.

15
2. P/G Network Design

• Click “Route” → “Special Route…”.

16
2. P/G Network Design

• P/G network

17
2. P/G Network Design

• saveDesign test_02_pg.enc

• Zoom in the following area.

18
2. P/G Network Design

• As you see, the P/G stripes are alternating between VDD and
VSS. See the vias.

Via array Ground stripe

Std. cell row

Power stripe

19
3. Placement

• Let’s place the instances (cells).


• In the main window, click “Place” → “Place Standard Cell”.
• In the “Place” window, click “Mode”.

20
3. Placement

• Turn on “Place IO Pins”. Set the “Specify Maximum Routing


Layer” to 6. We will use only six metal layers. Click OK. In the
“Place” window, click OK.

21
3. Placement

• It shows placement and trialRoute results. trialRoute is just a


quick routing for an estimation of some design metrics.
• See the terminal. It shows some more information.Click this button
if you can’t see the layout.
– Total wire length: 32,540.21um

• Save it.
– saveDesign test_03_pl.enc

22
3. Placement

• Let’s zoom in.

Cell orientation

Flipped (Top: VSS,


Bottom: VDD)

23
3. Placement

• Click a wire and press ‘q’. You will see a property window.

24
Visibility

• Let’s see the placement result only.


• Turn off the following check-box to turn off the visibility of the
wires.

25
Timing Analysis

• Run the following command to turn off SI-awareness.


– innovus #> setDelayCalMode –siAware false

• Then, run the following command to analyze setup time.


– innovus #> timeDesign –preCTS
– preCTS means “before Clock-Tree-Synthesis”. A clock tree
is designed after placement.

• It will show the following summary:

26
Timing Analysis

in2out

reg2out
Primary inputs Primary outputs
in2reg reg2reg Reg

Setup time analysis


Negative WNS

Design Rule
Violations

27
Layout density
Timing Analysis

• Run the following command to check the longest path.


– innovus #> report_timing
– The clock frequency is 1GHz.

F/F setup time (90ps)


Clock period
RT
AT
Slack (=RT – AT)

28
4. Pre-CTS Optimization

• Now, since the design violates the timing constraints, let’s


optimize it. (Notice that we can still try to optimize it to reduce
power even if it satisfies the timing constraints.)

• Run the following command to optimize the design before CTS.


– innovus #> optDesign –preCTS

• (This will take some time, up to several minutes depending on


the machine you are working with).

• After Pre-CTS optimization is done, you will see the following


result:

29
4. Pre-CTS Optimization

• Pre-CTS optimization

Positive WNS!!!

The density increased from 57% to 61%.

30
4. Pre-CTS Optimization

• saveDesign test_04_prectsopt.enc

31
5. Clock Tree Synthesis (CTS)

• Run the following command to run CTS.


– innovus #> create_ccopt_clock_tree_spec
– innovus #> get_ccopt_clock_trees *
• myCLK (You will see this.)
– innovus #> set_ccopt_property target_max_trans 0.05
• Max. transition time at a clock pin is 50ps.
– innovus #> set_ccopt_property target_skew 0.02
• Clock skew is 20ps.
– innovus #> ccopt_design

32
5. Clock Tree Synthesis (CTS)

• saveDesign test_05_cts.enc

33
Timing Analysis

• Run the following command to check timing.


– timeDesign –postCTS

34
Before CTS After CTS
6. Post-CTS Optimization

• Although we already satisfied the timing without any further


optimization after CTS, we will run post-CTS optimization.
– innovus #> optDesign –postCTS

35
6. Post-CTS Optimization

• saveDesign test_06_postctsopt.enc

• So far, we have done


– Placement
– CTS

• Now we will route the nets.

36
7. Routing

• Click “Route” → “NanoRoute” → “Route…”.


• Make sure that the top layer is “6”. If not, set it to 6.
• Click OK.

37
7. Routing

• Routing result.
• See the log.
– WL: 35,172um

38
7. Routing

• saveDesign test_07_route.enc

39
Timing Analysis

• Run the following command to check timing.


– timeDesign –postRoute

40
8. Post-Routing Optimization

• Although we’ve already satisfied the timing without any further


optimization after routing, we will run post-routing optimization.
– innovus #> optDesign –postRoute

41
Before postRoute opt. After postRoute opt.
Power Analysis

• innovus #> report_power

Power consumed inside std. cells when switching


Power consumed to drive nets
Total power
(9.7 mW)

42
8. Post-Routing Optimization

• saveDesign test_08_postrouteopt.enc

• Done.

43
9. Verification

44
9. Verification

• In the main menu, Verify → Very Geometry. Click OK.

45
9. Verification

• In the main menu, Verify → Very Connectivity. Click OK.

46
10. Conclusion

• Although there were six geometry violations, we will stop at this


point.

47

You might also like