University
of Bridgeport
School of Engineering and Design
Department of Computer Science and Engineering
Simulation of Full Custom NAND design
Using
Mentor Graphics
Introduction
This tutorial will give you a short introduction to the Mentor-Graphics
Analog Simulation facilities, and guide you through the testing of the
simple CMOS NAND gate you created previously. The tutorial assumes you
have completed the full custom IC lab session successfuly, and you have
the NAND gate design available. If you don't, please go back to the
Full Custom IC Design tutorial, and complete
it first. Simulation is a computational method that allows us to
systematically predict the behaviour of a circuit or device based on
a model. A simulation is as precise as the model that describes the
behaviour of the device's primitivies. On the other hand, the more
elaborate model, the more CPU intensive will the simualtion be. As a
result, engineers are using different simulation techniques to simulate
circuits of different sizes. The key issue in proper simulation of a
design is hierarchy. Every design should start with a well difined set
of primitives. To have the design properly simulated, a designer should
have every primitive accompanied with a highly elaborate simulation model.
The design process should begin by creating basic simple structures out of
the primitives, those should be simulated accurately. After simulation,
new "coarse grain" models should be created for those structures, and the
rest of the design should be done with the latter.
Introduction to applications
In this lab, you will use one new product out of the Mentor-Graphics
package.
Accusim
The Accusim application is a graphic front end and a post processor for SPICE like kernels. Currently it is attached to the ELDO SPICE kernel which is included with the Mentor-Graphics Analog-Station package. You will do all your analog simulation session in it.
Lets get to work!
Simulation setup
Invoke Accusim on our design by typing "accusim mynand/accusim" at the
terminal.
You are now placed in the DC mode simulation. You should see your schematic
design open in a window inside the simulator workspace. First, we have to load
a model library for our parts. The model library you are going to load is
an actual AMI05 SPICE model, that was statistically collected from a large
fabrication run in AMI.
Click on Files > Auxiliary Files > Load Model Library...
In the dialog box, enter $UB_MODLIB/ami05.mod , then hit Ok
The library should load and we can start with a simple I/O simulation.
Select the "A" network by dragging a rectangle around the "A" port using
your left mouse button.
We now have to define a "force" on this network, so we will be able to "force"
it externally to any voltage we like.
Click [DC Mode] ADD FORCE. In the dialog box, set the Magnitude to 5, then
press OK.
You should see a force probe (a circle with data in it) appear beside the
forced nets on the schematic.
Do the same to the "B" network
Let's have some report windows available:
Click Report > Forces on Schematic
Click Report > Keeps > Schematic keeps
you should see our forces being displayed in the forces report.
Unselect all signals (F2), then select Net "A".
Click [DC Mode] SETUP ANALYSIS
Click on DC Sweep
Change the "from" value to 0, and the to value to "5".
Notice that the net name already has the "A" netlist that we would like
to sweep between 0 and 5V.
Click OK
Notice that the simulation conditions have been updated in the simulation
status window (upper left corner of the window). We now have to add keeps.
Those are the circuit nodes that will be recorded by the simulator.
Because our circuit is small we will keep all the nodes:
Click [DC Mode] ADD KEEPS
Click on ALL (the one at the top) and on OK.
You should see the Object "/" added to the Keeps report window (Accusim
understands signal names as a hirarchy similar to a file system and so
keeping "/" means keep everything from the signal tree root and down).
Now, let's run a simulation
Click [DC Mode] RUN
The status window will show "RUNNING" for a few moments. Wait for the "NOT RUNNI
NG" message to appear.
We now need to view the results.
select the "A", "B" and "Out" networks.
Click on [RESULT] CHART
You should get the IN/OUT transfer function on your window. Move the cursor
over the plot. You can read the exact values where the cursor stands on the
upper left window corner. Does this plot agree with your knowledge of CMOS
NAND gate?
Repeat the simulation, but this time, run the sweep on net "B" (you don't
have to redefine any of the forces, just repeat the "Setup Analysis" with
the "B" net selected. This will sweep net "B" instead of "A".
Close the chart window by clicking Close on the chart's window pooldown
(click on the window's left button).
We will now generate a Time Domain simulation.
Click on TIME MODE
If this is the first time you launch a Time analysis you will get a setup
window.
Check that the Transient button is pushed, the Time Step is 1N
(1 nanosecond), and the Stop Time is 0.1U (100 Nanoseconds).
Click OK
delete all the previously defined forces by:
Delete > Forces... > All signals > OK
Select the "A" network and Click on ADD FORCE
Choose a PULSE Force type
Change the Pulsed Value to 5, Pulse Width to 30N, and the Period to 100N
Repeat the above for net "B", with a Pulse Width of 60N (the rest should
be the same).
Click OK
Click [Time Mode] RUN
Select "A", "B" and "Out" networks, and Click [RESULT] TRACE
You should have an Analog Trace of the input signal and the resultant
output. Does that output conform with your expectations from a NAND?
If not, then what happened?
Close the Accusim window, and start design architect on your mynand
design.
Add a load resistor between the Out port and GND. You can find the
resistor the generic parts palette inside the MGC Analog Libraries.
Set the resistor value to be 3K (to do that, you'll need to change
the INSTPAR property of the resistor).
Check and save your sheet.
Start Accusim on your revised design.
Repeat the I/O and time domain simulations you did previously on the loaded
design.
Are there any differences, if yes - note what are the differences.
Is the design working in a satisfactory manner? If not, can you suggest
a solution (except, of course, changing the load resistor).
The simulator allows you to change part properties in the schematic of the
simulator. This way you can experimenet and optimize the design, without
leaving the simulation environment. You can do that the same way you did
it in Design Architect.
Try your solution in the simulator. Did your suggestion solve the problem?