University of Southern California
Department of Electrical Engineering - Systems
EE 477 Laboratory #2
Latch/FF Design, Layout and SPICE Simulations
Due November 10, 2008 11:59 PM
Vdd = 2.5 v.
A note about well and substrate contacts: Make sure your ohmic contacts meet the following requirement: Every cell should have a well and substrate contact. For larger cells, include at least two contacts per 50x50 lambda, one for the p-substrate and the other for the n-well. Every separate block of n-well should have at least one ohmic contact. For all your contacts, you will get the best design if you use multiple minimum-size contacts for large contact areas and not large contacts.
Part 1: Lab 1 Cell Layout SPICE Simulations
Simulate the cell layouts you designed in Lab 1 using SPICE (inverter, NANDs, and compound gate), attaching the inverter cell layout as a "load" to the output of each cell. To do this, create a new cell that contains the cell you are testing and also the load (inverter) cell. For the simulation use the same inputs in the same order as you did for the schematic simulations, including your worst-case simulations. Your device sizes should be the same as you were instructed to attain in Lab 1. You do not need to adjust rise and fall times by changing transistor sizes here. You can use these values for transistor betas: βn (beta)= 219.4 W/L μ A(microamps)/V2 and βp (beta)= 51 W/L μ A/V2 . Note the rise and fall times at the outputs of each cell. Use a rise and fall time for the inputs signals of .1 ns. You will need to insure when you extract the SPICE file from the layout that you include all parasitic capacitances.
Change the temperature in the SPICE simulation of the inverter to 100 degrees C and resimulate. Compare your simulation results.
The report on this part of your lab should contain a title page, a list of all the cells you simulated, layout images, and the SPICE simulation inputs and outputs in the form of MWAVE images. Also include a discussion of cell rise and fall times and a comparison to the simulation results you got for Lab 1. All these parts should be in a single lab report file in pdf format. Tar this lab report with the SPICE netlist and stimulus files generated by Cadence, and the lab report and files from Part 2, described below. The report should be typed, not handwritten.
Part 2: LATCH and FLIP-FLOP DESIGN
1. Use the cells you have already constructed to design a latch, and use two latches to build a CMOS D flip-flop schematic in Cadence. Assume the flip-flop is clocked, and that clock, /clock, synchronous load and synchronous /load are inputs to your design. Load is active high. When Load is low, the data will recirculate, regardless of the clock. The flip-flop should be positive edge triggered. The clock signal should not be gated (in other words, the clock signal should not pass through any logic gates before arriving at the flip-flop). Optional: You can construct a transmission gate multiplexer instead of using the gates you already designed. There is no guarantee that your circuit will be smaller or faster if you do, but the odds are that it will be. If you construct a transmission gate, the NMOS and PMOS transistors in the mux should be twice minimum width.
The transistors in the gates used in the flip-flop should be sized as they were to be sized for Lab 1. Do not use ratioed (pseudoNMOS) logic. Do not use dynamic logic or dynamic storage (not covered yet).
2. Simulate the flip-flop schematic you built in Cadence using SPICE again assuming the data D, clock, /clock, load and /load signals are inputs to your design. Be sure to try all possible combinations of data inputs versus present state of the flip flop, using the waveforms shown below. Start with clock low, D low and load high. For the simulations, attach your inverter schematic as a "load" to the flip-flop output. Adjust the timing of your clock to be as fast as possible and still have the circuit work properly. The waveforms shown below show the order of changes of inputs you are to use for the simulations. You might have to set initial conditions in the latch to get SPICE to converge. This will be explained in the discussions.