MAGIC Magic Mailing List
 
 

From: erik peterson (erik AT yanntek DOT com)
Date: Wed Oct 24 2001 - 15:14:59 EDT

  • Next message: Richard Lethin: "small nits in cvs version"

      hiya, 
    
      we used to extract some devices in MAGIC as FETs as well, since you
    can 
    go back with scripts/C-code and identify the "special" FETS you
    extracted 
    and convert them to the proper device.  we did this for 2 terminal
    devices
    that had polarity: flipping the terminals had to trigger LVS errors
    (caps, 
    diodes, ESD-structures).  we also used the FET trick for extracting 
    resistor networks, especially those where you need to "control" which 
    nets are interesting.  what we end up is a techfile filled with flag 
    layers to help magic extract the information out of the layout.  these
    flags can be autogenerated, but most of the time they end up being 
    painted by a human being.  
      i try to minimize the amount of data in magic that WONT make it to
    final
    tapeout.  it makes the techfile smaller (good!) and it allows LVS to
    operate 
    on a final tapeout, not a tapeout-with-flags-and-drc-helper-layers-etc.
      magic is an amazing layout tool.  we have done many wierd things with 
    it to solve problems that people with cadence thought impossible (unless
    you have the $$$, even then, prob not).  the option of "tweaking" the 
    tool and techfiles on the fly, in front of customers, or off-site at the 
    foundry (on a laptop!) makes you look like a wizard.
    
      but..
    
      when it comes time to do a proper LVS of the final GDS, you cant
    afford
    to let these things go unchecked:
    
    	1. who (using what?) has tortured my DRC and cifout sections?
    	2. who is doublechecking my final tapeout?
    	3. how will i know if the foundry cells i have to parachute into
    	   the design are placed correctly.
    	4. how strong is my LVS?  did i check everything?  did a human 
    	   have to "touch" the GDS for my extraction to work?  
    	5. how many cifout sections do i have in my techfile?  is there
    	   a 'tapeout' AND a 'lvs' section? ('drc' sections are ok, thats
    	   a different beast..)
    	6. besides LVS, do i have enough backannotation information to 
    	   shove back into the simulator?
    	7. ...
    
      dont have time to write more, i am staring at a salami sandwich with
    my 
    name on it and im running out of lunchbreak.  a big part of my solution
    to
    the list above is to use magic for layout, and use ANOTHER tool to help 
    validate my magic techfiles and designs.  i dont use magic to extract,
    since 
    sometimes magic is NOT the last tool to touch the database.  I use a
    tool 
    that can operate on GDSII that *could have been* "assembled" from
    different 
    sources (such as foundry cells parachuted at the last minute, or cells
    that
    contain non-rectangle/45deg polygon monstrosities).
    
      bah! out of lunchbreak.  here is the page for 'space'.  its free, skip
    lunch and install it :)  its an active project, and the guys that make
    the 
    tool are no fools.. read the papers they gave ;)
    
      http://cas.et.tudelft.nl/~space/space_soft.html#space_full
    
     -erik
    
    
    
    
    
    
    
    "R. Timothy Edwards" wrote:
    > 
    > Dear John,
    > 
    >    This may be an end-run around your problem, but this is how I have
    > dealt with resistor extraction in the recent past (also for a DAC
    > circuit).  For this application, I first tried looking at extres, but
    > as I had similar problems getting it to do what I wanted, I took the
    > approach outlined here (to any magic-dev people listening in to this
    > discussion:  Is extres broken, and if so, what can we do about it?
    > If extres is not broken, or else once we fix it to our satisfaction,
    > is there any reason for it to be separate from the regular "extract"?).
    > 
    > 1) Use the appropriate tech file.  I was using the AMI tech file
    >    SCN3ME_SUBM.30.tech27 from Jeff Sondeen's "2000 beta" set.  Most
    >    if not all of these *.tech27 files contain a layer type "rpoly" which
    >    represents nothing more than "poly" used as a resistor (sort of like
    >    using a "resistor ID box" in other layout editors).  "rpoly" requires
    >    another layer called "pseudo_rpoly", which looks sort of like a well
    >    or implant, to overlap the "rpoly" layer by at least one unit on all
    >    sides ("rpoly" acts like "poly" + "pseudo_rpoly").
    > 
    > 2) Draw "pseudo_rpoly" on top of poly wherever you want to define a
    >    resistor.  A typical resistor looks like:
    > 
    >                          ppp
    >                          ppp
    >                         rRRRr           p = polysilicon
    >                         rRRRr           r = pseudo_rpoly
    >                         rRRRr           R = rpoly (poly + pseudo_rpoly)
    >                         rRRRr
    >                         rRRRr
    >                          ppp
    >                          ppp
    > 
    > 3) Extract.  The "extract" section of the 2000b tech files contains the
    >    line:
    > 
    >         fet  rpoly  poly,pc 2  polyResistor  Gnd!  nwell,pwell 0 0
    > 
    >    which after ext2spice gives you something like this:
    > 
    >         m1005 rtap a_536_60 rout Gnd zpolyResistor w=21 l=20
    >         + ad=0 pd=0 as=0 ps=0
    > 
    >    This means that resistors get extracted as FETS.  However, it is not
    >    too much trouble to look for the lines in the resulting SPICE netlist
    >    containing the model name "polyResistor" and run a "sed" script or
    >    somesuch to replace the transistor with a resistor.  Here is where
    >    the use of "pseudo_rpoly" comes into effect:  Due to the overlap,
    >    the "pseudo_rpoly" acts like a transistor gate for the purposes of
    >    transistor extraction.  Therefore, the gate node in the SPICE deck
    >    can be ignored, and the w=(value) and l=(value) terms give the
    >    proper width and length of the transistor, which in turn can be
    >    used to compute squares, and in conjunction with the polysilicon
    >    resistivity for the technology, the resistance.  If the pseudo_rpoly
    >    layer runs as close to contacts as possible, then the computed
    >    resistance will be reasonably accurate.  In the above example from
    >    my DAC, the SPICE line defines a 0.95-square resistor between nodes
    >    "rtap" and "rout".  Node "a_536_60" (the pseudo_rpoly "gate") is
    >    ignored, and the "substrate" connection Gnd is meaningless.
    > 
    > I hope this explanation helps!
    >                                                 Regards,
    >                                                 Tim
    


  •  
     
    Questions? Contact Rajit Manohar
    cornell logo