I once had our CAD dude write one, I believe keyed off a
pin polygon placed at the center during layout. I don't have
any SKILL skills myself, and the workstation ended up going
back to the company when I left....
If pads are always rectangular it's a matter of picking the
corner coordinates and averaging, per pad. Non-ortho
shapes would be tougher. If you made a pad cell that had
its content origin centered at (0,0) then the pad instance
coordinate would be all you needed and a simpler script
would then do (note this is IC5 vintage, any IC6 "improvement"
is your problem). If your libraty pad cell is not centered on
its origin, make your own which is, containing the library
pad recentered.
Code PHP (brief) - [expand] |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| /*----------------------------------------------------------
Skill Name: instGetInfo.il
Usage: instGetInfo()
This routine gets instance information in a open layout
view.
------------------------------------------------------------*/
procedure(instGetInfo()
prog((p cv info instList inst box ll ur llx lly urx ury cx cy)
cv = geGetEditCellView()
cellName = cv~>cellName
printf("CellName: %L\n" cellName)
sprintf(info "./%s.info" cellName)
p = outfile(info "w")
fprintf(p "Information for Selected Objects:\n")
fprintf(p "-------------------------------------\n")
instList = cv~>instances
foreach( inst instList
if(inst~>objType == "inst" then
fprintf(p "Instance Name: %s, Cell Name: %s\n",
inst~>name inst~>cellName)
fprintf(p " Location: %L\n" inst~>transform)
fprintf(p " Bounding Box: %L\n", inst~>bBox)
fprintf(p " Status: %L\n", inst~>status)
); if
); foreach
printf("Please read %s for instance information!\n", info)
printf(" \n")
close(p)
); prog
printf("End of program!\n")
); procedure |