MAGIC Magic Mailing List
 
 

From: Jeff W. Sondeen (sondeen AT rcf-fs DOT usc.edu)
Date: Wed Apr 05 2000 - 17:19:08 EDT


> I agree that a fix is needed to deal with the problem of cells which contain,
> for instance, contacts only.  However, I also agree that defining a separate
> plane for each contact type is unwarranted.  This solution is of course what

i haven't heard yet what's bad about it, since i don't agree that the
number of planes is an issue. in terms of the number of types, if you
remove the gc,gc2(for poly2),and gv1-gv5 from SCN6M_SUBM.10, then
you'll go from about 180 to 173 types, i think, which is a speed
improvement of around 10% (whether ratio of squares or cubes), which
i'm not sure i'd notice (when cif read/write of large designs can take
3+ hours).

> happens when you try to work around a bothersome problem using the existing
> capabilities of magic (I did likewise for bipolar device extraction, and was
> never satisfied with the kludgy result).  Since we're a *development* team,
> we have the opportunity to rewrite magic to handle this in the proper way.
> The real underlying problem is that magic CIF input's boolean functions
> allow it to read in a cif polygon and then obliterate it completely when
> it doesn't intersect any layers that it's ANDed with.  This method of
> contact generation creates even more problems than can be handled by
> separate contact planes:  A (Cadence, Mentor Graphics, L-Edit) user can
> define a cell called "two_contacts" containing two contacts side by side,
> then use that cell once over poly/metal (making them poly contacts) AND
> once over ndiff/metal (making them ndiff contacts).  I have a solution,

'gc' connects to poly or diff, but it takes a 'gc2' to connect to
poly2 due to poly2 being on a separate plane than poly (which was for
easy poly2-poly caps).  also, there's a bug mentioned in
ftp://ftp.isi.edu/pub/sondeen/magic/new/beta/CHANGELOG about the
"implementation of stacked contacts" (look for that string).

> though it's a bit complicated:  define a CIF temp layer "contact", used to
> read in all contacts which couldn't be resolved into any of the usual
> contact types.  After the CIF file has been read, call a (new) routine which 
> attempts to resolve all the temporary layers by combining with paint in
> cells which overlap.  It would have to be smart enough to discover when
> a contact was being used as two different contact types, and duplicate the
> cell as necessary.  If anyone has a better idea, please let me know.

gee, my wishlist for magic is in
ftp://ftp.isi.edu/pub/sondeen/magic/new/INTRO, but i think the most
useful improvement would be a slight variation of the edge4way drc
rule which would simplify (and make possible) better drc checking.  if
you look at figure 9.a, page 29, of magic maintainers manual #2, it
shows "cornerTypes" just to the left of the t1/t2 junction, which
indeed is what magic considers: how about a rule 'edge4wayb' that
considers the "cornerTypes" just to the right of the t1/t2 junction.

> 
> 						---Tim


 
 
Questions? Contact Rajit Manohar
cornell logo