Tools for Verifying Magic Layouts

B. Bylsma , S. Durkin , M.W. Studer
Sept. 15, 1996

Technology Files

For drawing we use exclusively the MOSIS CMOS SCALABLE design rules. The DRC rules have been verified to work by M. Studer so they can be trusted. The technology file is ~ellipro/durkin/magic/lib/magic/sys/durkinp2_cwell.tech27.

For extraction and making CIF files for the linear HP process the prefered technology file is ~ellipro/durkin/magic/lib/magic/sys/durkinp2_hp.tech27. This is the HP technology file obtained from MOSIS so the capacitances and resistances constants are up to date. Although the CIFOUT section of the two technology files is basically the same, there is a slight difference in overglass cutting between the two files. Here we believe the hp technology file is superior.

Design Rules Checking (DRC)

With large layouts it becomes very difficult to see design rule errors. Fortunately there is a simple proceedure to catch any missed errors.

1) Save design creating an updated {name}.mag file.
2) If there is an DRC error there will be a layer called ERROR. At the UNIX command line search for such a layer in the {name}.mag files using: fgrep -i "error" *.mag

Continuity Checks (EXTRACT)

When MAGIC extracts a design it traces all connections within a design. It knows when lines are disconnected and warns about them. Unfortunately the warning outputs are quite confusing. I know of no simple way around this.

1) MAGIC does not treat heirarcy correctly for extract warnings. One can flatten the {name}.mag file using the command: ~durkin/magic/bin/mag2flat {name}.mag
2) One then runs MAGIC {name}.flat.mag, and :extract all. Note: This will not work for linear capacitors unless the HP technology file is used.
3) BELEIVE THE RESULTING WARNINGS! .
4) 2SPICE often helps in this proceedure. One can look for funny names (e.g. a2224_9973). If the design is correct their shouldn't be any. Disconnected wells should also show up as UNKNOWN.
5) EXTCHECK can be used at the UNIX prompt to check the connectivity of global nodes. Simply EXTRACT from MAGIC and run: EXTCHECK {name}.ext.

The bottom line from all of this is that a flattened mag file should never show any warnings. If it does there is something wrong.

Connectivity Checks (Spice<->Spice)

Even though all lines are now connected they may not be connected the way you want them connected. A program called GEMINI written at the University of Washington will check for all wiring inconsistencies between {name}.sp and {name}.cir files. Unfortunately it runs on {name}.sim files which have already been flattened. The proceedure to run GEMINI is as follows:

1) At UNIX prompt flatten spice files (e.g. {name}.sp and {name}.cir) using: ~durkin/magic/bin/spice2flat {name}.{}
2) Change flattened spice files to {name}.sim files using: ~durkin/magic/bin/flat2sim {name}.{}.flat
3) To run GEMINI type: ~durkin/magic/bin/gemini {name}.sp.flat.sim {name}.cir.flat.sim
4) If all is well the last line reads: All nodes were matched in xxx passes.

Once Gemini runs there is a program which requires signal names but does the same job as Gemini plus more!

1) To run FIXSD type: ~bylsma/bin/fixsd {name}.cir {name}.sp
2) FIXSD modifies the {name}.sp file correcting Source/Drain ambiguities.
3) A standard error file is output listing errors.
4) An output called fixsd.err is output. This output gives FET and capacitance compairisons.

Checking FET Sizes

Once the connectivity of the design is verified one needs to check FET sizes. The program FIXSD above gives you this information in the file fixsd.err(see previous section). GEMINI will also do this for you.

1) Type ~durkin/magic/bin/gemini -w2 {name}.sp.flat.sim {name}.cir.flat.sim . The number after the -w corresponds to the percentage L,W difference you want output as an error.

Check Capacitor Sizes

The program FIXSD provides a list of missing or unmatched capacitors as well as compairing the capacitances of matching capacitors in the {name}.sp and {name}.cir files.

Pad Connection Testing

It still needs to be verified that the bonding pads are actually connected to the circuit. A routine called PADPLOT will test the labeling and give you a bonding diagram.

1) Type ~durkin/magic/bin/padplot {name}.mag . A plot viewed by GHOSTVIEW will be generated as well as a pin listing called pinout.lis.

Running PADPLOT along with RESTRACE (see below) guarantees pads are connected properly.

Check Line Resistances

Two programs exist for extracting net resistannces. A routine called RESTRACE, written by S. Durkin) will trace from all pads to all associated FETs outputing resistances. Once again this must be run on a flattened file (mag2flat-see above). To run type: ~durkin/magic/bin/restrace {name}.flat.mag > out.lis

MAGIC internally has a command :EXTRESIS. It only works on flattened magic files. You can flatten files using ~durkin/magic/bin/mag2flat described above. The other drawback to this routine is that it will not trace to pads but only traces from FET to FET. For large .mag files this routine does not seem to work at all.

Both routines can be modified to put resistor information into SPICE files (ask S. Durkin).

Checking CIF Bloating

On rare occasions MAG to CIF file bloating can merge signal lines or wells. The following proceedure will check for bloat errors. THESE proceedure can wipe out files so BACKUP YOUR mag files before running (better yet have Stan do it).

Form a subdirectory below the directory where your mag files are located. (e.g. magic/cif). Copy the cif file to this directory, read it into magic, and write mag files. MAGIC has an irritating habit of mixing up labels. To clean up the labels one must run: ~durkin/magic/cif2mag/mag2fix {name}.mag . Once this is done run magic, :extract all, and make an .sp file.

Before running gemini on the {name}.sp and {name}.cir files it is necessary to slightly modify these files. The cif file has no nwell and thus sees no difference between VSS/VSS3 (OSU convention). To remove this distinction use EMACS to change VSS3 to VSS in the {name}.cir file. Use EMACS to change unknown! to VSS and VSS3 to VSS in the {name}.sp file. Then run gemini on the resulting files. The nets must completely match.

Checking Pads

When a user does not provide a bonding map, MOSIS is very particular about bonding pads. It is a good idea to take a look at the overglass layers (OVG, XP) in the cif file before submitting a chip to mosis wiht their automatic bonding. This is accomplished by running ~durkin/wombat/cif2ps -r {name}.cif out.ps. The output postscript file can be edited to display the OVG and XP layers. You will have to rename the XP layer in the CIF file since cif2ps does not recognise XP layers. Any boxes where there is no wire bond should be removed from the XP layer.

If you provide a bonding diagram the XP layer (used only for wire bonding) should be removed from the CIF file.

Source Programs

Links to source for programs above can be found on this html.