dbGetTrueOverlaps

Guest
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
 
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:
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)

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.
 
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:
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)

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.
 
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



medha.kulkarni@gmail.com wrote:
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
 
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


medha.kulkarni@gmail.com wrote:
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
 

Welcome to EDABoard.com

Sponsor

Back
Top