• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Trace hierarchy of cell (schematic view) without open

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 144
  • Views 18192
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Trace hierarchy of cell (schematic view) without open

tyanata
tyanata over 12 years ago

 Hello,

Do you know if it is possible to do following to list all sub-cells ( noy only first level of hierarchy but all levels ) of certain cell without opening it.

 

What is our use case, we want to check if all cells in certain hierarchy are with their last versions.

So let's say I go in Library Manager to the top schematics and select it and then run some procedure to list of subcells of the top schematic.

 

Then we will check one by one each item (cell) of that list if it is managed, and if yes then check if it is last version.

 

Thanks in advance for all posible ideas!

 

tyanata

 

 

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 12 years ago

     I'll post a couple of bits of code which might be useful:

    /* abLibraryRefs.il
    
    Author     A.D.Beckett
    Group      Structured Custom, Cadence Design Systems Ltd.
    Machine    SUN
    Date       Aug 16, 1996 
    Modified   Sep 05, 2013 
    By         A.D.Beckett
    
    Get a list of cells, the views, and cells instantated
    
    Main entry point is abLibraryRefs(libName)
    
    Updated Sept 2013 since previous code was for 4.3.4!
    
    ***************************************************
    
    SCCS Info: @(#) abLibraryRefs.il 03/11/22.16:37:26 1.3
    
    */
    
    
    /***************************************************************
    *                                                              *
    *          (abGetCellViewRefs lib cellName viewName)           *
    *                                                              *
    *     Get a list of all the libName/cellName pairs used in     *
    *                         a cellView.                          *
    *                                                              *
    ***************************************************************/
    
    (procedure (abGetCellViewRefs lib cellName viewName)
      (let (cellView refList libCell)
           (when (setq cellView (dbOpenCellView lib cellName viewName))
                 /* use instances rather than instanceMasters because it
                 will then work if the library/cell for the instance can't be
                 opened */
                 (foreach instance (dbGetq cellView instances)
                          (setq libCell
                                (list (dbGetq instance libName) 
                                      (dbGetq instance cellName)))
                          (unless (member libCell refList)
                                  (setq refList (cons libCell refList)))
                          )
                 /* sorting is to make the result prettier! */
                 (setq refList (sortcar refList 'alphalessp))
                 (dbClose cellView))
           refList))
    
    /**********************************************************************
    *                                                                     *
    *                       (abLibraryRefs libName)                       *
    *                                                                     *
    *      Return a list of lists, with the name of the cell at the       *
    *  head of each sublist, and the second item being a list of views.   *
    *  Each view list contains the name of the view, followed by a list   *
    * of library name/cell name pairs for instances within that cellView. *
    *                                                                     *
    **********************************************************************/
    
    (procedure (abLibraryRefs libName)
      (let (lib refList)
           (setq lib (ddGetObj libName))
           (if lib
             (setq refList
                   /* loop through all the cells */
                   (foreach mapcar cell (getq lib cells)
                            (cons (getq cell name)
                                  /* sort the views to make them look better */
                                  (sortcar
                                    /* loop through all the views */
                                    (foreach mapcar cellview (getq cell views)
                                             (cons (dbGetq cellview name)
                                                   /* get the list of references inside the cellView */
                                                   (abGetCellViewRefs
                                                     lib
                                                     (dbGetq cell name)
                                                     (dbGetq cellview name))))
                                             'alphalessp)))
                   )
               /* else give a message */
               (error "Could not open library %s" libName))
           refList
           ))
    
    
    /***************************************************************
    *                                                              *
    *                  (abLibrariesUsed refList)                   *
    *                                                              *
    *      Take the reference list returned by the above, and      *
    *               return a list of libraries used                *
    *                                                              *
    ***************************************************************/
    
    (procedure (abLibrariesUsed refList)
      (let (libsUsed)
           (foreach cell refList
                    (foreach view (cdr cell)
                             (foreach reference (cdr view)
                                      (unless (member (car reference) libsUsed)
                                              (setq libsUsed (cons (car reference)
                                                                   libsUsed))
                                              ))))
           libsUsed))
    
    

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 12 years ago

     I'll post a couple of bits of code which might be useful:

    /* abLibraryRefs.il
    
    Author     A.D.Beckett
    Group      Structured Custom, Cadence Design Systems Ltd.
    Machine    SUN
    Date       Aug 16, 1996 
    Modified   Sep 05, 2013 
    By         A.D.Beckett
    
    Get a list of cells, the views, and cells instantated
    
    Main entry point is abLibraryRefs(libName)
    
    Updated Sept 2013 since previous code was for 4.3.4!
    
    ***************************************************
    
    SCCS Info: @(#) abLibraryRefs.il 03/11/22.16:37:26 1.3
    
    */
    
    
    /***************************************************************
    *                                                              *
    *          (abGetCellViewRefs lib cellName viewName)           *
    *                                                              *
    *     Get a list of all the libName/cellName pairs used in     *
    *                         a cellView.                          *
    *                                                              *
    ***************************************************************/
    
    (procedure (abGetCellViewRefs lib cellName viewName)
      (let (cellView refList libCell)
           (when (setq cellView (dbOpenCellView lib cellName viewName))
                 /* use instances rather than instanceMasters because it
                 will then work if the library/cell for the instance can't be
                 opened */
                 (foreach instance (dbGetq cellView instances)
                          (setq libCell
                                (list (dbGetq instance libName) 
                                      (dbGetq instance cellName)))
                          (unless (member libCell refList)
                                  (setq refList (cons libCell refList)))
                          )
                 /* sorting is to make the result prettier! */
                 (setq refList (sortcar refList 'alphalessp))
                 (dbClose cellView))
           refList))
    
    /**********************************************************************
    *                                                                     *
    *                       (abLibraryRefs libName)                       *
    *                                                                     *
    *      Return a list of lists, with the name of the cell at the       *
    *  head of each sublist, and the second item being a list of views.   *
    *  Each view list contains the name of the view, followed by a list   *
    * of library name/cell name pairs for instances within that cellView. *
    *                                                                     *
    **********************************************************************/
    
    (procedure (abLibraryRefs libName)
      (let (lib refList)
           (setq lib (ddGetObj libName))
           (if lib
             (setq refList
                   /* loop through all the cells */
                   (foreach mapcar cell (getq lib cells)
                            (cons (getq cell name)
                                  /* sort the views to make them look better */
                                  (sortcar
                                    /* loop through all the views */
                                    (foreach mapcar cellview (getq cell views)
                                             (cons (dbGetq cellview name)
                                                   /* get the list of references inside the cellView */
                                                   (abGetCellViewRefs
                                                     lib
                                                     (dbGetq cell name)
                                                     (dbGetq cellview name))))
                                             'alphalessp)))
                   )
               /* else give a message */
               (error "Could not open library %s" libName))
           refList
           ))
    
    
    /***************************************************************
    *                                                              *
    *                  (abLibrariesUsed refList)                   *
    *                                                              *
    *      Take the reference list returned by the above, and      *
    *               return a list of libraries used                *
    *                                                              *
    ***************************************************************/
    
    (procedure (abLibrariesUsed refList)
      (let (libsUsed)
           (foreach cell refList
                    (foreach view (cdr cell)
                             (foreach reference (cdr view)
                                      (unless (member (car reference) libsUsed)
                                              (setq libsUsed (cons (car reference)
                                                                   libsUsed))
                                              ))))
           libsUsed))
    
    

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information