• 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 m0 layer info in a layout

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 14050
  • 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 m0 layer info in a layout

EJAZ27
EJAZ27 over 5 years ago

HI All,

I am new to skill. My requirement is

open layout 

get m0 layer cordinates in a layout

dump info into a text file

For example 2 input Nand, A,B output , vcc , vssx and internal net (n2) will be the m0 layers. I need info like in a text file.

n2 co ordinate

vssx (co ordinate)

a (co ordinate)

b (co ordinate ) .

I found similar code in cadence form . Can you help me on this

 procedure(printPts()
let(    (type
    (cnt 0)
    (objList geGetSelSet()))

foreach(obj objList
    ++cnt
    type = obj~>objType
    case(type
        ("inst"
            printf("%s %L at %L\n" type obj~>xy))
        ("rect"
            printf("%s on layer %L at %L\n" type obj~>lpp obj~>bBox))
        ("polygon"
            printf("%s on layer %L at %L\n" type obj~>lpp obj~>points))
        ("path"
            printf("%s on layer %L at %L\n" type obj~>lpp obj~>points))
        ("pathSeg"
            printf("%s on layer %L at %L\n" type obj~>lpp list(obj~>beginPt obj~>endPt)))
        ("label"
            printf("%s on layer %L at %L\n" type obj~>lpp obj~>xy))
        (t    printf("%s not defined\n" type))
    )
)
printf("%n objects selected\n" cnt)
); end of let
); end of printPts

  • Cancel
  • EJAZ27
    EJAZ27 over 5 years ago

    Hi All,

    I like to get the netname and coordintes of all Metal0 drawing present in the layout which is opened to be written in a text file as output

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

    First of all, was the layout created with Layout XL? If not, it probably won't have connectivity information, and so you're  unlikely to achieve your goal. If it was, you can find the net name by looking at obj~>net~>name (in code similar to that which you posted). Rather than operating on the selected objects, you could  do something like:

    cv=geGetEditCellView()
    M0drawing=car(exists(lpp cv~>lpps lpp~>layerName=="M0" && lpp~>purpose=="drawing"))
    foreach(obj M0drawing~>shapes
       ...
    )

    I don't know what you want in terms of "coordinate". For a path or a polygon do you want all the points? For a rectangle do you wan the bounding box?

    Your requirements are pretty vague... so I can't write code for you. So hopefully the above will get you started in at least roughly the right direction.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • EJAZ27
    EJAZ27 over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    What I mean by co ordinate is x,y centre of the polygon. Even xh and yh of Bbox is fine

    Layout is opened in the XL mode also

    Can I get the netname of shapes/polygon also

    Thanks in advance

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to EJAZ27

    Something like this:

    outFile=outfile("./report.txt")
    cv=geGetEditCellView()
    M0drawing=car(exists(lpp cv~>lpps lpp~>layerName=="m0" && lpp~>purpose=="drawing"))  ; make sure you have the right layer name here
    foreach(obj M0drawing~>shapes
      when(obj~>net
        fprintf(outFile "%s %L\n" obj~>net~>name centerBox(obj~>bBox))
      )
    )
    close(outFile)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • EJAZ27
    EJAZ27 over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks alot for the quick response. I will try it out

    Regards,

    Ejaz Mirzan

    • 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