Remove silk rectangle around ufqfpn24 package
[hw/altusmetrum] / packages / MPU9250.py
1 #!/usr/bin/python
2 # Copyright 2016 by Bdale Garbee <bdale@gag.com>.  GPLv3
3 #
4 # Program to emit PCB footprint for 3x3x1mm QFN24 package used by MPU-9250
5 #
6
7 # dimensions in mm from Invensense MPU-9250-Datasheet.pdf
8 PinSpacing = 0.40
9 PinWidth = 0.20         
10 PartOverall = 3.00
11
12 PartPinHeight = 0.30            # inward from overall edge
13 Tout = 0.40                     # extend pads outside by this much
14 Tin = -0.05                     # extend pads inside by this much
15 PinHeight = PartPinHeight + Tout + Tin
16 Overall = PartOverall + (2 * Tout)
17
18 PinResist = PinWidth + (2 * 0.07)
19
20 import sys
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 "MPU9250" "" "" 0 0 0 0 0 100 0x0]'
32 print "("
33
34 # pins
35 for pin in range (1,7):
36     print '   Pad[',\
37         mm2mils100((-3.5 + pin) * PinSpacing), \
38         mm2mils100(-Overall/2 + PinWidth/2), \
39         mm2mils100((-3.5 + pin) * PinSpacing), \
40         mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
41         mm2mils100(PinWidth), \
42         mm2mils100(PinSpacing - PinWidth), \
43         mm2mils100(PinResist), \
44         '"pin%i"' % (19-pin), '"%i"' % (19-pin), '0x0100]'
45
46     print '   Pad[',\
47         mm2mils100((-3.5 + pin) * PinSpacing), \
48         mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
49         mm2mils100((-3.5 + pin) * PinSpacing), \
50         mm2mils100(+Overall/2 - PinWidth/2), \
51         mm2mils100(PinWidth), \
52         mm2mils100(PinSpacing - PinWidth), \
53         mm2mils100(PinResist), \
54         '"pin%i"' % pin, '"%i"' % pin, '0x0100]'
55
56     print '   Pad[',\
57         mm2mils100(Overall/2 - PinHeight + PinWidth/2), \
58         mm2mils100((-3.5 + pin) * PinSpacing), \
59         mm2mils100(Overall/2 - PinWidth/2), \
60         mm2mils100((-3.5 + pin) * PinSpacing), \
61         mm2mils100(PinWidth), \
62         mm2mils100(PinSpacing - PinWidth), \
63         mm2mils100(PinResist), \
64         '"pin%i"' % (13-pin), '"%i"' % (13-pin), '0x0100]'
65
66     print '   Pad[',\
67         mm2mils100(-Overall/2 + PinWidth/2), \
68         mm2mils100((-3.5 + pin) * PinSpacing), \
69         mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
70         mm2mils100((-3.5 + pin) * PinSpacing), \
71         mm2mils100(PinWidth), \
72         mm2mils100(PinSpacing - PinWidth), \
73         mm2mils100(PinResist), \
74         '"pin%i"' % (18+pin), '"%i"' % (18+pin), '0x0100]'
75
76 print '   ElementArc[',\
77         mm2mils100(-(Overall/2)), \
78         mm2mils100(Overall/2), \
79         '500 500 0 360 1000 ]'
80 print ")"