University of Southern California
Department of Electrical Engineering - Systems
EE 477 Laboratory #3 (worth 20% of final grade) - Minor Revision
Module Design, Cadence and SPECTRE
Due 12/6/16 7:00 PM
There will be no extensions so plan your time accordingly!
Required contents of the report appear in purple.
This is a long lab so be sure you scroll to the end to see all the information.
Rules:
- You can use any combination of multiple clocks you wish, but only clock is an input to the circuit and you will have to design circuits to generate the other clocks.
- You need to generate all inverted inputs, including /clock and /load They are not inputs to the circuit You need to generate them if you need them.
- You must use the cells you designed in labs 1 and 2 to build your neuron and your neural network. Do not change the circuit structure of your cells unless your cells do not meet the requirements of lab 1 or 2 (i.e. you lost points). You can rearrange the layout slightly or resize transistors as needed while still meeting the requirements of lab 1 and 2. Do not change the methodology by rotating transistors, rearranging transistors, connecting inside the cell on different layers, or changing your interconnection strategy (for example, you might decide that all inputs come in the top of the cell, so you can't change that). You can move ntaps and ptaps around.
- You must have ntaps and ptaps according to the rules. Make sure your ohmic contacts (ntaps and ptaps) meet the following requirement: Every cell should have a well and substrate contact, including transmission gates, and of course the taps should be connected to Vdd and Gnd. For larger cells, include at least two contacts per 50x50 lambda, one for the psubstrate and the other for the nwell. Every separate block of nwell should have at least one ohmic contact. For all your contacts, you will get the best performance if you use multiple minimum-size contacts for large contact areas and not large contacts, as Cadence will do for you automatically.
- You can tune the circuits by changing transistor sizes as needed or to squeeze out empty space while still meeting the requirements of lab 1 and 2. You can modify the layout of your cells from Labs 1 and 2 in minor ways in Lab 3 if you can see some ways to make the circuits smaller or faster. You can rotate and flip cells about the x and y axes.
- You cannot remove unused inputs or unused logic from your cells.
- You can use metal layers 1-4 for the neuron, and layers 1-6 for any external connections that go to the inputs/outputs of the neuron.
- All signals should use the names we have given below.
- As in Lab 2, the output transition of the flip flops including any setup time at any following flip flop inputs should occur before the next rising edge of the clock.
- For this lab, you can use any layout strategy you choose as long as it fits the cell methodology you have already selected.
- On your final neuron layout, all inputs and outputs to the circuit must be routed to the edges of the layout and must be labeled using the pin names.
12. Include a title page in your report that includes your name, student number, email address and date. Your report file name should be Lastnameusernamelab3.pdf. Do not submit other file formats, like .doc or .txt.
On the cover page of your report, please give the final area and delay of your final neuron design, and your final area*delay product. The delay you should measure with SPECTRE simulations of your layout for your final result is the clock cycle or clock period of the neuron layout assuming correct operation. Your output should appear before the next rising edge of the clock. The faster your clock cycle, the faster your circuit will function. Measure the area of your design in square microns. Your area should be the bounding box area of your design. If your design is not rectangular, include the wasted (empty) area in your area calculation. Compute the area-delay product of your design and report it clearly at the beginning of the report so we can find it. Compute an area-delay product that is the area in square microns times the clock period. If you compute the area-delay product wrong, or you do not compute it you will lose points.
The Digital Neuron
This lab is the design of a special-purpose digital circuit that mimics a neuron (brain cell). Be sure to finish and test your schematic of the neuron before you start the neuron layout.
There are 5 inputs to the neuron:
- a single-bit data input to the neuron, D that could be different every clock cycle
- a single-bit inhibitory input I,
- Load control signal, that allows the output firing ff to be loaded with a new value,
- Reset control signal that resets all the flip flops by loading 0.0v,
- and a clock with 50% duty cycle.
Name your signals as shown in bold above. The output should be named AP. It is important you follow this naming convention so we can verify that your circuit works.
The basic Neuron Function:
- Each data input and control input has a single bit.
- The inhibitory input I is a single bit. It prevents the neuron from firing as long as it is held to "1" (Vdd)
- The neuron output contains one firing flip-flop you designed in Lab 2, and the output of the flip-flop AP represents the output of the neuron.
- The neuron "fires" when the input D is a sequence 1 0 1, and I =0. So the neuron remembers inputs using additional flip flops until the proper pattern is detected and then the neuron sets the output flipflop for one clock cycle and resets all additional flipflops.
- After the negative edge of the clock, if the neuron fires, the output of the firing flip-flop AP goes from low to high. The output remains high until the next falling clock, when it is lowered.
- Load is normally held high, but is lowered if we want to emulate a neuron failing to fire due to lack of sleep or similar circumstance.
- Note that you might find a way to use the compound gate you designed in Lab 1, and you might need more than one of these gates. You do not have to use it at all.
For example, if the inputs is 101 in sequence, the output flipflop will be set (fire) and all memory of accumulated inputs will be erased. Then, if the sequence of 3 D inputs is 101 again, the neuron will fire again.
Design the circuit to be a Mealy Machine, where the output (the firing flip flop) is derived from the present state (all other stored values) and the inputs during the current clock cycle. The next state (all other stored values) are also a function of the present state and the inputs. The firing flipflop does not affect whether the flip flop fires again in subsequent clock cycles.
Design variations for the Input memory and logic: You have the option to store individual inputs separately as they arrive, and test them together to see if they have a 1 0 1 pattern before firing the neuron. Or you can change the state as inputs arrive, possibly saving storage or computation space. In the first case you need to be able to store a count of at least 2 for each D input, and in the second case you need to be able to store the state information, which might be 2 as well. Feel free to try other variations of these.
A block diagram of the neuron is shown below.