check visibility between 2 shapes

M

Marcel Preda

Guest
Hi all,

I want to check the visibility between two shapes (usually are
polygons) on a flatten layout.

What's the idea:
- I have 2 shapes (s1, s2)
- I have obstacles, let's suppose that they are all the shapes on
layerX
- I want to check if it's possible the draw at least one straight line
from s1 to s2, without intersecting shapes from layerX.

The line direction could be anynot, not only orthogonal.

Does exists such a function on Cadence ?


I have a solution: building smal traingle from a shape to the other
one and to do a LayerAndNot between those small triangles and LayerX
(obstacles), after that check the number of resulted shapes.
It works but is extremely slowly: it creates and deletes a lot of
shapes, it spends a lot of time at dbDeleteObject.
Is there some better approach ?


Best Regards,
Marcel
 
On Jun 26, 1:16 am, Marcel Preda <marcel.pr...@gmail.com> wrote:
Hi all,

I want to check the visibility between two shapes (usually are
polygons) on a flatten layout.

What's the idea:
- I have 2 shapes (s1, s2)
- I have obstacles, let's suppose that they are all the shapes on
layerX
- I want to check if it's possible the draw at least one straight line
from s1 to s2, without intersecting shapes from layerX.

The line direction could be anynot, not only orthogonal.

Does exists such a function on Cadence ?

I have a solution: building smal traingle from a shape to the other
one and to do a LayerAndNot between those small triangles  and  LayerX
(obstacles), after that check the number of resulted shapes.
It works but is extremely slowly: it creates and deletes a lot of
shapes, it spends a lot of time at dbDeleteObject.
Is there some better approach ?

Best Regards,
Marcel
Marcel,

If you have VXL Turbo you already have a set of tools that will do
so. Otherwise, it is a multiple step process with some fairly slow
dbOverlap type commands, For example take any point on one geometry
then compare that against all points on the other geometry to find the
Farest Point. Create a BBOX using those points and look inside to see
if any objects exists. Then you need to sort out what you need.

Chuck King
 
On Jul 1, 9:49 pm, Chuck King <shucka...@gmail.com> wrote:
On Jun 26, 1:16 am, Marcel Preda <marcel.pr...@gmail.com> wrote:



Hi all,

I want to check the visibility between two shapes (usually are
polygons) on a flatten layout.

What's the idea:
- I have 2 shapes (s1, s2)
- I have obstacles, let's suppose that they are all the shapes on
layerX
- I want to check if it's possible the draw at least one straight line
from s1 to s2, without intersecting shapes from layerX.

The line direction could be anynot, not only orthogonal.

Does exists such a function on Cadence ?

I have a solution: building smal traingle from a shape to the other
one and to do a LayerAndNot between those small triangles  and  LayerX
(obstacles), after that check the number of resulted shapes.
It works but is extremely slowly: it creates and deletes a lot of
shapes, it spends a lot of time at dbDeleteObject.
Is there some better approach ?

Best Regards,
Marcel

Marcel,

If you have VXL Turbo you already have a set of tools that will do
so.  Otherwise, it is a multiple step process with some fairly slow
dbOverlap type commands, For example take any point on one geometry
then compare that against all points on the other geometry to find the
Farest Point.  Create a BBOX using those points and look inside to see
if any objects exists.  Then you need to sort out what you need.

Chuck King
Hi Chuck,

Thanks for reply.

I do not have VXL Turbo.
At this moment I have a solution which is using dbProduceOverlap(),
and dbLayerAndNot().
Very similar with what you said.
Unfortunately it is extremely slow.

I'm thinking to implemet it in some other language (perl, or even C),
and using IPC every time I need to do such visibility check to pass
the the external process the parameters:
- shapes s1, s2 that have to be checked
- obstacles shapes (I need to pass a list with only the segments of
the polygons)
the external process will do the job and will respond with TRUE or
FALSE


BR,
Marcel


BR,
Marcel
 

Welcome to EDABoard.com

Sponsor

Back
Top