Cell Design Tutorial
Cell Design Tutorial
Cadence Design Systems, Inc., 555 River Oaks Parkway, San Jose, CA 95134, USA
Trademarks: Trademarks and service marks of Cadence Design Systems, Inc. (Cadence) contained in this
document are attributed to Cadence with the appropriate symbol. For queries regarding Cadence’s trademarks,
contact the corporate legal department at the address shown above or call 1-800-862-4522.
Restricted Print Permission: This publication is protected by copyright and any unauthorized use of this
publication may violate copyright, trademark, and other laws. Except as specified in this permission statement,
this publication may not be copied, reproduced, modified, published, uploaded, posted, transmitted, or
distributed in any way, without prior written permission from Cadence. This statement grants you permission to
print one (1) hard copy of this publication subject to the following conditions:
1. The publication may be used solely for personal, informational, and noncommercial
purposes;
2. The publication may not be modified in any way;
3. Any copy of the publication or portion thereof must include all original copyright,
trademark, and other proprietary notices and this permission statement; and
4. Cadence reserves the right to revoke this authorization at any time, and any such use
shall be discontinued immediately upon written notice from Cadence.
Disclaimer: Information in this publication is subject to change without notice and does not represent a
commitment on the part of Cadence. The information contained herein is the proprietary and confidential
information of Cadence or its licensors, and is supplied subject to, and may be used only by Cadence’s
customer in accordance with, a written agreement between Cadence and its customer. Except as may be
explicitly set forth in such agreement, Cadence does not make, and expressly disclaims, any representations
or warranties as to the completeness, accuracy or usefulness of the information contained in this document.
Cadence does not warrant that use of such information will not infringe any third party rights, nor does Cadence
assume any liability for damages or costs of any kind that may result from use of such information.
Restricted Rights: Use, duplication, or disclosure by the Government is subject to restrictions as set forth in
FAR52.227-14 and DFAR252.227-7013 et seq. or its successor.
Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Related Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Typographic and Syntax Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
Getting Started with the Cadence Software . . . . . . . . . . . . . . . . . . 9
Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Copying the Tutorial Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Starting the Cadence Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Setting the Working Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Finding the Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Loading the Cadence Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Using the CIW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Using Menus and Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Opening Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Opening the Library Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
About the Tutorial Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Browsing the Master Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Displaying the mux2 Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Setting Layer Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Measuring Distances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Zooming In on the Multiplexer Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Measuring Distances with the Ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Changing to a Previous Zoom or Pan Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Fitting a Design in a Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Returning to the Previous Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Using Window Scroll Bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Zooming Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Using the Fit All Bindkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Zooming In and Out with the Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Using Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Using the Help Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Exiting the Cadence Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2
Creating the Inverter Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
If You Have Not Completed the Previous Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Starting a New Layout Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Creating a New Cellview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Displaying the Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Using Pan to View the Positive Quadrant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Creating Instances for N- and P-Transistors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Creating the N-Transistor Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Stopping Repeating Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Creating the P-Transistor Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Connecting the Inputs and Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Selecting Layers in the LSW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Connecting the Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Nesting a Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Connecting the Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Adding the Power Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Selecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Adding the Ground Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Adding the Well . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Checking Design Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Finding Out if You Can Run DRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Running the Design Rule Checker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Deleting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Saving Your Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3
Creating the Multiplexer Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
If You Have Not Completed the Previous Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Creating a Hierarchical Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Creating a New Cellview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Opening a Schematic for Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Creating the First nand2 Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Copying the nand2 Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Creating the Inv Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Editing the Inverter in Place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Opening a Cell to Edit in Place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Stretching an Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Returning to the Multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Displaying Hierarchy Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Listing the Cells in the Multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Changing Display Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Placing and Flattening an Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Copying the nand2 Instance Again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Placing the Connect Cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Flattening the Connect Cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Saving the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Using Path Stitching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Turning Gravity Off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Overview of Path Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Starting the Path on metal1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Changing to metal2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Completing the Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Creating Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
About Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Creating Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Saving the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Closing the mux2 Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Creating a Guard Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Starting Layout Accelerator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
About Multipart Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Moving the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Creating the Multipart Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Why You Save Changes to a Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Saving Changes to the Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Saving the Template to the Technology File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Drawing the Guard Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Editing the Guard Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4
Verifying the Multiplexer Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Finding Out if You Can Run Interactive Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
If You Have Not Completed the Previous Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Creating a Test Case for Checking Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Displaying Only the metal1 Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5
Creating and Editing ROD Objects with the Layout Editor
131
About ROD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Creating a ROD Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Examining the ROD Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Editing the ROD Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Creating a ROD Polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Examining the ROD Polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Looking at Handles on ROD Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Editing the ROD Polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Creating User-Defined Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Aligning the ROD Polygon and Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Editing the Aligned Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Stretching a Parameterized Cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Saving mux2gs in the tutorial Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Creating a Path through a Multipart Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6
Creating a Graphical Parameterized Cell . . . . . . . . . . . . . . . . . . . . 159
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
More About Pcell Supermaster and Submaster Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Flowchart for Defining Pcell Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
About the Tutorial Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
About Stretch Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
About Repetition Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Starting the Layout Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Opening the Tutorial Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Defining the First Parameter: Stretch Line for Gate Width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Turning Off Command Repeat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Checking for Existing Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Defining a Stretch Line for the Width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Compiling and Testing the Width Stretch Line Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Defining the Second Parameter: Repeating the Contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Defining a Repeat Group for Contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Compiling and Testing the Contact Repeat Group Parameter . . . . . . . . . . . . . . . . . . . . . . . . . 176
Understanding the Number of Repetitions Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Defining the Third Parameter: Stretch Line for Gate Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Compiling and Testing the Length Stretch Line Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Defining the Fourth Parameter: Repeating the Gate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Compiling and Testing the Gate Repeat Group Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Reviewing Parameter Values for the Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Defining a Dependent Stretch Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Defining the Dependent Stretch Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Modifying the Gate Repeat Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Compiling and Testing the Dependent Stretch Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Saving the Pcell and Exiting the Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Preface
This tutorial introduces you to the Virtuoso layout editor and the Assura™ interactive
verification products.
Each tutorial chapter is divided into several sections. The beginning of each section lists the
expectations of what you will learn. The step-by-step instructions help you become
acquainted with basic operations of the software. After you complete the tutorial, you will be
better prepared to use the other Cadence manuals and to attend Cadence training classes.
In Chapter 2, you create a layout design using many of the layout editor commands. You use
the same design throughout most of the tutorial. The design that you start with at the
beginning of a chapter is built on the preceding chapters. If you do not want to complete the
chapters in sequence, however, you can use the prepared files in the tutorial database.
This tutorial assumes that you are familiar with your workstation, operating system, and
window manager.
Related Documents
This tutorial is designed to be used with other manuals and training courses about the layout
editor and related products. Which book you use depends on the kind of information you
need:
The instructions for starting a command from a menu will be abbreviated. When you are
asked to “choose” commands from a menu, you must first click on the menu name, then on
the command. For example, “Choose File – Open” means to click on File to display the menu,
then click on Open to execute the command.
Instructions for starting a command from the keyboard will use “press,” followed by the key
sequence. For example, “Press the Return key.”
Other syntax conventions that may be used in this document are described below.
variable Indicates text that you must replace with text appropriate to your
system. An example is: cd your_install_dir/tools/
dfII/bin/layoutPlus
1
Getting Started with the Cadence
Software
In this chapter, you learn about the Cadence® software environment and the Virtuoso®
layout editor as you do the following tasks:
■ Copying the Tutorial Database on page 10
■ Starting the Cadence Software on page 12
■ Opening Designs on page 15
■ Displaying the mux2 Layout on page 18
■ Setting Layer Visibility on page 20
■ Measuring Distances on page 21
■ Changing to a Previous Zoom or Pan Image on page 23
■ Using Help on page 26
■ Using the Help Button on page 26
■ Exiting the Cadence Software on page 27
Prerequisites
Before you begin the tutorial, be sure your system administrator has installed the layout editor
and (optionally) the Assura™ interactive verification products. In this tutorial you will run the
following tools: Layout, Layout XL and Pcell. You must have these installed to complete all the
tasks in the tutorial.
This tutorial does not use or cover the Team Design Manager (TDM). For information about
TDM, refer to the Team Design Manager User Guide .
If the response is a list of files, you have a cell_design directory. Rename the
cell_design directory in your home directory by typing.
mv cell_design old_cell_design
2. Find the installation directory for Cadence software by typing
instdir
You see the installation directory; for example,
/usr/cadence/tools/dfII
3. Change directory to your_install_dir/samples/tutorials/le.
For example, if your installation directory is
/usr/cadence/tools/dfII
type
cd /usr/cadence/tools/dfII/samples/tutorials/le
4. Copy the cell_design directory to your home directory by typing
cp -r cell_design ~/
The cell_design directory should contain these files and subdirectories:
.cdsenv
.cdsinit
ROD
cds.lib
cellTechLib/
display.drf
master/
mux2_strmin.template
mux2_strmout.template
pCells/
skill
tutorial/
If the data was not copied successfully (you get an error message), type
cd
rm -rf cell_design
and try copying the cell_design directory to your home directory again.
The layout editor executables are layout (layout and interactive design rule checking) and
layoutPlus (layout, complete verification, and other layout-related tools such as
compaction). To do all the exercises in this tutorial, you need to have layoutPlus. If you
have only layout, you will not be able to do some of the verification steps in this tutorial.
Window title
Menu banner
Output area
Input line
Mouse bindings line
Prompt line
Window title displays the Cadence executable name and the path to the log file that records
your current editing session. The log file appears in your home directory.
Menu banner lets you display command menus to access all the Cadence design framework
II tools.
Output area displays a running history of the commands you execute and their results. For
example, it displays a status message when you open a library. The area enlarges when you
enlarge the CIW vertically.
Input line is where you type in Cadence SKILL language expressions or type numeric values
for commands instead of clicking on points.
Mouse bindings line displays the current mouse button settings. These settings change as
you move the mouse in and out of windows and start and stop commands.
Many commands have forms you use to supply the command with additional information.
Some commands have option forms that you do not always need. You can use the User
Preferences command to set whether or not option forms always appear when commands
start. In this tutorial, option forms always appear when you start commands.
Opening Designs
The Open File form lets you open designs in the libraries.
The master library contains the complete multiplexer design you will create in the following
chapters of this tutorial.
Each cell can have multiple views called cellviews. A cellview is a specific representation of
a cell; for example, a layout or a schematic.
➤ In the Cell column, click mux2 to display the cellviews for the mux2 design.
The view names appear.
The mux2 design has six cellviews.The cellviews and their uses are described here:
❑ The abstract cellview contains an abstract representation of the layout for use by
Cadence placement and routing software.
❑ The extracted cellview contains layout with connectivity for use by verification
programs.
❑ The layout cellview contains a traditional layout using polygons and other shapes.
❑ The layout_save cellview is a backup of the layout cellview.
❑ The schematic cellview contains the logical design for the multiplexer.
❑ The symbol cellview contains a symbol representation of the schematic.
3. In the Open File form, click the read radio button to display this cellview in read-only
mode.
4. Click OK.
The layout window opens and the multiplexer layout appears. The window has several
components: icon menu, menu banner, and status banner.
The icon menu appears (by default) on the side of the window, listing the icons for
frequently used commands. The menu banner contains menus that let you execute the
layout editor commands. The status banner displays mode and coordinate information.
Each component is explained in detail in later sections of this tutorial.
Another window, called the Layer Selection Window (LSW), appears.
5. To see the commands that you can use from the icon menu, slide the mouse over the
icons.
As you move over an icon, the command name appears.
Note: When you open a cellview in edit mode, more icons appear in the menu.
There are several ways to change the LSW to make layers selectable, visible, and valid. In
this section, you learn to use the LSW to change the visible layers in the mux2 window.
Measuring Distances
Most designers must create objects according to precise measurements. The layout editor
provides functionality to help designers be as precise as possible. In this section, you learn to
■ Enlarge (zoom in) a portion of the cellview
■ Create a ruler to measure objects in the cellview
4. Click the opposite edge of the poly1 layer to complete the ruler.
5. In the Create Ruler form, click Cancel to stop the command.
All layout editor Create commands, such as Create Ruler, automatically repeat until you
cancel them or start a different Create command.
6. Choose Window – Clear All Rulers to remove the ruler you drew.
The ruler disappears. These rulers are not part of the cellview and are not saved. The
Clear Rulers command removes all rulers in the cellview.
You also learn to use a bindkey, which is a shortcut to start commands. This tutorial
periodically points out the bindkeys to start commands.
Zooming Out
To zoom out,
➤ Choose Window – Zoom – Out by 2.
The window now shows more of the design at a smaller magnification.
To zoom in,
1. Click and hold right on one corner of the area you want to enlarge.
2. While still pressing right, move the cursor diagonally.
A box appears and stretches to follow the cursor. Pressing a mouse button and dragging
the cursor to create a box is called “drawthrough.”
3. Release the mouse button.
The area enclosed by the box you drew now fills the screen.
Next, create a box in which you want to fit the current window contents.
4. With the cursor inside the mux2 window, press and hold the Shift key.
5. Still pressing the Shift key, press and hold right and create a box in which you want to
fit the current window contents.
6. Release the mouse button.
The window zooms out. You see more of the design, but less detail.
Using Help
The Help button on forms and in windows displays information about the layout editor.
■ To display a page of information about the command you are using, click Help in the
command form or options form.
■ To display the Virtuoso Layout Editor User Guide Table of Contents from which you can
navigate to the information you want to see, click Help in a layout design window and
choose Contents.
Another way to display Help is to use the F1 key at the top of your keyboard. F1 is the bindkey
for Help.
■ To display a page of information about a command, press F1 while your cursor is in the
design window and the command is running.
■ To see the Virtuoso Layout Editor User Guide Table of Contents, press F1 while your
cursor is in a layout design window.
3. Choose Help – Contents (at the top of the Help window) to read details about using the
OpenBook® online documentation library’s help.
A second window appears. You can click the topics in this window to find out more about
the Help system.
4. Click Close to close the FrameViewer – Help window.
5. In the Virtuoso Layout Editor User Guide Table of Contents, click any blue text to read
about that topic.
6. Click Close to close the Help window.
Summary
In this chapter, you learned the fundamentals of using Cadence software and of viewing
designs. Specifically, you
■ Logged in and started the Cadence software
❑ Learned about the CIW
■ Browsed libraries with the Library Browser window
❑ Displayed the libraries, cells, and views
2
Creating the Inverter Layout
This chapter introduces you to the Virtuoso layout editor as you perform the following tasks:
■ Starting a New Layout Design on page 30
■ Creating Instances for N- and P-Transistors on page 32
■ Connecting the Inputs and Outputs on page 36
■ Checking Design Rules on page 54
■ Saving Your Design on page 56
It is possible to run out of resources, such as memory, if you run multiple layout editors. Before
you start the software, check whether the software is already running.
As introduced in the previous chapter, a design cell is stored in a library. The cell can have
several views, such as schematic or layout, that are different representations of the design.
Before you can open a new design, you must have a library and it must contain definitions of
the types of views you use. For this tutorial, the library and views have already been created
for you.
Note: You will be instructed to move the cursor to specific X and Y coordinates as you build
your design. These coordinates may differ slightly from the coordinates on your system. This
should not be a problem in building the design.
6. Click OK, to create the new cellview and close the form.
After a few moments, the Inv layout cellview appears in a layout window. The window is
empty, and you can see the axes and the grid points.
The minor grid points are white. The major grid points are green. You might need to look
closely to see the difference in color. Notice that a major grid point (green) appears in place
of every fifth minor grid point (white).
In this section, you place instances of two parameterized cells (pcells). A parameterized cell
is designed to let you change some of its features whenever you place an instance of the cell.
You will learn how to create pcells later in this tutorial.
The pcells you place in this section are designed to change dimensions based on the length,
width, and number of gates. These changeable dimensions are the parameters of each cell.
You enter parameter values when you place the pcell instances.
You can double-click in a text field to highlight and type over a word. Press the Tab key
to move to the next form field. The View and Names fields are automatically assigned.
3. Press the Tab key to display the parameter fields.
The parameter names and values appear at the bottom of the form. You are going to
change these parameters for this exercise.
4. Move the cursor into the cellview window.
Outlines of the shapes in the n-transistor follow the cursor. The outlines help you align
the cell as you place it.
5. In the Create Instance form, change the width parameter to 11.
You can stop repeating commands whenever you want to ensure that you do not change your
design by mistake.
Note: If a repeating command has an options form, you can also stop the command by
clicking Cancel in the form. You already practiced this with the Create Ruler command in the
previous chapter.
■ Use infix mode to reduce the number of mouse clicks needed to create an object
Every layer in your library is assigned a purpose, such as net or drawing. Most layouts use
layers with purposes of drawing, so by default the Layer Selection Window (LSW) shows all
the layers that are defined as drawing in your library technology file. The abbreviation dg after
each layer name means drawing.
The metal1 layer is outlined in bold and appears at the top of the LSW. This tells you
metal1 dg is the current entry layer. The layout editor prompts refer to this as the entry
layer.
You have completed the rectangle that connects the output of the two transistors.
The layout window and CIW still display a prompt because repeat mode is on.
Nesting a Command
Nesting means to run one command while another command is still running. For example, if
you make a mistake while using the Create Rectangle command, you can use Edit – Undo to
undo the previous command. This does not stop the Create Rectangle command but does nest
the Undo command.
Note: You cannot nest repeating commands. For example, you cannot nest the Copy
command while using the Create Rectangle command.
To nest a command,
1. Choose Edit – Undo.
The rectangle disappears.
2. Choose Edit – Redo.
The rectangle reappears.
You can undo up to 10 previous commands. Use Redo if you used Undo by mistake.
Paths are shapes defined by a centerline and a width. You set the width in the Create Path
form and create the path centerline.
1. In the LSW, click the poly1 dg layer.
The poly1 layer appears at the top of the LSW.
The system still prompts you to create rectangles because repeat mode is on. You do not
need to manually stop the Create Rectangle command. It stops automatically when you
choose any other Create or Edit command.
2. Choose Create – Path.
The Create Path form appears. The width is set to 1 micron, which is the minimum width
for the poly1 layer.
The path appears. Double-clicking tells the system where to end the path.
Polygons are shapes defined by any number of points. Polygons must be closed; that is, the
first point and the last point must be the same. The layout editor can close the polygon for you
automatically.
❑ Two dashed lines at right angles to each other attached to the two points you
entered. The dashed lines show how the layout editor would close the polygon if you
click twice on the second point you entered.
Undoing Points
If you make a mistake while creating an object, you do not have to start over. You can back
up any number of points by pressing the Backspace key.
The last point you entered is not correct. The metal1 shape should be one micron outside the
boundary of the p-transistor. Because you are using L90 snap mode, the system entered two
points for you, so you must back up two points.
1. Press the Backspace key.
The last point you entered is undone.
2. To undo the other point, press Backspace again.
Now you can enter the correct point and finish the polygon.
X =0.0, Y = 31.0
The polygon is complete. You clicked twice to tell the system to close the polygon.
3. Press the Escape key to stop the Create Polygon command.
4. Press the f key to fit the design in the window.
Selecting Objects
After you create objects, you can edit them. To edit an object, first you need to select it. There
are two selection modes: full and partial. In full mode, you select the entire object. In partial
mode, you can select an entire object or just an edge or corner of an object. You use the F4
key to toggle between selection modes. The selection mode is displayed in the status banner
of the window.
Full mode:
Partial mode:
To select an object, set the selection mode and click the object. You also use the left mouse
button to deselect objects by clicking in an empty part of the design. You can select one or
several objects at a time. In this section, you practice selecting objects in the full mode (the
default) before you go on to edit the inverter design.
Note: As you select and deselect objects in this section, notice how the pointer changes.
When you select an object, then move the cursor within the selected object, you see the
pointer change to four arrows ( ), indicating you can move the object. When you select the
edge or vertex (corner) of an object, you see the pointer change to an arrow ( or ),
indicating you can stretch the edge or corner. Refer to the Virtuoso Layout Editor User
Guide for detailed descriptions about moving and stretching objects.
1. Click inside the polygon you just created to select it.
The polygon is highlighted in a white line, showing it is selected.
To make it easier to click the path, you can zoom in. The polygon is deselected, and the
path is selected.
The polygon is
deselected and the
Click the path. path is selected.
Both the polygon and the path are deselected. Clicking outside all objects deselects any
objects that are selected.
All objects entirely inside the selection box are highlighted and selected.
To finish the
box, release the
mouse button.
The objects inside the n- and p-transistors are not highlighted. Because the transistors
are cells, only their borders are highlighted.
6. Press Control and click the n-transistor.
The n-transistor is deselected; all other objects remain selected. Pressing Control lets
you deselect one object from a selected group.
You can select objects either before or after you start any editing command. In this exercise,
you practiced selecting before starting a command. In the rest of this tutorial, you usually
select objects after starting a command because this is more typical for new users.
For detailed information about selecting and deselecting objects, refer to the Virtuoso
Layout Editor User Guide.
You can mirror the copy of the polygon and use it for the ground wire at the bottom of the
inverter.
1. In the Copy form, click Upside Down.
The copy of the polygon is mirrored around the X axis.
Mirrored copy
Before you move the mirrored copy of the polygon, you can pan the image to see the bottom
of the design better.
1. Press the Tab key to pan.
The Tab key is the bindkey for the Pan command.
The prompt in the layout window and CIW reads
Point at the center of the desired display:
2. Click the top of the n-transistor.
The image changes so the top of the n-transistor is in the center. The Pan prompt
disappears from the layout window and CIW, and the Copy prompt reappears.
Now you can finish moving the mirrored copy of the polygon.
1. Move the mirrored copy of the polygon so it aligns with the metal in the n-transistor.
In this section, you use the bindkey to start creating the rectangle. You also use a special
entry mode called infix, which reduces the number of mouse clicks needed to create shapes.
When infix is on, no click is necessary for the first point of a command. The cursor location at
the start of the command is used as the first point. Infix works only with commands started
from bindkeys or pop-up menus.
Using Infix
The remainder of this tutorial does not use infix mode. (You can experiment with it on your
own, if you like.)
The interactive Design Rule Checker (DRC) uses rules defined in the divaDRC.rul file. For
the tutorial, these rules have been defined for you. For details about the SKILL functions used
to write these rules, refer to the Assura Diva Verification Reference manual.
DRC flags the errors it finds by creating polygons around the errors. The polygons are created
on a layer reserved for markers. The marker layer usually appears as a blinking layer and is
not selectable. DRC removes the error-flag polygons automatically after you correct the
errors and run DRC again.
Deleting Objects
The easiest way to correct errors is to delete the objects you created that were in error and
recreate them using the original instructions in this chapter.
To delete objects,
1. Click the object you want to delete.
When you want to delete an object, it is easier to select the object before starting the
Delete command. If you select the wrong object, move the cursor and click again.
2. Press the Delete key.
Now you can recreate the object using the original instructions in this chapter.
Summary
In this chapter, you learned how to use the layout editor to create, select, and edit shapes.
Specifically, you
■ Set up an environment for entering points
❑ Created a new cellview
❑ Learned how to zoom the display
❑ Learned about grid displays
❑ Panned the image
■ Created instances of n- and p-transistor parameterized cells (pcells)
❑ Learned how to place cell instances
❑ Learned how to assign parameter values to pcells
■ Created and edited shapes
❑ Set the entry layer using the LSW
❑ Created a path
❑ Created a rectangle
❑ Created a polygon
❑ Learned how to select shapes
❑ Copied a polygon
■ Learned how to correct mistakes
❑ Learned how to undo both Create and Edit commands
❑ Deleted a point you created
■ Learned how to run the Design Rule Checker
■ Learned how to save your design and close the window
■ Used bindkeys for
❑ Fit All [f]
❑ Pan [Tab]
3
Creating the Multiplexer Layout
In this chapter, you learn to use the Virtuoso layout editor to create a hierarchical design for
a multiplexer by doing the following tasks. You must run Virtuoso layout accelerator to create
part of the design. The instructions for starting layout accelerator are in Creating a Guard
Ring on page 89. You also continue to use basic editing commands and learn some
shortcuts.
■ Creating a Hierarchical Layout on page 60
■ Editing the Inverter in Place on page 65
■ Displaying Hierarchy Levels on page 70
■ Placing and Flattening an Instance on page 74
■ Using Path Stitching on page 78
■ Creating Pins on page 83
■ Creating a Guard Ring on page 89
If you did follow the steps in the previous chapters you can skip to “Creating a Hierarchical
Layout” on page 60.
Note: It is possible to run out of resources, such as memory, if you run multiple layout editors.
Before you start the software, you need to check whether the software is already running.
1. Type the following in an xterm window to check whether the layout editor is already
running:
ps auxw | grep layout
2. If the layout editor is running, choose File – Exit in the Command Interpreter Window
(CIW) to exit the software.
3. Type the following in an xterm window to start the layout editor:
cd ~/cell_design
layoutPlus &
4. Choose File – Open.
The Open File form appears.
5. Type the library, cell, and view names as follows:
6. Click OK.
The inverter cell from the master library opens.
7. In the cellview window, choose Design – Save As.
The Save As form appears.
8. In the Save As form, type the library and cell names as follows:
9. Click OK.
The inverter cell is copied to the tutorial library but the inverter cell from the master
library remains on your screen.
10. In the cellview window, choose Window – Close to close the inverter cellview from the
master library.
You use the inverter from the tutorial library later in this chapter.
You create the multiplexer in this section by placing instances of several cells inside the
multiplexer cellview, mux2, as shown in the following figure.
mux2
You place the following cells from the tutorial library: mux2_connect, nand2, and Inv, the
inverter you created in the previous chapter or just copied from the master library. Most of
these cells contain other cells.
Later in this section, you flatten the mux2_connect cell, so its contents appear in the top mux2
cellview and it is no longer an instance.
Note: For a better fit of all your windows on your screen, click and hold any corner of the
schematic window and move the mouse until the window is a smaller size. Then press the f
key in the schematic window to fit the schematic drawing within the resized window.
6. You need to move to the right of the nand2. You do this with the Pan command. Press the
Tab key to start the Pan command.
7. Click X = 18.0, Y = 18.0 to move to the right of the nand2.
3. Move the cursor to the right until the second instance aligns with the first.
4. You need to mirror the inverter along the X axis. Click Sideways to mirror the inverter.
5. In the cellview, click X = 40, Y = 0 for the instance origin.
6. Press the Escape key to stop the Create Instance command.
The inverter appears next to the nands.
The inverter is not aligned properly with the nands. You correct this error in the following
section.
You could open the inverter cell layout in a separate window and edit the inverter there, but
then you would not be able to see how the inverter aligns with the other instances in the
multiplexer.
The Edit in Place command lets you edit the inverter master cell while viewing it inside the
multiplexer layout. This way, you can edit the inverter instance as it appears in this cellview
and see how it aligns with the nand next to it.
In the following sections, you edit in place to correct the inverter cell. You learn to
Stretching an Area
Use Stretch to stretch the top of the inverter.
1. Choose Edit – Stretch.
2. You need to define the area you want to stretch. Click X = 29, Y = 18 and drag the box
to a point above and to the right of the area to be stretched.
4. Click the top edge of the polygon for a reference point. Move the cursor up until the edge
of the inverter aligns with the nand.
The inverter is saved, and the window title bar shows that you are now editing the
multiplexer (mux2) again.
The Display option lets you choose how much of the hierarchy you want to see. The top
is this cellview and the current cell is the cell you are editing. When you were editing the
Inv cell in place, it was the current cell.
2. Click OK.
A window appears, listing the cells inside the mux2 cellview. The window displayed by
Tree is a text window. Commands that list information usually display the data in a text
window.
Tree shows all the hierarchy contained in mux2. It lists all the cell instances placed in
mux2 and any instances inside those cells. It gives the library, cell, and view name for
each instance. It also shows the number of instances of a particular cell, in parentheses.
You can use Tree whenever you want to review the levels of hierarchy in a design.
3. Click File to display the File menu.
You can use the File menu to save the data in the window to a text file or to search
through the text.
4. Choose File – Close Window to close the window.
To change the amount of detail in a cellview, you indicate the starting level in the hierarchy
you want to view and the hierarchy level at which you want to stop viewing detail. The current
cellview (in this case, mux2) is level 0 in the hierarchy. Any cells directly inside it are level 1.
Cell instances inside those cells are level 2.
Level 0 mux2
In the following steps, you learn how to display only the top level of the hierarchy (level 0) and
how to display data within a range of levels.
1. Press the f key to fit the design in the window.
2. Choose Options – Display.
The Display Options form appears.
3. Under Display Levels, change the To field to 0.
4. Click Apply.
The multiplexer is redrawn to show only data at level 0. You see only the outlines and
master cell names for the instances you placed. These are the only objects at level 0.
The master cell name is not relative to the orientation of the instance; it is just displayed
as large as possible inside the outline.
Because you change display levels often, you can use the following bindkeys.
❑ Shift-f displays levels 0 through 32.
❑ Control-f displays only level 0.
9. Press Control-f.
Only level 0 data is displayed.
10. Press Shift-f.
All levels of data are displayed.
Normally, you would create the connections at the top level (level 0). Because you place these
connections using a cell instance (level 1), you flatten the instance after you place it. The
Flatten command moves the contents of a cell or array up one or more levels in the hierarchy.
In this case, flattening the instance moves its contents up to the top level so it is no longer an
instance.
2. Click the Copy command icon in the icon menu to start the Copy command.
The Flatten form appears. You need to move the contents of mux2_connect up just one
level (from level 1 to level 0). The default form settings are set correctly.
3. Click the outline of the mux2_connect cell.
4. Click OK.
The instance outline disappears and the data in the mux2_connect cell appears.
You use Path to create the final connections. You cannot create a path on a single layer all the
way across the multiplexer, so you use path stitching to change layers within the path. Path
stitching automatically changes the path from one layer to another, placing an appropriate
contact to connect the two layers. The Create Path command chooses the contact for you from
the technology file.
Start here Change to metal2 Create using Change to metal1 Change to poly1 here
(X=13.5, here (X=16.5, metal2; avoid other here (X=42, (X=45, Y=18.5) to place
Y=6.5) on Y=6.5). metal2. Y=18.5). poly contact.
metal1.
Note: If you make an incorrect click while path stitching, press the Backspace key to cancel
the last click, and then continue with your path.
Number of
Location Angle Layer Purpose
points
First X=13.5, Y=6.5 orthogonal metal1 Start path
Second X=16.5, Y=6.5 orthogonal metal1 Create path
Third X=16.5, Y=6.5 orthogonal metal2 Place contact
Number of
Location Angle Layer Purpose
points
Fourth X=22.5, Y=23.5 L90XFirst metal2 Create path
Fifth X=42, Y=18.5 L90XFirst metal2 Create path
Sixth X=42, Y=18.5 L90XFirst metal1 Place contact
Seventh X=45, Y=18.5 L90XFirst metal1 Create path
Eight X=45, Y=18.5 L90XFirst poly1 Place contact
Ninth X=45, Y=18.5 L90XFirst poly1 End path
Changing to metal2
You use the Change To cyclic field in the Create Path form to change from metal1 to metal2.
1. In the Create Path form, click and hold metal1 dg in the Change To field.
A list of layer names appears. These are the layers you can change to from metal1,
based on the metal1 contacts defined in your technology file.
Metal1-to-metal2 contact
(via)
Creating Pins
Now that all the connections are complete, you need to add some information used by other
Cadence tools.
You need to add net labels to help you diagnose problems found by the Layout Versus
Schematic (LVS) program. You run LVS in the next chapter.
You also need to create pins. Pins are used by Cadence tools as follows:
■ Pins define the connectivity between hierarchy levels. That is, a pin indicates where this
cell can connect to routing or to other instances when the cell is placed into a larger
design.
■ Pins specify the access directions for Cadence routing tools.
■ LVS checks to see if you have placed labels that conflict with the nets you define for the
pins.
About Pins
Pins show what areas of the multiplexer can connect to routing or other cells when you place
an instance of the mux2 into another design cell.
Note: You create pins coincident with shapes in the instances placed in mux2. If you make a
mistake, it is easier to select and correct pins if the instances in mux2 are unselectable. If you
need to make instances unselectable during the following steps, click the button next to Inst
(Instances) in the LSW so it is empty.
Creating Pins
You create six pins in the mux2 cellview. The pins have different characteristics. This table
summarizes the characteristics of the pins you create in the following exercise.
3. Click the button next to shape pin to open the Create Shape Pin form.
4. In the Create Shape Pin form, type the following in the Terminal Names field.
vdd! gnd! A B SEL Y
You can type any number of names in the Create Shape Pin (or Create Symbolic Pin)
form. Each pin you create is assigned the next name, from left to right, in the Terminal
Names field.
5. Click Display Pin Name to associate the name with the pin.
6. Set the access direction to Top, Left, and Right by clicking Bottom to turn it off.
7. Create the rectangle for the vdd! pin coincident with the power line at the top of the
multiplexer.
❑ Start the vdd! pin at corner A.
❑ Finish the vdd! pin at corner B.
The name of the pin (vdd!) appears near the cursor after you click the second corner.
A dashed line extends from the first corner of the pin to the name, showing the pin name
is attached to the pin. If you move or delete the pin, the attached label will also be moved
or deleted.
8. Move the cursor so the vdd! text appears near the left side of the pin, then click.
The name vdd! disappears from the Create Shape Pin form. The first name listed is now
gnd! (the ground pin).
9. In the Create Shape Pin form, turn off the Top access direction and turn on the Bottom
access direction.
10. Create the rectangle for the gnd! pin coincident with the ground line at the bottom of the
multiplexer.
Terminal name = A
Pin layer = metal2
Access direction = Top and
Bottom
Terminal name = B
Pin layer = metal2
Access direction = Bottom
After you create the pins shown in the illustration, the pin form now shows only one pin
to create: the Y pin for the multiplexer output.
14. Click the metal1 dg layer in the LSW.
15. Change the I/O type to output in the Create Shape Pin form.
16. Turn off all access directions except Right.
Terminal name = Y
Pin layer = metal1
Access direction = Right
I/O Type = output
For more information about ROD, see the Virtuoso Relative Object Design User Guide.
For example, the multipart path shown below has one subpath and one set of subrectangles.
Both the subpath and the set of subrectangles are offset from the master path
Master path
The multipart path you create for this design has a master path, a enclosure subpath, and a
set of subrectangles.
3. Type these values in the form. The CIW displays warnings. These warnings do not affect
your work.
You are ready to create the metal1 layer as the enclosure subpath.
1. Click Subpart in the Create Multipart Path form.
The ROD Subpart form appears.
Layer metal1
Choppable on
Begin Offset -0.6
Enclosure 0.6
End Offset -0.6
Connectivity Pin
When you choose Pin, new fields appear. Enter these values in the new fields:
Layer cont
Choppable on
Begin Offset -1.2
Width 1
By setting Begin Offset and Width, the system assigns the default values to End Offset,
Length, and Space.
3. Click Add to register this data as subrectangle parameters.
The data for the subrectangles appears in the scroll window at the top of the ROD
Subpart form.
4. Click OK in the ROD Subpart form to add this data to the template.
The ROD Subpart form closes.
However, if you save the values as a template, you can create a similar MPP by loading the
template and changing the values as desired. When you load the template, all the fields
display the template data except the Net Name field, which you must add every time you load
a template. If you do not add the net name, the system beeps and a message appears in the
CIW telling you to add the net name.
To make the changes to the temporary version of your technology file permanent,
1. In the CIW, choose Technology File – Save.
The Save Technology File form appears.
2. Choose cellTechLib as the target technology file.
3. Click OK.
A dialog box appears asking you to confirm saving the technology file to disk.
4. Click Yes.
You have completed saving the MPP values as a template in your binary technology library
for future use. The Create Multipart Path form remains open. All the values you entered
remain in this form until you close it. Now you are ready to draw a guard ring in your layout
cellview.
In the cellview window, click at these points. For the last point, X=0, Y=50, either double click
or press Return.
First click: X = 2, Y = 48
Second click: X = 2, Y = 3
Third click: X = 67, Y = 3
Fourth click: X = 67, Y = 50
Fifth click: X = 0, Y = 50
4. Click Apply.
The master path is now choppable.
5. Deselect the guard ring by clicking in an empty part of the window.
6. Choose Edit – Stretch.
7. Click on any of the contacts on the right side of the guard ring.
The entire master path highlights in yellow.
You are going to change the points for the path by stretching the path. Look at the points
displayed in the Points field. They should reflect the points you entered to draw the guard
ring.
Summary
In this section, you learned how to use the layout editor to create hierarchical designs. You
also learned more about layout editor create and edit commands. Specifically, you
■ Created a hierarchical layout
❑ Created instances
❑ Copied instances
❑ Mirrored instances
■ Used the Edit in Place command
❑ Opened a lower-level cell for editing
❑ Returned to the previous level
4
Verifying the Multiplexer Layout
This chapter introduces you to interactive verification. You will perform two different tests in
the Virtuoso® layout editor while using Assura™ interactive verification products. One test
uses the Design Rule Checker (DRC) to compare your design against the design rule, and
the other test uses Layout Versus Schematic (LVS) software to check your design’s
connectivity. You will be
■ Creating a Test Case for Checking Errors on page 104
■ Performing a Design Rule Check on page 107
■ Extracting Connectivity from the Layout on page 111
■ Comparing the Layout to the Schematic on page 116
■ Analyzing LVS Errors on page 119
■ Correcting the Error on page 124
■ Rerunning Verification on page 125
➤ Click the Verify menu to find out whether you can use interactive verification.
If the commands under Verify appear shaded, you do not have a license to run interactive
verification. You can either read this chapter to get an idea about how interactive
verification works, or you can go on to the next chapter.
It is possible to run out of resources, such as memory, if you run multiple layout editors. Before
you start the software, you need to check whether the software is already running.
1. Type the following in an xterm window to check whether the layout editor is already
running:
ps auxw | grep layout
2. If the layout editor is running, choose File – Exit in the Command Interpreter Window
(CIW) to exit the software.
3. Type the following in an xterm window to start the layout editor:
cd ~/cell_design
layoutPlus &
4. Choose File – Open.
5. Type the library, cell, and view names as follows:
6. Click OK.
The mux2 cell from the master library opens.
7. In the cellview window, choose Design – Save As.
The Save As form appears.
8. In the Save As form, type the library and cell names as follows:
9. Click OK.
The mux2 cell is copied to the tutorial library.
10. In the mux2 cellview, choose Window – Close to close the cellview.
11. In the CIW, choose Open – File to open the mux2 layout you just saved.
12. Type the library, cell, and view names as follows:
Stretching a Path
In this section, you learn how to stretch a path.
1. Zoom in on the area shown below.
Zoom in on this
area.
You just created an error by stretching the path. Later, you use DRC to find this error.
2. Move the cursor into the layout window and press Control-r to see all layers.
Running DRC
1. Choose Verify – DRC.
The CIW reports one error. A blinking polygon, called an error flag, appears at the
location of the error.
Important
Do not correct this error yet. You will run LVS later in this chapter to see how LVS
reports this same error.
3. Press the f key to fit the entire design in your window, and look for any other errors you
might have made.
4. If you have any other errors, correct them by redrawing the flagged objects using
instructions in the previous chapters. Run DRC again before proceeding.
Viewing Errors
Use the Markers – Explain command to display more information about the error flagged by
DRC.
1. In the mux2 cellview window, choose Verify – Markers – Explain.
2. Click the error flag.
The error flag is highlighted in yellow to show that you selected it. A window appears at
the top left of the screen. It lists the cellview containing the error and the rule that was
violated.
5. Click OK.
The error marker is removed.
The Extract program creates a temporary cellview, called the extracted view, that shows the
nets. You will use both the extracted cellview and the layout cellview in this section.
Important
As you follow the steps in the rest of this chapter, be careful to use the correct
cellview. Check the title banner for the view name layout or extracted.
Note: If you are running the Affirma anolog circuit design software, the Extractor form
is different than the form that appears here. You can continue this tutorial despite the
different form. If you want detailed descriptions of options that appear in the analog circuit
design forms, refer to the Assura Diva Verification Reference manual.
2. Turn on Join Nets With Same Name. This will merge nets with the same names while
suppressing warning messages about different nets that have the same name.
3. Click OK to run the Extract program.
The extraction rules appear in the CIW as the extract program runs. When extraction is
complete, you see
saving rep tutorial/mux2/extracted
This means the extracted cellview was created.
3. Click OK.
The extracted cellview appears on top of the layout cellview. The banner contains the
following:
The extracted cellview is similar to the layout, but the gates now have symbols at one
end.
Gate width
Gate length
Display the electrical connections by setting Nets on in the Display Options form.
7. Press the e key to open the Display Options form.
8. Select Nets.
9. Click Apply.
10. Move the cursor into the extracted view and press the f key to fit the design in the window
again.
You see the electrical connections in the extracted cellview.
3. Click OK.
Note: To fit your windows on your screen, click and hold on any corner of the schematic
window and drag the mouse until the window is a smaller size. Then press the f key in the
schematic window to fit the schematic drawing within the resized window.
Running LVS
1. In the mux2 extracted cellview, choose Verify – LVS.
The LVS form appears.
Note: If you are running the Affirma analog circuit design software, the LVS form is
slightly different than the form that appears here. You can continue this tutorial despite
the different form. If you want detailed descriptions of options that appear in analog circuit
design forms, refer to the Assura Diva Verification Reference manual.
2. Fill in the schematic fields in the LVS form by clicking the Sel by Cursor button under the
schematic fields, then click left in any area of the schematic cellview window.
The schematic fields are filled in with master, mux2, and schematic.
3. Set the Priority field to 20.
The default is 0 but that setting slows down other actions on the system.
You can use the probe commands on the Verify menu to highlight any nets, including nets that
LVS lists as having errors. You can perform either a single probe to highlight a net in the
extracted cellview or a cross-probe to highlight a net in both the extracted and the schematic
cellviews.
2. Move the cursor into the extracted window and press the Escape key.
This makes the extracted window the current window. LVS displays the errors in the
current window.
3. In the LVS Error Display form, click First in the Display field.
The LVS Error Display form displays a message indicating that two of the nets should be
merged.
Note: LVS assigns numbers to the unlabeled nets. The numbers it assigns to your nets
might not be identical to the net numbers shown above. Substitute the numbers on your
LVS Error Display form in the following instructions.
In addition to the LVS Error Display form showing the nets to be merged, the geometries
in the extracted layout that do not match anything in the schematic are highlighted in
yellow. In this case, LVS highlights the objects on the part of the net you disconnected.
2. Click Add Device or Net. If you are running analog circuit design software, click Add Net.
By default, the form is set to perform a single probe. You first probe the extracted view
for net 10.
3. In the CIW, type the net name, "10", (type the quotation marks) and press Return.
Note: Several warning messages appear in the CIW, these do not have any effect on your
probe.
The shapes in net 10 are highlighted in yellow.
Net 10 is
highlighted in the
extracted view.
4. In the Probing form, change Probing Method to cross probe. If you are running Analog
Artist, change the Probing Method to cross probe matched.
8. To remove the probe highlights, in the Probing form, click Remove All.
Note: You can also probe from the schematic to the layout. After you open the Probing
form, click a net in the schematic.
9. In the Probing form, click Cancel.
10. In the LVS Error Display form, click Cancel.
11. In the LVS form, choose Commands – Close Window.
Now that you have determined where the error is, you do not need to see the schematic
view anymore.
12. In the schematic cellview, choose Window – Close.
Rerunning Verification
After correcting the errors in the layout, you run verification again. The steps are nearly
identical to those you followed earlier in this chapter, except this time you run an incremental
DRC. This means you check only the changed portion of the design. The verification
programs should not find any errors.
The instructions in this section are brief because you have already done the steps before. If
you want more details, you can go back through the previous sections.
5. Click OK.
The extracted cellview window opens. The two nets are now joined.
6. In the extracted cellview window, choose Verify – Probe.
The Probing form opens.
7. In the Probing form, click Add Device or Net, and set Probe Type to net only.
8. Click left at X = 37, Y = 43 To select the net.
Because there are two nets at this point, a text window appears so you can choose your
net from a list.
9. Click 8 in the text window to choose your net.
10. In the Probing form, click OK.
Rerunning LVS
Now you can run LVS again on the new extracted cellview.
1. In the extracted cellview window, choose Verify – LVS to open the LVS form.
2. In the LVS form, click Run.
A form asks if you want to save the cellview.
3. Click OK to save the mux2 layout.
The LVS job proceeds, then a dialog box appears, confirming the job has been
completed. This might take a few minutes.
4. Click OK to close the dialog box.
5. In the LVS form, click Output.
A text window containing the LVS report appears. The message in the text window
should read
The net-lists match
Summary
In this chapter, you learned how to verify layout designs using interactive verification.
Specifically, you
■ Ran a DRC (Design Rule Checker)
■ Viewed DRC errors
■ Extracted a layout view
■ Viewed extracted data
■ Viewed a schematic
■ Ran LVS
■ Viewed LVS errors
■ Cross-probed between the extracted layout and the schematic
■ Ran verification programs again
■ Used bindkeys:
❑ Redraw [Control-r]
❑ Zoom In [z]
❑ Display Options [e]
❑ Stretch [s]
❑ Display Levels 0–20 [Shift-f]
❑ Display Levels 0–0 [Control-f]
❑ Fit All [f]
■ Used the icon menu for Save
5
Creating and Editing ROD Objects with
the Layout Editor
In this chapter you use Virtuoso relative object design (ROD) functionality in the Virtuoso
layout editor to create simple layout objects and then examine their relationships to each
other.
For complete information about ROD, see the Virtuoso Relative Object Design User
Guide .
Note: You may proceed with this chapter even if you have not completed any of the previous
chapters.
About ROD
ROD lets you create objects and define their relationships at a high level of abstraction, so
you can concentrate on your design objectives. ROD automatically handles the intricacies of
traversing the design hierarchy and simplifies the calculations required to create and align
geometries.
Every named database object, such as an instance, layout cellview, or named shape,
automatically has relative object design information associated with it. This information is
stored in a ROD object. A ROD object is also a database object, but it exists in relation to its
associated named database object. A ROD object is identified by a unique ROD object ID.
A ROD object for a named shape, instance, or cellview contains the following information:
hierarchical name
cellview ID
database ID
transformation information (rotation, magnification, and offset)
alignment information, if any
number of segments (for shapes)
names and values of user-defined handles, if any
names of system-defined handles
Note: To create the same rectangle using Cadence SKILL language, you would type the
following in the CIW. (You do not have to type this; it is just an example.)
rect = rodCreateRect(
?name "rect"
?cvId geGetEditCellView()
?layer "poly1"
?bBox list(3:11 9:9)
)
Changes you make to the rectangle are reflected in the Edit Properties form.
1. Select the rectangle.
2. Choose Edit – Properties.
The Edit Properties form appears. You should see the ROD name and XY coordinates
you set in the Create Rectangle form.
3. Click ROD at the top of the Edit Properties form.
The ROD fields appear. Examine the ROD information about the rectangle.
4. Compare the values of upperLeft and lowerRight in the System handle field.
The values should be the same as the coordinates in the Attribute fields.
11:11
11:7
17:7
17:9
13:9
13:11
❑ To enter points by clicking in the cellview, click once at each of the XY coordinates
listed below. When you enter the last point (X = 13, Y = 11), either double-click or
press Return to complete the polygon.
First click: X = 11, Y = 11
Second click: X = 11, Y = 7
Third click: X = 17, Y = 7
Fourth click: X = 17, Y = 9
Fifth click: X = 13, Y = 9
Sixth click: X = 13, Y = 11
The completed polygon looks like this:
3. Using this diagram as a reference, determine which points match the system handle
values for start0, start3, and start5.
Starting point
start0 start5
X X
start4
X X start3
X X
start1 start2
11:11 to 11:13
13:11 to 13:13
3. Click Apply.
The polygon changes to reflect the new points.
4. Click ROD in the Edit Properties banner.
The values for start0 and start5 should be the new Points values you set for Attribute.
5. Deselect the polygon by clicking in an empty area.
In this section, you align the polygon and rectangle that you created earlier. The reference
object is the rectangle and the reference handle is centerRIght. The object to be aligned is the
polygon using its topCenter handle. Remember, topCenter is the handle you just created.
1. In the CIW, type
rodAlign(
?alignObj polygon
?alignHandle "topCenter"
?refObj rect
?refHandle "centerRight"
)
Now the centerRight handle of the rectangle is aligned to the topCenter user-defined
handle of the polygon.
2. Select the polygon.
3. Look at the Alignment fields in the Edit Properties form. You should see the information
you set in the CIW.
With the rectangle as the selected object, the polygon is the reference object and the
rectangle is the object that is aligned.
To change the value of the handle by which the rectangle is aligned, you update the Align
handle field.
1. Select the rectangle.
2. In the Alignment section of the Edit Properties form, change the Align handle field from
centerRight to centerLeft.
3. Click Apply.
The Edit Properties form shows that the centerLeft handle of the rectangle and the
topCenter user-defined handle of the polygon are aligned.
4. Change the Reference handle field from topCenter to start0.
5. Click Apply.
The rectangle’s centerLeft handle and the polygon’s start0 handle are aligned.
6. Deselect the rectangle by clicking in an empty area of the window.
After you place an instance of the pcell, stretch handles let you graphically change the value
of the associated parameters by selecting them and using the Stretch command. You can
stretch a handle in the direction of the X or Y axis, depending on how it is defined in the pcell.
You are not actually stretching objects within the pcell or the pcell instance itself. Instead, you
are graphically updating the value of the parameters associated with the selected handles.
Graphically stretching a pcell instance has the same result as editing its parameters using the
Edit Properties form.
In the following tasks, you open the mux2gs layout design from the master directory and
save it in the tutorial directory, check for design rule violations, fix the violations you find
by stretching the inverter and adding more contacts, and check to make sure the violations
are gone.
3. Click OK.
The mux2gs cell from the master library opens.
6. Click OK.
The mux2gs cell is saved to the tutorial library.
7. Close the master mux2gs layout window.
8. Choose File – Open.
The Open File form appears.
9. Type the following to open the tutorial mux2gs layout design:
The mux2gs cell contains several design rule errors. You’ll discover this by running the
Design Rule Checker (DRC).
1. Choose Verify – DRC.
The DRC form appears.
2. Click OK to accept the defaults.
The following design rule errors appear in the CIW:
\o ** Summary of rule violation for cell "mux2gs layout" **
\o # errors Violated Rules
\o 1 drc("poly1" "pdiff" sep < 0.5)
\o 2 drc("nwell" sep < 8.5)
\o 1 drc("nwell" "pwell" sep < 8.5)
\o 1 drc("cont" "poly1" sep < 1)
\o 2 drc("metal1" sep < 1)
\o 7 Total errors found
The pmos device is too close to the surrounding devices and interconnect; the nwell
spacing and nwell-to-pwell spacing is incorrect. The pmos device overlaps the
interconnect between the devices.
After you delete the markers, you will edit the inverter to fix the errors.
3. To delete the markers,
❑ Choose Verify – Markers – Delete All.
❑ Click OK to accept the defaults in the Delete All Markers form.
The inverter with the violations is a stretchable pcell. You can fix the violations by stretching
the inverter to increase its height so that it aligns with the neighboring cells. You also need to
add a third column of contacts.
1. Zoom in on the upper half of the inverter, including some space above it.
Zoom in here.
3. Select the stretch handle at the center of the top of the inverter using a selection box
(click and hold the left mouse button).
When you release the mouse, the inverter instance is highlighted. You are prompted for
a reference point for the stretch.
4. Click on the top edge of the inverter for the reference point.
The system prompts you for the new location and displays text next to the inverter to
show its current height:
Cell Height = 31
5. Slowly move the cursor upward until the text shows 36 units, then click.
Cell Height = 36
Zooming in, the upper part of the inverter now looks like this:
The inverter needs more contacts. You can add a third finger of contacts with the Edit
Properties form.
1. Select the inverter.
2. Choose Edit – Properties.
3. Click Parameter at the top of the Edit Properties form.
4. Change pMos Gate Width to 10u.
5. Change pMos fingers to 2.
6. Change Supply Width to 4u.
7. Click Apply.
After your changes and zooming out, the inverter should look like this:
The DRC summary in the CIW should report zero errors found.
3. To create the chop rectangle, click on or near X= 64, Y= 30, then on or near X=71, Y=21.
Y pin
Chop rectangle
goes here.
The mux2gs cell looks like this with the chop hole:
Y pin
1. Click here.
3. Click here.
2. Click here.
All instances have names and are therefore ROD objects. In this section, you create two
instances of a transistor in a new cellview and align the contact in the first instance to a
contact in the second instance.
1. In the CIW, choose File – New – Cellview.
The Create New File form appears.
2. Type the following:
3. Click OK.
A layout window opens.
4. To create the first instance, do the following:
❑ Choose Create – Instance.
The Create Instance form appears.
❑ Type the following:
Library ROD
Cell ptran
View layout
Names I1
Library ROD
Cell ptran
View layout
Names I2
Width 3
cv=geGetEditCellView()
cont1Id=rodGetObj("I1/rightcont" cv)
cont2Id=rodGetObj("I2/leftcont" cv)
As you type each statement, the database ID displays in the CIW.
8. To align the two instances, type the following in the CIW:
rodAlign(
?alignObj cont1Id
?alignHandle "centerRight"
?refObj cont2Id
?refHandle "centerLeft"
?xSep -2.0
)
The centerRight point handle on the right contact in instance I1 is aligned to the centerLeft
point handle on the left contact in I2 with a separation of -2. The separation is a negative
number because the reference object is on the right side of the aligned object.
I1 Separation I2
X X
You can study the SKILL code that created the instances. The code is located in your
cell_design directory:
cell_design/skill/pcell.il
Summary
In this chapter, you learned how to work with ROD objects. Specifically, you
■ Created simple ROD objects
■ Examined ROD object database information in the CIW
■ Edited ROD objects using the Edit Properties form
■ Viewed information for handles on ROD objects in the Edit Properties form
■ Created a ROD user-defined handle
■ Aligned two ROD objects using the user-defined handle you created
■ Edited the aligned ROD objects
■ Finished a layout design by
❑ Running DRC to determine errors
❑ Correcting DRC errors by
- Stretching the ROD pcell inverter
- Editing the parameters of the ROD pcell inverter
❑ Creating a chop hole for the output path
❑ Creating a metal1 output path
❑ Running DRC to check the changes you made
■ Aligned two instances across hierarchy
6
Creating a Graphical Parameterized Cell
For more information about graphical pcells, see the Virtuoso Parameterized Cell Reference
manual. For information about ROD pcells, see the Virtuoso Relative Object Design User
Guide.
Introduction
This chapter shows you how to create graphical parameterized cells (pcells) using the
Virtuoso layout editor environment. A parameter is a variable that controls the size, shape, or
contents of a cell instance. When you place an instance of a pcell, the Create Instance form
displays a list of its parameters. You enter values for the parameters to change the
characteristics of the instance.
Note: Graphical pcells differ from Virtuoso relative object design (ROD) pcells; they do not
have ROD information stored with them.
Creating and using pcells allows you to add many different versions of the same cell to a
layout by assigning different values to their parameters. For example, earlier in this tutorial,
you used the ptran and ntran cells to create an inverter. They are both pcells with
parameters for setting the width, length, and number of gates for each instance.
Without parameterized cells, your library might need to contain a large number of similar cells.
Instead, you can create one representative pcell, such as an N-transistor, and define different
values for its parameters as you create instances.
Defining parameters for a pcell is an iterative process. A good process to follow, and one this
chapter follows, is to define one parameter, compile the pcell, test it, adjust the parameter if
necessary, and then define the next parameter. See “Flowchart for Defining Pcell
Parameters” on page 162.
In this chapter, you will learn how to create a pcell by defining parameters that let you change
shapes in your designs. You will compile your cell into a pcell each time you define a
parameter, then test the change by placing an instance.
The Pcell compiler evaluates all parameters when you compile. In this tutorial, you will define
one new parameter, compile the pcell, and then check the results. After you have learned how
to define parameters, you can define several new parameters before compiling. Also, you can
define an expression that refers to a parameter before you define the parameter, as long as
you define the parameter before you compile. The Pcell compiler evaluates all parameters
when you compile, not before.
When you compile, the system creates or updates the original cell in your library. This cell is
called a supermaster. When you place instances in a layout cellview, each unique variation is
temporarily stored in virtual memory and referred to as a submaster.
The original pcell supermaster resides in the database and contains all parameter definitions
and their default values. When you want to add, change, or delete a parameter, you need to
open the supermaster.
The Parameterized Cell software creates one submaster in virtual memory for each unique
set of parameter values assigned to an instance of the supermaster in any open cellview.
Contains SKILL code,
parameter definitions, and
Supermaster default values
cell
I1 I2 I3 I4 I5 I6 Instances
Submaster cells reside in virtual memory for the duration of your editing session and are
accessible to and shared by all open cellviews. When you create a new instance, and a
submaster with the same parameter values already exists in virtual memory, the new instance
references the existing submaster cell; the software does not generate a new submaster.
The database software automatically purges (removes) referenced submaster cells from
virtual memory (but does not remove the supermaster pcell from your disk) when you:
■ Close all cellviews that reference the particular submaster cells
■ End an editing session by exiting the Cadence software
Define or modify
a parameter
Compile to pcell
Yes
mypcell supermaster
Width of
gate
Length of gate
All shapes intersected by a stretch line can stretch in a perpendicular direction from the
stretch line. For example, to make shapes stretch vertically, you define a horizontal stretch
line.
Horizontal stretch
line
Vertical
stretch line
Stretch lines require a reference dimension. The reference dimension is a number that serves
as a starting point for a stretch and is usually equal to the size of a significant shape
intersected by the stretch line in the supermaster.
The system computes the results of a stretch by subtracting the reference dimension from
the value you enter for the stretch parameter.
You can specify the reference dimension or use the system default, which is the size of the
shortest edge of a shape crossed by the stretch line.
For example, one goal for the tutorial transistor is to stretch the width of the gate (and other
intersected shapes) by defining a horizontal stretch line. Of the shapes intersected by the
horizontal stretch line, the shortest belongs to the contacts, so the system would set the
reference dimension equal to the width of the contacts.
However, the contacts are not significant in determining the width of the gate; the p-diffusion
should control the width of the gate. The p-diffusion measures 3 microns, so in the tutorial,
you need to specify the reference dimension as 3 rather than accept the default.
When you place an instance of the tutorial pcell and change the value of the stretch line
parameter, shapes intersected by the stretch line change by the value you enter minus the
3-micron reference dimension.
For example, for the contacts in the tutorial transistor, you will define a repetition parameter
to control the number of repetitions (number of times the contact is repeated). Rather than
defining the repetition parameter as a variable, you will define it as an expression based on
the stretch line parameter you defined earlier for the width of the diffusion. This causes the
system to compute the number of contacts needed for the current width of the diffusion.
In the illustration below, the width of the diffusion for the transistor on the left is three microns;
the width of the diffusion for the transistor on the right is five microns, resulting in repeated
contacts.
You also must specify a stepping distance. The stepping distance controls the space between
repeated objects or groups of objects. It is equal to the width of the object you want to repeat
plus the space you want between repeated objects.
Stepping Distance = object_width + intervening_space
For example, when each contact is 1.5 microns wide, and you want a 1-micron space
between contacts, the stepping distance is 2.5.
1.5 microns
Stepping distance
is 2.5 microns.
1 micron
As is true for any pcell parameter, the stepping distance and number of repetitions can be
defined as parameters (variables) or as expressions that change based on the values of other
parameters.
You can both repeat and stretch the same objects. You control whether or not repeated
objects stretch with the Stretch Vertically Repeated Figures option in the Stretch in Y form. By
default, the system does not stretch objects crossed by a stretch line if those objects are also
defined to repeat.
3. Click OK.
1. In the mypcell layout window, press Shift-e to display the Layout Editor Options
form.
2. Click the button next to Repeat Commands and click OK.
The Stretch in Y form appears. You will define the stretch line as a parameter (variable)
named width.
You accepted the default for the Stretch Direction, so all objects intersected by the stretch
line will stretch upward from the line.
You have completed defining the first parameter: the stretch line for the width of all objects in
the cell. Next, you will compile the cell to create a new version of the supermaster and test it.
After compiling, it is a good idea to look at the Parameter Summary to verify your changes.
The Parameter Summary shows information about all the parameters defined for the
supermaster pcell.
You will test the stretch line parameter by opening a cellview, creating an instance, and
changing the value of width.
1. Open a cellview for placing instances by doing the following:
❑ In the CIW, choose File – Open.
The Open File form appears.
❑ In the Open File form, choose pcelltest from Cell Names.
❑ Click OK.
The pcelltest cellview window opens. It is empty except for a large rectangle. The
rectangle makes the window large enough to place several instances.
2. Place an instance by doing the following:
❑ In the pcelltest cellview window, open the Create Instance form by pressing i.
The Create Instance form appears.
❑ In the Create Instance form, type mypcell for Cell.
❑ Display the width parameter field in the Create Instance form by pressing Tab.
The width parameter for mypcell appears at the bottom of the Create Instance form.
The value shown is the default. You set this default value when you typed 3 for
Reference Dimension in the Stretch in Y form.
❑ Change width to 5.
❑ Click in the pcelltest layout window.
The instance looks like this:
Instance of mypcell
Width of p-diffusion
(reference dimension) is now
5 microns.
The width increased for all shapes intersected by the stretch line. The stretch line is working
as it was defined. However, it would be better if the contacts repeat to fill the space available,
rather than stretch. In the next section, you create a new parameter to make the contacts
repeat.
You have completed testing first parameter: stretch line for width.
You do not want the contacts to stretch; you would like them to repeat to fill the width of the
p-diffusion. You will define the value of the repetition parameter as an expression so that the
system computes the number of contacts based on the current value of the pcell width
parameter. (You defined the width parameter earlier with a horizontal stretch line.)
■ In the Command Interpreter Window (CIW), look at the expression for controlling the
number of repetitions
mypcell supermaster
1. Click on a 2. Double-click
contact edge. on the other
contact.
Both contacts are highlighted and the Repeat in Y form appears. (If the form does not
appear, press Return.)
You need to enter a value for Stepping Distance. The stepping distance is equal to the
width of the object you want to repeat plus the space you want between repeated objects.
Each contact is 1 micron wide and you want a 1 micron space between contacts, so the
stepping distance is 2.
Stepping distance is 2.
Caution
In the following step, be careful with spaces around the minus sign ( – ).
If you enter a space on one side and not the other, the pcell will not be
created correctly.
6. For Number of Repetitions, type the following expression, without spaces:
fix(width-1)/pcStep
This expression is explained in “Understanding the Number of Repetitions Expression”
on page 177.
The Repeat in Y form looks like this:
7. Click OK.
You have completed the second parameter: the repetition parameter for contacts.
Repetition
----------
Objects Repeated in: Y
Number of Objects in this group: 2
Stepping Distance: 2
Number of Repetitions: (fix((width - 1)) / pcStep)
Dependent Stretch:
Adjustment to Stretch:
The information shown above is correct for the tutorial pcell.
4. Close the window by choosing File – Close Window.
You test the repetition parameter by redrawing the instance in the mypcell layout
window. The width of the instance is already set to 5.
5. Redraw the instance by choosing Window – Redraw.
You have completed testing the second parameter: repetition for contacts.
means that the number of repetitions is an integer equal to 1 micron less than the value of
width (the stretch line parameter), divided by the stepping distance (2), where
width-1 lets you control the area within which you want to fit the repeat
group. You created a stretch line parameter named width based
on the width of the p-diffusion. As the diffusion stretches upward
and the contacts repeat within it, you want the final contact to be
spaced away from the edge of the diffusion by at least 1 micron.
So the available space for the contacts is width minus 1.
You can use the CIW to simulate how the pcell program evaluates the expression. You are
using the CIW only to test the expression; none of the pcell variables is affected.
1. In the CIW, type width = 5.5 and press Return.
You see 5.5 in the output region.
2. In the CIW, type pcStep = 2 and press Return.
3. In the CIW, type (width-1)/pcStep and press Return.
You see 2.25 in the output region. The number of repetitions must evaluate to an integer,
however, so you need to add the fix function to round the value down to the nearest
integer.
4. Round the number of repetitions down to an integer by doing the following:
❑ In the output region of the CIW, click (width-1)/pcStep.
The entire line is highlighted in black and appears in the input region of the CIW.
❑ At the beginning of the line in the input region, click.
The blinking text insertion bar appears in front of the expression.
❑ Type fix.
The CIW input region now contains the complete expression:
fix(width-1)/pcStep
❑ Press Return.
You see 2 in the output region. If the value of the stretch line parameter were set to 5.5, the
contacts would be repeated two times. There is no decimal point because the number is now
an integer.
mypcell supermaster
Vertical
stretch line
Unlike the repeating contacts you created previously, you want the poly1 shape to both
repeat and stretch. So this time you set an option in the Stretch form to allow all intersected
objects that repeat along the X axis (the poly1 gate) to stretch.
1. In the mypcell layout window, choose Pcell – Stretch – Stretch in X.
The system prompts you to draw a vertical line to control horizontal stretch. You will
create the stretch line down the middle of the poly1 gate.
2. Define the vertical stretch line by doing the following:
❑ Click the top edge of the poly1 gate.
❑ Move the cursor to the bottom edge and double click or press Return.
1. Click to start
stretch line.
2. Double-click
here.
Turning this option on lets you both stretch and repeat the poly1 gate.
Objects intersected by the stretch line can stretch to the right. You have completed the third
parameter: the stretch line for the poly1 gate.
Repetition
----------
Objects Repeated in: Y
Number of Objects in this group: 2
Stepping Distance: 2
Number of Repetitions: (fix((width - 1)) / pcStep)
Dependent Stretch:
Adjustment to Stretch:
The information shown above is correct for the tutorial pcell.
4. Close the list window by choosing File – Close Window.
You’ll test the new stretch parameter by creating an instance and changing the value of
length.
5. Create the instance by doing the following:
❑ With the cursor in the pcelltest layout window, open the Create Instance form by
pressing i.
The Cell field is still set to mypcell.
❑ Set width to 5.
❑ Set length to 3.
❑ Click in the pcelltest layout window.
Length of gate is 3.
You have completed testing the third parameter: stretch line for gate length.
In this tutorial, you are defining parameters before using them in expressions. However, it is
not necessary to do so. The Pcell compiler evaluates all parameters when you compile, not
before, so you can define an expression that refers to a parameter before you define the
parameter, as long as you define the parameter before you compile.
Note: If you define an expression containing a parameter that is not defined and then
compile, the Pcell software treats the undefined parameter as a parameter and displays it on
the Create Instance form.
1. In the mypcell layout window, choose Pcell – Repetition – Repeat in X.
You are prompted to point at the shapes for the repeat group.
2. Select only the poly1 gate and open the Repeat in X form by clicking on the gate and
pressing Return.
mypcell supermaster
Click on the
gate.
5. Click OK.
After you compile and place an instance of the pcell, the Create Instance form contains a field
named numGates to let you type the number of gates.
You have completed defining the fourth parameter: a repeat group for the poly1 gate.
Repetition
----------
Objects Repeated in: Y
Number of Objects in this group: 2
Stepping Distance: 2
Number of Repetitions: (fix((width - 1)) / pcStep)
Dependent Stretch:
Adjustment to Stretch:
Objects Repeated in: X
Number of Objects in this group: 1
Stepping Distance: (length + 1)
Number of Repetitions: numGates
Dependent Stretch:
Adjustment to Stretch:
The information shown above is correct for the tutorial pcell.
4. Close the window by choosing File – Close Window.
You’ll test the new stretch parameter by creating an instance and changing the value of
length.
5. Create the instance by doing the following:
❑ Open the Create Instance form by pressing i with the cursor in the pcelltest
layout window.
The Cell field is still set to mypcell.
❑ For length, type 2.
❑ For width, type 5.
❑ For numGates, type 2.
❑ Click in the pcelltest layout window.
You have completed testing the fourth parameter: repeat group for poly1 gate.
This instance is not correct yet because one of the gates is on top of the right-hand contacts.
You need to fine-tune the parameters so that there is room for the gates to repeat: the
diffusion needs to expand and the contacts and metal layer need to move to the right.
■ The system computed the repetition parameter for the number of contacts using the
expression you entered. The expression is based on the value of the width parameter
and results in two contacts.
Instance of mypcell
Width of
p-diffusion is
5.
Length of gate is 2.
Although the length parameter stretched the poly1 gate, p-diffusion, and nwell each by 1
micron, it did not stretch the p-diffusion and nwell enough to accommodate the second gate
created by the gate repeat parameter. Now you need to find a way to
■ Stretch the p-diffusion and nwell to make room for additional gates
■ Move the contacts and metal layer to the right, out of the way
2. Double-click to
end stretch line.
Reference Dimension is set to its default. The system will not use this value because, in the
next section, you make this parameter a dependent stretch line to cause the layout editor
to calculate the amount to stretch based on the size of the gate repeat group.
4. Click OK.
mypcell supermaster
Click on the gate.
3. Indicate that you do not want to add more shapes to the group by double-clicking
anywhere in the cellview window or by pressing Return.
The Modify Repeat in X form appears.
4. For Dependent Stretch, type diffStretch.
Now the diffStretch parameter is dependent on the gate repetition parameter.
5. Click OK.
Repetition
----------
Objects Repeated in: Y
Number of Objects in this group: 2
Stepping Distance: 2
Number of Repetitions: (fix((width - 1)) / pcStep)
Dependent Stretch:
Adjustment to Stretch:
Objects Repeated in: X
Number of Objects in this group: 1
Stepping Distance: (length + 1)
Number of Repetitions: gate
Dependent Stretch: diffStretch
Adjustment to Stretch: ((fix(pcRepeatX) - 1) * pcStepX)
The information shown above is correct for the tutorial pcell.
The dependent stretch line should make the contacts and metal layer move to the right
and the p-diffusion and nwell stretch to accommodate the additional gate.
5. Create the instance by doing the following:
❑ With the cursor in the pcelltest layout window, open the Create Instance form by
pressing i.
The Cell field is still set to mypcell.
❑ For length, type 2.
❑ For width, type 5.
❑ For numGates, type 2.
❑ Click in the pcelltest layout window.
The instance looks like this:
❑ Click OK.
The system creates a text file named mypcell.param in your current working
directory (cell_design).
❑ In the window, choose File – Close Window.
The window closes.
3. Save the supermaster pcell and close the window by doing the following:
❑ In the mypcell layout window, choose Design – Save.
❑ Choose Window – Close.
You have completed closing the pcelltest layout window, saving your pcell parameters to
a file, and saving and closing the mypcell layout window.
Summary
In this chapter you learned to create and modify pcells. Specifically, you
■ Defined stretch line parameters
■ Defined repeat group parameters
■ Defined a dependent stretch line
■ Modified a repeat group parameter for the dependent stretch line
■ Examined the Parameter Summary after each change
■ Compiled and tested your parameters
■ Saved your parameters to a file
■ Saved the supermaster of the pcell