VXL-SKILL : How to find the schematic window from the layout window

Discussion in 'Cadence' started by Suresh Jeevanandam, Jun 2, 2005.

  1. Hi Andrew and all,
    Is it possible to get the window ID of the schematic if I know the
    layout(in VXL mode) window ID. And vice versa...

    Also, there are no PI skill functions for the VXL commands. Are they
    going to be in in future?

    Thanks in advance.

    regards,
    Suresh
     
    Suresh Jeevanandam, Jun 2, 2005
    #1
  2. As a starting point,

    Bernd


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;
    ;; Function : XIgetOpenWindows
    ;;
    ;; Author : Bernd Fischer
    ;;
    ;; Date : Fri, 23 January 2004
    ;;
    ;; Version : 1.0
    ;;
    ;; Global Variable(s) : None
    ;;
    ;; Synopsis : XIgetOpenWindows( )
    ;;
    ;; Description : Returns all open windows.
    ;;
    ;; Arguments : -
    ;;
    ;; Return Value : l_wId/nil
    ;;
    ;; Modification : -
    ;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    procedure( XIgetOpenWindows( )

    setof(
    element
    foreach(
    mapcar
    w_wId
    hiGetWindowList( )
    w_wId
    )
    element != hiGetCIWindow( )
    ) ;; close setof

    ) ;; close BFgetOpenWindows

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;
    ;; Function : XIgetSchematicWindows
    ;;
    ;; Author : Bernd Fischer
    ;;
    ;; Date : Fri, 23 January 2004
    ;;
    ;; Version : 1.0
    ;;
    ;; Global Variable(s) : None
    ;;
    ;; Synopsis : XIgetSchematicWindows( )
    ;;
    ;; Description : Returns all open windows which cell view type is
    ;; schematic.
    ;;
    ;; Arguments : -
    ;;
    ;; Return Value : l_wId/nil
    ;;
    ;; Modification : -
    ;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    procedure( XIgetSchematicWindows( )

    setof(
    wId
    XIgetOpenWindows( )
    geGetWindowCellView( wId )~>cellViewType == "schematic"
    ) ;; close setof

    ) ;; close XIgetSchematicWindows

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;
    ;; Function : XIgetCorrespondingLayoutWindow
    ;;
    ;; Author : Bernd Fischer
    ;;
    ;; Date : Fri, 23 January 2004
    ;;
    ;; Version : 1.0
    ;;
    ;; Global Variable(s) : None
    ;;
    ;; Synopsis : XIgetCorrespondingLayoutWindow( w_schWiId )
    ;;
    ;; Description : Returns the corresponding layout window Id of the given
    ;; schematic window Id.
    ;;
    ;; Arguments : w_schWiId Current schematic window Id.
    ;;
    ;; Return Value : w_wId/nil
    ;;
    ;; Modification : -
    ;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    procedure( XIgetCorrespondingLayoutWindow( schWiId )
    let( ( t_libName t_cellName l_layoutWindows )

    t_libName = schWiId~>cellView~>libName
    t_cellName = schWiId~>cellView~>cellName

    l_layoutWindows = XIgetLayoutWindows( )

    car(
    setof(
    w_layWiId
    l_layoutWindows
    geGetWindowCellView( w_layWiId )~>libName == t_libName
    &&
    geGetWindowCellView( w_layWiId )~>cellName == t_cellName
    ) ;; close setof
    ) ;; close car

    ) ;; close let

    ) ;; close XIgetCorrespondingLayoutWindow
     
    Bernd Fischer, Jun 2, 2005
    #2
  3. Sorry I missed one function,

    Bernd

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;
    ;; Function : XIgetMaskLayoutWindows
    ;;
    ;; Author : Bernd Fischer
    ;;
    ;; Date : Fri, 23 January 2004
    ;;
    ;; Version : 1.0
    ;;
    ;; Global Variable(s) : None
    ;;
    ;; Synopsis : XIgetLayoutWindows( )
    ;;
    ;; Description : Returns all open windows which cell view type is
    ;; maskLayout.
    ;;
    ;; Arguments : -
    ;;
    ;; Return Value : l_wId/nil
    ;;
    ;; Modification : -
    ;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    procedure( XIgetLayoutWindows( )

    setof(
    wId
    XIgetOpenWindows( )
    geGetWindowCellView( wId )~>cellViewType == "maskLayout"
    ) ;; close setof

    ) ;; close XIgetMaskLayoutWindows
     
    Bernd Fischer, Jun 2, 2005
    #3
  4. Suresh Jeevanandam

    John Gianni Guest

    Excellent.

    I passed your code through a quick one-minute Virtuoso SKILL inventory:
    CIW: Tools -> SKILL Development -> SKILL Surveyor
    which revealed the following excellent results within seconds:
    - 13 Cadence public functions employed (see list below)
    - None were/are deleted in the prior/upcoming releases:
    434,440,441,442,443,445,446,500,500MSR3,
    50032,50033,IC5033USR1,IC5033USR2,IC50USR3,
    IC5141, IC5141USR1, IC5141USR2, IC5251,
    ICOA5033, ICOA5033USR1, ICOA5033USR2, ICOA5033USR3,
    ICOA5141, ICOA5141USR1, ICOA5141USR2, ICOA5251
    - None were/are changed in prior/upcoming releases above
    - 0 private functions were found (good, this is safe code)
    - 0 re-defined functions found (typically this is also good)
    - 4 user-defined functions were found
    - All user-defined funcdtions start with a capital-letter prefix
    XIgetLayoutWindows() --> called once in the listed code
    XIgetCorrespondingLayoutWindow() --> not called in the code
    XIgetSchematicWindows() --> not called in the code itself
    XIgetOpenWindows() --> called twice in the listed code
    - An inventory of Cadence functions called (& how many times) is:
    and 1
    car 1
    equal 4
    foreach 1
    geGetWindowCellView 4
    getSGq 8
    hiGetCIWindow 1
    hiGetWindowList 1
    let 1
    nequal 1
    procedure 4
    setof 4
    setq 3

    Good work!
    This would seem to be, syntactically, a nice example for SKILL coders!

    John Gianni
     
    John Gianni, Jun 2, 2005
    #4
  5. Suresh Jeevanandam

    John Gianni Guest

    Actually, to be perfectly precise, the SKILL Survey revealed ONE of the
    Cadence public functions Bernd depended upon DID change but that change
    was very minor.

    Here is the one "change" that was reported by the 1-minute survey:
    rel434(getSGq:g_general:s_symbol:"gs")
    rel441(getSGq:g_general:S_stringSymbol:"gS")

    Basically, between DFII 434 and 441, there was a very minor tweak to
    the definition of getSGq (which should not affect the operation of the
    code).

    The good news is that Bernd's code should theoretically work in any
    release from 434 to ICOA5251 in so much as all the functions exist
    syntactically unchanged.
     
    John Gianni, Jun 2, 2005
    #5
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.