skill to check and/or set VXL connectivity reference

Discussion in 'Cadence' started by danmc, Mar 15, 2007.

  1. danmc

    danmc Guest

    Hello,

    I recently used the library manager copy wizard to copy a design
    hierarchy to a new set of cell names. Then I made a handful of
    schematic changes. Now I want a layout person to update the layouts.
    I noticed though that we have to manually go through and update the
    connectivity source in VXL since it was still pointing to the original
    schematic, not the new one.

    So, is there skill code that can check and/or set the connectivity
    source? I'd like to run a scan over my library and find the layout
    cells that have the wrong value.

    Thanks
    -Dan
     
    danmc, Mar 15, 2007
    #1
  2. danmc

    Tim Guest

    I found the following on Sourcelink a while ago.

    Tim

    Cadence Customer Support Solution


    Error message:


    Problem statement: I copied data from one project into another
    project with both projects containing
    numerous libraries. From library manager I can go to a cell in a
    copied library
    that contains both schematic and layout views.

    1. I open the layout.
    2. From the layout, tools menu I select Layout XL. VXL then opens the
    schematic from
    the original library.

    Problem 1: I would expect it to open the schematic of current library/
    cell. Why does it
    open the schematic from the original library?
    I can run Connectivity -> Update -> Source and reference the schematic
    from the
    copied library and this fixes the problem. However, there are
    hundreds of cells in
    this library and all of them have this issue.

    Problem 2: Is there a way to update the connectivity source for all
    the layouts of the
    library, so that it points to current library schematic and not the
    old library
    schematic?



    Solution: Answer 1: The Library Manager copy could not update
    connectivity source for the
    layout. This is the reason why layout is still pointing to the old
    library
    schematic. PCR 759731 has been filed to address this issue but it has
    not been
    fixed yet.

    Answer 2: Yes, all the layout cells can be updated to point to current
    library schematic
    cells. Please use the below SKILL code for that.

    ;--------------------x Copy from here x------------------
    /
    *************************************************************************
    * DISCLAIMER: The following code is provided for Cadence
    customers *
    * to use at their own risk. The code may require modification
    to *
    * satisfy the requirements of any user. The code and any
    modifications *
    * to the code may not be compatible with current or future versions
    of *
    * Cadence products. THE CODE IS PROVIDED "AS IS" AND WITH NO
    WARRANTIES, *
    * INCLUDING WITHOUT LIMITATION ANY EXPRESS WARRANTIES OR
    IMPLIED *
    * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
    USE. *
    *************************************************************************/
    procedure(CCSupdate_source(lib_name)
    let((libName)
    libName=ddGetObj(lib_name)
    foreach(cellName libName~>cells
    if(exists(x cellName~>views~>name
    (x=="schematic")) &&
    exists(x cellName
    ~>views~>name (x=="layout"))
    then
    lxSetConnRef(lib_name cellName~>name "layout"
    "CELLVIEW" ?schLib
    lib_name ?schCell cellName~>name ?schView "schematic")
    ) ;if
    ) ;foreach
    ) ;let
    ) ;proc
    ;--------------------x Copy till here x------------------

    Copy the above code in file "skill.il". Load the code by typing
    following in CIW:
    load "skill.il"

    It will define function CCSupdate_source(). The only argument it
    expects is the
    library name.
    To run, type following in CIW:
    CCSupdate_source("my_new_lib")

    Where "my_new_lib" is the library name in which all layouts need to
    point to respective
    schematic of the same library.

    Note: The above SKILL code passes SKILL LINT with a score of 100 and
    it does not use any
    private function.
     
    Tim, Mar 15, 2007
    #2
  3. danmc

    danmc Guest

    Thanks! Anyone know if there is a function that lets you see what the
    current connectivity reference is? That way I can do a sanity check
    "dry-run" where I identify which cells need updating.

    Thanks
    -Dan
     
    danmc, Mar 15, 2007
    #3
  4. In addition to lxSetConnRef() to set the connectivity reference, you can use
    lxGetLXInfo() to retrieve the source cellView (see the docs for more info).

    Here's a segment of code I used to do this:

    (setq cv (geGetEditCellView (getq args window)))
    ;-----------------------------------------------------------------
    ; If VXL initialized, can get the src cellView directly via
    ; the lxGetLXInfo API
    ;-----------------------------------------------------------------
    (if (setq src (lxGetLXInfo "srcView" cv))
    (progn
    (setq srcChanged (dbGetq src instancesLastChanged))
    (setq lib (dbGetq src libName))
    (setq cell (dbGetq src cellName))
    (setq view (dbGetq src viewName))
    )
    ;-------------------------------------------------------------
    ; otherwise look at the properties to find the source
    ; cellview
    ;-------------------------------------------------------------
    (progn
    (setq hierProp
    (dbGetq (dbGetq cv lxInternal) source))
    (when hierProp
    (setq lib (dbGetq hierProp lib))
    (setq cell (dbGetq hierProp cell))
    (setq view (dbGetq hierProp view))
    (when (and lib cell view)
    (setq src (dbOpenCellViewByType lib cell view)))
    (setq srcChanged (dbGetq src instancesLastChanged))
    (dbClose src)
    )
    ) ; progn
    ) ; if

    Regards,

    Andrew.
     
    Andrew Beckett, Mar 20, 2007
    #4
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.