• 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. Selection Problem SKILL messing with rectangle placemen...

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 145
  • Views 19700
  • 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

Selection Problem SKILL messing with rectangle placement

ARB9
ARB9 over 6 years ago

I am gonna start off by saying that I am pretty new to SKILL. My Code is at the Bottom if you want to look at that. I'm having on odd problem with my SKILL Code. When it first places an Instance, you can move everything around independently. But, after you double click on an instance and it goes from the view with the red outline to the one with the white, things start going funky. First off, the only Pcell I can move is the one I initalliy double clicked to change the view. Second, if I move that one, any instance that is the same PCell moves with it. See Image where I move a corner cell and the other 3 move along with it.

                

If this was all that happened, it would be annoying but I could get around it. But, if I try to place a rectangle into the layout with SKILL using

rect3 = rodCreateRect(
?name "rect3"
?cvId geGetEditCellView()
?layer "Met5"
?bBox list(466:387 496:600)
)

it places 4 rectangles, each tied to one of the corners. I'm pretty sure this is based on the last thing I placed using the code since, when I tested it using PANALOG_S as the last thing I place, I ended with many rectangles. How can I make it only place one rectangle?

One last thing, if y'all are willing to help me with this as well. When I'm in the view with the red outline, the one where an instance if first placed, I am having trouble placing rectangles in any layer other than background. Can you do that with SKILL? I know that if the layout is in the other view, the one with white outlines, that I can make the rectangles place using that bit of code above. How can you change the view using SKILL? Thank Y'all again. And before you say anything about which pads I have where, I know that it is nonsensical. I am just trying to figure out the code so this is a test run.

procedure(placePadFrame1( @optional no_pads )

(setq no_pads 6.0)

(if (null no_pads) then

(setq no_pads (enterNumber ?prompts '("Please enter the number of pads on a side"))))

(setq xpointh 593)

(setq ypointh 300)

(setq xpointv 503)

(setq ypointv 849)

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PBREAK_T" "layout") nil (list xpointv+(40*-1) ypointh-223) "R0")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+(40*0) ypointh-223) "R0")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_S" "layout") nil (list xpointv+(40*1) ypointh-223) "R0")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv+(40*2) ypointh-223) "R0")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+(40*3) ypointh-223) "R0")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv+(40*4) ypointh-223) "R0")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+no_pads*40+346 ypointv+(40*0)-386) "R90")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv+no_pads*40+346 ypointv+(40*1)-386) "R90")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PBREAK_T" "layout") nil (list xpointv+no_pads*40+346 ypointv+(40*2)-386) "R90")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+no_pads*40+346 ypointv+(40*3)-386) "R90")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv+no_pads*40+346 ypointv+(40*4)-386) "R90")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+no_pads*40+346 ypointv+(40*5)-386) "R90")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+(40*0) ypointv+no_pads*40) "R180")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv+(40*1) ypointv+no_pads*40) "R180")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+(40*2) ypointv+no_pads*40) "R180")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv+(40*3) ypointv+no_pads*40) "R180")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv+(40*4) ypointv+no_pads*40) "R180")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv+(40*5) ypointv+no_pads*40) "R180")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv-426 ypointh-70+(40*1)+233) "R270")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PBREAK_T" "layout") nil (list xpointv-426 ypointh-70+(40*2)+233) "R270")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv-426 ypointh-70+(40*3)+233) "R270")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv-426 ypointh-70+(40*4)+233) "R270")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PANALOG_S" "layout") nil (list xpointv-426 ypointh-70+(40*5)+233) "R270")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PAVDD_T" "layout") nil (list xpointv-426 ypointh-70+(40*6)+233) "R270")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PCORNER_T" "layout") nil (list xpointv-426 ypointh+no_pads*40+549) "R270")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PCORNER_T" "layout") nil (list xpointv+no_pads*40+346 ypointh+no_pads*40+549) "R180")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PCORNER_T" "layout") nil (list xpointv+no_pads*40+346 ypointh-223) "R90")

(dbCreateInst (getEditRep) (dbOpenCellViewByType "Pad_Library" "PCORNER_T" "layout") nil (list xpointv-426 ypointh-223) "R0")

)

  • Cancel
  • ARB9
    ARB9 over 6 years ago in reply to ARB9

    And another fairly related thing, I think that it was making multiple rectangles with one statement because it was printing the rectangles in the master cell. Since the rectangle was in the master, it got put in all of the instances from that master. Since I had 4 corners from one master, the rectangle was placed 4 times. I'm pretty sure that was just an issue with what I had my cvid defined as. That is my best guess based on the experimentation that I have been doing.

    Adam

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to ARB9

    My guess is that you've done an edit in place, and so you're no longer editing the top level cellView. The banner of the window should tell you which cellView you're editing - although edit in place shows your edits in the context of where this cell is placed - useful for aligning with objects at the level above from you in the hierarchy. 

    The various menu items related to this are under Edit->Hierarchy.

    Andrew.

    • 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