• 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. I am facing the following error: get/getq: first arg must...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 147
  • Views 1561
  • 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

I am facing the following error: get/getq: first arg must be either symbol, list, defstruct or user type - 0.0

AB_1718192359764
AB_1718192359764 over 1 year ago

I am trying to define a function to check all pins are on border and mark incorrectly set pins. But I get the following error: *Error* get/getq: first arg must be either symbol, list, defstruct or user type - 0.0

Can you please help me with this.

Regards,

Ananth.

procedure(CCSfindPinsOnBorder()
let((cv allPins count incorrectPins layoutBoundary)
cv = geGetWindowCellView()
if(cv then
allPins = setof(x cv~>shapes x~>pin)
count = 0
incorrectPins = 0
layoutBoundary = cv~>bBox

foreach(pin allPins
let((pinBoundary llx lly urx ury)
pinBoundary = pin~>bBox
when(pinBoundary
llx = pinBoundary~>llx
lly = pinBoundary~>lly
urx = pinBoundary~>urx
ury = pinBoundary~>ury

if(not(
(llx == layoutBoundary~>llx) ||
(lly == layoutBoundary~>lly) ||
(urx == layoutBoundary~>urx) ||
(ury == layoutBoundary~>ury)
) ;not
then
geSelectFig(pin)
incorrectPins++
printf("Incorrectly placed pin with net %s found at %L\n"
pin~>net~>name centerBox(pinBoundary))
) ;if
) ;when
count++
) ;let
) ;foreach

printf("%d pin(s) checked in cell %s\n"
count cv~>cellName)
printf("%d incorrectly placed pin(s) highlighted\n"
incorrectPins)
) ;if
) ;let
) ;procedure

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    You can't use pinBoundary~>llx (I've no idea why you thought you could - strangely enough there was another post recently which did the same thing here). A bounding box is a list of two lists, each of which is a number. So none of the ~>llx, lly, urx, ury will work on these (similarly in your previous, now deleted, post where you were trying to index lists using array syntax - lists are not arrays).

    I rewrote this slightly to use destructuringBind to pull out the llx, lly etc, plus to optionally use the prBoundary if present (worked better in my case). I also indented it (debugging unindented code is rather hard)

    procedure(CCSfindPinsOnBorder()
      let((cv allPins count incorrectPins layoutBoundary pinBoundary)
        cv = geGetWindowCellView()
        if(cv then
          allPins = setof(x cv~>shapes x~>pin)
          count = 0
          incorrectPins = 0
          ; use prBoundary (assume rectangle here for simplicity) or use
          ; cellView bBox if not found. Note that the bBox may not be 
          ; correct if you have labels protuding outside of the shapes
          layoutBoundary = cv~>prBoundary~>bBox || cv~>bBox
    
          destructuringBind(((lbLLX lbLLY) (lbURX lbURY)) layoutBoundary
            foreach(pin allPins
              pinBoundary = pin~>bBox
              ; shapes always have a bBox, so no need to check
              destructuringBind(((llx lly) (urx ury)) pinBoundary
                if(not(
                  (llx == lbLLX) ||
                  (lly == lbLLY) ||
                  (urx == lbURX) ||
                  (ury == lbURY)
                  ) ;not
                then
                  geSelectFig(pin)
                  incorrectPins++
                  printf("Incorrectly placed pin with net %s found at %L\n"
                  pin~>net~>name centerBox(pinBoundary))
                ) ;if
                count++
              ) ;destructuringBind
            ) ;foreach
          )
    
          printf("%d pin(s) checked in cell %s\n"
          count cv~>cellName)
          printf("%d incorrectly placed pin(s) highlighted\n"
          incorrectPins)
        ) ;if
      ) ;let
    ) ;procedure

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AB_1718192359764
    AB_1718192359764 over 1 year ago in reply to Andrew Beckett

    Thank you, Andrew! I will correct my mistakes as I am quite new to scripting.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • AB_1718192359764
    AB_1718192359764 over 1 year ago in reply to Andrew Beckett

    Thank you, Andrew! I will correct my mistakes as I am quite new to scripting.

    • 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.

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

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