dbGetTrueOverlaps

Discussion in 'Cadence' started by medha.kulkarni, Dec 29, 2006.

  1. Hi,
    I am trying to find overlapping shapes for all layer purpose pairs..
    The way I am working on it so far is:

    l_overlap = dbGetTrueOverlaps(cvID rectBox list(layer "drawing") 32)
    where cvID is the cellid
    rectBox is the bbox
    arguments in list() is my layer purpose pair - for example "m1"
    "drawing"
    and 32 is the depth I would like to search.

    My question is, how can I list more than one lpp in this command. I am
    looking to find shapes overlapping in "m1" "fill" layer.

    Any pointers will be appreciated!!
    Thanks,
    Medha
     
    medha.kulkarni, Dec 29, 2006
    #1
  2. medha.kulkarni

    gerry Guest

    Why not get all layers (i.e. pass nil to layers) and then filter out
    non-shapes.
    (Or build a test case with all known overlaps and test)

    My trick is to run a diva/assura command deck that gives me the output
    I want
    on a new (special) layer. The diva/assura deck will flatten all of the
    input for you.
    Note that this can be expensive (runtime!)
    I have also run other (external) DRC tools
    to create fill with much more success at the chip level.

    -- Gerry ( @ www.ictooling.com )

    Re:
     
    gerry, Dec 31, 2006
    #2
  3. medha.kulkarni

    gerry Guest

    Why not get all layers (i.e. pass nil to layers) and then filter out
    non-shapes.
    (Or build a test case with all known overlaps and test)

    My trick is to run a diva/assura command deck that gives me the output
    I want
    on a new (special) layer. The diva/assura deck will flatten all of the
    input for you.
    Note that this can be expensive (runtime!)
    I have also run other (external) DRC tools
    to create fill with much more success at the chip level.

    -- Gerry ( @ www.ictooling.com )

    Re:
     
    gerry, Dec 31, 2006
    #3
  4. medha.kulkarni

    Jimka Guest

    hi Medha, the 3rd argument to the dbGetOverlaps functions including
    dbGetTrueOverlaps
    is special apparently for historical reasons.

    If it is a list of two strings it represents a layer purpose pair.
    If it is a single string, represents the lpp of drawing purpose and the
    layer specified. If it is a list of a single string, it is interpreted
    to main
    the layer but any purpose. And either t or nil (i forget which one)
    means
    all layers all purposes.

    So you might do call something like the following but filter
    for the purposes you are wanting to find.

    (dbGetTrueOverlaps cvID rectBox list(layer) 32)


    E.g., if you have a helper function that gives the shape given an
    element
    of the returned list.

    (defun get_ovlp_shape (ovlp_obj)
    (cond ((atom ovlp_obj) ovlp_obj))
    ((cadr ovlp_obj) (get_ovlp_shape (cadr ovlp_obj)))
    (t (get_ovlp_shape (car ovlp_obj)))))

    ;; This function takes a layer name string and a list of purpose
    strings
    ;; as other required arguments for dbGetTrueOverlaps and returns only
    ;; the overlap objects on the layer and any of the specified purposes
    (defun get_true_overlap_objects (cv bbox layer purposes depth)
    (setof ovlp_obj (dbGetTrueOverlaps cv bbox (list layer) depth)
    (member (dbGet (get_ovlp_shape ovlp_obj) 'purpose)
    purposes)))


    E.g.,
    (get_true_overlap_objects cvId rectBox "m1" '("drawing" "fill"))

    will return overlap objects referencing m1 drawing and m1 fill.



    does this help?
    -jim
     
    Jimka, Jan 1, 2007
    #4
  5. medha.kulkarni

    Jimka Guest

    If you simply want to find the overlaps of two (or several) different
    layers (any purposes) you can use nconc.

    (nconc (dbGetTrueOverlaps cvID rectBox '("m1" "drawing") 32)
    (dbGetTrueOverlaps cvID rectBox '("fill" "drawing") 32))

    Maybe this is what you are looking for?
    --jim
     
    Jimka, Jan 1, 2007
    #5
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.