MAGIC Magic Mailing List
 
 

From: Philippe Pouliquen (philippe AT alpha DOT ece.jhu.edu)
Date: Mon Mar 24 2003 - 15:45:05 EST

  • Next message: Jeff Sondeen: "Re: mosis cell library"

    On Sun, 23 Mar 2003, Jeff Sondeen wrote:
    >
    > but this won't address the diagonal spacing drc rule problem, eg. if
    > contact spacing is 3 lambda, an array of contacts spaced diagonally
    > apart by (2,3) lambda will meet it (since sqrt(9+4) > 3) but magic will
    > require (3,3) spacing.
    
    The case for contacts is a bit confusing because Magic tech files usually
    include the metal overlap in the contact tile.  So let's stick with normal
    layers such as the metal layers.
    
    If the metal spacing is supposed to be 4, then two squares of metal
    diagonally apart by (3,3) will satisfy the spacing rule using euclidean
    distance, but not Manhattan distance.
    
    But if the spacing is supposed to be 3 (or less), then it is not possible
    to place two squares of metal diagonally apart by (x,y) where either x or
    y are integers less than 3, because the euclidean distance will also be
    less than 3.
    
    In principle, the tech file can be re-written to deal with small diagonal
    distances of 4 or 5.  The idea is to break the spacing rule back down
    into its component edge rules, and then make the corner extension
    distance (cornerDist) different from the spacing (d) (see pages 27 to 31
    in maint2.ps).
    
    For a spacing of 4, you would need to special case the position (3,3) as
    follows:
    
    Start with the following rule:
    
        spacing m2 m2 4 touching_ok \
            "Metal 2 spacing must be at least 4"
    
    Magic implements this as:
    
        edge m2 space/metal2 4 space/metal2 space/metal2 4 \
            "Metal 2 spacing must be at least 4"
    
    In the above rule, cornerDist = d = 4.  Change the rule into the
    following two rules:
    
        edge m2 space/metal2 4 space/metal2 space/metal2 3 \
            "Metal 2 spacing must be at least 4"
        edge m2 space/metal2 3 space/metal2 space/metal2 4 \
            "Metal 2 spacing must be at least 4"
    
    Now Magic will "appear" to check euclidean distances on Metal2 spacing.
    
    For a spacing of 5, you need to check (3,4), (4,4), and (4,3).  For a
    spacing of 6, you need to check (4,5), (5,5), and (5,4).  In both cases
    the spacing rule becomes two edge rules, just like above.  But when you
    get to 7, you need to check (5,5) as well as (4,6), (5,6), (6,6), (6,5),
    and (6,4).  This makes the spacing rule break into three edge rules.
    
    So obviously this becomes quite painful for large spacings such as Nwell.
    It also gets complicated for different tile types, and contacts.
    
    
    I'm going to go back to being a blissful end-user now, because I'm
    certainly not volunteering to change Jeff's tech files!!! :-)
    
    Philippe
    


  •  
     
    Questions? Contact Rajit Manohar
    cornell logo