DRC Overlap rule help

edited April 2015 in General
I attach a little sample image to help clarify my question.

http://i59.tinypic.com/4v33au.jpg

I have two layers in this example, blue is NPlus and gray hash is SiContact. NPlus must overlap SiContact by at least 0.1 microns. In the image, we can see that it does on two sides (the vertical edges), but not on the lateral edges. However, this is very common in structures and should be allowed (example: terminations and tapers). I have the following rule:

# SiNplusImplant.O.100
layerSiNplusImplant.inside(layerSiContact).or( layerSiContact.inside(layerSiNplusImplant).and( layerSiContact.not_inside(layerSiNplusImplant.sized(-0.1.micron)) ) ).output("SiNplusImplant.O.100", "N+ implant must overlap Si contact by a minimum of 100 nm")

This rule works well for most of my structure, except in situations like the example, because the lateral edges do not pass that test.

How can I edit my rule to allow for these special cases?

Thanks again for the assistance.

Comments

  • edited November -1

    Hi,

    I don't know how the check is defined precisely, but here is some suggestion:

    # a inside b by 100nm except where a edges are coincident with b edges
    
    ae = a.edges
    be = b.edges
    
    # check:
    # first part: all a outside b
    # second part: all a edges not coincident with b edges must be within 100nm of b
    err = (a - b) | ((ae - be).extended(:out => 0.1.um, :joined => true) - b)
    

    The error markers produced by this check are somewhat strange, but they will mark the places somehow. The idea is to only consider edges not coincident. These edges are extended and all parts of the extension not inside the b layer (NPlus in your case) is considered an error.

    Matthias

Sign In or Register to comment.