Path or stitched path selection

Guest
Hello,

Does anyone have a way to select all the metal and vias to a path that
is already drawn? Basically if a path is drawn in one design and
needs to be exactly the same in another, is there a way to select all
of the metal layers and wire for that path?

Thank you in advance for any and all help,
Eric
 
Hi,

Sorry but I'd like to slip in a question regarding this as well - if
anyone has the answer to the original question, could you tell how
virtuoso recognises the via & metal connectivity? Is it using the
'viaLayers()' in the skill techfile?

The only way I've managed to identify the nets of objects in a layout
is using something as below:
**********************************************************************************************
cv = hiGetCurrentWindow()~>cellView
NetNameList = cv~>shapes~>net~>name
;;; Any element of same net name in NetNameList is regarded as
connected,
;;; although this is just by assumption.
**********************************************************************************************
But the paths/rectangles/other shapes have to be named first during
creation.
The only way I have managed to link object connectivity is using
Assura and creating a generated layer, than using it as a mask.
This is cumbersome & problematic for anyone not having Assura (plus
the fact that Assura can only be invoked directly from shell but not
directly from SKILL code).

Thanks,
I-F AB
 
On Feb 23, 9:08 pm, I-F AB <cop0...@gmail.com> wrote:
Hi,

Sorry but I'd like to slip in a question regarding this as well - if
anyone has the answer to the original question, could you tell how
virtuoso recognises the via & metal connectivity? Is it using the
'viaLayers()' in the skill techfile?

The only way I've managed to identify the nets of objects in a layout
is using something as below:
***************************************************************************­*******************
cv = hiGetCurrentWindow()~>cellView
NetNameList = cv~>shapes~>net~>name
;;; Any element of same net name in NetNameList is regarded as
connected,
;;; although this is just by assumption.
***************************************************************************­*******************
But the paths/rectangles/other shapes have to be named first during
creation.
The only way I have managed to link object connectivity is using
Assura and creating a generated layer, than using it as a mask.
This is cumbersome & problematic for anyone not having Assura (plus
the fact that Assura can only be invoked directly from shell but not
directly from SKILL code).

Thanks,
I-F AB
I found the below in the Virtuoso XL functions documentation. I
couldn't get it to work, I got the a warning:
*WARNING* Allow floating net is not enabled. Can not copy wire to open
space.

Anybody have any input on how to get it to work?

Thank you in advance,
Eric



leWeHiCopyRoute

leWeHiCopyRoute(
[w_windowId]
)
=> t | nil

Description

Copies existing routes, including vias, to unrouted connections
that have similar lengths and topology.

Note: Displays warnings if the Copy Route command creates a
violation or if the target area is not a qualified
pin or via.

Arguments

w_windowId
Window ID of the current cellview.


Value Returned

t
Copies selected routes.
nil
w_windowID is invalid.


Example

leWeHiCopyRoute()
 
eric.d.fitzsimmons@gmail.com wrote, on 02/24/09 16:44:
On Feb 23, 9:08 pm, I-F AB <cop0...@gmail.com> wrote:
Hi,

Sorry but I'd like to slip in a question regarding this as well - if
anyone has the answer to the original question, could you tell how
virtuoso recognises the via & metal connectivity? Is it using the
'viaLayers()' in the skill techfile?

The only way I've managed to identify the nets of objects in a layout
is using something as below:
***************************************************************************­*******************
cv = hiGetCurrentWindow()~>cellView
NetNameList = cv~>shapes~>net~>name
;;; Any element of same net name in NetNameList is regarded as
connected,
;;; although this is just by assumption.
***************************************************************************­*******************
But the paths/rectangles/other shapes have to be named first during
creation.
The only way I have managed to link object connectivity is using
Assura and creating a generated layer, than using it as a mask.
This is cumbersome & problematic for anyone not having Assura (plus
the fact that Assura can only be invoked directly from shell but not
directly from SKILL code).

Thanks,
I-F AB

I found the below in the Virtuoso XL functions documentation. I
couldn't get it to work, I got the a warning:
*WARNING* Allow floating net is not enabled. Can not copy wire to open
space.

Anybody have any input on how to get it to work?

Thank you in advance,
Eric



leWeHiCopyRoute

leWeHiCopyRoute(
[w_windowId]
)
=> t | nil

Description

Copies existing routes, including vias, to unrouted connections
that have similar lengths and topology.

Note: Displays warnings if the Copy Route command creates a
violation or if the target area is not a qualified
pin or via.

Arguments

w_windowId
Window ID of the current cellview.


Value Returned

t
Copies selected routes.
nil
w_windowID is invalid.


Example

leWeHiCopyRoute()

Not answering your latest question, but for the first one, this SKILL probably
helps?

/* abSelectWholeNet.il

Author A.D.Beckett
Group Custom IC (UK), Cadence Design Systems Ltd.
Language SKILL
Date May 16, 2001
Modified
By

***************************************************

SCCS Info: @(#) abSelectWholeNet.il 05/16/01.08:43:49 1.1

*/

/***************************************************************
* *
* (abSelectWholeNet @optional (cellView (geGetEditCellView))) *
* *
* Select the whole of each net that is partially selected. *
* *
***************************************************************/

(procedure (abSelectWholeNet @optional (cellView (geGetEditCellView)))
(let (nets theNet)
(foreach shape (geGetSelSet cellView)
(setq theNet (dbGetq shape net))
(unless (member theNet nets) (setq nets (cons theNet nets)))
)
(foreach net nets
(foreach fig (dbGetq net figs)
(geSelectFig fig)
)
)
t
)
)

In IC61 you have the ability to easily select all shapes on the net (via the
"Routing Object Granularity" setting.

Regards,

Andrew.
 
On Feb 25, 9:56 am, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm>
wrote:
eric.d.fitzsimm...@gmail.com wrote, on 02/24/09 16:44:





On Feb 23, 9:08 pm, I-F AB <cop0...@gmail.com> wrote:
Hi,

Sorry but I'd like to slip in a question regarding this as well - if
anyone has the answer to the original question, could you tell how
virtuoso recognises the via & metal connectivity? Is it using the
'viaLayers()' in the skill techfile?

The only way I've managed to identify the nets of objects in a layout
is using something as below:
***************************************************************************­­*******************
cv = hiGetCurrentWindow()~>cellView
NetNameList = cv~>shapes~>net~>name
;;; Any element of same net name in NetNameList is regarded as
connected,
;;; although this is just by assumption.
***************************************************************************­­*******************
But the paths/rectangles/other shapes have to be named first during
creation.
The only way I have managed to link object connectivity is using
Assura and creating a generated layer, than using it as a mask.
This is cumbersome & problematic for anyone not having Assura (plus
the fact that Assura can only be invoked directly from shell but not
directly from SKILL code).

Thanks,
I-F AB

I found the below in the Virtuoso XL functions documentation.   I
couldn't get it to work, I got the a warning:
*WARNING* Allow floating net is not enabled. Can not copy wire to open
space.

Anybody have any input on how to get it to work?

Thank you in advance,
Eric

leWeHiCopyRoute

       leWeHiCopyRoute(
              [w_windowId]
              )
              => t | nil

       Description

       Copies existing routes, including vias, to unrouted connections
that have similar lengths and topology.

       Note:  Displays warnings if the Copy Route command creates a
violation or if the target area is not a qualified
       pin or via.

       Arguments

        w_windowId
                    Window ID of the current cellview.

       Value Returned

        t
             Copies selected routes.
        nil
             w_windowID is invalid.

           Example

       leWeHiCopyRoute()

Not answering your latest question, but for the first one, this SKILL probably
helps?

/* abSelectWholeNet.il

Author     A.D.Beckett
Group      Custom IC (UK), Cadence Design Systems Ltd.
Language   SKILL
Date       May 16, 2001
Modified
By

***************************************************

SCCS Info: @(#) abSelectWholeNet.il 05/16/01.08:43:49 1.1

*/

/***************************************************************
*                                                              *
* (abSelectWholeNet @optional (cellView (geGetEditCellView)))  *
*                                                              *
*   Select the whole of each net that is partially selected.   *
*                                                              *
***************************************************************/

(procedure (abSelectWholeNet @optional (cellView (geGetEditCellView)))
   (let (nets theNet)
        (foreach shape (geGetSelSet cellView)
                (setq theNet (dbGetq shape net))
                (unless (member theNet nets) (setq nets (cons theNet nets)))
                )
        (foreach net nets
                (foreach fig (dbGetq net figs)
                         (geSelectFig fig)
                         )
                )
        t
        )
   )

In IC61 you have the ability to easily select all shapes on the net (via the
"Routing Object Granularity" setting.

Regards,

Andrew.- Hide quoted text -

- Show quoted text -
Andrew,

That worked great for the wires, but didn't grab the vias. I am
using what I believe is called virtual vias, vias placed usually by
create contact, these are not being copied. Can this be remedied? Or
is this as good as it gets? :)

As always I am humbled and grateful for your help.

Thank you,
Eric

PS, our company is moving to IC61 end of year. As you may have
remembered I spent most of my career at Intel and my opinion is
Virtouso is far superior.
 
eric.d.fitzsimmons@gmail.com wrote, on 02/25/09 18:13:
Andrew,

That worked great for the wires, but didn't grab the vias. I am
using what I believe is called virtual vias, vias placed usually by
create contact, these are not being copied. Can this be remedied? Or
is this as good as it gets? :)

As always I am humbled and grateful for your help.

Thank you,
Eric

PS, our company is moving to IC61 end of year. As you may have
remembered I spent most of my career at Intel and my opinion is
Virtouso is far superior.
Eric,

I must have only written this for schematic, or hadn't tested it with layout (or
not tested it properly). Actually it would have been OK in IC61, because vias
are done differently in OpenAccess.

So I've updated the code, so that it will select the vias, and whilst I was at
it, it now also selects any pins on the net.

/* abSelectWholeNet.il

Author A.D.Beckett
Group Custom IC (UK), Cadence Design Systems Ltd.
Language SKILL
Date May 16, 2001
Modified Feb 26, 2009
By A.D.Beckett

Updated to work with layout in CDB, where vias are instances with instTerms
on the net; in OA vias are directly attached to the net.

***************************************************

SCCS Info: @(#) abSelectWholeNet.il 02/26/09.14:08:25 1.2

*/

/***************************************************************
* *
* (abSelectWholeNet @optional (cellView (geGetEditCellView))) *
* *
* Select the whole of each net that is partially selected. *
* *
***************************************************************/

(procedure (abSelectWholeNet @optional (cellView (geGetEditCellView)))
(let (nets theNet)
(foreach shape (geGetSelSet cellView)
(setq theNet (dbGetq shape net))
(unless (member theNet nets) (setq nets (cons theNet nets)))
)
(foreach net nets
;--------------------------------------------------------
; Find all the figures on the net
;--------------------------------------------------------
(foreach fig (dbGetq net figs)
(geSelectFig fig)
) ; foreach fig
;--------------------------------------------------------
; Find all the vias on the net - only do this in CDB
; when leIsContact function exists
;--------------------------------------------------------
(when (isCallable 'leIsContact)
(foreach inst (dbGetq (dbGetq net instTerms) inst)
(when (leIsContact inst)
(geSelectFig inst))
) ; foreach inst
) ; when
;--------------------------------------------------------
; Find all the pin figures on the net
;--------------------------------------------------------
(foreach pin (dbGetq net pins)
(foreach fig
(or
(dbGetq pin figs)
(list (dbGetq pin fig))
)
(geSelectFig fig)
) ; foreach fig
) ; foreach pin
) ; foreach net
t
) ; let
) ; procedure
 

Welcome to EDABoard.com

Sponsor

Back
Top