• 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. Hierarchically Layer generation

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 144
  • Views 17030
  • 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

Hierarchically Layer generation

stalapatra
stalapatra over 9 years ago

Hi,

I am using the script CCShierLayerOpsSel.il for Layer generation, and it is working absolutely fine, to get the data hierarchically and generate layer.

But it is generating the new layers only at the top level. Is it possible to generate the layers in different hierarchy level, wherever it will match the condition?

That way if it is the case of adding lvt, hvt etc layers, mainly the device specific layers, that can resolve the hierarchical LVS issues also.

Please provide the solutions for the same.

Thank you for the support.

Regards,

Subhabrata 

  • Cancel
Parents
  • stalapatra
    stalapatra over 9 years ago
    Hi Quek,

    Yes, the query was related to the previous script so I placed it there.

    With the new part, I wanted to read the hierarchy first and place the generated layers in there individual hierarchies, in place of adding the generated layers at the top level.

    I was looking for the suggestions with reference to the CCShierLayerOps procedure call. Here is the sample that I was trying to use:

    Looks like some variable calling is having the issue. Is it possible to cross check and provide the suggestions?

    procedure(CreateLayerHier(libName viewName inputLay1 inputLay2 outLayer opt size level @optional listOfCells)

    let((cv libId cellId cellList)

    libId = ddGetObj(libName)
    if(!listOfCells then
    cellList = libId~>cells
    else
    cellList = nil
    foreach(cellName listOfCells
    cellId = ddGetObj(libName cellName)
    cellList = append(list(cellId) cellList)
    );end foreach
    );end if

    foreach(cell cellList
    foreach(view cell~>views
    ;; using views matching viewName variable.
    if(view~>name == viewName && (cv = dbOpenCellViewByType(libName cell->name
    view~>name "" "a")) then
    printf("\nOpened view %L from cell %L of library %L for edit.\n"
    cv~>viewName cv~>cellName cv~>libName)

    foreach(shape cv~>shapes
    if((shape~>objType!="textDisplay" && shape~>objType!="inst" && shape~>objType!="path") then
    printf("\n Creating the layer %L. " outLayer )

    CCShierLayerOps(?cv geGetEditCellView() "inputLay1" "inputLay2" "outLayer" "opt" "size" "level")

    );end if
    );end foreach

    dbSave(cv)
    dbClose(cv)
    );end if
    );end foreach view
    );end foreach cell

    Thank you for the support.

    Regards,
    Subhabrata
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • stalapatra
    stalapatra over 9 years ago
    Hi Quek,

    Yes, the query was related to the previous script so I placed it there.

    With the new part, I wanted to read the hierarchy first and place the generated layers in there individual hierarchies, in place of adding the generated layers at the top level.

    I was looking for the suggestions with reference to the CCShierLayerOps procedure call. Here is the sample that I was trying to use:

    Looks like some variable calling is having the issue. Is it possible to cross check and provide the suggestions?

    procedure(CreateLayerHier(libName viewName inputLay1 inputLay2 outLayer opt size level @optional listOfCells)

    let((cv libId cellId cellList)

    libId = ddGetObj(libName)
    if(!listOfCells then
    cellList = libId~>cells
    else
    cellList = nil
    foreach(cellName listOfCells
    cellId = ddGetObj(libName cellName)
    cellList = append(list(cellId) cellList)
    );end foreach
    );end if

    foreach(cell cellList
    foreach(view cell~>views
    ;; using views matching viewName variable.
    if(view~>name == viewName && (cv = dbOpenCellViewByType(libName cell->name
    view~>name "" "a")) then
    printf("\nOpened view %L from cell %L of library %L for edit.\n"
    cv~>viewName cv~>cellName cv~>libName)

    foreach(shape cv~>shapes
    if((shape~>objType!="textDisplay" && shape~>objType!="inst" && shape~>objType!="path") then
    printf("\n Creating the layer %L. " outLayer )

    CCShierLayerOps(?cv geGetEditCellView() "inputLay1" "inputLay2" "outLayer" "opt" "size" "level")

    );end if
    );end foreach

    dbSave(cv)
    dbClose(cv)
    );end if
    );end foreach view
    );end foreach cell

    Thank you for the support.

    Regards,
    Subhabrata
    • 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