• 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. How to get " the rotation & coordinate to the top " of the...

Stats

  • Locked Locked
  • Replies 14
  • Subscribers 143
  • Views 6351
  • 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

How to get " the rotation & coordinate to the top " of the cellname in a large layout design ?

Charley Chen
Charley Chen over 9 years ago

Dear All,

I want to get  " the  rotation & coordinate to the top " of the cellname in a large layout design , but how to do it ?

The cellname maybe has more than one  and the layout design is very large .

Thank you,

Charley

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Charley,

    Is this the sort of thing that you want?

    procedure(CCFfindInstLocation(cvId @key libName cellName viewName 
        found (transform list(0:0 "R0" 1)))
      foreach(inst cvId~>instances
        if((!libName || libName==inst~>libName) &&
          (!cellName || cellName==inst~>cellName) &&
          (!viewName || viewName==inst~>viewName) then
          found=cons(list(dbTransformPoint(inst~>xy transform) 
            cadr(dbConcatTransform(inst~>transform transform))) found)
        else
          found=CCFfindInstLocation(inst~>master ?libName libName 
            ?cellName cellName ?viewName viewName ?found found 
            ?transform dbConcatTransform(inst~>transform transform))
        )
      )
      found
    )

    Then you can just call:

    CCFfindInstLocation(geGetEditCellView() ?cellName "adc_sample_hold")

    and it returns a list of top level coordinates and overall orientations (one per "flattened" instance):

    (((1559.77 15.4) "R90")
    ((1786.765 130.68) "R90")
    )

    Note there is no attempt to deal with mosaics in this code - I was just keeping it simple.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 9 years ago
    Andrew,

    Yes, It's what i want.
    If you can help to do deal with mosaic (w/i CDBA/OA) , it will be better .

    Thank you,
    Charley
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 9 years ago
    Andraw ,

    If a gdsii file has 3 library after Import - Stream (e.g. Lib1 、Lib2 & Lib3 ) , i use the code to find , it will get wrong info.
    e.g. I open "top cell" in "Lib2" , thought it has return the data , but it will show Lib3....
    How to fix it ?

    Thank you very much.
    Charley
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 9 years ago
    Andrew ,

    I am so sorry to type in your name wrong . It's a typo.
    Please feel never mind it.
    Charley
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Charley,

    Don't worry about the typo. However, I have no idea what you mean by:

    Charley Chen said:
    If a gdsii file has 3 library after Import - Stream (e.g. Lib1 、Lib2 & Lib3 ) , i use the code to find , it will get wrong info.
    e.g. I open "top cell" in "Lib2" , thought it has return the data , but it will show Lib3....
    How to fix it ?

    Please explain more clearly. I don't know what "wrong info" you are getting.

    As for updating the code to handle mosaics - I might be able to do that, but unlikely for a couple of days (because of work commitments - especially if you want it to work in CDB too, as mosaics behave differently in CDB and OA).

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 9 years ago

    Andrew,

    I use the image to explain it.

    Thank you,

    Charley

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Charley,

    What is that picture showing? I have no idea what the problem is  you're trying to describe. You say that the code gives the wrong output - what is the input, what's the output, and why is it wrong?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 9 years ago
    Andrew,

    The coordinate of the targetCellName is for Lib C (which means when you open the targetCellName of Lib C) ,
    But I want the coordinate is belong to Lib A/Top Cell .

    Charley
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Charley,

    I still don't understand. If I open libA/TopCell and then do:

    CCFfindInstLocation(geGetEditCellView() ?cellName "targetCellName")

    then I get the coordinates/orientation of the instances of targetCellName relative to libA/TopCell. I just tested this (again). I don't know what you mean by "The coordinate of the targetCellName is for Lib C" - if that was the case, it would be 0:0 "R0" (if I've understood you correctly). So I really just don't understand what you are talking about.

    Could you (maybe) prepare a small database (with layouts that only use the "text/drawing" layer purpose pair) to illustrate what you mean and then post it here? Then provide the exact SKILL call you are making and what is wrong with the results?

    There may be something wrong - I just don't understand what you're saying.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 9 years ago

    Andrew,

    .

    .

    found=cons(list(dbTransformPoint(inst~>xy transform)

    cadr(dbConcatTransform(inst~>transform transform))) found )

     

    I modified as below :

    found=cons(list(inst~>libName dbTransformPoint(inst~>xy transform)

    cadr(dbConcatTransform(inst~>transform transform))) found )

    Is that correct ?

    Thank you,

    Charley

    • 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