Path or stitched path selection

Discussion in 'Cadence' started by eric.d.fitzsimmons, Feb 23, 2009.

  1. 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
     
    eric.d.fitzsimmons, Feb 23, 2009
    #1
  2. eric.d.fitzsimmons

    I-F AB Guest

    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-F AB, Feb 24, 2009
    #2
  3. 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, Feb 24, 2009
    #3

  4. 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.
     
    Andrew Beckett, Feb 25, 2009
    #4
  5. 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, Feb 25, 2009
    #5
  6. 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
     
    Andrew Beckett, Feb 26, 2009
    #6
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.