Creating a Full Custom IC–Station Layout

 

1. Setting the Working Directory. 8

2. Invoking IC - Station. 8

3. Creating a New Cell 8

4. Setting up the Layer Palette. 9

5. Setting the Grid Size. 11

6. Turn on Port Names. 12

7. Determining the Stick Diagram.. 13

8. Creating an NMOS Transistor 13

9. Creating a PMOS Transistor 24

10. Drawing Circuit Paths. 28

11. Creating the Input Port 29

12. Creating the Output Port 33

13. Adding Power and Ground Rails. 35

14. Adding Transistor Bulk Connections. 38

15. Running DRC Check. 40

16. Running LVS Check. 40

 

In this tutorial you will learn how to use Mentor Graphics IC-Station to construct a full custom layout of an inverter, i.e. a hand crafted creation of an IC cell.  You will create the artwork that specifies transistor layouts and their interconnection. You will also verify that there are no design rule errors in the final layout. You can use what is illustrated in this lab to construct CMOS logic gates.

 

It is assumed that prior to this tutorial you created the schematic of the inverter in Design Architect using the SDL's pMOS and nMOS transistors.  Also, that you ran the adk_dve command on your inverter design to create the sdl view point:

adk_dve your_design_name -technology ami05

 

1. Setting the Working Directory

 

From the UNIX terminal, navigate to the directory where you have created your design viewpoint using adk_dve.  This should be the same location as your Design Architect Schematic. 

In this case we have called the design “inv” and it should be located in your home directory, i.e. just under your user name.

 

disk2/acc/xxx

 

Where “xxx” represents your user name.

 

If you are not already in this directory, navigate to this directory.  Set this as the working directory using the swd command.

 

2. Invoking IC - Station

 

Invoke IC station with the following command:

adk_ic

 

3. Creating a New Cell

 

Click the following menu item.

File -> Cell -> Create

 

Fill in the new cell properties as follows

 

Cell name: inverter

Attach library: $ADK/technology/ic/ami05

Process: $ADK/technology/ic/ami05

Rules: $ADK/technology/ic/ami05.rules

Angle mode: 45

Cell Type: Block

 

To link the generated eddm Schematic Viewpoint with the newly created Cell, click on “With connectivity.”

 

Using the browse button, navigate through until you choose the correct eddm schematic i.e. inv. 

 

Double click inv; you should see several viewpoint options.  Choose sdl as the viewpoint by single clicking it. 

Choose “Logic Loading Options” and then select “Flat.”

 

Your window should appear identical to the following.

 

 

4. Setting up the Layer Palette

 

One way to customize the layer palette is to use the menu option

 

Other->Layers->Append to Layer Palette

 

Another way is to hold the mouse pointer onto the blank sheet and type on the keyboard “sho la p.”  In the dialog that opens, scroll down and select the layers you want to draw with (p-well through metal3). You can select these by clicking on p-well, then hold down shift and use the down-arrow to select what you want. The image below shows the palette on the upper right with several layers chosen, as well as the “Show Layer Palette.”

 

 

5. Setting the Grid Size

 

 Let's make sure the grid is set up. Go to

 

 Other->Window->Set Grid

 

Verify that the dialog box looks like the image below.

This will make all points you click snap to a one lambda grid.

 

 

6. Turn on Port Names

 

Now turn on port names (they are invisible by default).  Do “Setup->IC” and turn on "Port-Pin Name Display"(see image below) in the dialog that appears.

Under Setup->IC change the Port/Pin Name Display to ON (this will display of ports and pins).

 

 

7. Determining the Stick Diagram

8. Creating an NMOS Transistor

 

Now we will start drawing our first transistor, which will be the NMOS transistor of the CMOS inverter. From the schematic we know that this transistor has a channel width of 5λ.  

The width of the transistor will correspond to the width of the active area. We will select the n-diffusion layer and draw a rectangular active area to define the transistor.

 

Select “active layer from the upper right hand layer palette.

Select “shape” from the “ADK Edit” palette

You are now in rectangle mode. Select the first corner of rectangle in the layout window (you may select any point within the window but try to select a point close to the origin),

click once, and then move the mouse cursor to the opposite corner. While observing the Cursor position readout,  draw a box that is 13λ horizontal and 5λ vertical.

All units are in Lambda by default. The grid should be set to snap to ½ λ increments.

 

 

The second step is to draw the gate. We will use a vertical polysilicon rectangle to create the channel.

Note that the length of the transistor channel will be determined by the width of this poly rectangle.

 

Select the “poly” layer from the “layer palette.”

 

The ami05 design rules tell us that poly must be at least (2 Lambda) from edge of the diffusion. 

Select “shape” and draw the poly rectangle 2λ horizontal and 9λ vertical.  The 2λ dimension comes from the length of the channel as indicated in our schematic.  The other dimension requires a 5λ channel width plus the 2λ overlap required on each edge, thus totaling 9λ.

 

The poly shape should be centered as shown below.

 

 

The next step is to make the active contacts. These contacts will provide access to the drain and source regions of the NMOS transistor.

 

Select the “Contact to Active” layer.

 

Create a square with a width and height of 2λ, as described by the design rules.  Center the square as much as possible in the active region,

but make sure it is at least 2λ from the poly layer.   It should appear similar to below.

 

 

Select the contact by single clicking upon it.

 

Now select the “copy” button from the right hand menu palette.

 

Drag the mouse pointer into the sheet and place the new contact symmetrically opposite the first, as shown below.

 

 

Select the “metal1” layer from the layer palette.

 

Draw two metal squares surrounding the active contacts by at least 1λ in all directions as specified by the design rules.

 

  

Note: Each diffusion area of each transistor must be selected as being of n-type or p-type. The green active region does not specify the type of the transistor;

it merely indicates the desired size of the transistor.  The transistor type is literally defined by the special mask layer called n-select (p-select). 

An “n-plus_select” layer results in an NMOS, and similarly a “p_plus_select” in a PMOS.

 

Select the “n-select” layer from the palette.

 

Draw an outer ring surrounding the active layer by at least 2λ in all directions as defined by the design rules.  You should now have the image below.

 

 

You have now created one NMOS transistor.  Actually what you have created is this.

The n+ select regions and a gate; which are surrounded by a huge tub of p-substrate (blank empty space is p-substrate by default).

 

9. Creating a PMOS Transistor

 

The PMOS is so alike to the NMOS we can start by copying everything we have done. 

 

Select everything by drawing a box around everything. Then do a right-mouse-button Copy (copy) and copy everything.

 

Place the copied transistor above the original transistor

 

Unselect all (F2) and then select the top transistor's n-select. With that selected do Objects->Change->Layer (cha la) and change it to p-select.

 

Unselect all and view all to make sure it looks like the following figure. You now have an NMOS on the bottom and a PMOS on the top.

 

 

You now have the following.

 

 

Notice that our second transistor is P+ surrounded by p-substrate.

 

To fix this problem select “n-well” from the palette.

 

Draw a large n-well surrounding the p+ layer by at least 6λ in all directions, as specified in the design rules.

 

Your figure should no resemble the image below.

 

 

We have now corrected our design and have two functional transistors, as shown below.

 

 

10. Drawing Circuit Paths

 

Wire together the two drains of the circuit using metal1.  Make sure that it is at least 3λ to satisfy design rules.

 

Note: instead of using “shape” to create the shape you can instead use “path.”  Click the options button, and change the width to 3λ.

 

Connect the two drains of the circuit.

 

Now select the “poly” layer, and change the width to 2λ; wire together the two gates of the circuit.  The circuit should now appear as below.

 

 

 

11. Creating the Input Port

 

To create input port we must first jump to the “metal2” layer and then create a port.

 

To do this; extend the “poly” out to the left in a 5λ by 5λ square.

 

Next place a 2λ by 2λ “contact to poly” in the center of the poly square.

 

Surround the “contact to poly” square by metal1.  Metal1” must overlap the poly by at least 1λ.

 

Next place a “via” (connection between “metal1” and “metal2”) at least 2λ from the “contact to poly” square. 

Surround this “via” with “metal1” and “metal2” by at least 1λ.  The resulting figure should appear as the image below.

 

 

To make the in port, select the metal2 layer then execute Objects->Make->Port (mak po). In the lower-left dialog, set it to the following:

 

Port type: signal

Direction: in

Port name: IN

 

Click OK and the name of the port (in) should appear. If not, go back to instructions at the top of the tutorial to turn on port/pin names and then redisplay.

 

The name of the port should appear on the port as below.

 

 

12. Creating the Output Port

 

To create the output port we only need to jump from metal1 to metal2. 

 

Draw a 4λ by 4λ metal1 layer to the right of the metal1 output path.

 

Draw a 4λ by 4λ metal2 layer covering the metal1 layer.

 

Draw a 2λ by 2λ via in the center of the other two layers.

 

Finally select the metal2 layer and execute Objects->Make->Port (mak po). In the lower-left dialog, set it to the following:

 

Port type: signal

Direction: out

Port name: Out

 

Both input and output ports have now been added.

 

 

13. Adding Power and Ground Rails

 

Add larger metal1 layers both above the PMOS and below the NMOS.  These layers are also known as power and ground rails respectively.

 

Connect metal1 paths between each rail and the source of each transistor as shown below.

 

 

Now make the power rail a port by selecting Objects->Make->Port (mak po).  Choose the following options.

 

Port type: power

Direction: in

Port name: VDD

 

Repeat the same action with the ground rail; this time with the following options.

 

Port type: power

Direction: out

Port name: GND

 

The VDD and GND labels should now appear.

 

 

14. Adding Transistor Bulk Connections

 

Type the keyboard command nwc” for nwell_contact .  Place the contact over the power rail.

 

Type the keyboard command pwc for pwell_contact.  Place the contact over the ground rail.

 

 

15. Running DRC Check

 

Click DRC->Check from the right hand palette. Click “ok” to choose default options.

 

If there are DRC errors you can view them one at a time by clicking DRC -> First, and then DRC -> Next for each additional error.

 

Fix each error according to the known design rules.

 

Note: The design rule errors are written in text at the bottom of the window.  The expected size in λ is also given.

 

16. Running LVS Check

 

LVS check compares the layout you made in IC-Station with the schematic created in Design Architect.

 

Navigate the right hand palette to the “IC Palettes” menu.

 

From IC Palettes click ICtrace (m) then click “LVS.”

 

Fill out the menu so it looks as follows.  Choose the lvs viewpoint as the “Source Name.”

 

Note: choosing lvs viewpoint may require you to close the current logic if any is open.  To do this select Logic -> Close, from the ICTrace (m) menu.

 

Press “OK” when you are done filling in the sheet.

 

 

To view the results click “Report -> LVS” from the ICTrace(m) menu.

If the results are correct check mark and smiley face logo should appear.

 

You have completed the tutorial and may now exit IC-Station.