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")
)