MAGIC Magic Mailing List
 
 

From: R. Timothy Edwards (tim AT stravinsky DOT jhuapl.edu)
Date: Mon Mar 24 2003 - 17:04:49 EST

  • Next message: Jeff Sondeen: "Re: Euclidean DRC in magic"

    Dear Charles,
    
       I'm still looking into the problem of CIF and GDS reads.  At first, I
    found a couple of errors which were definitely causing a segmentation
    violation.  However, with that fixed, I still get very bizarre behavior.
    I will probably post the fixes at the end of the day, and keep working on
    how to resolve the remaining problems.
    
       Looking at the CIF file, there is a lot of nonmanhattan geometry in
    there, and most of it is defined on a fairly standard lambda grid.
    Most CIF cells are defined with a multiplier of 1000 and most values are
    divisible by 1000.  Then, it hits the BufZ cell, which has a nonmanhattan
    polygon defined on y=71244.  The eventual fallout of this is that the
    magic grid gets redefined to 1/6250 of its original size.  This very, very
    fine internal grid is apparently causing arithmetic overflow in various
    routines, but I have not yet figured out where, and if there is anything
    that can be done about it.
    
       As far as the contacts are concerned, I've never been particularly
    happy with the way contacts are defined in the tech files.  The tech
    files define a "generic contact" type.  In my mind, "generic contact"
    should always be defined in the cifinput section such that every
    contact in the input is turned into a generic contact, after which
    the generated layer is ANDed with various layers to create the magic
    types pc, ndc, pdc, etc., etc. (likewise for vias).  If that's done,
    then any contact which does not have other layers defined along with
    it becomes a generic contact. While the use of generic contacts is
    not as appealing as splitting them into different sub-types, with
    this method at least you don't LOSE them when reading the input, and
    they can be written back out in the same way without screwing up the
    layout.
    
    For the MOSIS tech files, this doesn't work so well because the
    generic contact is defined on its own plane, so you can't define
    everything to be a contact and then overwrite specific combinations
    of layers with other contact types.  For the standard cell files
    in question, it appears that the only thing the techfiles lose is
    the active contacts, because L-Edit only differentiates between
    N and P diffusion with select boundaries, so magic loses ndc and
    pdc after applying its rules.  This can be kludged into the tech
    file by adding, in the cifinput section, after all the other
    "layer gc" definitions, the following:
    
     layer gc CCA
     and CAA
     and CMF
     and-not CSN
     and-not CWN
     and-not CSP
     calma CCA 48 *
    
    This appears to cover all the cases which caused missing contacts.
    
    					Regards,
    					Tim
    


  •  
     
    Questions? Contact Rajit Manohar
    cornell logo