MAGIC Magic Mailing List
 
 

From: R. Timothy Edwards (tim AT stravinsky DOT jhuapl.edu)
Date: Wed Apr 30 2003 - 10:55:03 EDT

  • Next message: Martin, Mark: "RE: "table-driven" techfiles"

    Dear Jeff,
    
    > anyway, i'm getting close to releasing a new set of simplified, 'table
    > driven' techfiles, within weeks i hope, altho they will probably be
    > limited to 7.2 magic and above, in order to (try to) enforce
    > 'wide-metal' spacing rules.
    
    There are a number of recommendations I would like to make regarding
    any set of techfiles that's targeted for version 7.2.  Unfortunately
    I'm just getting around to documenting them, so you wouldn't
    necessarily know about them.  In addition, my attempts to document
    them regularly get pre-empted by higher-priority items.  Regardless,
    here they are (along with some other random comments):
    
    1) I have changed ".tech27" to just ".tech", but added an extra keyword
       "format" in the tech section.  The format version number is now 28,
       in version 7.2.  So the tech section looks like:
    
       tech
          format 28
          scmos
       end
    
       In addition, I would like to get away from the habit of labeling
       all technologies "scmos".  Since version 7.2 is able to load and
       reload technology files on-the-fly, it makes more sense to match
       the name in the tech file to something having to do with the
       actual process and vendor (e.g., "ami05").  If the techfiles
       match closely enough not to cause problems when loading under
       different technologies all of which are called "scmos", then they
       won't cause problems when loading an alternative technology while
       the layout is still in memory.
    
    2) The widespacing rule is problematic largely because it describes
       a discontinuous rule.  For all the simple edge-based rules,
       moving a piece of layout by 1 unit will increase or decrease the
       DRC violation area by 1 unit.  With the widespacing rule, moving
       or stretching certain pieces of the layout can cause large areas
       of DRC violation to suddenly appear or disappear.  The main
       consequence of this is that there is no single, obvious way to
       define a widespacing rule.  As far as I am aware, no one has
       created a standard definition of the widespacing rule that
       covers all possible cases unambiguously (maybe I should go have
       a talk with somebody at NIST?).  So instead, the implementation
       in Dracula is the "de facto standard" except that I have no
       idea what that implementation is.  We need to either find out
       what algorithm Dracula uses or reverse-engineer it from a slew
       of test cases.  Otherwise, we're going to start getting emails
       from annoyed users who found out that their magic layout didn't
       pass muster with a vendor.
    
       These are not priority items, and some may cross the boundary
       into vendor-proprietary information, but some of the following
       can be included if you have the specs available, and they are
       not subject to NDA restrictions:
    
    3) layer height and width (for 3-D rendering and precise geometry
       extraction for passing to field-solver tools) can be put in the
       extract section, using the line
    
          height <layer(s)> <height_above_substrate> <layer_thickness>
    
       Units are in lambda and may be floating-point.
    
    4) extended "contact" line in the extract section takes the same
       arguments as the "squares" command in the cifoutput section.
       Otherwise, the extractor makes a different count of contact cuts
       than actually ends up in the output, so extracted values (mainly
       resistance through contacts) can be incorrect.  The syntax is:
    
          contact <layer(s)> [<size> <border>] <separation> <resistance>
    
       Dimensions are integer, units of lambda, which means that if the
       cifoutput "squares" function is not on lambda boundaries, the
       extractor's count of contact cuts may still be wrong.  I may try
       to allow floating-point values in the future, if this seems to
       be a common problem.
    
    5) Add plot section information for PNM and PostScript rendering.
       Remove plot section information for "gremlin", "versatec", and
       "colorversatec"
    
    6) The "styles" section can (and preferably, should) take style
       "long names" instead of style numbers as the second argument.
       It should be fairly easy to write a little program or script
       that will go through and replace numbers with names from one
       of the ".dstyle" files;  I know that doing it by hand is very
       painful.  Using names is much more portable, though, and makes
       the "styles" section easier to write.  For example,
    
    	cwell	10
            nwell	12
    	poly	1
    	nfet	6
    	nfet	7
    
       becomes:
    
    	cwell	cwell
    	nwell	nwell
    	poly	polysilicon
    	nfet	ntransistor
    	nfet	ntransistor_stripes
       
       The style files themselves are much more amenable to extension, now,
       and the numbers in the first column are actually meaningless.  If
       you need extra styles, just add them in, and let me know what they
       are so I can add them to the standard style files in the distribution.
       Note that since I changed the style files, there is no restriction on
       the number of styles, and I have added lines for metal6 through metal8
       and via5 through via7.
    
    7) An additional change with the syntax for "device ..." in the extract
       section is the use of variable names for the default substrate name.
       This is meant for use with the Tcl interpreter, so I'll probably
       need to make sure that the non-Tcl versions handle it sensibly, but
       you can replace "Vdd!" and "Gnd!" with "$VDD" and "$GND" ("$VSS" has
       been suggested to me as being more accurate), which then default to
       "Vdd!" and "Gnd!" unless the user or .magic file sets the variables
       explicitly to match the actual names of the power and ground networks.
    
    -------------
    
    In addition to the existing additions to tech format 28, I am currently
    toying with at least one more idea which will affect the technology format
    I am in the process of testing a version of magic in which the existing
    method for contacts is replaced by a method suggested to me by
    Philippe, in which *any* layer can be set up to create images of itself
    on another plane.  It lifts all the primary restrictions on contacts
    such as 1) contacts are no longer restricted to connecting a maximum
    of 3 planes, and 2) planes connected by contacts do not need to be
    contiguous.  I am also considering lifting the restriction that no
    two contacts can declare the same residuals, and let the order of the
    contacts in the techfile disambiguate circumstances.
    
    I am also starting to add stuff into Magic for handling Place & Route;
    not a real integrated PAR tool (yet), but at least the ability to
    handle cells as part of "standard cell" libraries, including definition
    of labels as "ports" (q.v., the new "port" command), defining routing
    through-channels and obstructions, and boundaries for cell abutment.
    It is likely that there will be a new techfile section to handle these
    definitions, but there's no point in worrying about it right now.
    
    -------------
    
    If there are any other aspects of the technology file which are lacking,
    or which seem stupidly implemented or have become outdated, please let
    me know and we can have a discussion among the developers on what to do
    about them.  Implementing "antenna rules" is the primary one I can think
    of, but I'm sure there are others.
    
    					Regards,
    					Tim
    


  •  
     
    Questions? Contact Rajit Manohar
    cornell logo