From 49cc9190e35896f4ed00f4ca77cb3e1dfd031fc0 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Thu, 25 Dec 2008 20:53:32 -0700 Subject: [PATCH] major update to get details like resist and paste layers right --- pkg/newlib/QFN36.py | 89 ++++++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 34 deletions(-) diff --git a/pkg/newlib/QFN36.py b/pkg/newlib/QFN36.py index ee65180..12d34c3 100755 --- a/pkg/newlib/QFN36.py +++ b/pkg/newlib/QFN36.py @@ -5,11 +5,13 @@ # # dimensions in mm from the TI cc1111f32.pdf datasheet -PinWidth = 0.28 +PinWidth = 0.28 +PinResist = 0.381 # width of gap in solder resist over pad PinHeight = 0.75 PinSpacing = 0.50 Overall = 6.30 -CoreSquare = 4.40 +GndSquare = 4.40 +CoreSquare = 3.7592 # resist gaps and paste spots over ground tab PinSquare = 4.80 import sys @@ -22,44 +24,63 @@ print 'Element[0x0 "QFN36" "" "" 0 0 0 0 0 100 0x0]' print "(" # pad under the chip, must be grounded -# making the solder mask opening the recommended size, and the actual copper -# pad 6 mils smaller ... hoping this helps us avoid signal pad shorts! print ' Pad[',\ mm2mils100(0), \ mm2mils100(0), \ mm2mils100(0), \ mm2mils100(0), \ - mm2mils100(CoreSquare)-600, \ + mm2mils100(GndSquare), \ 0, \ - mm2mils100(CoreSquare), \ - '"pin37" "37" 0x0100]' + 0, \ + '"pin37" "37" "square,nopaste"]' # vias in the ground pad under the chip -for via in range (-1,2): +for viarow in range (-1,2): + for viacol in range (-1,2): print ' Pin[',\ - mm2mils100(-CoreSquare / 3), \ - mm2mils100(via * CoreSquare / 3), \ - 2500, \ - 2600, \ - 0, \ - 1700, \ - '"pin37" "37" 0x0002]' - print ' Pin[',\ - mm2mils100(0), \ - mm2mils100(via * CoreSquare / 3), \ - 2500, \ - 2600, \ - 0, \ - 1700, \ - '"pin37" "37" 0x0002]' - print ' Pin[',\ - mm2mils100(CoreSquare / 3), \ - mm2mils100(via * CoreSquare / 3), \ - 2500, \ - 2600, \ + mm2mils100(2 * viacol * CoreSquare / 5), \ + mm2mils100(2 * viarow * CoreSquare / 5), \ + 1600, \ + 0, \ 0, \ - 1700, \ - '"pin37" "37" 0x0002]' + 1500, \ + '"pin37" "37" 0x0000]' + +# 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): @@ -70,7 +91,7 @@ for pin in range (1,10): mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \ mm2mils100(PinWidth), \ mm2mils100(PinSpacing - PinWidth), \ - mm2mils100(PinWidth)+600, \ + mm2mils100(PinResist), \ '"pin%i"' % (28-pin), '"%i"' % (28-pin), '0x0000]' print ' Pad[',\ @@ -80,7 +101,7 @@ for pin in range (1,10): mm2mils100(+Overall/2 - PinWidth/2), \ mm2mils100(PinWidth), \ mm2mils100(PinSpacing - PinWidth), \ - mm2mils100(PinWidth)+600, \ + mm2mils100(PinResist), \ '"pin%i"' % pin, '"%i"' % pin, '0x0000]' print ' Pad[',\ @@ -90,7 +111,7 @@ for pin in range (1,10): mm2mils100(-2.5 + pin * PinSpacing), \ mm2mils100(PinWidth), \ mm2mils100(PinSpacing - PinWidth), \ - mm2mils100(PinWidth)+600, \ + mm2mils100(PinResist), \ '"pin%i"' % (19-pin), '"%i"' % (19-pin), '0x0000]' print ' Pad[',\ @@ -100,7 +121,7 @@ for pin in range (1,10): mm2mils100(-2.5 + pin * PinSpacing), \ mm2mils100(PinWidth), \ mm2mils100(PinSpacing - PinWidth), \ - mm2mils100(PinWidth)+600, \ + mm2mils100(PinResist), \ '"pin%i"' % (27+pin), '"%i"' % (27+pin), '0x0000]' print ' ElementArc[',\ -- 2.30.2