Synopsys 28nm Tutorial
Synopsys 28nm Tutorial
Setup
If you are inside PSUT, then you can proceed to the following section. However, if you would
like to connect from outside PSUT, then you will need a VPN connection. You can get the VPN
connection details with the login info mentioned earlier. You will not be able to open the
cdesigner without connecting to PSUT server.
From Windows
To run the synopsys packages from Windows operating system you need to download two
applications; Xming and PuTTY. These applications are used to provide SSH communication
with the server that we have at PSUT. Download the applications from the following links:
1- Xming: http://sourceforge.net/projects/xming/
2- Xming fonts: http://sourceforge.net/projects/xming/files/Xming-fonts/
3- PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Install and start Xming and its fonts. Xming is a service that runs in background, so you will not
be seeing any graphical interface. Run PuTTY and the screen should look as in fig. 1.
Fig. 1 PuTTY user interface
After that, expand the SSH tab on the left and enable the X11 Forwarding as seen in fig. 2.
Next, go back to the Session tab and enter your username followed by @172.30.200.203.
You can save the session by choosing a name like synopsys and then click Save as seen in
fig. 3 below. When you want to get access next time, just choose synopsys and click Load
Fig. 3 adding the username and saving the session
A screen Terminal for the Linux RedHat operating system should appear prompting the user to
enter his password.
From RedHat OS
- Open a terminal window (Right click > Open Terminal)
ssh X <your_user_name>@172.30.200.203
Starting cdesigner
- After entering the password, the following statement will appear:
[<user-name>@psutsynopsys ~]$
% cd <work directory>/28nm/
% cdesigner
Note: The work directory name will typically be work. However, the work directory name will
be workdir throughout this tutorial.
The software will start and the window in fig. 4 will appear. This window is called the Custom
Designer Console and it everything starts from here.
Getting Started
When using SYNOPSYS Custom Designer, a certain hierarchy should be followed to get the
work done neatly and correctly. Fig. 5 shows this hierarchy for a simple library.
Note: When you name any library, cell, file, session, etc., use alphanumeric characters only.
Using other characters may result in errors in the last steps. Avoid using spaces and use
underscores ( _ ) to separate words.
Note: The name abd in this tutorial represents the username. So when you need to specify a
path (in some later steps), use your username instead of abd.
Fig. 6 Creating a new library
Creating Categories
When you design a lot of cells within the same library, it may be cumbersome to find a specific
cell. So, as a good practice, you should categorize your cells into groups.
- On the console, go to Tools > Library Manager. This will be the place where all your
work can be accessed.
- From the new window go to Edit > cell category.
- Select a library in the left field, then fill in the category name (ex, CMOS_INVERTER)
and click create.
- Repeat the last step to create other categories.
Fig. 7 Creating categories
Tools
Fig. 10 Tools
Tools function:
1. Add instance.
2. Add node.
3. Name wire or node.
4. Add PIN.
6. Undo.
7. Redo.
8. Move instance.
9. Stretch Instance.
16. Cut.
17. Copy.
18. Paste.
CMOS Inverter Design
This part will show the design steps of the CMOS inverter. Fig. 11 shows the logic symbol of the
inverter and its circuit diagram.
Schematic Design
Steps:
1. Place instance (component) in the work place, there are two ways:
d. Name the instance (MP1) and specify its parameters (width, length, fingers, etc.)
g. Repeat steps (3a-3g) but select (nmos4t) and name it (MN1), click cancel to close.
Fig. 12 Adding instance
Fig. 13 Placing transistors
a. Move the cursor to the red square at the instance terminal you want to connect.
e. To add a wire to connect wires, go to Add > wire (Or press W on keyboard)
f. Connect wire.
5. Add pins to the schematic to define the terminals. Go to Add > Pin or (Ctrl+P). Pins can only
be placed on wire ends. When placing a pin after selecting it from the top menu, the bar in fig. 14
will appear at the top of the workspace.
Fill the information you need under each field (name, pin type, and its orientation). Last step
before getting the final result is to name the wires and nodes. Use tool #3 in fig. 10. Your
workspace should look like that in fig. 15 which is an inverter cell schematic view.
Fig. 16 Create symbol cell view from schematic cell view window
Press OK and take a look at the symbol (fig. 17). You may need to modify it when you design
bigger circuits.
Test Bench
To create a test bench where the inverter cell can be simulated, use the steps below:
1. Create a new cell that and relate its name to test bench (like: *_TB, *_TestBench, etc.). Use
the schematic view (fig. 18).
2. Place the inverter instance inside it. This is the same cell you created under VLSI_HW
library.
a. cap
b. vsource
d. gnd
Note: Naming the wire is like connecting it to the node that has the same name. That can be very
helpful in designing huge and complex circuits with large number of wires.
Simulations
SYNOPSYS Custom Designer uses the SAE "Simulation & Analysis Environment" simulator.
To run SAE, from the test bench schematic go to Tools > SAE. This will launch the window in
fig. 21, which consists of three main parts:
The bar on the right contains the shortcuts for the most commonly used commands in SAE. To
setup simulation options:
c. Click in section one. Use the file browser to determine the directory of your models
library file. (In the example, you will find it under >> work/28nm/hspice/saed32nm.lib)
d. In section two chose your transistor corner type (i.e. TT, FF, SS, SF and FS). Pick TT.
e. Click OK.
Fig. 22 Model setup Window
c. Select tran (For transient analysis). Fill the option like the ones in fig. 23 where:
e. Click Apply.
f. Select dc (For DC sweep). Fill the option like the one in fig. 24 where:
h. Click OK.
3. The following step is to choose the desired simulations results. In section TWO in fig. 21, do
the following steps (fig. 25):
a. Click under output field, and write the name for a specific output variable.
b. Click under expression column and choose the node from the schematic, or write an
equation that uses the values of some nodes in that schematic.
c. Under analysis, just check the simulation option. Select the one that applies for this
variable. (For now select both of them dc and tran).
4. Save your simulation options by going to Session > save state, select Openaccess from the
main three options at the top. Then name the state without any spaces in the name. See fig. 26.
Fig. 25 Simulation setup
3. A Wave Viewer window will appear. The graphs for the specified output variables will be
plotted in this window.
4. At the lower left corner, there are two tabs. (dc and tran)
Layout Design
In this section, we are going to create a layout view for the same inverter. Go to Custom Design
Console. Create a new cell view after selecting the library and cell (i.e. CMOS inverter cell),
select layout view. Click OK and you will get a new window like that in fig. 29 which is the
main window of the layout editor.
Like the schematic editor, we have the shortcut bar to left of the window, see fig. 30. The
object/layer panel on the right side of the window, see fig. 31. All the layers that can be used in
the design are included in that panel.
Fig. 29 Layout editor main window
Fig. 30 LE Tools
Fig. 31 Object/Layers Panel
Layers marked inside the green rectangles, in figure 31, are the one we are going to use in this
tutorial. The left portion is the color and the look of the layer, the middle portion is the layer
name, and the right portion drw indicates a drawing layer. The meaning of each layer is the
following:
Steps:
2. Measure the dimensions of the object you need to create (Ex. Polysilicon gate). See fig. 32
Important: In the smaller processes (32nm and below), the gate length is very small. That
makes the gate poly (polysilicon) easy to etch during the fabrication process. The solution is to
protect the active poly (transistor gate) by other dummy poly. These dummy polys do not have
any functional purpose, but they are important for the protection of active gates. One dummy
poly is sufficient for every active poly. However, in this tutorial, two dummy polys will be used.
You can remove one of them to get a more compact design.
Copy the poly two times and place the new polys as in fig. 34. The distance between two polys
must be 0.122m.
Note: This tutorial should not be used as a reference for the design rules. To get the Design Rule
Manual (DRM), do the following:
Exercise: Try to delete one of the dummy polys and to reduce the size of the second dummy as
much as you can.
The PMOS transistor will be placed first. Place the rulers as in fig. 34 and draw the diffusion
layer (DIFF) as in fig. 35. Notice that the width of the transistor is measured along the poly and
the length is the width of the poly.
Fig. 35 PMOS diffusion layer
DIFF layer determines the area of the diffusion (the etched area), but it does not determine the
type (N- or P-type). So, another layer called PIMP (P-Implant) must be added. This layer covers
the area that will receive the dopants which will result in a P-type material. Fig. 36 illustrates this
layer. Remember to depend on the DRM for the rules.
Exercise: Read more about the CMOS technologies and the multi-well processes. You can find
them in the text book (3.2.1 in the old edition, 3.2.3 in the new edition)
Place the NMOS transistor using the NIMP layer as in fig. 38.
Fig. 38 The NMOS transistor
Note: You can go now to the DRC Design Rule Check section to make sure that your work is
OK. When you work on bigger layouts, try to do the DRC after every step so that the errors will
not stack up at the end.
Add the two taps and start adding contacts and metal1 routes. The contacts have an exact size
(0.042X0.042), so you can make one contact and use it anywhere in the layout by taking a copy
of the closest contact. Contacts have minimum allowed distance from adjacent polys and
diffusions. Check fig. 39 and refer to the DRM for more info.
Metal routes can be realized using the path tool (#2 in fig. 30, shortcut: CTRL+SHIFT+P). This
tool will enable you to connect the parts by a minimum width trace of metal1. If you want to
make a wide metal1 trace, use the rectangle tool. See fig. 40.
Fig. 39 Placing contacts and metal1 traces
The polysilicon gate should have a metal1 input port. So, we will connect the poly to the metal1
by a contact. The contact may not be fully enclosed by the poly. However, it must be centered at
the half line of the poly strip. This can be found in the DRM document as a minimum enclosure
of (-0.006m). Check fig. 41. (This is a special case. Other cases can be found in the DRM).
Fig. 41 poly contact placement
During the design process, you may need a simple, neat way to remember the different nets. This
can be done be naming the metal traces using the label tool. Name the confusing nets using M1
text layer. Fig. 42 shows the complete layout of the inverter.
2. A window like the one in fig. 43 will pop up. This window is used to set the options for the
DRC (Design Rules Check).
/<work directory>/28nm/Hercules/drc/saed32nm_1p9m_drc_rules.ev
c. Click OK.
d. Go to custom designer console window. If your design is clean of errors, you will see a
massage like the one in fig. 46.
f. If your design has layout violations, a window like fig. 47 will pop up.
g. Fig. 47 can also be obtained by going to verification > DRC > Debug. This window
will give you a list of the errors in your design and will help you identify them by
highlighting them as shown in fig. 48.
2. A bar like that in fig. 49 will appear at the top of your workspace.
4. The texts will appear over the mouse curser. (The text layer type LPP MUST be M1PIN)
5. In the layout editor, click at the layer where the text needs to be attached.
Note: M1 text layer does not have the same effect as M1PIN.
To run LVS:
5. Click OK.
7. Fix the mismatch error, and you will see a window like shown in fig. 57. Your design is LVS
clean.
Fig. 51 LVS setup window
8. In this window, fill empty fields with same data as shown in fig. 64 which are marked with
blue boxes.
9. Click under selected column, in your cell line, and you will see drop down menu.
10. Select starrc from that menu as shown in fig.65 - red marked area.
Post-layout-Simulation
To start post-simulation open Custome Designer library manager fig. 66, and follow the steps:
3. Two windows will open, the one in fig. 65 and another one that look like schematics editor
window.
4. To check if your Config viewpoints to starrc view double click on the inverter cell in
schematics editor view, you will see starrc view.
5. Now in the schematics view window, go to Tools > SAE. (Refer to SAE section for details
how to run simulation).
6. Run the simulation and see the difference between pre-layout-simulation and post-layout-
simulation.
Exercise: Using your CMOS inverter, build a simple ring oscillator as the one shown in fig. 67
following the same procedure. To use your inverter add it as an instance in the schematic view,
and go to create > instance in the layout view. Observe the output of each stage and try to figure
out the delay of your CMOS inverter. Try to make the layout as compact as possible.