• 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 25
  • Subscribers 146
  • Views 22739
  • 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

gparasiliti
gparasiliti over 14 years ago

Hi,

I need to generate a layer starting from other layers placed hierarchicaly in my layout, I used "layer generation" from layout menu but it works only in the cellview, I tried using skill commands but I don't know how I can get all layers from the instances placed in my cellview, off course my layout has many pcell placed.

Grazie,

Giuseppe

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

    With the following data I am getting some issues. For all the cases the outLayer is having some issue, and not accepting the user input.

    Can you please suggest the correct way to use the function?

    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("pp" "drawing") ?outLayer list("vtl_n" "drawing") ?op "GROW BY" ?size 1 ?level 1)

    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("pp" "drawing") ?layer2 list("nw" "drawing") ?outLayer list("vtl_n" "drawing") ?op "AND" ?size nil ?level 1)
    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("pp" "drawing") ?layer2 list("nw" "drawing") ?outLayer list("metal2" "drawing") ?op "AND" ?size nil ?level 1)
    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("via1" "drawing") ?layer2 list("metal1" "drawing") ?outLayer list("metal2" "drawing") ?op "AND" ?size nil ?level 1)


    Error Messages::

    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("pp" "drawing") ?outLayer list("vtl_n" "drawing") ?op "GROW BY" ?size 1 ?level 1)
    *WARNING* (TECH-2000192): dbLayerSize: Invalid layer/purpose - ("vtl_n" "drawing").
    nil

    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("pp" "drawing") ?layer2 list("nw" "drawing") ?outLayer list("vtl_n" "drawing") ?op "AND" ?size nil ?level 1)
    *WARNING* (TECH-2000192): dbLayerAnd: Invalid layer/purpose - ("vtl_n" "drawing").
    nil
    >
    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("pp" "drawing") ?layer2 list("nw" "drawing") ?outLayer list("metal2" "drawing") ?op "AND" ?size nil ?level 1)
    *WARNING* (TECH-2000192): dbLayerAnd: Invalid layer/purpose - ("metal2" "drawing").
    nil

    CCShierLayerOps(?cv geGetEditCellView() ?layer1 list("via1" "drawing") ?layer2 list("metal1" "drawing") ?outLayer list("metal2" "drawing") ?op "AND" ?size nil ?level 1)
    *WARNING* (TECH-2000192): dbLayerAnd: Invalid layer/purpose - ("metal2" "drawing").
    nil

    Thanks,
    Subhabrata
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 9 years ago

    Hi Subhabrata,

    Are you sure that you are using the correct name for the layers?  The layer names are case sensitive, e.g. is it "Metal2" instead of "metal2" ?  You can verify the names in SKILL if you aren't too sure, something like:

    
    tf = techGetTechFile(geGetEditCellView())
    setof(lp tf~>lps lp~>purpose=="drawing")~>name
    => (... "M1" "VIA1" "M2" "VIA2" "M3" "VIA3" "M4" ...)
    

    Hopefully this helps you?

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Quek
    Quek over 9 years ago

    Hi Subhabrata

    You might want to continue the discussion in this new thread which you had created and not in this old thread.


    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • stalapatra
    stalapatra over 9 years ago
    Thanks, Lawrence. That worked.

    To utilize the same function I was even looking for the queries following the thread community.cadence.com/.../1348118.

    Where 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:

    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
  • stalapatra
    stalapatra over 9 years ago
    HI,

    I am waiting for the reply of my previous mail.

    As well I want to check, how I can block the generation of the layer, if the ouLayer is already placed based on the reference layer.

    Please let me know.

    Thanks for your support.

    Regards,
    Subhabrata
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
<

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