University of Southern California

Department of Electrical Engineering - Systems

EE 477 Laboratory #2

Latch/FF Design, Layout and SPECTRE Simulations

Due Nov. 8, 2015, 5:00 PM


Vdd = 1.8 v.

Well and substrate contacts (ntap and ptap) required for all your layouts : 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 ohmic contacts (ntap and ptap) per 50x50 lambda square, one for the p-substrate and the other for the n-well, assuming there are both NMOS and PMOS transistors in the space.


* 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. Cadence will do this automatically for you if you try to use large contacts.

Part 1: Lab 1 Cell Layout SPECTRE Simulations 30%

A. Simulate the cell layouts you designed in Lab 1 using SPECTRE (inverters, NANDs, transmission gate and compound gate) with added ntaps and ptaps.

* Your device sizes should be the same as you were instructed to attain in Lab 1. Do not adjust rise and fall times by changing transistor sizes here. The rise and fall times will be different from the schematic. You can only change the cells from lab 1 by modifying the routing, cell width or cell height.


* Attach inverter #1 cell layout as a "load" to the output of each cell prior to simulation. To do this, create a new cell that contains the cell you are testing and also the load (inverter) cell. Read the simulation output from the cell you are testing, not the load inverter.


* Insure when you create extracted view from the layout that you include all parasitic capacitances. (Set switches-->Extract_parasitic_caps)


* For the simulation use the same inputs in the same order as you did for the schematic simulations, including your worst-case simulations.

* Use a rise and fall time for the inputs signals of .05 ns.


* Note the rise and fall times at the outputs of each cell. You do not need to submit waveforms for the rise/fall time tests.

B. Change the temperature of the inverter #1 layout (go to ADEL-->Setup-->Temperature) in the SPECTRE simulation to 100 degrees C and resimulate. Compare your simulation results.


Report Format for Part 1: The report on this part of your lab should contain, in order:

1. a title page (2%) giving cell sizes for inverter #1 (width and height) and 2-input NAND,

2. a list of all the cells you simulated (2%)

3. cell layout images (2%), without the load inverter.

4. the SPECTRE simulation inputs and outputs in the form of waveforms (16%),

5. a comparison of the inverter #1 at the different temperatures (4%), and

6. a discussion of cell rise and fall times and a comparison to the simulation results you got for Lab 1 (4%).

All these parts should be in a single lab report file in pdf format. Tar this lab report with the SPECTRE netlist for each layout cell (see note below), and the lab report and files from Part 2, described below. The report should be typed, not handwritten, and should be in pdf format. Reports submitted in .doc, .docx or other formats will not be graded.

Note: Netlist files can be obtained in the ADE L (simulator window) go to simulation--> netlist--> display.

Part 2: LATCH and FLIP-FLOP DESIGN 70%

********************************************* NOTES FOR LATCH AND FLIP-FLOP ***********************************

For the schematic and layout simulations follow the following notes:

Note 1: Attach your inverter#1 as a "load" to the flip-flop output. To do this, create a new cell that contains the cell you are testing and also the load (inverter) cell.

Note 2: The clock and all input signals should have a rise and fall time of .05 ns.

Note 3: The clock should have a 50% duty cycle.

Note 4: Proper functioning of a flip flop includes having the low output be less than .1 Vdd and the high output being greater than .9 Vdd.

Note 5: The inputs to the flip flops are: clock, /clock, Data D, asynchronous reset, synchronous Load and synchronous /Load.

Note 6: 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).

Note 7: The transistors in the gates used in the flip-flop should be sized as they were sized for Lab 1.

Note 8: Do not use ratioed (pseudoNMOS) logic. Do not use dynamic logic or dynamic storage (not covered yet).

Note 9: A note about well and substrate contacts (ntap and ptap): 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 ohmic contacts per 50x50 lambda square, one for the p-substrate and the other for the n-well, assuming there are both NMOS and PMOS transistors in the space.


* 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. Cadence will do this automatically for you if you try to use large contacts.


************************************************LATCH AND FLIP-FLOP SCHEMATIC/SIMULATION*********************************************

A. DESIGN SCHEMATIC for D flip flop:

Use only the cells you have already constructed to design a latch, and use two latches to build a CMOS D flip-flop schematic in Cadence.

Design the two latches as separate cells and then place them together to form the flip-flop. You can use one of the larger inverters in one or more places in the flip flop if it gives you a faster design.

Rules:

  • Assume the flip-flop is clocked and can be asynchronously reset. Reset can be active low or high, depending on your design.
  • clock, /clock, Data D, asynchronous reset, 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 negative edge triggered.

B. SCHEMATIC SIMULATIONS for the flip-flop you built in Cadence using SPECTRE

1) Be sure to try all possible combinations of data inputs versus present state of the flip flop, including the waveforms shown below. Note: This is a functionality test, you can do it with a slow clock frequency.

2) Be sure you test reset. Start with clock high, D high and Load high and then lower clock. During this time you should assert reset and show when reset is enabled, the output does not follow Data D instead it goes to 0 V.

3) Adjust the timing of your clock to be as fast as possible and still have your flip flop work properly. You could use the waveform below to perform this test but you should note that we need to also make sure that when data changes from high to low, the output can be produced before the next clock falls. Note: Make sure the inputs have settled a setup time before the falling edge of the clock. You do not need to have data stable before the clock rises but the first latch should complete latching any new data before the clock falls. We consider the data to be changed when it has risen to 90% of final value (Vdd) or fallen to 10% of original value (Vdd). To find a starting point for this test, you could find the setup time, the clock-to-Q delay and the propagation delay in the second latch back to the mux as your clock period.

4) Measure the setup time. The setup time is the amount of time before the falling edge of the clock that input D must be stable (the time difference between the 50% of the Data D voltage range and the 50% of the clock voltage range).

Note: The waveforms shown below show the order of changes of inputs you are to use for the simulations.