An Introduction to IC Design Under Linux
At this point, the layout is completed and verified, and it's time to send it off to the foundry to be manufactured. Since Magic files don't contain any information about physical dimensions (remember, all measurements are in terms of lambda), we need to create a file that gives the layout's shapes definite sizes in terms of microns. Also, since this file is used by the foundry to pattern the masks used to make the chip, it specifies shapes in terms of mask layers instead of Magic's abstract layers. Magic understands two file formats for describing physical geometries, CIF (Caltech Intermediate Format) and Calma GDS-II; MOSIS accepts both. We arbitrarily chose CIF for our example.
Just as there are several extraction styles, there are several CIF styles. The first thing we need to do is specify the correct one. Launch Magic again with the inverter file (type magic inverter at the shell prompt), and then type :cif ostyle to see a list of available CIF output styles. The current style should be lambda=1.0(nwell); if it's not, make it so by typing :cif ostyle lambda=1.0(nwell).
Creating the CIF file is simple; type :cif write inverter. This creates the file inverter.cif, which we'd send to MOSIS. This process is referred to as “tapeout”, a term coined before the advent of FTP when IC designs were stored on magnetic tape. If this were a real design, you would now take to your bed to make up for the fact that you hadn't slept in the last three weeks.
We've introduced three powerful tools for IC design under Linux:
Magic, for creating layouts
SPICE, for simulating circuits extracted from the layouts
Sigview, for viewing the results of SPICE simulations.
With these tools, a designer can create working, commercial-quality chips without spending lots of money on a workstation and CAD software.
The design example we used to demonstrate these tools was small but not useless. In fact, Figure 7 shows a 32,701-transistor IC measuring 2.71mm by 6.15mm, designed with Magic, that uses building blocks very much like the inverter we just made. (This may sound like a lot of transistors, until you consider that current commercial microprocessors are rapidly approaching 10 million transistors on a chip smaller than 2cm by 2cm.)
Thanks for making it this far. Obviously, there's a lot we've left out about the complexities of hardware design. However, we have demonstrated that Linux can be used for developing hardware as well as software. Perhaps the “SuperGizmo 6000” will be designed on the Linux boxes of the future.
We've barely scratched the surface of IC design. If you're interested in exploring this area further, you'll want to consult some references. We have used and can recommend the books listed in the Resources box.
- Secret Agent Man
- Own Your DNS Data
- Bash Shell Script: Building a Better March Madness Bracket
- Returning Values from Bash Functions
- Brent Laster's Professional Git (Wrox)
- Tech Tip: Really Simple HTTP Server with Python
- Smoothwall Express
- Simple Server Hardening
- Machine Learning Everywhere
- Understanding OpenStack's Success