# soldermask, "pin name", "pin number", flags]
# bottom row
- Pad[-3937 7185 -3937 5020 1181 1600 1381 "1" "1" 0x00000100]
- Pad[-1969 7185 -1969 5020 1181 1600 1381 "2" "2" 0x00000100]
- Pad[ 0 7185 0 5020 1181 1600 1381 "3" "3" 0x00000100]
- Pad[ 1969 7185 1969 5020 1181 1600 1381 "4" "4" 0x00000100]
- Pad[ 3937 7185 3937 5020 1181 1600 1381 "5" "5" 0x00000100]
+ Pad[-3937 7185 -3937 5020 1181 1600 1781 "1" "1" 0x00000100]
+ Pad[-1969 7185 -1969 5020 1181 1600 1781 "2" "2" 0x00000100]
+ Pad[ 0 7185 0 5020 1181 1600 1781 "3" "3" 0x00000100]
+ Pad[ 1969 7185 1969 5020 1181 1600 1781 "4" "4" 0x00000100]
+ Pad[ 3937 7185 3937 5020 1181 1600 1781 "5" "5" 0x00000100]
# top row
- Pad[ 3937 -7185 3937 -5020 1181 1600 1381 "6" "6" 0x00000100]
- Pad[ 1969 -7185 1969 -5020 1181 1600 1381 "7" "7" 0x00000100]
- Pad[ 0 -7185 0 -5020 1181 1600 1381 "8" "8" 0x00000100]
- Pad[-1969 -7185 -1969 -5020 1181 1600 1381 "9" "9" 0x00000100]
- Pad[-3937 -7185 -3937 -5020 1181 1600 1381 "10" "10" 0x00000100]
+ Pad[ 3937 -7185 3937 -5020 1181 1600 1781 "6" "6" 0x00000100]
+ Pad[ 1969 -7185 1969 -5020 1181 1600 1781 "7" "7" 0x00000100]
+ Pad[ 0 -7185 0 -5020 1181 1600 1781 "8" "8" 0x00000100]
+ Pad[-1969 -7185 -1969 -5020 1181 1600 1781 "9" "9" 0x00000100]
+ Pad[-3937 -7185 -3937 -5020 1181 1600 1781 "10" "10" 0x00000100]
# Exposed paddle (if this is an exposed paddle part)
- Pad[ -1457 0 1457 0 6496 1600 6796 "11" "11" 0x00000100]
+ Pad[ -1457 0 1457 0 6496 1600 7096 "11" "11" 0x00000100]
)
--- /dev/null
+# author: Bdale Garbee
+# email: bdale@gag.com
+# dist-license: GPL 2
+# use-license: unlimited
+Element[0x0 "DFN10" "" "" 0 0 0 0 0 100 0x0]
+(
+ Pad[ -1830 0 1831 0 6102 0 6702 "pin11" "11" "square"]
+ Pin[ -3254 -1525 2800 1000 0 1500 "pin11" "11" 0x0002]
+ Pin[ 0 -1525 2800 1000 0 1500 "pin11" "11" 0x0002]
+ Pin[ 3255 -1525 2800 1000 0 1500 "pin11" "11" 0x0002]
+ Pin[ -3254 1526 2800 1000 0 1500 "pin11" "11" 0x0002]
+ Pin[ 0 1526 2800 1000 0 1500 "pin11" "11" 0x0002]
+ Pin[ 3255 1526 2800 1000 0 1500 "pin11" "11" 0x0002]
+ Pad[ -3936 -5412 -3936 -6790 1181 787 1583 "pin10" "10" "square"]
+ Pad[ -3936 5413 -3936 6791 1181 787 1583 "pin1" "1" "square"]
+ Pad[ -1968 -5412 -1968 -6790 1181 787 1583 "pin9" "9" "square"]
+ Pad[ -1968 5413 -1968 6791 1181 787 1583 "pin2" "2" "square"]
+ Pad[ 0 -5412 0 -6790 1181 787 1583 "pin8" "8" "square"]
+ Pad[ 0 5413 0 6791 1181 787 1583 "pin3" "3" "square"]
+ Pad[ 1969 -5412 1969 -6790 1181 787 1583 "pin7" "7" "square"]
+ Pad[ 1969 5413 1969 6791 1181 787 1583 "pin4" "4" "square"]
+ Pad[ 3937 -5412 3937 -6790 1181 787 1583 "pin6" "6" "square"]
+ Pad[ 3937 5413 3937 6791 1181 787 1583 "pin5" "5" "square"]
+ ElementLine[ -5906 -5906 5906 -5906 500 ]
+ ElementLine[ -5906 -5906 -5906 5906 500 ]
+ ElementLine[ -5906 5906 5906 5906 500 ]
+ ElementLine[ 5906 5906 5906 -5906 500 ]
+ ElementArc[ -5905 5906 500 500 0 360 1000 ]
+)
--- /dev/null
+#!/usr/bin/python
+# Copyright 2008 by Bdale Garbee <bdale@gag.com>. GPLv2
+#
+# Program to emit PCB footprint for DFN10 package used by Microchip MCP73837
+#
+
+# dimensions in mm from the Microchip en012702.pdf datasheet
+PinWidth = 0.30
+PinResist = 0.402 # width of gap in solder resist over pad
+PinHeight = 0.65
+PinSpacing = 0.50
+RowSpacing = 3.10
+PaddleLength = 2.48
+PaddleWidth = 1.55
+Length = 3.00
+Width = 3.00
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+ return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print '# author: Bdale Garbee'
+print '# email: bdale@gag.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "DFN10" "" "" 0 0 0 0 0 100 0x0]'
+print "("
+
+# pad under the chip, must be grounded
+print ' Pad[',\
+ mm2mils100(-PaddleLength/2 + PaddleWidth/2), \
+ mm2mils100(0), \
+ mm2mils100(PaddleLength/2 - PaddleWidth/2), \
+ mm2mils100(0), \
+ mm2mils100(PaddleWidth), \
+ 0, \
+ mm2mils100(PaddleWidth)+600, \
+ '"pin11" "11" "square"]'
+
+## vias in the ground pad under the chip
+for viarow in range (-1,2,2):
+ for viacol in range (-1,2):
+ print ' Pin[',\
+ mm2mils100(viacol * PaddleLength / 3), \
+ mm2mils100(viarow * PaddleWidth / 4), \
+ 2800, \
+ 1000, \
+ 0, \
+ 1500, \
+ '"pin11" "11" 0x0002]'
+
+# pins
+for pin in range (1,6):
+ print ' Pad[',\
+ mm2mils100((pin - 3) * PinSpacing), \
+ mm2mils100(-RowSpacing/2 + PinHeight/2 - PinWidth/2), \
+ mm2mils100((pin - 3) * PinSpacing), \
+ mm2mils100(-RowSpacing/2 - PinHeight/2 + PinWidth/2), \
+ mm2mils100(PinWidth), \
+ mm2mils100(PinSpacing - PinWidth), \
+ mm2mils100(PinResist), \
+ '"pin%i"' % (11-pin), '"%i"' % (11-pin), '"square"]'
+
+ print ' Pad[',\
+ mm2mils100((pin - 3) * PinSpacing), \
+ mm2mils100(+RowSpacing/2 - PinHeight/2 + PinWidth/2), \
+ mm2mils100((pin - 3) * PinSpacing), \
+ mm2mils100(+RowSpacing/2 + PinHeight/2 - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ mm2mils100(PinSpacing - PinWidth), \
+ mm2mils100(PinResist), \
+ '"pin%i"' % pin, '"%i"' % pin, '"square"]'
+
+# print ' Pad[',\
+# mm2mils100(-2.5 + pin * PinSpacing), \
+# mm2mils100(+PinSpacing/2 - PinHeight + PinWidth/2), \
+# mm2mils100(-2.5 + pin * PinSpacing), \
+# mm2mils100(+PinSpacing/2 - PinWidth/2), \
+# mm2mils100(PinWidth), \
+# mm2mils100(PinSpacing - PinWidth), \
+# mm2mils100(PinResist), \
+# '"pin%i"' % pin, '"%i"' % pin, '0x0000]'
+
+print ' ElementLine[',\
+ -mm2mils100(Length/2), \
+ -mm2mils100(Width/2), \
+ mm2mils100(Length/2), \
+ -mm2mils100(Width/2), \
+ 500, \
+ ']'
+print ' ElementLine[',\
+ -mm2mils100(Length/2), \
+ -mm2mils100(Width/2), \
+ -mm2mils100(Length/2), \
+ mm2mils100(Width/2), \
+ 500, \
+ ']'
+print ' ElementLine[',\
+ -mm2mils100(Length/2), \
+ mm2mils100(Width/2), \
+ mm2mils100(Length/2), \
+ mm2mils100(Width/2), \
+ 500, \
+ ']'
+print ' ElementLine[',\
+ mm2mils100(Length/2), \
+ mm2mils100(Width/2), \
+ mm2mils100(Length/2), \
+ -mm2mils100(Width/2), \
+ 500, \
+ ']'
+
+print ' ElementArc[',\
+ mm2mils100(-Length/2), \
+ mm2mils100(Width/2), \
+ '500 500 0 360 1000 ]'
+print ")"
+++ /dev/null
-#!/usr/bin/python
-# Copyright 2008 by Bdale Garbee <bdale@gag.com>. GPLv2
-#
-# Program to emit PCB footprint for QFN36 package used by TI CC1111
-#
-
-# dimensions in mm from the TI cc1111f32.pdf datasheet
-PinWidth = 0.28
-PinResist = 0.381 # width of gap in solder resist over pad
-PinHeight = 0.75
-PinSpacing = 0.50
-Overall = 6.30
-GndSquare = 4.40
-CoreSquare = 3.7592 # resist gaps and paste spots over ground tab
-PinSquare = 4.80
-
-import sys
-
-# we're going to use the 1/100 of a mil fundamental unit form
-def mm2mils100( mm ):
- return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
-
-print '# author: Bdale Garbee'
-print '# email: bdale@gag.com'
-print '# dist-license: GPL 2'
-print '# use-license: unlimited'
-
-print 'Element[0x0 "QFN36" "" "" 0 0 0 0 0 100 0x0]'
-print "("
-
-# pad under the chip, must be grounded
-print ' Pad[',\
- mm2mils100(0), \
- mm2mils100(0), \
- mm2mils100(0), \
- mm2mils100(0), \
- mm2mils100(GndSquare), \
- 0, \
- 0, \
- '"pin37" "37" "square,nopaste"]'
-
-# vias in the ground pad under the chip
-for viarow in range (-1,2):
- for viacol in range (-1,2):
- print ' Pin[',\
- mm2mils100(2 * viacol * CoreSquare / 5), \
- mm2mils100(2 * viarow * CoreSquare / 5), \
- 2800, \
- 1000, \
- 0, \
- 1500, \
- '"pin37" "37" 0x0002]'
-
-# break pad under chip into a grid to control the resist and paste masks
-for viarow in range (-2, 3):
- for viacol in range (-2, 3):
- if (viarow in (-2, 0, 2)) and (viacol in (-2, 0, 2)):
- # copper sub-square with resist over vias
- print ' Pad[',\
- mm2mils100(viacol * CoreSquare / 5), \
- mm2mils100(viarow * CoreSquare / 5), \
- mm2mils100(viacol * CoreSquare / 5), \
- mm2mils100(viarow * CoreSquare / 5), \
- mm2mils100((CoreSquare)/5), \
- 0, \
- 0, \
- '"pin37" "37" "square,nopaste"]'
- else:
- # copper sub-square without resist
- print ' Pad[',\
- mm2mils100(viacol * CoreSquare / 5), \
- mm2mils100(viarow * CoreSquare / 5), \
- mm2mils100(viacol * CoreSquare / 5), \
- mm2mils100(viarow * CoreSquare / 5), \
- mm2mils100((CoreSquare)/5), \
- 0, \
- mm2mils100((CoreSquare)/5), \
- '"pin37" "37" "square,nopaste"]'
- # copper spot to control paste mask generation
- print ' Pad[',\
- mm2mils100(viacol * CoreSquare / 5), \
- mm2mils100(viarow * CoreSquare / 5), \
- mm2mils100(viacol * CoreSquare / 5), \
- mm2mils100(viarow * CoreSquare / 5), \
- 1500, \
- 0, \
- mm2mils100((CoreSquare)/5), \
- '"pin37" "37" "square"]'
-
-# pins
-for pin in range (1,10):
- print ' Pad[',\
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(-Overall/2 + PinWidth/2), \
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
- mm2mils100(PinWidth), \
- mm2mils100(PinSpacing - PinWidth), \
- mm2mils100(PinResist), \
- '"pin%i"' % (28-pin), '"%i"' % (28-pin), '0x0000]'
-
- print ' Pad[',\
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(+Overall/2 - PinWidth/2), \
- mm2mils100(PinWidth), \
- mm2mils100(PinSpacing - PinWidth), \
- mm2mils100(PinResist), \
- '"pin%i"' % pin, '"%i"' % pin, '0x0000]'
-
- print ' Pad[',\
- mm2mils100(Overall/2 - PinHeight + PinWidth/2), \
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(Overall/2 - PinWidth/2), \
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(PinWidth), \
- mm2mils100(PinSpacing - PinWidth), \
- mm2mils100(PinResist), \
- '"pin%i"' % (19-pin), '"%i"' % (19-pin), '0x0000]'
-
- print ' Pad[',\
- mm2mils100(-Overall/2 + PinWidth/2), \
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
- mm2mils100(-2.5 + pin * PinSpacing), \
- mm2mils100(PinWidth), \
- mm2mils100(PinSpacing - PinWidth), \
- mm2mils100(PinResist), \
- '"pin%i"' % (27+pin), '"%i"' % (27+pin), '0x0000]'
-
-print ' ElementArc[',\
- mm2mils100(-2.6), \
- mm2mils100(2.6), \
- '500 500 0 360 1000 ]'
-print ")"
--- /dev/null
+# author: Bdale Garbee
+# email: bdale@gag.com
+# dist-license: GPL 2
+# use-license: unlimited
+Element[0x0 "QFN36" "" "" 0 0 0 0 0 100 0x0]
+(
+ Pad[ 0 0 0 0 17323 0 0 "pin37" "37" "square,nopaste"]
+ Pin[ -5919 -5919 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ 0 -5919 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ 5920 -5919 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ -5919 0 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ 0 0 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ 5920 0 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ -5919 5920 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ 0 5920 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pin[ 5920 5920 2800 1000 0 1500 "pin37" "37" 0x0002]
+ Pad[ -5919 -5919 -5919 -5919 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 -5919 -2959 -5919 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 -5919 -2959 -5919 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 0 -5919 0 -5919 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 -5919 2960 -5919 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 -5919 2960 -5919 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 5920 -5919 5920 -5919 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ -5919 -2959 -5919 -2959 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ -5919 -2959 -5919 -2959 1500 0 2960 "pin37" "37" "square"]
+ Pad[ -2959 -2959 -2959 -2959 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 -2959 -2959 -2959 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 0 -2959 0 -2959 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 0 -2959 0 -2959 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 2960 -2959 2960 -2959 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 -2959 2960 -2959 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 5920 -2959 5920 -2959 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 5920 -2959 5920 -2959 1500 0 2960 "pin37" "37" "square"]
+ Pad[ -5919 0 -5919 0 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 0 -2959 0 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 0 -2959 0 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 0 0 0 0 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 0 2960 0 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 0 2960 0 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 5920 0 5920 0 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ -5919 2960 -5919 2960 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ -5919 2960 -5919 2960 1500 0 2960 "pin37" "37" "square"]
+ Pad[ -2959 2960 -2959 2960 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 2960 -2959 2960 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 0 2960 0 2960 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 0 2960 0 2960 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 2960 2960 2960 2960 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 2960 2960 2960 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 5920 2960 5920 2960 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 5920 2960 5920 2960 1500 0 2960 "pin37" "37" "square"]
+ Pad[ -5919 5920 -5919 5920 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 5920 -2959 5920 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ -2959 5920 -2959 5920 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 0 5920 0 5920 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 5920 2960 5920 2960 0 2960 "pin37" "37" "square,nopaste"]
+ Pad[ 2960 5920 2960 5920 1500 0 2960 "pin37" "37" "square"]
+ Pad[ 5920 5920 5920 5920 2960 0 0 "pin37" "37" "square,nopaste"]
+ Pad[ -7873 -11849 -7873 -9999 1102 866 1500 "pin27" "27" 0x0000]
+ Pad[ -7873 10000 -7873 11850 1102 866 1500 "pin1" "1" 0x0000]
+ Pad[ 10000 -7873 11850 -7873 1102 866 1500 "pin18" "18" 0x0000]
+ Pad[ -11849 -7873 -9999 -7873 1102 866 1500 "pin28" "28" 0x0000]
+ Pad[ -5905 -11849 -5905 -9999 1102 866 1500 "pin26" "26" 0x0000]
+ Pad[ -5905 10000 -5905 11850 1102 866 1500 "pin2" "2" 0x0000]
+ Pad[ 10000 -5905 11850 -5905 1102 866 1500 "pin17" "17" 0x0000]
+ Pad[ -11849 -5905 -9999 -5905 1102 866 1500 "pin29" "29" 0x0000]
+ Pad[ -3936 -11849 -3936 -9999 1102 866 1500 "pin25" "25" 0x0000]
+ Pad[ -3936 10000 -3936 11850 1102 866 1500 "pin3" "3" 0x0000]
+ Pad[ 10000 -3936 11850 -3936 1102 866 1500 "pin16" "16" 0x0000]
+ Pad[ -11849 -3936 -9999 -3936 1102 866 1500 "pin30" "30" 0x0000]
+ Pad[ -1968 -11849 -1968 -9999 1102 866 1500 "pin24" "24" 0x0000]
+ Pad[ -1968 10000 -1968 11850 1102 866 1500 "pin4" "4" 0x0000]
+ Pad[ 10000 -1968 11850 -1968 1102 866 1500 "pin15" "15" 0x0000]
+ Pad[ -11849 -1968 -9999 -1968 1102 866 1500 "pin31" "31" 0x0000]
+ Pad[ 0 -11849 0 -9999 1102 866 1500 "pin23" "23" 0x0000]
+ Pad[ 0 10000 0 11850 1102 866 1500 "pin5" "5" 0x0000]
+ Pad[ 10000 0 11850 0 1102 866 1500 "pin14" "14" 0x0000]
+ Pad[ -11849 0 -9999 0 1102 866 1500 "pin32" "32" 0x0000]
+ Pad[ 1969 -11849 1969 -9999 1102 866 1500 "pin22" "22" 0x0000]
+ Pad[ 1969 10000 1969 11850 1102 866 1500 "pin6" "6" 0x0000]
+ Pad[ 10000 1969 11850 1969 1102 866 1500 "pin13" "13" 0x0000]
+ Pad[ -11849 1969 -9999 1969 1102 866 1500 "pin33" "33" 0x0000]
+ Pad[ 3937 -11849 3937 -9999 1102 866 1500 "pin21" "21" 0x0000]
+ Pad[ 3937 10000 3937 11850 1102 866 1500 "pin7" "7" 0x0000]
+ Pad[ 10000 3937 11850 3937 1102 866 1500 "pin12" "12" 0x0000]
+ Pad[ -11849 3937 -9999 3937 1102 866 1500 "pin34" "34" 0x0000]
+ Pad[ 5906 -11849 5906 -9999 1102 866 1500 "pin20" "20" 0x0000]
+ Pad[ 5906 10000 5906 11850 1102 866 1500 "pin8" "8" 0x0000]
+ Pad[ 10000 5906 11850 5906 1102 866 1500 "pin11" "11" 0x0000]
+ Pad[ -11849 5906 -9999 5906 1102 866 1500 "pin35" "35" 0x0000]
+ Pad[ 7874 -11849 7874 -9999 1102 866 1500 "pin19" "19" 0x0000]
+ Pad[ 7874 10000 7874 11850 1102 866 1500 "pin9" "9" 0x0000]
+ Pad[ 10000 7874 11850 7874 1102 866 1500 "pin10" "10" 0x0000]
+ Pad[ -11849 7874 -9999 7874 1102 866 1500 "pin36" "36" 0x0000]
+ ElementArc[ -10235 10236 500 500 0 360 1000 ]
+)
--- /dev/null
+#!/usr/bin/python
+# Copyright 2008 by Bdale Garbee <bdale@gag.com>. GPLv2
+#
+# Program to emit PCB footprint for QFN36 package used by TI CC1111
+#
+
+# dimensions in mm from the TI cc1111f32.pdf datasheet
+PinWidth = 0.28
+PinResist = 0.381 # width of gap in solder resist over pad
+PinHeight = 0.75
+PinSpacing = 0.50
+Overall = 6.30
+GndSquare = 4.40
+CoreSquare = 3.7592 # resist gaps and paste spots over ground tab
+PinSquare = 4.80
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+ return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print '# author: Bdale Garbee'
+print '# email: bdale@gag.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "QFN36" "" "" 0 0 0 0 0 100 0x0]'
+print "("
+
+# pad under the chip, must be grounded
+print ' Pad[',\
+ mm2mils100(0), \
+ mm2mils100(0), \
+ mm2mils100(0), \
+ mm2mils100(0), \
+ mm2mils100(GndSquare), \
+ 0, \
+ 0, \
+ '"pin37" "37" "square,nopaste"]'
+
+# vias in the ground pad under the chip
+for viarow in range (-1,2):
+ for viacol in range (-1,2):
+ print ' Pin[',\
+ mm2mils100(2 * viacol * CoreSquare / 5), \
+ mm2mils100(2 * viarow * CoreSquare / 5), \
+ 2800, \
+ 1000, \
+ 0, \
+ 1500, \
+ '"pin37" "37" 0x0002]'
+
+# break pad under chip into a grid to control the resist and paste masks
+for viarow in range (-2, 3):
+ for viacol in range (-2, 3):
+ if (viarow in (-2, 0, 2)) and (viacol in (-2, 0, 2)):
+ # copper sub-square with resist over vias
+ print ' Pad[',\
+ mm2mils100(viacol * CoreSquare / 5), \
+ mm2mils100(viarow * CoreSquare / 5), \
+ mm2mils100(viacol * CoreSquare / 5), \
+ mm2mils100(viarow * CoreSquare / 5), \
+ mm2mils100((CoreSquare)/5), \
+ 0, \
+ 0, \
+ '"pin37" "37" "square,nopaste"]'
+ else:
+ # copper sub-square without resist
+ print ' Pad[',\
+ mm2mils100(viacol * CoreSquare / 5), \
+ mm2mils100(viarow * CoreSquare / 5), \
+ mm2mils100(viacol * CoreSquare / 5), \
+ mm2mils100(viarow * CoreSquare / 5), \
+ mm2mils100((CoreSquare)/5), \
+ 0, \
+ mm2mils100((CoreSquare)/5), \
+ '"pin37" "37" "square,nopaste"]'
+ # copper spot to control paste mask generation
+ print ' Pad[',\
+ mm2mils100(viacol * CoreSquare / 5), \
+ mm2mils100(viarow * CoreSquare / 5), \
+ mm2mils100(viacol * CoreSquare / 5), \
+ mm2mils100(viarow * CoreSquare / 5), \
+ 1500, \
+ 0, \
+ mm2mils100((CoreSquare)/5), \
+ '"pin37" "37" "square"]'
+
+# pins
+for pin in range (1,10):
+ print ' Pad[',\
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(-Overall/2 + PinWidth/2), \
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ mm2mils100(PinSpacing - PinWidth), \
+ mm2mils100(PinResist), \
+ '"pin%i"' % (28-pin), '"%i"' % (28-pin), '0x0000]'
+
+ print ' Pad[',\
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(+Overall/2 - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ mm2mils100(PinSpacing - PinWidth), \
+ mm2mils100(PinResist), \
+ '"pin%i"' % pin, '"%i"' % pin, '0x0000]'
+
+ print ' Pad[',\
+ mm2mils100(Overall/2 - PinHeight + PinWidth/2), \
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(Overall/2 - PinWidth/2), \
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(PinWidth), \
+ mm2mils100(PinSpacing - PinWidth), \
+ mm2mils100(PinResist), \
+ '"pin%i"' % (19-pin), '"%i"' % (19-pin), '0x0000]'
+
+ print ' Pad[',\
+ mm2mils100(-Overall/2 + PinWidth/2), \
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+ mm2mils100(-2.5 + pin * PinSpacing), \
+ mm2mils100(PinWidth), \
+ mm2mils100(PinSpacing - PinWidth), \
+ mm2mils100(PinResist), \
+ '"pin%i"' % (27+pin), '"%i"' % (27+pin), '0x0000]'
+
+print ' ElementArc[',\
+ mm2mils100(-2.6), \
+ mm2mils100(2.6), \
+ '500 500 0 360 1000 ]'
+print ")"
# dimensions in mm from 530470410_sd.pdf datasheet
PinDiam = 0.52
PinSpacing = 1.25
-RowOffset = 1.15
+BoxOffset = 1.15
BoxHeight = 3.2
BoxEnd = 1.5
LineWidth = 600
else:
Flags = '0x0001'
print ' Pin[', \
- mm2mils100(BoxEnd + (pin-1)*PinSpacing), \
- mm2mils100(RowOffset), \
+ mm2mils100((pins-1)*PinSpacing - (pin-1)*PinSpacing), \
+ 0, \
3500, \
1200, \
4100, \
BoxWidth = (BoxEnd * 2) + ((pins - 1) * PinSpacing);
print ' ElementLine[', \
- mm2mils100(0), \
- mm2mils100(0), \
- mm2mils100(0), \
- mm2mils100(BoxHeight), \
+ mm2mils100(-BoxEnd), \
+ mm2mils100(-BoxOffset), \
+ mm2mils100(-BoxEnd), \
+ mm2mils100(BoxHeight-BoxOffset), \
LineWidth, ']'
print ' ElementLine[', \
- mm2mils100(0), \
- mm2mils100(BoxHeight), \
- mm2mils100(BoxWidth), \
- mm2mils100(BoxHeight), \
+ mm2mils100(-BoxEnd), \
+ mm2mils100(BoxHeight-BoxOffset), \
+ mm2mils100(BoxWidth-BoxEnd), \
+ mm2mils100(BoxHeight-BoxOffset), \
LineWidth, ']'
print ' ElementLine[', \
- mm2mils100(BoxWidth), \
- mm2mils100(BoxHeight), \
- mm2mils100(BoxWidth), \
- mm2mils100(0), \
+ mm2mils100(BoxWidth-BoxEnd), \
+ mm2mils100(BoxHeight-BoxOffset), \
+ mm2mils100(BoxWidth-BoxEnd), \
+ mm2mils100(-BoxOffset), \
LineWidth, ']'
print ' ElementLine[', \
- mm2mils100(BoxWidth), \
- mm2mils100(0), \
- mm2mils100(0), \
- mm2mils100(0), \
+ mm2mils100(BoxWidth-BoxEnd), \
+ mm2mils100(-BoxOffset), \
+ mm2mils100(-BoxEnd), \
+ mm2mils100(-BoxOffset), \
LineWidth, ']'
print ")"