• 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 point of layer that i want in window cell vi...

Stats

  • Replies 5
  • Subscribers 148
  • Views 697
  • Members are here 0

how to get point of layer that i want in window cell view

Noobnoob
Noobnoob 1 month ago

Hello, i am sorry for my English skill.

i am noob for cadence skill language.

As the title says, in window cell view, i want to know point(coordinate) of layer i want

i made a cell named "DECAP" and i placed "DECAP" as mosaic ...

Poly layers is in different hierarchy.

in order to find out all point of Poly layers, i made a script by using skill language...

Script :

wcv = geGetWindowCellView()
overlaps = dbGetTrueOverlaps(wcv wcv~>bBox list("POLY" "drawing") 32 t)

transform = nil
temp = nil
label = nil

foreach(overlap overlaps
transform = append( transform list(dbGetInstTransform(overlap)) )
);foreach
foreach(i transform
temp = append( temp list(nthelem(1 i)) )
);foreach

Result :

((4.2 4.2) "R0" 1.0)
((4.2 4.2) "R0" 1.0)
((4.2 4.2) "R0" 1.0)
((12.2 4.2) "R0" 1.0)
((12.2 4.2) "R0" 1.0)
((12.2 4.2) "R0" 1.0)
(((db:0x1fa1cc9b 0 0) db:0x1fa1ada3)
((db:0x1fa1cc9b 0 0) db:0x1fa1add4)
((db:0x1fa1cc9b 0 0)
(db:0x1fa14b9a db:0x1fa14ca0)
)
((db:0x1fa1cc9b 0 1) db:0x1fa1ada3)
((db:0x1fa1cc9b 0 1) db:0x1fa1add4)
((db:0x1fa1cc9b 0 1)
(db:0x1fa14b9a db:0x1fa14ca0)
)
)

i don't know meaning of (4.2 4.2), (12.2 4.2) ... as result of dbGetInstTransform.

please help me, i want to find out point of poly layer in different hierarhy, in mosaic cell... 

  • Cancel
  • Sign in to reply
Parents
  • Noobnoob
    Noobnoob 1 month ago

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Noobnoob
    Noobnoob 1 month ago

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • Aurel B
    Aurel B 1 month ago in reply to Noobnoob

    ; Hi,
    
    ; You already asked a very similar question,
    ; community.cadence.com/.../by-using-dbgettrueoverlaps-how-to-get-coordinate-of-what-i-want
    
    ; You could re-use the answer I made there and just write the function to get a list of points from any shape.
    ; Otherwise, this is a simpler and probably more robust solution
    
    (defun get_layer_polygons ( @key cv ( box cv->bBox ) lpp )
      "Return the coordinates of LPP polygons in CV.
    (It only works for 90° and 45° angles, ellipses are not supported.)"
      (abeInit cv)
      (unwindProtect
        (letseq ( ( abe_lay (abeLayerFromCellView (car lpp) ?purpose (cadr lpp) ?bBox box) )
                  ( iter    (abeIslandIterator abe_lay) )
                  points
                  polygons
                  )
          (while (setq points iter->next)
            (push points polygons)
            )
          polygons)
        (abeDone)
        ))
    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 1 month ago in reply to Noobnoob

    The return value of dbGetInstTransform is the transformation (i.e. offset, rotation, magnification tuple) needed to transform the shape to the top-level. The bit you're missing is to do the transformation. Rather than appending those lists (which is inefficient and doesn't really help you), you can process the overlaps this way:

    procedure(CCFgetHierPathShape(overlap)
      if(listp(overlap) then
        CCFgetHierPathShape(cadr(overlap))
      else
        overlap
      )
    )

    polyBBoxes=foreach(mapcar overlap overlaps
      dbTransformBBox(
        CCFgetHierPathShape(overlap)~>bBox
        dbGetInstTransform(overlap)
      )
    )

    Note, this is assuming that the shapes are rectangles (if polygons, you'll get the transformed bounding boxes of each shape regardless of the actual shape).

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • 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.

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

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