In hindsight,
one can get a feel of the process involved in designing an integrated circuit
chip going from an idea to the screen, and finally to a physically working
device. Throughout this development, we learned how to use a layout tool
called MAGIC. MAGIC is a cumbersome yet effective way of laying out
a circuit at the lowest level. Unfortunately, its command line interface
took some time to learn.
One of the
biggest problems was laying the wires so they would not pose future problems
when implementing more cells into the design. Particularly, if the
design needed to be modified, moving wires and components proved to be
distressing. One way to avoid some problems we found, was to keep
vertical wires blue, and horizontal wires purple. That is, by keeping
a metal wire in one direction, and different type of metal wire in the
other, there will never be a junction occurring with the same type of wire
thereby eliminating short circuits. You may have noticed this in
our picture of the MAGIC layout.
Other problems
included gate delays, bad connections, and HSPICE simulations. Gate
delays was not a large factor in our simulations since was adjusted the
time to milliseconds. However, in our design the worst possible gate
delay would be 8. The bit in question would need to go through the
AND gate and 7 Muliplexers. This is a considerable delay in any design.
Since our circuit was relatively small, there was little concern about
placing buffers between stages to drive the voltage. There was also
the problem of human errors. Staring at the screen for hours and
wondering why is doesn't work wasn't an uncommon feeling. Many times
a wire would just be disconnected or misplaced causing the entire circuit
to fail. One way to avoid this problem, is to wire and test each
part of the circuit before implementing the everything at once. HSPICE
simulations were also troublesome. The errors reported from the simulations
were uninformative and difficult to find. Even when we new the circuit
worked, by tracing the bits by hand, we couldn't get the simulations to
function the way we wanted. After many trials we were finally sucessful,
but only after hours of failures.
Given our
design of an 8 bit Barrel Shifter and its functionality, one could modify
it to his/her needs. This design could be used as a guideline for
implementing Barrel Shifters to upwards of 40 bits. However, you
might have to adapt some new techniques for larger shifters since the number
of Muliplexers grows dramatically with the number of bits being used.