--- /dev/null
+#!/usr/bin/nickle
+
+string[] read_line(file f) {
+ string line = File::fgets(f);
+
+ return String::parse_csv(line);
+}
+
+void
+print_line(file f, string[] bits) {
+ for (int i = 0; i < dim(bits); i++) {
+ string end = i == dim(bits) - 1 ? "\n" : ",";
+ printf ("%s%s", bits[i], end);
+ }
+}
+
+typedef struct {
+ string pattern;
+ int count;
+} fix_t;
+
+fix_t[] fixes = {
+ { .pattern = "RESISTOR", .count = 250 },
+ { .pattern = "CAPACITOR", .count = 100 },
+ { .pattern = "INDUCTOR", .count = 100 },
+ { .pattern = "LED", .count = 100 },
+};
+
+string[]
+fix_em(string[] elts) {
+ for (int f = 0; f < dim(fixes); f++) {
+ if (String::index(elts[2], fixes[f].pattern) >= 0) {
+ elts[0] = sprintf ("%d", fixes[f].count);
+ break;
+ }
+ }
+ return elts;
+}
+
+void
+main() {
+ while (!File::end(stdin)) {
+ string[] elts = read_line(stdin);
+ elts = fix_em(elts);
+ print_line(stdout, elts);
+ }
+}
+
+main();
saw.fp \
cubesatshield.fp \
linear-s8.fp
+ ufqfpn48.fp \
+ saw.fp \
+ tfsoj-8.fp \
+ bc4aa.fp \
+ cubesatshield.fp \
+ linear-s8.fp
.5c.fp:
nickle $*.5c > $@
--- /dev/null
+/*
+ * Copyright © 2013 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+load "footprint.5c"
+import Footprint;
+
+width = 57.2;
+
+hole_dist = 55;
+hole_diameter = 2.9;
+case_pad = 3;
+
+pin_from_hole_y = 8.1 - 3.3;
+pin_sep = 16.60;
+pin_diameter = 1.17;
+pin_dx = 26.1;
+
+height = 61.3;
+
+element_start("bc4aa");
+
+rect (-width/2, -height/2, width, height);
+
+/* mounting holes */
+pin_mm(0, hole_dist/2, hole_diameter, 0.35, "mounting", "0");
+pin_mm(0, -hole_dist/2, hole_diameter, 0.35, "mounting", "0");
+
+pin_mm_options(pin_dx, hole_dist/2 - pin_from_hole_y, pin_diameter, 0.5, "1", "1", "square");
+pin_mm(pin_dx, hole_dist/2 - pin_from_hole_y - pin_sep, pin_diameter, 0.5, "2", "2");
+
+element_end();
y2 = center_y + (height - width) / 2;
}
- real mask = thickness + process_clearance / 2;
+ real mask = thickness + clearance / 2;
printf (" Pad[");
printf (" %6d %6d %6d %6d",
--- /dev/null
+/*
+ * Copyright © 2012 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+load "footprint.5c"
+import Footprint;
+
+real pad_width = 0.25;
+real pad_height = 0.50;
+real pad_spacing = 0.5;
+
+real pad_y_off = 2.1 / 2 - pad_height/2;
+
+real package_width = 2;
+real package_height = 1.75;
+
+real num_pad = 4; /* per side */
+
+element_start("tfsoj-8");
+
+real pad_off(int n) {
+ return pad_spacing * (n - (num_pad - 1) / 2);
+}
+
+real corner(int dx, int dy) {
+ real x = dx * package_width / 2;
+ real y = dy * package_height / 2;
+ real len = 0.4;
+
+ line(x, y, x - dx * len, y);
+ line(x, y, x, y - dy * len);
+}
+
+corner(-1, -1);
+corner(1, -1);
+corner(-1, 1);
+corner(1, 1);
+
+real dot_off = -.3;
+
+line(-package_width/2 + dot_off, package_height/2 - dot_off,
+ -package_width/2 + dot_off, package_height/2 - dot_off);
+
+for (pad = 0; pad < num_pad; pad++) {
+ /* left side (1-4) */
+
+ pad_mm(pad_off(pad),
+ pad_y_off,
+ pad_width,
+ pad_height,
+ sprintf("%d", pad + 1),
+ sprintf("%d", pad + 1));
+
+ /* right side (5-8) */
+
+ pad_mm(-pad_off(pad),
+ -pad_y_off,
+ pad_width,
+ pad_height,
+ sprintf("%d", pad + 5),
+ sprintf("%d", pad + 5));
+
+}
+
+element_end();
real pad_width = 0.55;
real pad_height = 0.30;
real pad_spacing = 0.50;
-real pad_clearance = 10 / 1000 * 25.4;
+real pad_clearance = 12 / 1000 * 25.4;
real pad_x_off = 6.20 / 2;
real pad_y_off = 6.20 / 2;
}
real via_hole = 15/1000 * 25.4; /* 15 mil drill */
-real via_copper = 3.5/1000 * 25.4; /* 7 mil anulus */
+real via_copper = 7/1000 * 25.4; /* 7 mil anulus */
for (int pad_y = 0; pad_y < pad_blocks; pad_y++) {
for (int pad_x = 0; pad_x < pad_blocks; pad_x++)
if (via_block(pad_x, pad_y)) {
pin_mm_clear_mask(block_x(pad_x), block_y(pad_y),
- via_hole, via_copper * 2, pad_clearance, 0,
+ via_hole, via_hole + 2 * via_copper, pad_clearance, 0,
"GND", "GND");
pad_mm_clear_mask_options(block_x(pad_x), block_y(pad_y),
block_width, block_height,
pad_clearance, 0,
- "GND", "GND","nopaste");
+ "GND", "GND","square,nopaste");
} else {
/* full square of metal */
pad_mm_clear_options(block_x(pad_x), block_y(pad_y),
block_width, block_height,
0,
- "GND", "GND","nopaste");
+ "GND", "GND","square,nopaste");
/* 1/4 full of solder paste */
pad_mm_clear_options(block_x(pad_x), block_y(pad_y),
block_width/2, block_height/2,
0,
- "GND", "GND","");
+ "GND", "GND","square");
}
}
+++ /dev/null
-# author: Keith Packard
-# email: keithp@keithp.com
-# dist-license: GPL 2
-# use-license: unlimited
-Element ["" "ufqfpn-48" "" "" 0 0 0 0 0 100 ""]
-(
- ElementLine[ -13780 -13780 -12205 -13780 1000]
- ElementLine[ -13780 -13780 -13780 -12205 1000]
- ElementLine[ 13780 -13780 12205 -13780 1000]
- ElementLine[ 13780 -13780 13780 -12205 1000]
- ElementLine[ -13780 13780 -12205 13780 1000]
- ElementLine[ -13780 13780 -13780 12205 1000]
- ElementLine[ 13780 13780 12205 13780 1000]
- ElementLine[ 13780 13780 13780 12205 1000]
- ElementLine[ -12598 -12598 -12598 -12598 1000]
- Pad[ -13780 -10827 -12795 -10827 1181 1000 1681 "1" "1" "square"]
- Pad[ -10827 12795 -10827 13780 1181 1000 1681 "13" "13" "square"]
- Pad[ 12795 10827 13780 10827 1181 1000 1681 "25" "25" "square"]
- Pad[ 10827 -13780 10827 -12795 1181 1000 1681 "37" "37" "square"]
- Pad[ -13780 -8858 -12795 -8858 1181 1000 1681 "2" "2" "square"]
- Pad[ -8858 12795 -8858 13780 1181 1000 1681 "14" "14" "square"]
- Pad[ 12795 8858 13780 8858 1181 1000 1681 "26" "26" "square"]
- Pad[ 8858 -13780 8858 -12795 1181 1000 1681 "38" "38" "square"]
- Pad[ -13780 -6890 -12795 -6890 1181 1000 1681 "3" "3" "square"]
- Pad[ -6890 12795 -6890 13780 1181 1000 1681 "15" "15" "square"]
- Pad[ 12795 6890 13780 6890 1181 1000 1681 "27" "27" "square"]
- Pad[ 6890 -13780 6890 -12795 1181 1000 1681 "39" "39" "square"]
- Pad[ -13780 -4921 -12795 -4921 1181 1000 1681 "4" "4" "square"]
- Pad[ -4921 12795 -4921 13780 1181 1000 1681 "16" "16" "square"]
- Pad[ 12795 4921 13780 4921 1181 1000 1681 "28" "28" "square"]
- Pad[ 4921 -13780 4921 -12795 1181 1000 1681 "40" "40" "square"]
- Pad[ -13780 -2953 -12795 -2953 1181 1000 1681 "5" "5" "square"]
- Pad[ -2953 12795 -2953 13780 1181 1000 1681 "17" "17" "square"]
- Pad[ 12795 2953 13780 2953 1181 1000 1681 "29" "29" "square"]
- Pad[ 2953 -13780 2953 -12795 1181 1000 1681 "41" "41" "square"]
- Pad[ -13780 -984 -12795 -984 1181 1000 1681 "6" "6" "square"]
- Pad[ -984 12795 -984 13780 1181 1000 1681 "18" "18" "square"]
- Pad[ 12795 984 13780 984 1181 1000 1681 "30" "30" "square"]
- Pad[ 984 -13780 984 -12795 1181 1000 1681 "42" "42" "square"]
- Pad[ -13780 984 -12795 984 1181 1000 1681 "7" "7" "square"]
- Pad[ 984 12795 984 13780 1181 1000 1681 "19" "19" "square"]
- Pad[ 12795 -984 13780 -984 1181 1000 1681 "31" "31" "square"]
- Pad[ -984 -13780 -984 -12795 1181 1000 1681 "43" "43" "square"]
- Pad[ -13780 2953 -12795 2953 1181 1000 1681 "8" "8" "square"]
- Pad[ 2953 12795 2953 13780 1181 1000 1681 "20" "20" "square"]
- Pad[ 12795 -2953 13780 -2953 1181 1000 1681 "32" "32" "square"]
- Pad[ -2953 -13780 -2953 -12795 1181 1000 1681 "44" "44" "square"]
- Pad[ -13780 4921 -12795 4921 1181 1000 1681 "9" "9" "square"]
- Pad[ 4921 12795 4921 13780 1181 1000 1681 "21" "21" "square"]
- Pad[ 12795 -4921 13780 -4921 1181 1000 1681 "33" "33" "square"]
- Pad[ -4921 -13780 -4921 -12795 1181 1000 1681 "45" "45" "square"]
- Pad[ -13780 6890 -12795 6890 1181 1000 1681 "10" "10" "square"]
- Pad[ 6890 12795 6890 13780 1181 1000 1681 "22" "22" "square"]
- Pad[ 12795 -6890 13780 -6890 1181 1000 1681 "34" "34" "square"]
- Pad[ -6890 -13780 -6890 -12795 1181 1000 1681 "46" "46" "square"]
- Pad[ -13780 8858 -12795 8858 1181 1000 1681 "11" "11" "square"]
- Pad[ 8858 12795 8858 13780 1181 1000 1681 "23" "23" "square"]
- Pad[ 12795 -8858 13780 -8858 1181 1000 1681 "35" "35" "square"]
- Pad[ -8858 -13780 -8858 -12795 1181 1000 1681 "47" "47" "square"]
- Pad[ -13780 10827 -12795 10827 1181 1000 1681 "12" "12" "square"]
- Pad[ 10827 12795 10827 13780 1181 1000 1681 "24" "24" "square"]
- Pad[ 12795 -10827 13780 -10827 1181 1000 1681 "36" "36" "square"]
- Pad[ -10827 -13780 -10827 -12795 1181 1000 1681 "48" "48" "square"]
- Pin[ -7349 -7349 2900 1000 0 1500 "GND" "GND" ""]
- Pad[ -7349 -7349 -7349 -7349 7349 1000 0 "GND" "GND" "square,nopaste"]
- Pad[ 0 -7349 0 -7349 7349 0 7349 "GND" "GND" "square,nopaste"]
- Pad[ 0 -7349 0 -7349 3675 0 3675 "GND" "GND" "square"]
- Pin[ 7349 -7349 2900 1000 0 1500 "GND" "GND" ""]
- Pad[ 7349 -7349 7349 -7349 7349 1000 0 "GND" "GND" "square,nopaste"]
- Pad[ -7349 0 -7349 0 7349 0 7349 "GND" "GND" "square,nopaste"]
- Pad[ -7349 0 -7349 0 3675 0 3675 "GND" "GND" "square"]
- Pad[ 0 0 0 0 7349 0 7349 "GND" "GND" "square,nopaste"]
- Pad[ 0 0 0 0 3675 0 3675 "GND" "GND" "square"]
- Pad[ 7349 0 7349 0 7349 0 7349 "GND" "GND" "square,nopaste"]
- Pad[ 7349 0 7349 0 3675 0 3675 "GND" "GND" "square"]
- Pin[ -7349 7349 2900 1000 0 1500 "GND" "GND" ""]
- Pad[ -7349 7349 -7349 7349 7349 1000 0 "GND" "GND" "square,nopaste"]
- Pad[ 0 7349 0 7349 7349 0 7349 "GND" "GND" "square,nopaste"]
- Pad[ 0 7349 0 7349 3675 0 3675 "GND" "GND" "square"]
- Pin[ 7349 7349 2900 1000 0 1500 "GND" "GND" ""]
- Pad[ 7349 7349 7349 7349 7349 1000 0 "GND" "GND" "square,nopaste"]
-)
(define get-vendor
(lambda (package)
- (gnetlist:get-package-attribute package "vendor")))
+ (string-trim-both (gnetlist:get-package-attribute package "vendor"))))
(define get-loadstatus
(lambda (package)
- (gnetlist:get-package-attribute package "loadstatus")))
+ (string-trim-both (gnetlist:get-package-attribute package "loadstatus"))))
(define get-vendor-part-number
(lambda (package)
- (gnetlist:get-package-attribute package "vendor_part_number")))
+ (string-trim-both (gnetlist:get-package-attribute package "vendor_part_number"))))
(define get-footprint
(lambda (package)
- (gnetlist:get-package-attribute package "footprint")))
+ (string-trim-both (gnetlist:get-package-attribute package "footprint"))))
(define (get-parts-table-bom packages vendor)
(if (null? packages)
(get-parts-table-bom (cdr packages) vendor)))))
(define (get-opt-helper option list)
- (if list
+ (if (not (null? list))
(let ((param (car list)))
- (if (string-prefix? option (car param))
+ (if (and param (string-prefix? option (car param)))
(string-drop (car param) (string-length option))
(get-opt-helper option (cdr list))))
- nil)
+ #f)
)
(define (get-opt option default)
(define (get-vendor-match)
(get-opt "vendor" "digikey"))
+(define (set-quantity)
+ (let ((quant (get-opt "quantity" "1")))
+ (set! multiplier (string->number quant))))
+
(define (partslist-bom output-filename)
(let ((port (open-output-file output-filename))
(parts-table (marge-sort-with-multikey (get-parts-table-bom packages (get-vendor-match)) '(1 2 3 0))))
(set! parts-table (count-same-parts parts-table))
+ (set-quantity)
(partslist-bom:write-partslist parts-table port)
(close-output-port port)))
--- /dev/null
+v 20121123 2
+B 400 400 3500 6200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+P 4400 6400 3900 6400 1 0 0
+{
+T 4400 6400 5 10 0 0 0 0 1
+pintype=out
+T 3845 6395 5 10 1 1 0 6 1
+pinlabel=TXD
+T 3995 6445 5 10 1 1 0 0 1
+pinnumber=30
+T 4400 6400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 5900 3900 5900 1 0 0
+{
+T 4400 5900 5 10 0 0 0 0 1
+pintype=in
+T 3845 5895 5 10 1 1 0 6 1
+pinlabel=RXD
+T 3995 5945 5 10 1 1 0 0 1
+pinnumber=2
+T 4400 5900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 5400 3900 5400 1 0 0
+{
+T 4400 5400 5 10 0 0 0 0 1
+pintype=io
+T 3845 5395 5 10 1 1 0 6 1
+pinlabel=RTS
+T 3995 5445 5 10 1 1 0 0 1
+pinnumber=32
+T 4400 5400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 4900 3900 4900 1 0 0
+{
+T 4400 4900 5 10 0 0 0 0 1
+pintype=io
+T 3845 4895 5 10 1 1 0 6 1
+pinlabel=CTS
+T 3995 4945 5 10 1 1 0 0 1
+pinnumber=8
+T 4400 4900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 2400 3900 2400 1 0 0
+{
+T 4400 2400 5 10 0 0 0 0 1
+pintype=io
+T 3845 2395 5 10 1 1 0 6 1
+pinlabel=CBUS0
+T 3995 2445 5 10 1 1 0 0 1
+pinnumber=22
+T 4400 2400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 1900 3900 1900 1 0 0
+{
+T 4400 1900 5 10 0 0 0 0 1
+pintype=io
+T 3845 1895 5 10 1 1 0 6 1
+pinlabel=CBUS1
+T 3995 1945 5 10 1 1 0 0 1
+pinnumber=21
+T 4400 1900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 1400 3900 1400 1 0 0
+{
+T 4400 1400 5 10 0 0 0 0 1
+pintype=io
+T 3845 1395 5 10 1 1 0 6 1
+pinlabel=CBUS2
+T 3995 1445 5 10 1 1 0 0 1
+pinnumber=10
+T 4400 1400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 900 3900 900 1 0 0
+{
+T 4400 900 5 10 0 0 0 0 1
+pintype=io
+T 3845 895 5 10 1 1 0 6 1
+pinlabel=CBUS3
+T 3995 945 5 10 1 1 0 0 1
+pinnumber=11
+T 4400 900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 1900 0 1900 400 1 0 0
+{
+T 1900 0 5 10 0 0 0 0 1
+pintype=pwr
+T 1900 505 5 10 1 1 90 0 1
+pinlabel=GND
+T 1850 305 5 10 1 1 90 6 1
+pinnumber=17
+T 1900 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 1400 0 1400 400 1 0 0
+{
+T 1400 0 5 10 0 0 0 0 1
+pintype=pwr
+T 1400 505 5 10 1 1 90 0 1
+pinlabel=GND
+T 1350 305 5 10 1 1 90 6 1
+pinnumber=4
+T 1400 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 1400 400 1400 1 0 0
+{
+T 0 1400 5 10 0 0 0 0 1
+pintype=pwr
+T 455 1395 5 10 1 1 0 0 1
+pinlabel=3V3OUT
+T 305 1445 5 10 1 1 0 6 1
+pinnumber=16
+T 0 1400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 5300 400 5300 1 0 0
+{
+T 0 5300 5 10 0 0 0 0 1
+pintype=io
+T 455 5295 5 10 1 1 0 0 1
+pinlabel=USBD-
+T 305 5345 5 10 1 1 0 6 1
+pinnumber=15
+T 0 5300 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 4800 400 4800 1 0 0
+{
+T 0 4800 5 10 0 0 0 0 1
+pintype=io
+T 455 4795 5 10 1 1 0 0 1
+pinlabel=USBD+
+T 305 4845 5 10 1 1 0 6 1
+pinnumber=14
+T 0 4800 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 2900 400 2900 1 0 0
+{
+T 0 2900 5 10 0 0 0 0 1
+pintype=io
+T 455 2895 5 10 1 1 0 0 1
+pinlabel=RESET
+T 305 2945 5 10 1 1 0 6 1
+pinnumber=18
+T 0 2900 5 10 0 0 0 0 1
+pinseq=0
+}
+T 395 6695 8 10 1 1 0 0 1
+refdes=U?
+T 16495 54595 8 10 0 1 0 0 1
+device=IC
+T 1695 4795 8 10 1 1 0 0 1
+value=FT232RQ
+T 18195 49795 8 10 0 1 0 0 1
+footprint=ssop-16
+P 4400 4400 3900 4400 1 0 0
+{
+T 4400 4400 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 4395 5 10 1 1 0 6 1
+pinlabel=DTR
+T 3995 4445 5 10 1 1 0 0 1
+pinnumber=31
+T 4400 4400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 3900 3900 3900 1 0 0
+{
+T 4400 3900 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 3895 5 10 1 1 0 6 1
+pinlabel=DSR
+T 3995 3945 5 10 1 1 0 0 1
+pinnumber=6
+T 4400 3900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 3400 3900 3400 1 0 0
+{
+T 4400 3400 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 3395 5 10 1 1 0 6 1
+pinlabel=DCD
+T 3995 3445 5 10 1 1 0 0 1
+pinnumber=7
+T 4400 3400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 2900 3900 2900 1 0 0
+{
+T 4400 2900 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 2895 5 10 1 1 0 6 1
+pinlabel=RI
+T 3995 2945 5 10 1 1 0 0 1
+pinnumber=3
+T 4400 2900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 2400 0 2400 400 1 0 0
+{
+T 2400 0 5 10 0 0 0 0 1
+pintype=unknown
+T 2400 455 5 10 1 1 90 0 1
+pinlabel=GND
+T 2350 305 5 10 1 1 90 6 1
+pinnumber=20
+T 2400 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 2900 0 2900 400 1 0 0
+{
+T 2900 0 5 10 0 0 0 0 1
+pintype=unknown
+T 2900 455 5 10 1 1 90 0 1
+pinlabel=TEST
+T 2850 305 5 10 1 1 90 6 1
+pinnumber=26
+T 2900 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 900 0 900 400 1 0 0
+{
+T 900 0 5 10 0 0 0 0 1
+pintype=unknown
+T 900 455 5 10 1 1 90 0 1
+pinlabel=AGND
+T 850 305 5 10 1 1 90 6 1
+pinnumber=24
+T 900 0 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 2400 400 2400 1 0 0
+{
+T 0 2400 5 10 0 0 0 0 1
+pintype=unknown
+T 455 2395 5 10 1 1 0 0 1
+pinlabel=OSCI
+T 305 2445 5 10 1 1 0 6 1
+pinnumber=27
+T 0 2400 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 1900 400 1900 1 0 0
+{
+T 0 1900 5 10 0 0 0 0 1
+pintype=unknown
+T 455 1895 5 10 1 1 0 0 1
+pinlabel=OSCO
+T 305 1945 5 10 1 1 0 6 1
+pinnumber=28
+T 0 1900 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 5800 400 5800 1 0 0
+{
+T 0 5800 5 10 0 0 0 0 1
+pintype=unknown
+T 455 5795 5 10 1 1 0 0 1
+pinlabel=VCC
+T 305 5845 5 10 1 1 0 6 1
+pinnumber=19
+T 0 5800 5 10 0 0 0 0 1
+pinseq=0
+}
+P 0 6300 400 6300 1 0 0
+{
+T 0 6300 5 10 0 0 0 0 1
+pintype=unknown
+T 455 6295 5 10 1 1 0 0 1
+pinlabel=VCCIO
+T 305 6345 5 10 1 1 0 6 1
+pinnumber=1
+T 0 6300 5 10 0 0 0 0 1
+pinseq=0
+}
+P 4400 500 3900 500 1 0 0
+{
+T 4400 500 5 10 0 0 0 0 1
+pintype=unknown
+T 3845 495 5 10 1 1 0 6 1
+pinlabel=CBUS4
+T 3995 545 5 10 1 1 0 0 1
+pinnumber=9
+T 4400 500 5 10 0 0 0 0 1
+pinseq=0
+}