MAGIC Magic Mailing List
 
 

From: Jeff W. Sondeen (sondeen AT rcf-fs DOT usc.edu)
Date: Wed Oct 24 2001 - 14:41:36 EDT

  • Next message: erik peterson: "Re: Resistors in magic"

    excellent discussion, all i would add is that you can use subcircuits
    to reduce the spice file editting you need to do (so change the m1005 to
    xm1005, i think)
    
    there is a ".r" file for tech tech file: eg:
    
    % more 2001a/SCN3ME_SUBM.30.r
    
    .subckt nwellResistor d g s b W=1 L=1 Rsquare = 816
    R       d s 'L*Rsquare/W'
    Rg      d g 0
    Rb      b 0 0
    .ends
    
    .subckt polyResistor d g s b W=1 L=1 Rsquare = 22.3
    R       d s 'L*Rsquare/W'
    Rg      d g 0
    Rb      b 0 0
    .ends
    
    ...
    
    /jeff
    
    R. Timothy Edwards writes:
     > 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