Hierarchical design is an extremely important concept in layout design. If, for instance, I were to lay out a chip like this one by placing every transistor at the transistor level on the chip scale, when the time came to tape out this design for fabrication the end-result file would be impossibly huge. |
But that chip, and practically every chip, actually includes many units repeated many times, smaller than the full chip design but larger than single transistors. Logic gates are such units. One level up, structures like latches are made up of repeating gates. One level up, structures like counters are made up of repeating latches.
Layout design programs are designed to exploit this repetitiveness by allowing the designer to include the whole of a "lower level" cell in a "higher level" cell, so that for instance once you've designed a NAND gate and need a flip-flop, you do not need to lay out four individual transistors to use as a NAND gate in the flip-flop design; you can simply "call" your NAND gate and insert it in your flip-flop cell.
The example on this page is very simplistic in that it brings just two gates together to make one slightly larger gate, but the mechanics of joining smaller cells together to make a larger one remains the same all the way up to the chip level.
|In the layout window below, note that the rail spacing of the inverter is exactly the same as the rail spacing of the NAND gate, and the inverter input, output, NAND output, and one of the NAND inputs are on the same vertical height. This is intentional in the design. Since for most applications we would be bringing together a large number of similarly-constructed layout cells, in the long run it more than pays to consider such compatibility between cells when designing the lowest-level ones individually.|
When laying out anything more complicated than a four-transistor gate, crayons are your friend.|
After you've created the schematic of a higher level cell, go to paper and (colored if possible) pencils to sketch out, roughly, how you plan to create the connections between the building blocks of the larger circuit. Figure out which metal layers are going to be used for which connections, how to make crossings minimal and keep things compact, on paper before going on to the Layout Editor. This saves much frustration later, and is a good idea all the way up to the chip-level design.