Use the ATMEL QFN appnote AT88RF1354 to build a more credible footprint
authorKeith Packard <keithp@keithp.com>
Mon, 13 Aug 2012 06:07:37 +0000 (23:07 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 13 Aug 2012 06:09:32 +0000 (23:09 -0700)
This steals the CC1111 footprint generator and hacks it to create an
ATTiny85 footprint.

Signed-off-by: Keith Packard <keithp@keithp.com>
micropeak.pcb
micropeak.sch
packages/MO-220.fp [new file with mode: 0644]
packages/MO-220.py [new file with mode: 0644]

index 373de21562056cf8a2d5b468b754e88c6f11ec74..9b807d8775c54c4c5351b2cfdfae6234e0ff6f81 100644 (file)
@@ -6,7 +6,7 @@ FileVersion[20070407]
 PCB["MicroPeak" 70000 56000]
 
 Grid[100.0 0 0 0]
-Cursor[0 0 0.000000]
+Cursor[2900 0 0.000000]
 PolyArea[200000000.000000]
 Thermal[0.500000]
 DRC[500 1000 500 500 1500 650]
@@ -787,8 +787,8 @@ Symbol['~' 1200]
        SymbolLine[2000 3500 2500 3000 800]
 )
 Attribute("PCB::grid::unit" "mil")
-Via[51300 33000 3600 2000 0 2000 "" "thermal(1X)"]
-Via[51300 37600 3600 2000 0 2000 "" "thermal(1X)"]
+Via[55800 32000 3600 2000 0 2000 "" "thermal(1S)"]
+Via[55800 38600 3600 2000 0 2000 "" "thermal(1S)"]
 Via[51900 4200 3600 2000 0 2000 "" "thermal(1S)"]
 Via[39900 12200 3600 2000 0 2000 "" ""]
 Via[37000 18400 3600 2000 0 2000 "" ""]
@@ -797,8 +797,10 @@ Via[64800 1800 3600 2000 0 2000 "" "thermal(1S)"]
 Via[26500 15100 3600 2000 0 2000 "" "thermal(1S)"]
 Via[32400 48100 3600 2000 0 2000 "" "thermal(1S)"]
 Via[49500 22500 3600 2000 0 2000 "" ""]
-Via[46600 46500 3600 2000 0 2000 "" ""]
 Via[21200 30300 3600 2000 0 2000 "" "thermal(1S)"]
+Via[49200 38600 3600 2000 0 2000 "" "thermal(1S)"]
+Via[49200 32000 3600 2000 0 2000 "" "thermal(1S)"]
+Via[50200 45600 3600 2000 0 2000 "" ""]
 
 Element["" "0603diode" "D1" "red" 35000 52500 -11800 -3000 0 100 ""]
 (
@@ -834,7 +836,7 @@ Element["" "hole-M2.5" "H2" "unknown" 7500 48500 -16900 -21000 0 100 ""]
 
        )
 
-Element["" "hole-M2.5" "H1" "unknown" 62500 48500 -16900 -21000 0 100 ""]
+Element["" "hole-M2.5" "H1" "unknown" 62500 48500 -2500 -3200 0 100 ""]
 (
        Pin[0 0 11000 2000 11000 9800 "1" "1" "usetherm,thermal(1S)"]
        ElementArc [0 0 7000 7000 0 360 1000]
@@ -862,44 +864,13 @@ Element["" "0402" "C2" "0.1uF" 64800 6700 -1698 7624 0 100 ""]
 
        )
 
-Element["" "0402" "C1" "0.1uF" 34974 28100 -9198 -3298 0 100 ""]
+Element["" "0402" "C1" "0.1uF" 39874 28100 -9198 -3298 0 100 ""]
 (
        Pad[-1574 -393 -1574 393 1968 2000 2568 "1" "1" "square"]
        Pad[1574 -393 1574 393 1968 2000 2568 "2" "2" "square"]
 
        )
 
-Element["" "QFN20_4" "U1" "unknown" 49000 35300 -9358 -16308 0 100 ""]
-(
-       Pad[-3937 5866 -3937 8307 1102 2000 1402 "(PCINT5/nRESET/ADC0/dW) PB5" "1" "square,edge2"]
-       Pad[-1968 5866 -1968 8307 1102 2000 1402 "(PCINT3/XTAL1/CLKI/nOC1B/ADC3) PB3" "2" "square,edge2"]
-       Pad[0 5866 0 8307 1102 2000 1402 "3" "3" "square,edge2"]
-       Pad[1968 5866 1968 8307 1102 2000 1402 "4" "4" "square,edge2"]
-       Pad[3937 5866 3937 8307 1102 2000 1402 "(PCINT4/XTAL2/CLK)/OC1B/ADC2) PB4" "5" "square,edge2"]
-       Pad[5866 3937 8307 3937 1102 2000 1402 "6" "6" "square,octagon,edge2"]
-       Pad[5866 1968 8307 1968 1102 2000 1402 "7" "7" "square,octagon,edge2"]
-       Pad[5866 0 8307 0 1102 2000 1402 "GND" "8" "square,octagon,edge2"]
-       Pad[5866 -1968 8307 -1968 1102 2000 1402 "9" "9" "square,octagon,edge2"]
-       Pad[5866 -3937 8307 -3937 1102 2000 1402 "10" "10" "square,octagon,edge2"]
-       Pad[3937 -8307 3937 -5866 1102 2000 1402 "(MOSI/DI/SDA/AIN0/OC0A/nOC1A/AREF/PCINT0) PB0" "11" "square"]
-       Pad[1968 -8307 1968 -5866 1102 2000 1402 "(MISO/DO/AIN1/OC0B/OC1A/PCINT1) PB1" "12" "square"]
-       Pad[0 -8307 0 -5866 1102 2000 1402 "13" "13" "square"]
-       Pad[-1968 -8307 -1968 -5866 1102 2000 1402 "(SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) PB2" "14" "square"]
-       Pad[-3937 -8307 -3937 -5866 1102 2000 1402 "VCC" "15" "square"]
-       Pad[-8307 -3937 -5866 -3937 1102 2000 1402 "16" "16" "square,octagon"]
-       Pad[-8307 -1968 -5866 -1968 1102 2000 1402 "17" "17" "square,octagon"]
-       Pad[-8307 0 -5866 0 1102 2000 1402 "18" "18" "square,octagon"]
-       Pad[-8307 1968 -5866 1968 1102 2000 1402 "19" "19" "square,octagon"]
-       Pad[-8307 3937 -5866 3937 1102 2000 1402 "20" "20" "square,octagon"]
-       Pad[0 0 0 0 10236 1000 10736 "GND Exposed" "21" "square,octagon,edge2"]
-       ElementLine [-9858 -9858 9858 -9858 1000]
-       ElementLine [-9858 -9858 -9858 9858 1000]
-       ElementLine [-9858 9858 9858 9858 1000]
-       ElementLine [9858 -9858 9858 9858 1000]
-       ElementLine [-9858 9858 -11358 11358 1000]
-
-       )
-
 Element["" "MS5611" "U2" "unknown" 51900 12200 -16961 -10811 0 100 ""]
 (
        Pad[7381 3345 7381 5314 2362 2559 2962 "SCLK" "8" "square,edge2"]
@@ -934,6 +905,47 @@ Element["" "pico-ezmate-2" "J1" "unknown" 17100 28000 5951 -8869 0 100 ""]
        ElementLine [-17000 -11000 -17000 -6000 100]
        ElementLine [-17000 -11000 1000 -11000 100]
 
+       )
+
+Element["" "MO-220" "U1" "unknown" 52500 35300 -10300 -11000 0 100 ""]
+(
+       Pad[0 0 0 0 10236 0 0 "pin21" "21" "square,nopaste"]
+       Pad[-3411 -3411 -3411 -3411 3412 0 0 "pin21" "21" "square,nopaste"]
+       Pad[0 -3411 0 -3411 3412 0 3412 "pin21" "21" "square,nopaste"]
+       Pad[0 -3411 0 -3411 1500 0 3412 "pin21" "21" "square"]
+       Pad[3412 -3411 3412 -3411 3412 0 0 "pin21" "21" "square,edge2,nopaste"]
+       Pad[-3411 0 -3411 0 3412 0 3412 "pin21" "21" "square,nopaste"]
+       Pad[-3411 0 -3411 0 1500 0 3412 "pin21" "21" "square"]
+       Pad[0 0 0 0 3412 0 3412 "pin21" "21" "square,nopaste"]
+       Pad[0 0 0 0 1500 0 3412 "pin21" "21" "square"]
+       Pad[3412 0 3412 0 3412 0 3412 "pin21" "21" "square,edge2,nopaste"]
+       Pad[3412 0 3412 0 1500 0 3412 "pin21" "21" "square,edge2"]
+       Pad[-3411 3412 -3411 3412 3412 0 0 "pin21" "21" "square,nopaste"]
+       Pad[0 3412 0 3412 3412 0 3412 "pin21" "21" "square,nopaste"]
+       Pad[0 3412 0 3412 1500 0 3412 "pin21" "21" "square"]
+       Pad[3412 3412 3412 3412 3412 0 0 "pin21" "21" "square,edge2,nopaste"]
+       Pad[-3936 -7912 -3936 -6653 906 1063 1457 "pin15" "15" ""]
+       Pad[-3936 6654 -3936 7913 906 1063 1457 "pin1" "1" "edge2"]
+       Pad[6654 -3936 7913 -3936 906 1063 1457 "pin10" "10" "edge2"]
+       Pad[-7912 -3936 -6653 -3936 906 1063 1457 "pin16" "16" ""]
+       Pad[-1968 -7912 -1968 -6653 906 1063 1457 "pin14" "14" ""]
+       Pad[-1968 6654 -1968 7913 906 1063 1457 "pin2" "2" "edge2"]
+       Pad[6654 -1968 7913 -1968 906 1063 1457 "pin9" "9" "edge2"]
+       Pad[-7912 -1968 -6653 -1968 906 1063 1457 "pin17" "17" ""]
+       Pad[0 -7912 0 -6653 906 1063 1457 "pin13" "13" ""]
+       Pad[0 6654 0 7913 906 1063 1457 "pin3" "3" "edge2"]
+       Pad[6654 0 7913 0 906 1063 1457 "pin8" "8" "edge2"]
+       Pad[-7912 0 -6653 0 906 1063 1457 "pin18" "18" ""]
+       Pad[1969 -7912 1969 -6653 906 1063 1457 "pin12" "12" ""]
+       Pad[1969 6654 1969 7913 906 1063 1457 "pin4" "4" "edge2"]
+       Pad[6654 1969 7913 1969 906 1063 1457 "pin7" "7" "edge2"]
+       Pad[-7912 1969 -6653 1969 906 1063 1457 "pin19" "19" ""]
+       Pad[3937 -7912 3937 -6653 906 1063 1457 "pin11" "11" ""]
+       Pad[3937 6654 3937 7913 906 1063 1457 "pin5" "5" "edge2"]
+       Pad[6654 3937 7913 3937 906 1063 1457 "pin6" "6" "edge2"]
+       Pad[-7912 3937 -6653 3937 906 1063 1457 "pin20" "20" ""]
+       ElementArc [-7873 7874 500 500 0 360 1000]
+
        )
 Layer(1 "top")
 (
@@ -962,39 +974,37 @@ Layer(1 "top")
        Line[32441 52500 32441 48141 1000 2000 ""]
        Line[32441 48141 32400 48100 1000 2000 ""]
        Line[37559 52500 41326 52500 1000 2000 ""]
-       Line[50968 28214 50968 25032 1000 2000 "clearline"]
-       Line[50968 25032 52400 23600 1000 2000 "clearline"]
-       Line[52400 23600 52400 21300 1000 2000 "clearline"]
-       Line[49439 16530 49439 18339 1000 2000 "clearline"]
-       Line[52400 21300 49439 18339 1000 2000 "clearline"]
-       Line[54360 16530 54360 24140 1000 2000 "clearline"]
-       Line[54360 24140 53000 25500 1000 2000 "clearline"]
-       Line[53000 25500 53000 28150 1000 2000 "clearline"]
-       Line[53000 28150 52937 28214 1000 2000 "clearline"]
-       Line[56086 35300 58800 35300 1000 2000 "clearline"]
-       Line[58800 35300 62500 39000 1000 2000 "clearline"]
-       Line[62500 39000 62500 48500 1000 2000 "clearline"]
-       Line[47032 28214 47032 24968 1000 2000 "clearline"]
-       Line[47032 24968 49500 22500 1000 2000 "clearline"]
-       Line[47032 42386 47032 46068 1000 2000 "clearline"]
-       Line[47032 46068 46600 46500 1000 2000 "clearline"]
-       Line[44474 52500 45400 52500 1000 2000 "clearline"]
-       Line[45400 52500 52900 45000 1000 2000 "clearline"]
-       Line[52900 45000 52900 42424 1000 2000 "clearline"]
-       Line[52900 42424 52937 42386 1000 2000 "clearline"]
-       Line[45063 28214 45063 26463 1000 2000 "clearline"]
-       Line[45063 26463 37000 18400 1000 2000 "clearline"]
-       Line[45063 42386 39786 42386 1000 2000 "clearline"]
-       Line[36548 28100 45063 28100 1000 2000 "clearline"]
-       Line[26500 15100 26500 23100 1000 2000 "clearline"]
-       Line[26500 23100 31500 28100 1000 2000 "clearline"]
-       Line[31500 28100 33400 28100 1000 2000 "clearline"]
        Line[17100 30362 21138 30362 1000 2000 "clearline"]
        Line[21138 30362 21200 30300 1000 2000 "clearline"]
-       Line[39814 42386 39786 42386 1000 2000 "clearline"]
-       Line[39786 42386 23000 25600 1000 2000 "clearline"]
        Line[23000 25600 17138 25600 1000 2000 "clearline"]
        Line[17138 25600 17100 25638 1000 2000 "clearline"]
+       Line[56437 28018 56437 21837 1000 2000 "clearline"]
+       Line[56437 21837 54400 19800 1000 2000 "clearline"]
+       Line[54400 19800 54400 16570 1000 2000 "clearline"]
+       Line[54400 16570 54360 16530 1000 2000 "clearline"]
+       Line[54469 28018 54469 23269 1000 2000 "clearline"]
+       Line[54469 23269 49500 18300 1000 2000 "clearline"]
+       Line[49500 18300 49500 16590 1000 2000 "clearline"]
+       Line[49500 16590 49439 16530 1000 2000 "clearline"]
+       Line[50532 28018 50532 23532 1000 2000 "clearline"]
+       Line[50532 23532 49500 22500 1000 2000 "clearline"]
+       Line[48564 42584 39984 42584 1000 2000 "clearline"]
+       Line[39984 42584 23000 25600 1000 2000 "clearline"]
+       Line[56437 42584 56437 43463 1000 2000 "clearline"]
+       Line[56437 43463 47400 52500 1000 2000 "clearline"]
+       Line[47400 52500 44474 52500 1000 2000 "clearline"]
+       Line[50532 42584 50532 45268 1000 2000 "clearline"]
+       Line[50532 45268 50200 45600 1000 2000 "clearline"]
+       Line[62500 48500 62500 36100 1000 2000 "clearline"]
+       Line[62500 36100 61700 35300 1000 2000 "clearline"]
+       Line[61700 35300 59784 35300 1000 2000 "clearline"]
+       Line[41448 28100 48482 28100 1000 2000 "clearline"]
+       Line[48482 28100 48564 28018 1000 2000 "clearline"]
+       Line[48564 28018 46618 28018 1000 2000 "clearline"]
+       Line[46618 28018 37000 18400 1000 2000 "clearline"]
+       Line[38300 28100 36500 28100 1000 2000 "clearline"]
+       Line[36500 28100 26500 18100 1000 2000 "clearline"]
+       Line[26500 18100 26500 15100 1000 2000 "clearline"]
 )
 Layer(2 "bottom")
 (
@@ -1004,11 +1014,12 @@ Layer(2 "bottom")
        Line[55900 28000 55600 27700 2500 2000 ""]
        Line[39900 12200 39900 13400 1000 2000 "clearline"]
        Line[39900 13400 46600 20100 1000 2000 "clearline"]
-       Line[46600 20100 46600 46500 1000 2000 "clearline"]
        Line[63600 42000 63600 18300 2500 2000 ""]
        Line[49500 22500 54500 22500 1000 2000 "clearline"]
        Line[54500 22500 64800 12200 1000 2000 "clearline"]
        Line[37000 18400 37000 23200 2500 2000 "clearline"]
+       Line[46600 20100 46600 42000 1000 2000 "clearline"]
+       Line[46600 42000 50200 45600 1000 2000 "clearline"]
        Polygon("clearpoly")
        (
                [500 500] [69500 500] [69500 55500] [500 55500] 
index 7bd89cecc2439268e29ba1198b9fae0f437c8a3d..7845ba70aa739aa59af45ad35f20025da8ef6ed0 100644 (file)
@@ -3,7 +3,7 @@ C 40000 40000 0 0 0 title-B.sym
 C 42000 44500 1 0 0 attiny85.sym
 {
 T 41995 44475 5 10 0 1 0 0 1
-footprint=QFN20_4
+footprint=MO-220
 T 46900 48100 5 10 1 1 0 0 1
 refdes=U1
 T 42400 48100 5 10 1 1 0 0 1
diff --git a/packages/MO-220.fp b/packages/MO-220.fp
new file mode 100644 (file)
index 0000000..316a73b
--- /dev/null
@@ -0,0 +1,43 @@
+# author: Keith Packard
+# email: keithp@keithp.com
+# dist-license: GPL 2
+# use-license: unlimited
+Element[0x0 "MO-220" "" "" 0 0 0 0 0 100 0x0]
+(
+   Pad[ 0 0 0 0 10236 0 0 "pin21" "21" "square,nopaste"]
+   Pad[ -3411 -3411 -3411 -3411 3412 0 0 "pin21" "21" "square,nopaste"]
+   Pad[ 0 -3411 0 -3411 3412 0 3412 "pin21" "21" "square,nopaste"]
+   Pad[ 0 -3411 0 -3411 1500 0 3412 "pin21" "21" "square"]
+   Pad[ 3412 -3411 3412 -3411 3412 0 0 "pin21" "21" "square,nopaste"]
+   Pad[ -3411 0 -3411 0 3412 0 3412 "pin21" "21" "square,nopaste"]
+   Pad[ -3411 0 -3411 0 1500 0 3412 "pin21" "21" "square"]
+   Pad[ 0 0 0 0 3412 0 3412 "pin21" "21" "square,nopaste"]
+   Pad[ 0 0 0 0 1500 0 3412 "pin21" "21" "square"]
+   Pad[ 3412 0 3412 0 3412 0 3412 "pin21" "21" "square,nopaste"]
+   Pad[ 3412 0 3412 0 1500 0 3412 "pin21" "21" "square"]
+   Pad[ -3411 3412 -3411 3412 3412 0 0 "pin21" "21" "square,nopaste"]
+   Pad[ 0 3412 0 3412 3412 0 3412 "pin21" "21" "square,nopaste"]
+   Pad[ 0 3412 0 3412 1500 0 3412 "pin21" "21" "square"]
+   Pad[ 3412 3412 3412 3412 3412 0 0 "pin21" "21" "square,nopaste"]
+   Pad[ -3936 -7912 -3936 -6653 906 1063 1457 "pin15" "15" 0x0000]
+   Pad[ -3936 6654 -3936 7913 906 1063 1457 "pin1" "1" 0x0000]
+   Pad[ 6654 -3936 7913 -3936 906 1063 1457 "pin10" "10" 0x0000]
+   Pad[ -7912 -3936 -6653 -3936 906 1063 1457 "pin16" "16" 0x0000]
+   Pad[ -1968 -7912 -1968 -6653 906 1063 1457 "pin14" "14" 0x0000]
+   Pad[ -1968 6654 -1968 7913 906 1063 1457 "pin2" "2" 0x0000]
+   Pad[ 6654 -1968 7913 -1968 906 1063 1457 "pin9" "9" 0x0000]
+   Pad[ -7912 -1968 -6653 -1968 906 1063 1457 "pin17" "17" 0x0000]
+   Pad[ 0 -7912 0 -6653 906 1063 1457 "pin13" "13" 0x0000]
+   Pad[ 0 6654 0 7913 906 1063 1457 "pin3" "3" 0x0000]
+   Pad[ 6654 0 7913 0 906 1063 1457 "pin8" "8" 0x0000]
+   Pad[ -7912 0 -6653 0 906 1063 1457 "pin18" "18" 0x0000]
+   Pad[ 1969 -7912 1969 -6653 906 1063 1457 "pin12" "12" 0x0000]
+   Pad[ 1969 6654 1969 7913 906 1063 1457 "pin4" "4" 0x0000]
+   Pad[ 6654 1969 7913 1969 906 1063 1457 "pin7" "7" 0x0000]
+   Pad[ -7912 1969 -6653 1969 906 1063 1457 "pin19" "19" 0x0000]
+   Pad[ 3937 -7912 3937 -6653 906 1063 1457 "pin11" "11" 0x0000]
+   Pad[ 3937 6654 3937 7913 906 1063 1457 "pin5" "5" 0x0000]
+   Pad[ 6654 3937 7913 3937 906 1063 1457 "pin6" "6" 0x0000]
+   Pad[ -7912 3937 -6653 3937 906 1063 1457 "pin20" "20" 0x0000]
+   ElementArc[ -7873 7874 500 500 0 360 1000 ]
+)
diff --git a/packages/MO-220.py b/packages/MO-220.py
new file mode 100644 (file)
index 0000000..aeae929
--- /dev/null
@@ -0,0 +1,144 @@
+#!/usr/bin/python
+# Copyright 2011 by Bdale Garbee <bdale@gag.com>.  GPLv2
+#
+# Program to emit PCB footprint for MO-220 package used by the ATTiny85
+#
+
+# dimensions in mm from the ATTiny datasheed
+
+PinWidth = 0.23          # b   
+PinHeight = 0.55  # L
+PinSpacing = 0.50 # e
+Overall = 4.25    # E
+GndSquare = 2.60  # D2 & E2
+CoreSquare = 2.60
+
+# ATMEL specifies 120-150 microns between pad and solder mask
+# AT88RF1354 Appplication note
+#
+PinResist = PinWidth + (2 * 0.07)
+
+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: Keith Packard'
+print '# email: keithp@keithp.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "MO-220" "" "" 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, \
+       '"pin21" "21" "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), \
+#      2900, \
+#      2500, \
+#      0, \
+#      1500, \
+#      '"pin21" "21" 0x0002]'
+
+# break pad under chip into a grid to control the resist and paste masks
+
+blocks=3
+
+for viarow in range (-1, 2):
+  for viacol in range (-1, 2):
+    if (viarow in (-1, 1)) and (viacol in (-1, 1)):
+      # copper sub-square with resist over vias
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100((CoreSquare)/blocks), \
+       0, \
+       0, \
+       '"pin21" "21" "square,nopaste"]'
+    else:
+      # copper sub-square without resist
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100((CoreSquare)/blocks), \
+       0, \
+       mm2mils100((CoreSquare)/blocks), \
+       '"pin21" "21" "square,nopaste"]'
+      # copper spot to control paste mask generation
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       1500, \
+       0, \
+       mm2mils100((CoreSquare)/blocks), \
+       '"pin21" "21" "square"]'
+
+# pins
+for pin in range (1,6):
+    print '   Pad[',\
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (16-pin), '"%i"' % (16-pin), '0x0000]'
+
+    print '   Pad[',\
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
+       mm2mils100((-3 + 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((-3 + pin) * PinSpacing), \
+       mm2mils100(Overall/2 - PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (11-pin), '"%i"' % (11-pin), '0x0000]'
+
+    print '   Pad[',\
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (15+pin), '"%i"' % (15+pin), '0x0000]'
+
+print '   ElementArc[',\
+       mm2mils100(-2.0), \
+       mm2mils100(2.0), \
+       '500 500 0 360 1000 ]'
+print ")"