5002d91e31d5a372ca7055597109d556d6fc3966
[hw/altusmetrum] / packages / 711AT.py
1 #!/usr/bin/python3
2 # Copyright 2021 by Bdale Garbee <bdale@gag.com>.  GPLv3
3 #
4 # Program to emit 711AT footprint for onsemi dual LDO
5 #
6
7 # dimensions in mm from onsemi/NCV8152.pdf datasheet
8
9 BodyWidth = 1.2
10 BodyHeight = 1.2
11
12 PinWidth = 0.24
13 PinHeight = 0.37
14 PinSpacing = 0.4
15 RowOuters = 1.4
16 RowSpacing = RowOuters - (2 * PinHeight)
17
18 # overall dimensions for the inner pad
19 X1 = 1.08
20 Y1 = 0.40
21
22 # we're going to use the 1/100 of a mil fundamental unit form
23 def mm2mils100( mm ):
24         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
25
26 print ('# author: Bdale Garbee')
27 print ('# email: bdale@gag.com')
28 print ('# dist-license: GPL 3')
29 print ('# use-license: unlimited')
30
31 print ('Element[0x0 "711AT" "" "" 0 0 -10161 -12011 0 100 0x0]')
32 print ("(")
33 for pin in range (0,3):
34     print ('   Pad[',\
35         mm2mils100((pin-1) * PinSpacing), \
36         mm2mils100(-(RowSpacing/2 + PinWidth/2)), \
37         mm2mils100((pin-1) * PinSpacing), \
38         mm2mils100(-(RowSpacing/2 + PinHeight - PinWidth/2)), \
39         mm2mils100(PinWidth), \
40         mm2mils100(PinSpacing - PinWidth), \
41         mm2mils100(PinWidth)+600, \
42         '"pin%i"' % (6 - pin), '"%i"' % (6 - pin), '0x0100]')
43
44     print ('   Pad[',\
45         mm2mils100((pin-1) * PinSpacing), \
46         mm2mils100(RowSpacing/2 + PinWidth/2), \
47         mm2mils100((pin-1) * PinSpacing), \
48         mm2mils100(RowSpacing/2 + PinHeight - PinWidth/2), \
49         mm2mils100(PinWidth), \
50         mm2mils100(PinSpacing - PinWidth), \
51         mm2mils100(PinWidth)+600, \
52         '"pin%i"' % (1 + pin), '"%i"' % (1 + pin), '0x0100]')
53
54 print ('   Pad[',\
55         mm2mils100(-X1/2 + Y1/2), \
56         0,
57         mm2mils100(X1/2 - Y1/2), \
58         0,
59         mm2mils100(Y1), \
60         mm2mils100(.1524), \
61         mm2mils100(Y1)+600, \
62         '"pin7" "7" 0x0100]')
63
64 #print ('   ElementLine[',\
65 #       mm2mils100(-BodyHeight/2), \
66 #       mm2mils100(-BodyWidth/2), \
67 #       mm2mils100(-BodyHeight/2), \
68 #       mm2mils100( BodyWidth/2), \
69 #       '1000 ]')
70 #
71 #print ('   ElementLine[',\
72 #       mm2mils100(-BodyHeight/2), \
73 #       mm2mils100( BodyWidth/2), \
74 #       mm2mils100( BodyHeight/2), \
75 #       mm2mils100( BodyWidth/2), \
76 #       '1000 ]')
77 #
78 #print ('   ElementLine[',\
79 #       mm2mils100( BodyHeight/2), \
80 #       mm2mils100( BodyWidth/2), \
81 #       mm2mils100( BodyHeight/2), \
82 #       mm2mils100(-BodyWidth/2), \
83 #       '1000 ]')
84 #
85 #print ('   ElementLine[',\
86 #       mm2mils100( BodyHeight/2), \
87 #       mm2mils100(-BodyWidth/2), \
88 #       mm2mils100(-BodyHeight/2), \
89 #       mm2mils100(-BodyWidth/2), \
90 #       '1000 ]')
91 #
92 #print ('   ElementArc[',\
93 #       mm2mils100(-2 * PinSpacing), \
94 #       mm2mils100(1.25 * RowSpacing), \
95 #       '500 500 0 360 1000 ]')
96
97 print (")")