rename some footprints to be less generic
[hw/bdale] / pkg / newlib / MCP-DFN10.py
1 #!/usr/bin/python
2 # Copyright 2008 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for DFN10 package used by Microchip MCP73837
5 #
6
7 # dimensions in mm from the Microchip en012702.pdf datasheet
8 PinWidth = 0.30         
9 PinResist = 0.402               # width of gap in solder resist over pad
10 PinHeight = 0.65
11 PinSpacing = 0.50
12 RowSpacing = 3.10
13 PaddleLength = 2.48
14 PaddleWidth = 1.55
15 Length = 3.00
16 Width = 3.00
17
18 import sys
19
20 # we're going to use the 1/100 of a mil fundamental unit form
21 def mm2mils100( mm ):
22         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
23
24 print '# author: Bdale Garbee'
25 print '# email: bdale@gag.com'
26 print '# dist-license: GPL 2'
27 print '# use-license: unlimited'
28
29 print 'Element[0x0 "DFN10" "" "" 0 0 0 0 0 100 0x0]'
30 print "("
31
32 # pad under the chip, must be grounded
33 print '   Pad[',\
34         mm2mils100(-PaddleLength/2 + PaddleWidth/2), \
35         mm2mils100(0), \
36         mm2mils100(PaddleLength/2 - PaddleWidth/2), \
37         mm2mils100(0), \
38         mm2mils100(PaddleWidth), \
39         0, \
40         mm2mils100(PaddleWidth)+600, \
41         '"pin11" "11" "square"]'
42
43 ## vias in the ground pad under the chip
44 for viarow in range (-1,2,2):
45   for viacol in range (-1,2):
46     print '   Pin[',\
47         mm2mils100(viacol * PaddleLength / 3), \
48         mm2mils100(viarow * PaddleWidth / 4), \
49         2800, \
50         1000, \
51         0, \
52         1500, \
53         '"pin11" "11" 0x0002]'
54
55 # pins
56 for pin in range (1,6):
57     print '   Pad[',\
58         mm2mils100((pin - 3) * PinSpacing), \
59         mm2mils100(-RowSpacing/2 + PinHeight/2 - PinWidth/2), \
60         mm2mils100((pin - 3) * PinSpacing), \
61         mm2mils100(-RowSpacing/2 - PinHeight/2 + PinWidth/2), \
62         mm2mils100(PinWidth), \
63         mm2mils100(PinSpacing - PinWidth), \
64         mm2mils100(PinResist), \
65         '"pin%i"' % (11-pin), '"%i"' % (11-pin), '"square"]'
66
67     print '   Pad[',\
68         mm2mils100((pin - 3) * PinSpacing), \
69         mm2mils100(+RowSpacing/2 - PinHeight/2 + PinWidth/2), \
70         mm2mils100((pin - 3) * PinSpacing), \
71         mm2mils100(+RowSpacing/2 + PinHeight/2 - PinWidth/2), \
72         mm2mils100(PinWidth), \
73         mm2mils100(PinSpacing - PinWidth), \
74         mm2mils100(PinResist), \
75         '"pin%i"' % pin, '"%i"' % pin, '"square"]'
76
77 #    print '   Pad[',\
78 #       mm2mils100(-2.5 + pin * PinSpacing), \
79 #       mm2mils100(+PinSpacing/2 - PinHeight + PinWidth/2), \
80 #       mm2mils100(-2.5 + pin * PinSpacing), \
81 #       mm2mils100(+PinSpacing/2 - PinWidth/2), \
82 #       mm2mils100(PinWidth), \
83 #       mm2mils100(PinSpacing - PinWidth), \
84 #       mm2mils100(PinResist), \
85 #       '"pin%i"' % pin, '"%i"' % pin, '0x0000]'
86
87 print '   ElementLine[',\
88         -mm2mils100(Length/2), \
89         -mm2mils100(Width/2), \
90         mm2mils100(Length/2), \
91         -mm2mils100(Width/2), \
92         500, \
93         ']'
94 print '   ElementLine[',\
95         -mm2mils100(Length/2), \
96         -mm2mils100(Width/2), \
97         -mm2mils100(Length/2), \
98         mm2mils100(Width/2), \
99         500, \
100         ']'
101 print '   ElementLine[',\
102         -mm2mils100(Length/2), \
103         mm2mils100(Width/2), \
104         mm2mils100(Length/2), \
105         mm2mils100(Width/2), \
106         500, \
107         ']'
108 print '   ElementLine[',\
109         mm2mils100(Length/2), \
110         mm2mils100(Width/2), \
111         mm2mils100(Length/2), \
112         -mm2mils100(Width/2), \
113         500, \
114         ']'
115
116 print '   ElementArc[',\
117         mm2mils100(-Length/2), \
118         mm2mils100(Width/2), \
119         '500 500 0 360 1000 ]'
120 print ")"