#
# 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
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):
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[',\
mm2mils100(+Overall/2 - PinWidth/2), \
mm2mils100(PinWidth), \
mm2mils100(PinSpacing - PinWidth), \
- mm2mils100(PinWidth)+600, \
+ mm2mils100(PinResist), \
'"pin%i"' % pin, '"%i"' % pin, '0x0000]'
print ' Pad[',\
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[',\
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[',\