***************************************************************************
MAGIC CAD USER CONCERNS
Recently, a feature-placement discrepancy has been found between what is seen
in Magic and what is in the Magic-created CIF file. In the case to be
described, the defective chip designs were difficult to troubleshoot. The error
was later found after mask fabrication and confirmed with the CAD tool L-Edit.
With the advent of new technologies such as MEMS where users are more
frequently modifying technology files, all users must understand and be aware
of this error.
Initially, the problem was found when using a NIST-developed Magic technology
file, and later, the effect was confirmed using a slightly modified MOSIS SCMOS
technology file. Specific instructions for reproducing the effect are given for
users of Magic version 6.3.
In particular, the discrepancy to be described has to do with butting contacts
and a resulting displacement up to 1 um of the actual contact such that the
contact is coincident with the edge of the metal and active area. When this
area is then covered with metal2, all sorts of testing problems can arise
including low yield and high leakage currents.
The displacement of the contacts is due to a combination of factors including
the way Magic interprets its data, the way the commands are specified in the
technology file, and the way the design is digitized. More importantly, this
discrepancy can be hidden from the designer via different orientations of the
designed cells.
Has any other reader experienced problems such as the one described, or is this
an isolated incident ? Any input along these lines is appreciated. Please
respond via email to [email protected] and a summary will be provided
after all the responses have been received.
Janet Marshall
Christian Zincke
NIST
To reproduce the effect in the MOSIS SCMOS technology file:
1.
Insert the following style in the cifoutput section:
style errors
scalefactor 100
layer CAA pdc, nwc
layer CCA pdc, nwc
squares 100 200 200
layer CMF pdc, nwc
NOTE: The first argument of the squares command specifies the amount of
border to be placed around the contacts (1 um in this case), the second
argument specifies the size of the contacts (2 x 2 um in this case),
and the third argument specifies the separation between the contacts (2
um in this case).
2. Digitize an 8 x 4 um pdc and an 8 x 4 um nwc adjacent to it such that the
resulting combined area is 8 x 8 um.
3. Make 7 copies of this construct and offset the butting contacts an
additional micrometer for each copy such that the combined area somewhat
resembles a step.
4. Select these 8 butting contacts and copy then rotate them 90 degrees.
5. Type ':cif ostyle errors.'
6.
With the bounding box around everything, type ':cif see CCA' to see where
the contacts are located. Some of the vertically oriented contacts are
shifted up to 1 um such that the edge of the contact is coincident with
the edge of the metal and active area. The horizontally oriented
contacts are not shifted. This is due to the way Magic interprets its
data. Granted, if the following lines:
layer CCA pdc, nwc
squares 100 200 200
are split into the following:
layer CCA pdc
squares 100 200 200
layer CCA nwc
squares 100 200 200
(see, for example, the MOSIS SCMOS technology file), then the pdc and
nwc areas are treated as independent tiles and not combined before the
squares command, however, since hind sight is 20-20, please continue.
7. Type ':feed clear' then select everything and type ':select save cellerr.'
8. Place the cursor to the right of everything digitized and type ':getcell
cellerr.'
9. Copy the newly created instance of cellerr to the right of this instance
and type ':clock.'
10. Copy the just rotated instance of cellerr to the right and type ':clock.'
11. Repeat step #10. (This can be done for inverted instances as well however
the above instances are sufficient for this demonstration.)
12. With the bounding box around everything, type ':cif see CCA' and record the
location of all the contacts.
13. Create the cif file errs.cif by typing ':cif write errs.'
14. Also make a flattened cif file called errflat.cif by typing ':cif flat
errflat.' This will eliminate the cell hierarchy.
15. Read the file called errs.cif into another CAD tool.
16. Record the location of all the contacts and note that the contact locations
are DIFFERENT than what was recorded in step #12. In other words, the
actual contact locations are NOT what were indicated by the ':cif see'
command and therefore were hidden from the designer.
17. Read the file errflat.cif into this other CAD tool and record the location
of all the contacts. The location of the contacts is identical to what was
seen with the ':cif see CCA' command in the original file.
>From this example, the ':cif see' command used in conjunction with a
hierarchical cif file cannot be guaranteed. However, the above results imply
that the ':cif see' command used in conjunction with the ':cif flat' command
appears to be compatible. In any event, double-checking each design with
another CAD design tool and performing a drc is recommended.