IC Layout

IC design and simulation was done using the Cadence Virtuoso CAD software, licensed to Columbia University Circuit and Embedded System Lab.

Basic Cells

For any digital circuit, we need a set of basic logic gates to implement its digital logic functions. These digital logic gates form a finite basis of all logic expressions. Some common finite basis are {AND2, OR2, INV}, {NAND2}, etc. Although the logic gates of a finite basis guarantee the completeness of all logic functions, it might not be an ideal circuit in terms of complexity, area, and power. Hence we implemented extra gates to accomodate a better design.

We designed these digital logic gates using static logic family implementation, i.e. CMOS VLSI design style. In contrast to static logic family is the dynamic logic family, which normally implements faster logic gates using smaller area. However, the tradeoff of such design is complexity, which we avoided to guarantee a working final project.

Presented below is some basic cell layouts from our design files.



Fig. 1: Inverter Layout


Fig. 2: 2-input NAND Layout


Fig. 3: 3-input NAND Layout


Fig. 4: 2-input NOR Layout


Fig. 5: 3-input NOR Layout

Apart from the combinational circuit elements above, a digital circuit normally requires certain storage elements. A common storage element is known as D-Q Flip-Flop, acronym DFF. We designed our own DFF with asynchronous reset. The following figures are the schematic and the layout of DFF.



Fig. 6: D Flip-Flop schematic


Fig. 7: D Flip-Flop Layout

Functional Blocks

Using the basic cells above, we constructed a couple of functional blocks. For instance, we implemented a set of modulo counters, multiplex driver, converter from BCD to 7-segment outputs, and input debouncer circuit.



Fig. 8: 32k-Divider Layout


Fig. 9: Modulo-24 Counter Schematic


Fig. 10: Multiplex Driver Schematic


Fig. 11: Decoder from BCD to 7-segment Schematic


Fig. 12: Decoder from BCD to 7-segment Layout


Fig. 13: Debouncer Schematic

Top Level

At top level, we connected all functional blocks together and binded them to the correct input pads.



Fig. 14: Top Level Layout


Back to top