2 # Copyright 2008 by Bdale Garbee <bdale@gag.com>. GPLv2
4 # Program to emit PCB footprint for DFN10 package used by Microchip MCP73837
7 # dimensions in mm from the Microchip en012702.pdf datasheet
9 PinResist = 0.402 # width of gap in solder resist over pad
20 # we're going to use the 1/100 of a mil fundamental unit form
22 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
24 print '# author: Bdale Garbee'
25 print '# email: bdale@gag.com'
26 print '# dist-license: GPL 2'
27 print '# use-license: unlimited'
29 print 'Element[0x0 "DFN10" "" "" 0 0 0 0 0 100 0x0]'
32 # pad under the chip, must be grounded
34 mm2mils100(-PaddleLength/2 + PaddleWidth/2), \
36 mm2mils100(PaddleLength/2 - PaddleWidth/2), \
38 mm2mils100(PaddleWidth), \
40 mm2mils100(PaddleWidth)+600, \
41 '"pin11" "11" "square"]'
43 ## vias in the ground pad under the chip
44 for viarow in range (-1,2,2):
45 for viacol in range (-1,2):
47 mm2mils100(viacol * PaddleLength / 3), \
48 mm2mils100(viarow * PaddleWidth / 4), \
53 '"pin11" "11" 0x0002]'
56 for pin in range (1,6):
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"]'
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"]'
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]'
87 print ' ElementLine[',\
88 -mm2mils100(Length/2), \
89 -mm2mils100(Width/2), \
90 mm2mils100(Length/2), \
91 -mm2mils100(Width/2), \
94 print ' ElementLine[',\
95 -mm2mils100(Length/2), \
96 -mm2mils100(Width/2), \
97 -mm2mils100(Length/2), \
98 mm2mils100(Width/2), \
101 print ' ElementLine[',\
102 -mm2mils100(Length/2), \
103 mm2mils100(Width/2), \
104 mm2mils100(Length/2), \
105 mm2mils100(Width/2), \
108 print ' ElementLine[',\
109 mm2mils100(Length/2), \
110 mm2mils100(Width/2), \
111 mm2mils100(Length/2), \
112 -mm2mils100(Width/2), \
116 print ' ElementArc[',\
117 mm2mils100(-Length/2), \
118 mm2mils100(Width/2), \
119 '500 500 0 360 1000 ]'