--- /dev/null
+#! /usr/bin/python3
+#
+# generate lihata footprint for 4ucon 11071 tabbed micro USB connector
+# Copyright 2020 by Bdale Garbee <bdale@gag.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, either version 3 of the License, or
+# (at your option) any later version.
+#
+# 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.
+
+import math
+from fplht import *
+
+# dimensions taken from 4ucon part drawing
+# note that we define Y origin to be the board edge, not center mass
+
+pad_width = 0.4
+pad_height = 1.35
+pad_spacing = 0.65
+pad_y = 1.45 + 3.35 - pad_height/2
+
+tab_width = 1.9
+tab_height = 1.9
+tab_x = 0.2 + tab_width / 2
+tab_y = 1.45
+
+slot_x = 6.40 / 2
+slot_y = 1.45
+slot_width = 0.45
+slot_height = 1.55
+slot_copper = (2.15 - 1.55) / 2
+
+wing_width = 1.6
+wing_height = 1.4
+wing_x = 3.2
+wing_y = 1.45 + 2.25
+
+fp = footprint()
+
+fp.name = "11071"
+fp.description = "4ucon 11071 tabbed micro USB connector"
+fp.copyright = "Copyright 2020 by Bdale Garbee <bdale@gag.com>"
+
+fp.pad({'x' : pad_spacing* 2,
+ 'y' : pad_y,
+ 'width' : pad_width,
+ 'height' : pad_height,
+ 'name' : 'VBUS',
+ 'number' : '1'})
+fp.pad({'x' : pad_spacing* 1,
+ 'y' : pad_y,
+ 'width' : pad_width,
+ 'height' : pad_height,
+ 'name' : 'D-',
+ 'number' : '2'})
+fp.pad({'x' : pad_spacing* 0,
+ 'y' : pad_y,
+ 'width' : pad_width,
+ 'height' : pad_height,
+ 'name' : 'D+',
+ 'number' : '3'})
+fp.pad({'x' : pad_spacing* -1,
+ 'y' : pad_y,
+ 'width' : pad_width,
+ 'height' : pad_height,
+ 'name' : 'HS',
+ 'number' : '4'})
+fp.pad({'x' : pad_spacing* -2,
+ 'y' : pad_y,
+ 'width' : pad_width,
+ 'height' : pad_height,
+ 'name' : 'GND',
+ 'number' : '5'})
+
+# mounting "wings", or tabs next to the signal pads
+
+fp.pad({'x' : -wing_x,
+ 'y' : wing_y,
+ 'width' : wing_width,
+ 'height' : wing_height,
+ 'spacing' : 0,
+ 'name' : "",
+ 'number' : "G"})
+fp.pad({'x' : wing_x,
+ 'y' : wing_y,
+ 'width' : wing_width,
+ 'height' : wing_height,
+ 'spacing' : 0,
+ 'name' : "",
+ 'number' : "G"})
+
+# mounting tabs under package
+
+fp.pad({'x' : -tab_x,
+ 'y' : tab_y,
+ 'width' : tab_width,
+ 'height' : tab_height,
+ 'spacing' : 0,
+ 'name' : "",
+ 'number' : "G"})
+fp.pad({'x' : tab_x,
+ 'y' : tab_y,
+ 'width' : tab_width,
+ 'height' : tab_height,
+ 'spacing' : 0,
+ 'name' : "",
+ 'number' : "G"})
+
+# slots for through-hole mounting tabs
+fp.slot({'x' : -slot_x,
+ 'y' : slot_y,
+ 'width' : slot_width,
+ 'height' : slot_height,
+ 'thickness' : slot_width + slot_copper * 2,
+ 'name' : 'GND',
+ 'number' : 5})
+fp.slot({'x' : slot_x,
+ 'y' : slot_y,
+ 'width' : slot_width,
+ 'height' : slot_height,
+ 'thickness' : slot_width + slot_copper * 2,
+ 'name' : 'GND',
+ 'number' : 5})
+
+fp.emit()
-#!/usr/bin/python
+#!/usr/bin/python3
# Copyright 2013 by Bdale Garbee <bdale@gag.com>. GPLv2
#
# Program to emit PCB footprint for Vishay 1212-8 dual FET package
-.SUFFIXES: .5c .py .fp
+.SUFFIXES: .5c .py .fp .lht
DIRS= \
diodes \
ufqfpn24.fp \
sot666.fp \
sot323.fp \
+ sod323.fp \
sod123.fp \
0806.fp \
fuse345.fp \
s-pqfp-g32.fp \
A29100-009.fp \
506CD.fp \
+ 11071.lht \
11071.fp \
M1040M.fp \
pts645.fp \
.py.fp:
python $*.py > $@
+.py.lht:
+ python $*.py > $@
+
BUILDDIRS=$(DIRS:%=build-%)
CLEANDIRS=$(DIRS:%=clean-%)
$(CLEANDIRS):
$(MAKE) -C $(@:clean-%=%) clean
-$(FOOTPRINTS): footprint.5c
+$(FOOTPRINTS): footprint.5c fplht.py
clean: $(CLEANDIRS)
- rm -f $(FOOTPRINTS)
+ rm -f $(FOOTPRINTS) *.pyc
+ rm -rf __pycache__
.PHONY: subdirs $(DIRS)
.PHONY: subdirs $(BUILDDIRS)
--- /dev/null
+#! /usr/bin/python3
+# Python library to assist in generating lihata format footprints for pcb-rnd
+# Copyright 2020 by Bdale Garbee <bdale@gag.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, either version 3 of the License, or
+# (at your option) any later version.
+#
+# 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.
+
+# Each footprint should have a parent Python script that initializes this
+# library and provides a high-level description of the primitives required.
+# The footprint is delivered to stdout, so the encapsulating Makefile and/or
+# iterating wrapper script is responsible for redirecting to the desired
+# <something>.lht file(s).
+#
+# all dimensions are assumed to be in mm
+
+import math
+import hashlib
+
+def mils2mm(mils):
+ return 25.4 * (float(mils) / 1000)
+
+class footprint(object):
+ def __init__(self):
+ self.name = ""
+ self.description = ""
+ self.copyright = "Copyright 2020 by Bdale Garbee <bdale@gag.com>"
+ self.dist_license = "GPLv3"
+ self.use_license = "Unlimited"
+ self.cnt = 0
+ self.items = []
+ self.padstacks = dict()
+
+ # process defaults, based on greatest process minimum at our vendors
+
+ self.process_soldermask = mils2mm(3); # space between pad and mask
+ self.process_trace = mils2mm(6); # trace width
+ self.process_space = mils2mm(6); # spacing
+ self.process_drill = mils2mm(13); # drill dize
+ self.process_ring = mils2mm(7); # annular ring
+
+ self.line_thickness = mils2mm(10); # default silk line width
+
+ # the basic plan is that each primitive function puts the object
+ # definition in the relevant dictionary .. when we go to emit the
+ # part, we'll do things like work out the minimum set of padstack
+ # prototypes by iterating over the dictionaries... then output the
+ # working set of required objects
+
+ def pad(self,d):
+ # we expect these to be provided
+ #
+ # x center of pad
+ # y
+ # width size of pad
+ # height
+ # name
+ # number
+ #
+ # the following are normally computed / defaulted, but can be provided
+ #
+ # x1 start of pad "line"
+ # y1
+ # x2 end of pad "line"
+ # y2
+ # thickness thickness of pad "line"
+ # spacing space between pad and other traces
+ # soldermask space between pad and solder mask
+ # clearance twice the spacing between pad and other traces
+ # mask thickness of pad and solder mask
+ # options default to 'square'
+
+ # print ("adding pad")
+ d['type'] = 'pad'
+
+ if 'x1' not in d:
+ d['x1'] = d['x'] - max(0, (d['width'] - d['height']) /2)
+ if 'x2' not in d:
+ d['x2'] = d['x'] + max(0, (d['width'] - d['height']) /2)
+ if 'y1' not in d:
+ d['y1'] = d['y'] - max(0, (d['height'] - d['width']) /2)
+ if 'y2' not in d:
+ d['y2'] = d['y'] + max(0, (d['height'] - d['width']) /2)
+ if 'thickness' not in d:
+ d['thickness'] = min(d['width'], d['height'])
+ if 'spacing' not in d:
+ d['spacing'] = self.process_space
+ if 'soldermask' not in d:
+ d['soldermask'] = self.process_soldermask
+ if 'clearance' not in d:
+ d['clearance'] = d['spacing'] / 2
+ if 'mask' not in d:
+ d['mask'] = d['thickness'] + d['soldermask'] * 2
+ if 'options' not in d:
+ d['options'] = 'square'
+
+ self.items = self.items + [d]
+
+ def pin():
+ # we expect these to be provided
+ #
+ # x center of pin
+ # y
+ # drill diameter of drill hole
+ # name
+ # number
+ #
+ # the following are normally computed / defaulted, but can be provided
+ #
+ # ring width of annular ring around hole
+ # spacing space between pin and other traces
+ # soldermask space between pin and solder mask
+ # thickness thickness of pin "line"
+ # clearance twice the spacing between pad and other traces
+ # mask thickness of pad and solder mask
+ # options default to 'square' for pin number 1
+
+ # print ("adding pin")
+ d['type'] = 'pin'
+
+ if 'spacing' not in d:
+ d['spacing'] = self.process_space
+ if 'ring' not in d:
+ d['ring'] = self.process_ring
+ if 'soldermask' not in d:
+ d['soldermask'] = self.process_soldermask
+ if 'clearance' not in d:
+ d['clearance'] = d['spacing'] * 2
+ if 'mask' not in d:
+ d['mask'] = d['thickness'] + d['soldermask'] * 2
+ if 'options' not in d: # default pin 1 to square ring
+ if d['number'] == '1':
+ d['options'] = 'square'
+ else:
+ d['options'] = ''
+ if 'thickness' not in d:
+ d['thickness'] = d['drill'] + d['ring'] * 2
+ if 'mask' not in d:
+ d['mask'] = d['thickness'] + d['soldermask'] * 2
+
+ self.items = self.items + [d]
+
+ def slot(self,d):
+ # we expect these to be provided
+ #
+ # x center of slot
+ # y
+ # width size of slot
+ # height
+ # name
+ # number
+ #
+ # the following are normally computed / defaulted, but can be provided
+ #
+ # x1 start of slot "line"
+ # y1
+ # x2 end of slot "line"
+ # y2
+ # spacing space between slot copper and other traces
+ # thickness width of copper edge to edge across slot
+ # soldermask space between slot copper and solder mask
+ # clearance twice the spacing between slot copper and other traces
+ # mask thickness of slot copper and solder mask
+
+ # print ("adding slot")
+ d['type'] = 'slot'
+
+ if 'x1' not in d:
+ d['x1'] = d['x'] - max(0, (d['width'] - d['height']) /2)
+ if 'x2' not in d:
+ d['x2'] = d['x'] + max(0, (d['width'] - d['height']) /2)
+ if 'y1' not in d:
+ d['y1'] = d['y'] - max(0, (d['height'] - d['width']) /2)
+ if 'y2' not in d:
+ d['y2'] = d['y'] + max(0, (d['height'] - d['width']) /2)
+ if 'spacing' not in d:
+ d['spacing'] = self.process_space
+ if 'thickness' not in d:
+ d['thickness'] = d['width'] + self.process_ring * 2
+ if 'soldermask' not in d:
+ d['soldermask'] = self.process_soldermask
+ if 'clearance' not in d:
+ d['clearance'] = d['spacing'] / 2
+ if 'mask' not in d:
+ d['mask'] = d['thickness'] + d['soldermask'] * 2
+
+ self.items = self.items + [d]
+
+ ## for silk layers
+ def line():
+ # we expect these to be provided
+ #
+ # x1 start of silk line
+ # y1
+ # x2 end of silk line
+ # y2
+ #
+ # the following are normally defaulted, but can be provided
+ #
+ # thickness thickness of silk line
+
+ print ("adding line")
+ d['type'] = 'line'
+
+ if 'thickness' not in d:
+ d['thickness'] = self.line_thickness
+
+ self.items = self.items + [d]
+
+ def arc():
+ # we expect these to be provided
+ #
+ # x center of silk arc
+ # y
+ # width
+ # height
+ # startangle
+ # deltaangle
+ #
+ # the following are normally defaulted, but can be provided
+ #
+ # thickness thickness of silk line
+
+ print ("adding arc")
+ d['type'] = 'arc'
+
+ if 'thickness' not in d:
+ d['thickness'] = self.line_thickness
+
+ self.items = self.items + [d]
+
+ def write_pin_square(size):
+ print(" li:ps_poly {")
+ print(" %u mm" % -size / 2)
+ print(" %u mm" % -size / 2)
+ print(" %u mm" % size / 2)
+ print(" %u mm" % -size / 2)
+ print(" %u mm" % size / 2)
+ print(" %u mm" % size / 2)
+ print(" %u mm" % -size / 2)
+ print(" %u mm" % size / 2)
+ print(" }")
+
+ def write_pin_circle(size):
+ print(" ha:ps_circ {")
+ print(" x = 0")
+ print(" y = 0")
+ print(" dia = $u mm" % size)
+ print(" }")
+
+ def write_pin_shape(p, layer):
+ print(" ha:ps_shape_v4 {")
+ print(" clearance = %u mm" % p['clearance'])
+ if p['options'] == 'square':
+ write_pin_square(p['copper'])
+ else:
+ write_pin_circle(p['copper'])
+ print(" ha:layer_mask {")
+ print(" copper = 1")
+ print(" $s = 1" % layer)
+ print(" }")
+ print(" }")
+
+ def emit_padstack_prototypes(self):
+ # iterate over copper items creating min set of padstack prototypes,
+ # and annotating items with their prototype number as we go
+ protocount = 0
+ for i in self.items:
+ if i['type'] == 'pad':
+ myhash = i['type']+str(i['width'])+str(i['height'])+str(i['thickness'])+str(i['spacing'])+str(i['soldermask'])+str(i['clearance'])+str(i['mask'])+i['options']
+ if i['type'] == 'slot':
+ myhash = i['type']+str(i['width'])+str(i['height'])+str(i['thickness'])+str(i['spacing'])+str(i['soldermask'])+str(i['clearance'])+str(i['mask'])
+ if i['type'] == 'pin':
+ myhash = i['type']+str(i['drill'])+str(i['ring'])+str(i['spacing'])+str(i['soldermask'])+str(i['clearance'])+str(i['mask'])+i['options']
+
+ # print ("myhash is %s" % myhash)
+ if myhash in self.padstacks:
+ p = self.padstacks[myhash]
+ i['prototypenumber'] = p['prototypenumber']
+ else:
+ # print ("new hash!")
+ i['prototypenumber'] = protocount
+ protocount += 1
+ self.padstacks[myhash] = i
+
+ # print ("%u unique prototypes found" % protocount)
+
+ # now that we have the set of prototypes, emit them
+ print (" li:padstack_prototypes {")
+ for thisp in self.padstacks:
+ p = self.padstacks[thisp]
+ if p['type'] == 'pin':
+ print(" ha:ps_proto_v4.%u {" % p['prototypenumber'])
+ print(" htop = 0")
+ print(" hbottom = 0")
+ print(" hplated = 1")
+ print(" hdia = %u mm" % p['drill'])
+ print(" li:shape {")
+ write_stack_shape(p, 'top')
+ write_stack_shape(p, 'bottom')
+ print(" }")
+ print(" }")
+
+ if p['type'] == 'pad':
+ print(" ha:ps_proto_v4.%u {" % p['prototypenumber'])
+ print(" htop = 0")
+ print(" hbottom = 0")
+ print(" hplated = 1")
+ print(" hdia = %u mm" % 0) # bogus to the max
+ print(" li:shape {")
+ print(" }")
+ print(" }")
+
+ print (" }")
+
+ def emit_padstacks(self):
+ print("padstacks will go here")
+ # process pad, pin, slot items referencing relevant prototypes
+ print("%u items defined" % len(self.items))
+ print("----- start of defined items -----")
+ print(self.items)
+ print("----- end of defined items -----")
+
+ def emit_line(self, role, id, x1, y1, x2, y2, unit):
+ print(" ha:line.%u {" % id)
+ print(" clearance = 0")
+ print(" thickness = 0")
+ print(" ha:attributes {")
+ print(" subc-role = %s" % role)
+ print(" }")
+ print(" x1 = %u%s" % (x1, unit))
+ print(" y1 = %u%s" % (y1, unit))
+ print(" x2 = %u%s" % (x2, unit))
+ print(" y2 = %u%s" % (y2, unit))
+ print(" }")
+ self.cnt = self.cnt + 1
+
+ def emit_top_silk(self):
+ print("top_silk will go here")
+ # process line and arc items
+
+ def emit_bbox(self):
+ self.cnt = 0
+ print(" ha:subc-aux {")
+ print(" lid = 1")
+ print(" ha:type {")
+ print(" top = 1")
+ print(" misc = 1")
+ print(" virtual = 1")
+ print(" }")
+ print(" li:objects {")
+ self.emit_line("origin", self.cnt, 0, 0, 0, 0, "mm");
+ self.emit_line("x", self.cnt, 0, 0, 1, 0, "mm");
+ self.emit_line("y", self.cnt, 0, 0, 0, 1, "mm");
+ print(" }")
+ print(" }")
+
+ def create_uuid(self):
+ return hashlib.md5(self.name.encode('utf-8')).hexdigest()
+
+ def emit(self):
+ print("li:pcb-rnd-subcircuit-v4 {")
+ print(" ha:subc.0 {")
+ print(" ha:attributes {")
+ print(" description = %s" % self.description)
+ print(" copyright = %s" % self.copyright)
+ print(" dist_license = %s" % self.dist_license)
+ print(" use_license = %s" % self.use_license)
+ print(" }")
+ print(" uid = %s" % self.create_uuid())
+ print(" ha:data {")
+ self.emit_padstack_prototypes()
+ print(" li:objects {")
+ self.emit_padstacks()
+ print(" }")
+ print(" li:layers {")
+ self.emit_top_silk()
+ self.emit_bbox()
+ print(" }")
+ print(" }")
+ print(" }")
+ print("}")
--- /dev/null
+
+Element["" "hole-M2.75" "" "" 3.0064mm 3.0064mm -169.00mil -210.00mil 0 100 ""]
+(
+ Pin[0.0000 0.0000 200.00mil 25.00mil 236.00mil 108.00mil "pin1" "1" "usetherm"]
+ ElementArc [0.0000 0.0000 113.00mil 113.00mil 0.000000 360.000000 10.00mil]
+
+ )
rm -f $(PROJECT)-stencil.zip && zip $(PROJECT)-stencil.zip $(PROJECT).toppaste.gbr $(OUTLINE)
stencil: $(PROJECT).lht
- pcb-rnd -x cam gerber:universal -c design/paste_adjust=-10mil $(PROJECT).lht
- mv $(PROJECT).top.paste.none.0.gbr stencil.gbr
+ pcb-rnd -x cam gerber:stencils --outfile out/$(PROJECT) $(PROJECT).lht
clean:
rm -f *.bom *.drc *.log *~ $(PROJECT).ps *.gbr *.cnc *bak* *- *.zip *.tdx *.backup
CAPACITOR 47nF 0402 smt no CGA2B2X5R1C473K050BA digikey 445-12164-1-ND reel8mm
CAPACITOR 4.7uF 0402 smt no CL05A475KP5NRNC digikey 1276-1480-1-ND reel8mm
CAPACITOR 4.7uF 1206 smt no UMK316AB7475KL-T digikey 587-2994-1-ND
-CAPACITOR 47uF 1206 smt no CL31A476KQHNNNE digikey 1276-3062-1-ND
+CAPACITOR 47uF 1206 smt no CL31A476MQHNNWE digikey 1276-3064-1-ND
CAPACITOR 47uF 1210 smt no C1210C476M4PACTU digikey 399-5514-1-ND
CAPACITOR 470uF c8x8 smt no EEE-HA1A471UP digikey PCE4178TR-ND
CAPACITOR 5.1pF 0402 smt no CC0402CRNPO9BN5R1 digikey 311-1633-1-ND reel8mm
--- /dev/null
+v 20130925 2
+P 0 900 300 900 1 0 0
+{
+T 0 900 5 10 0 0 0 0 1
+pintype=pas
+T 355 895 5 10 1 1 0 0 1
+pinlabel=CH5
+T 205 945 5 10 1 1 0 6 1
+pinnumber=6
+T 0 900 5 10 0 0 0 0 1
+pinseq=6
+}
+P 2200 900 1900 900 1 0 0
+{
+T 2200 900 5 10 0 0 0 0 1
+pintype=in
+T 1845 895 5 10 1 1 0 6 1
+pinlabel=DIN
+T 1995 945 5 10 1 1 0 0 1
+pinnumber=11
+T 2200 900 5 10 0 0 0 0 1
+pinseq=11
+}
+P 2200 100 1900 100 1 0 0
+{
+T 2200 100 5 10 0 0 90 0 1
+pintype=pwr
+T 1845 95 5 10 1 1 0 6 1
+pinlabel=DGND
+T 1995 145 5 10 1 1 0 0 1
+pinnumber=9
+T 2200 100 5 10 0 1 90 0 1
+pinseq=9
+}
+B 300 0 1600 3200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+T 295 3295 8 10 1 1 0 0 1
+refdes=U?
+T 1095 3295 8 10 1 1 0 0 1
+device=MCP3008
+P 2200 2900 1900 2900 1 0 0
+{
+T 2200 2900 5 10 0 0 90 0 1
+pintype=pwr
+T 1845 2895 5 10 1 1 0 6 1
+pinlabel=VDD
+T 1995 2945 5 10 1 1 0 0 1
+pinnumber=16
+T 2200 2900 5 10 0 0 270 0 1
+pinseq=16
+}
+P 2200 500 1900 500 1 0 0
+{
+T 2200 500 5 10 0 0 0 0 1
+pintype=in
+T 1845 495 5 10 1 1 0 6 1
+pinlabel=\_CS\_/SHDN
+T 1995 545 5 10 1 1 0 0 1
+pinnumber=10
+T 2200 500 5 10 0 0 0 0 1
+pinseq=10
+}
+T -5 -305 8 10 0 0 0 0 1
+footprint=soic-16
+P 0 1300 300 1300 1 0 0
+{
+T 0 1300 5 10 0 0 0 0 1
+pintype=pas
+T 355 1295 5 10 1 1 0 0 1
+pinlabel=CH4
+T 205 1345 5 10 1 1 0 6 1
+pinnumber=5
+T 0 1300 5 10 0 0 0 0 1
+pinseq=5
+}
+P 0 100 300 100 1 0 0
+{
+T 0 100 5 10 0 0 0 0 1
+pintype=pas
+T 0 100 5 10 0 0 0 0 1
+pinseq=8
+T 355 95 5 10 1 1 0 0 1
+pinlabel=CH7
+T 205 145 5 10 1 1 0 6 1
+pinnumber=8
+}
+P 0 500 300 500 1 0 0
+{
+T 0 500 5 10 0 0 0 0 1
+pintype=pas
+T 0 500 5 10 0 0 0 0 1
+pinseq=7
+T 355 495 5 10 1 1 0 0 1
+pinlabel=CH6
+T 205 545 5 10 1 1 0 6 1
+pinnumber=7
+}
+P 0 2500 300 2500 1 0 0
+{
+T 0 2500 5 10 0 0 0 0 1
+pintype=pas
+T 0 2500 5 10 0 0 0 0 1
+pinseq=2
+T 355 2495 5 10 1 1 0 0 1
+pinlabel=CH1
+T 205 2545 5 10 1 1 0 6 1
+pinnumber=2
+}
+P 0 2900 300 2900 1 0 0
+{
+T 0 2900 5 10 0 0 0 0 1
+pintype=pas
+T 0 2900 5 10 0 0 0 0 1
+pinseq=1
+T 355 2895 5 10 1 1 0 0 1
+pinlabel=CH0
+T 205 2945 5 10 1 1 0 6 1
+pinnumber=1
+}
+P 0 1700 300 1700 1 0 0
+{
+T 0 1700 5 10 0 0 0 0 1
+pintype=pas
+T 0 1700 5 10 0 0 0 0 1
+pinseq=4
+T 355 1695 5 10 1 1 0 0 1
+pinlabel=CH3
+T 205 1745 5 10 1 1 0 6 1
+pinnumber=4
+}
+P 0 2100 300 2100 1 0 0
+{
+T 0 2100 5 10 0 0 0 0 1
+pintype=pas
+T 0 2100 5 10 0 0 0 0 1
+pinseq=3
+T 355 2095 5 10 1 1 0 0 1
+pinlabel=CH2
+T 205 2145 5 10 1 1 0 6 1
+pinnumber=3
+}
+P 2200 2100 1900 2100 1 0 0
+{
+T 2200 2100 5 10 0 0 0 0 1
+pintype=pwr
+T 2200 2100 5 10 0 0 0 0 1
+pinseq=14
+T 1845 2095 5 10 1 1 0 6 1
+pinlabel=AGND
+T 1995 2145 5 10 1 1 0 0 1
+pinnumber=14
+}
+P 2200 1300 1900 1300 1 0 0
+{
+T 2200 1300 5 10 0 0 90 0 1
+pintype=out
+T 2200 1300 5 10 0 1 90 0 1
+pinseq=12
+T 1845 1295 5 10 1 1 0 6 1
+pinlabel=DOUT
+T 1995 1345 5 10 1 1 0 0 1
+pinnumber=12
+}
+P 2200 1700 1900 1700 1 0 0
+{
+T 2200 1700 5 10 0 0 0 0 1
+pintype=clk
+T 2200 1700 5 10 0 0 0 0 1
+pinseq=13
+T 1845 1695 5 10 1 1 0 6 1
+pinlabel=CLK
+T 1995 1745 5 10 1 1 0 0 1
+pinnumber=13
+}
+P 2200 2500 1900 2500 1 0 0
+{
+T 2200 2500 5 10 0 0 90 0 1
+pintype=pas
+T 1845 2495 5 10 1 1 0 6 1
+pinlabel=VREF
+T 1995 2545 5 10 1 1 0 0 1
+pinnumber=15
+T 2200 2500 5 10 0 0 270 0 1
+pinseq=15
+}
--- /dev/null
+v 20130925 2
+B 400 0 3200 11800 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+T 5400 -1900 8 10 0 0 0 0 1
+numslots=1
+T 5400 -1600 8 10 0 0 0 0 1
+slot=1
+P 0 11400 400 11400 1 0 0
+{
+T 455 11395 5 10 1 1 0 0 1
+pinlabel=GND
+T 305 11445 5 10 1 1 0 6 1
+pinnumber=1
+T 0 11400 5 10 0 0 0 0 1
+pinseq=1
+T 0 11400 5 10 0 0 0 0 1
+pintype=pwr
+}
+T 395 11900 8 10 1 1 0 0 1
+refdes=U?
+P 0 11000 400 11000 1 0 0
+{
+T 455 10995 5 10 1 1 0 0 1
+pinlabel=PVDD
+T 305 11045 5 10 1 1 0 6 1
+pinnumber=2
+T 0 11000 5 10 0 0 0 0 1
+pinseq=2
+T 0 11000 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 10600 400 10600 1 0 0
+{
+T 0 10600 5 10 0 0 0 0 1
+pinseq=3
+T 455 10595 5 10 1 1 0 0 1
+pinlabel=VBAT
+T 305 10645 5 10 1 1 0 6 1
+pinnumber=3
+T 0 10600 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 10200 400 10200 1 0 0
+{
+T 0 10200 5 10 0 0 0 0 1
+pinseq=4
+T 455 10195 5 10 1 1 0 0 1
+pinlabel=AREF
+T 305 10245 5 10 1 1 0 6 1
+pinnumber=4
+T 0 10200 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 9800 400 9800 1 0 0
+{
+T 0 9800 5 10 0 0 0 0 1
+pinseq=5
+T 455 9795 5 10 1 1 0 0 1
+pinlabel=VREG
+T 305 9845 5 10 1 1 0 6 1
+pinnumber=5
+T 0 9800 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 9400 400 9400 1 0 0
+{
+T 0 9400 5 10 0 0 0 0 1
+pinseq=6
+T 455 9395 5 10 1 1 0 0 1
+pinlabel=VCOM
+T 305 9445 5 10 1 1 0 6 1
+pinnumber=6
+T 0 9400 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 9000 400 9000 1 0 0
+{
+T 0 9000 5 10 0 0 0 0 1
+pinseq=7
+T 455 8995 5 10 1 1 0 0 1
+pinlabel=AVSS
+T 305 9045 5 10 1 1 0 6 1
+pinnumber=7
+T 0 9000 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 8600 400 8600 1 0 0
+{
+T 0 8600 5 10 0 0 0 0 1
+pinseq=8
+T 455 8595 5 10 1 1 0 0 1
+pinlabel=AVDD
+T 305 8645 5 10 1 1 0 6 1
+pinnumber=8
+T 0 8600 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 8200 400 8200 1 0 0
+{
+T 0 8200 5 10 0 0 0 0 1
+pinseq=9
+T 455 8195 5 10 1 1 0 0 1
+pinlabel=GVDD
+T 305 8245 5 10 1 1 0 6 1
+pinnumber=9
+T 0 8200 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 7800 400 7800 1 0 0
+{
+T 0 7800 5 10 0 0 0 0 1
+pinseq=10
+T 455 7795 5 10 1 1 0 0 1
+pinlabel=GVDD
+T 305 7845 5 10 1 1 0 6 1
+pinnumber=10
+T 0 7800 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 7400 400 7400 1 0 0
+{
+T 0 7400 5 10 0 0 0 0 1
+pinseq=11
+T 455 7395 5 10 1 1 0 0 1
+pinlabel=GND
+T 305 7445 5 10 1 1 0 6 1
+pinnumber=11
+T 0 7400 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 7000 400 7000 1 0 0
+{
+T 0 7000 5 10 0 0 0 0 1
+pinseq=12
+T 455 6995 5 10 1 1 0 0 1
+pinlabel=MCLK
+T 305 7045 5 10 1 1 0 6 1
+pinnumber=12
+T 0 7000 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 6600 400 6600 1 0 0
+{
+T 0 6600 5 10 0 0 0 0 1
+pinseq=13
+T 455 6595 5 10 1 1 0 0 1
+pinlabel=SCLK
+T 305 6645 5 10 1 1 0 6 1
+pinnumber=13
+T 0 6600 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 6200 400 6200 1 0 0
+{
+T 0 6200 5 10 0 0 0 0 1
+pinseq=14
+T 455 6195 5 10 1 1 0 0 1
+pinlabel=FSYNC
+T 305 6245 5 10 1 1 0 6 1
+pinnumber=14
+T 0 6200 5 10 0 0 0 0 1
+pintype=clk
+}
+P 0 5800 400 5800 1 0 0
+{
+T 0 5800 5 10 0 0 0 0 1
+pinseq=15
+T 455 5795 5 10 1 1 0 0 1
+pinlabel=SDIN1
+T 305 5845 5 10 1 1 0 6 1
+pinnumber=15
+T 0 5800 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 5400 400 5400 1 0 0
+{
+T 0 5400 5 10 0 0 0 0 1
+pinseq=16
+T 455 5395 5 10 1 1 0 0 1
+pinlabel=SDIN2
+T 305 5445 5 10 1 1 0 6 1
+pinnumber=16
+T 0 5400 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 600 400 600 1 0 0
+{
+T 0 600 5 10 0 0 180 6 1
+pinseq=28
+T 455 595 5 10 1 1 0 0 1
+pinlabel=GND
+T 305 645 5 10 1 1 0 6 1
+pinnumber=28
+T 0 600 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 1000 400 1000 1 0 0
+{
+T 0 1000 5 10 0 0 180 6 1
+pinseq=27
+T 455 995 5 10 1 1 0 0 1
+pinlabel=\_WARN\_
+T 305 1045 5 10 1 1 0 6 1
+pinnumber=27
+T 0 1000 5 10 0 0 0 0 1
+pintype=pas
+}
+P 0 1400 400 1400 1 0 0
+{
+T 0 1400 5 10 0 0 180 6 1
+pinseq=26
+T 455 1395 5 10 1 1 0 0 1
+pinlabel=\_FAULT\_
+T 305 1445 5 10 1 1 0 6 1
+pinnumber=26
+T 0 1400 5 10 0 0 0 0 1
+pintype=out
+}
+P 0 1800 400 1800 1 0 0
+{
+T 0 1800 5 10 0 0 180 6 1
+pinseq=25
+T 455 1795 5 10 1 1 0 0 1
+pinlabel=\_MUTE\_
+T 305 1845 5 10 1 1 0 6 1
+pinnumber=25
+T 0 1800 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 2200 400 2200 1 0 0
+{
+T 0 2200 5 10 0 0 180 6 1
+pinseq=24
+T 455 2195 5 10 1 1 0 0 1
+pinlabel=\_STANDBY\_
+T 305 2245 5 10 1 1 0 6 1
+pinnumber=24
+T 0 2200 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 2600 400 2600 1 0 0
+{
+T 0 2600 5 10 0 0 180 6 1
+pinseq=23
+T 455 2595 5 10 1 1 0 0 1
+pinlabel=I2C_ADDR1
+T 305 2645 5 10 1 1 0 6 1
+pinnumber=23
+T 0 2600 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 3000 400 3000 1 0 0
+{
+T 0 3000 5 10 0 0 180 6 1
+pinseq=22
+T 455 2995 5 10 1 1 0 0 1
+pinlabel=I2C_ADDR0
+T 305 3045 5 10 1 1 0 6 1
+pinnumber=22
+}
+P 0 3400 400 3400 1 0 0
+{
+T 0 3400 5 10 0 0 180 6 1
+pinseq=21
+T 455 3395 5 10 1 1 0 0 1
+pinlabel=SDA
+T 305 3445 5 10 1 1 0 6 1
+pinnumber=21
+T 0 3400 5 10 0 0 0 0 1
+pintype=io
+}
+P 0 3800 400 3800 1 0 0
+{
+T 0 3800 5 10 0 0 180 6 1
+pinseq=20
+T 455 3795 5 10 1 1 0 0 1
+pinlabel=SCL
+T 305 3845 5 10 1 1 0 6 1
+pinnumber=20
+T 0 3800 5 10 0 0 0 0 1
+pintype=in
+}
+P 0 4200 400 4200 1 0 0
+{
+T 0 4200 5 10 0 0 180 6 1
+pinseq=19
+T 455 4195 5 10 1 1 0 0 1
+pinlabel=VDD
+T 305 4245 5 10 1 1 0 6 1
+pinnumber=19
+T 0 4200 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 4600 400 4600 1 0 0
+{
+T 0 4600 5 10 0 0 180 6 1
+pinseq=18
+T 455 4595 5 10 1 1 0 0 1
+pinlabel=GND
+T 305 4645 5 10 1 1 0 6 1
+pinnumber=18
+T 0 4600 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 5000 400 5000 1 0 0
+{
+T 0 5000 5 10 0 0 180 6 1
+pinseq=17
+T 455 4995 5 10 1 1 0 0 1
+pinlabel=GND
+T 305 5045 5 10 1 1 0 6 1
+pinnumber=17
+T 0 5000 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 0 200 400 200 1 0 0
+{
+T 0 200 5 10 0 0 0 0 1
+pinseq=57
+T 455 195 5 10 1 1 0 0 1
+pinlabel=GND Exposed
+T 305 245 5 10 1 1 0 6 1
+pinnumber=57
+}
+T -5 0 8 10 0 1 0 0 1
+datasheet=ti/audio/tpa3118d2.pdf
+P 4000 11400 3600 11400 1 0 0
+{
+T 4000 11400 5 10 0 0 0 6 1
+pinseq=56
+T 3545 11395 5 10 1 1 0 6 1
+pinlabel=PVDD
+T 3695 11445 5 10 1 1 0 0 1
+pinnumber=56
+T 4000 11400 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 11000 3600 11000 1 0 0
+{
+T 4000 11000 5 10 0 0 0 6 1
+pinseq=55
+T 3545 10995 5 10 1 1 0 6 1
+pinlabel=PVDD
+T 3695 11045 5 10 1 1 0 0 1
+pinnumber=55
+T 4000 11000 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 10600 3600 10600 1 0 0
+{
+T 4000 10600 5 10 0 0 0 6 1
+pinseq=54
+T 3545 10595 5 10 1 1 0 6 1
+pinlabel=BST_4P
+T 3695 10645 5 10 1 1 0 0 1
+pinnumber=54
+T 4000 10600 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 10200 3600 10200 1 0 0
+{
+T 4000 10200 5 10 0 0 0 6 1
+pinseq=53
+T 3545 10195 5 10 1 1 0 6 1
+pinlabel=OUT_4P
+T 3695 10245 5 10 1 1 0 0 1
+pinnumber=53
+T 4000 10200 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 9800 3600 9800 1 0 0
+{
+T 4000 9800 5 10 0 0 0 6 1
+pinseq=52
+T 3545 9795 5 10 1 1 0 6 1
+pinlabel=GND
+T 3695 9845 5 10 1 1 0 0 1
+pinnumber=52
+T 4000 9800 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 9400 3600 9400 1 0 0
+{
+T 4000 9400 5 10 0 0 0 6 1
+pinseq=51
+T 3545 9395 5 10 1 1 0 6 1
+pinlabel=OUT_4M
+T 3695 9445 5 10 1 1 0 0 1
+pinnumber=51
+T 4000 9400 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 9000 3600 9000 1 0 0
+{
+T 4000 9000 5 10 0 0 0 6 1
+pinseq=50
+T 3545 8995 5 10 1 1 0 6 1
+pinlabel=BST_4M
+T 3695 9045 5 10 1 1 0 0 1
+pinnumber=50
+T 4000 9000 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 8600 3600 8600 1 0 0
+{
+T 4000 8600 5 10 0 0 0 6 1
+pinseq=49
+T 3545 8595 5 10 1 1 0 6 1
+pinlabel=GND
+T 3695 8645 5 10 1 1 0 0 1
+pinnumber=49
+T 4000 8600 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 8200 3600 8200 1 0 0
+{
+T 4000 8200 5 10 0 0 0 6 1
+pinseq=48
+T 3545 8195 5 10 1 1 0 6 1
+pinlabel=BST_3P
+T 3695 8245 5 10 1 1 0 0 1
+pinnumber=48
+T 4000 8200 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 7800 3600 7800 1 0 0
+{
+T 4000 7800 5 10 0 0 0 6 1
+pinseq=47
+T 3545 7795 5 10 1 1 0 6 1
+pinlabel=OUT_3P
+T 3695 7845 5 10 1 1 0 0 1
+pinnumber=47
+T 4000 7800 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 7400 3600 7400 1 0 0
+{
+T 4000 7400 5 10 0 0 0 6 1
+pinseq=46
+T 3545 7395 5 10 1 1 0 6 1
+pinlabel=GND
+T 3695 7445 5 10 1 1 0 0 1
+pinnumber=46
+T 4000 7400 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 7000 3600 7000 1 0 0
+{
+T 4000 7000 5 10 0 0 0 6 1
+pinseq=45
+T 3545 6995 5 10 1 1 0 6 1
+pinlabel=OUT_3M
+T 3695 7045 5 10 1 1 0 0 1
+pinnumber=45
+T 4000 7000 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 6600 3600 6600 1 0 0
+{
+T 4000 6600 5 10 0 0 0 6 1
+pinseq=44
+T 3545 6595 5 10 1 1 0 6 1
+pinlabel=BST_3M
+T 3695 6645 5 10 1 1 0 0 1
+pinnumber=44
+T 4000 6600 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 6200 3600 6200 1 0 0
+{
+T 4000 6200 5 10 0 0 0 6 1
+pinseq=43
+T 3545 6195 5 10 1 1 0 6 1
+pinlabel=PVDD
+T 3695 6245 5 10 1 1 0 0 1
+pinnumber=43
+T 4000 6200 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 5800 3600 5800 1 0 0
+{
+T 4000 5800 5 10 0 0 0 6 1
+pinseq=42
+T 3545 5795 5 10 1 1 0 6 1
+pinlabel=PVDD
+T 3695 5845 5 10 1 1 0 0 1
+pinnumber=42
+T 4000 5800 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 5400 3600 5400 1 0 0
+{
+T 4000 5400 5 10 0 0 0 6 1
+pinseq=41
+T 3545 5395 5 10 1 1 0 6 1
+pinlabel=BST_2P
+T 3695 5445 5 10 1 1 0 0 1
+pinnumber=41
+T 4000 5400 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 600 3600 600 1 0 0
+{
+T 4000 600 5 10 0 0 180 0 1
+pinseq=29
+T 3545 595 5 10 1 1 0 6 1
+pinlabel=PVDD
+T 3695 645 5 10 1 1 0 0 1
+pinnumber=29
+T 4000 600 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 1000 3600 1000 1 0 0
+{
+T 4000 1000 5 10 0 0 180 0 1
+pinseq=30
+T 3545 995 5 10 1 1 0 6 1
+pinlabel=PVDD
+T 3695 1045 5 10 1 1 0 0 1
+pinnumber=30
+T 4000 1000 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 1400 3600 1400 1 0 0
+{
+T 4000 1400 5 10 0 0 180 0 1
+pinseq=31
+T 3545 1395 5 10 1 1 0 6 1
+pinlabel=BST_1M
+T 3695 1445 5 10 1 1 0 0 1
+pinnumber=31
+T 4000 1400 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 1800 3600 1800 1 0 0
+{
+T 4000 1800 5 10 0 0 180 0 1
+pinseq=32
+T 3545 1795 5 10 1 1 0 6 1
+pinlabel=OUT_1M
+T 3695 1845 5 10 1 1 0 0 1
+pinnumber=32
+T 4000 1800 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 2200 3600 2200 1 0 0
+{
+T 4000 2200 5 10 0 0 180 0 1
+pinseq=33
+T 3545 2195 5 10 1 1 0 6 1
+pinlabel=GND
+T 3695 2245 5 10 1 1 0 0 1
+pinnumber=33
+T 4000 2200 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 2600 3600 2600 1 0 0
+{
+T 4000 2600 5 10 0 0 180 0 1
+pinseq=34
+T 3545 2595 5 10 1 1 0 6 1
+pinlabel=OUT_1P
+T 3695 2645 5 10 1 1 0 0 1
+pinnumber=34
+T 4000 2600 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 3000 3600 3000 1 0 0
+{
+T 4000 3000 5 10 0 0 180 0 1
+pinseq=35
+T 3545 2995 5 10 1 1 0 6 1
+pinlabel=BST_1P
+T 3695 3045 5 10 1 1 0 0 1
+pinnumber=35
+}
+P 4000 3400 3600 3400 1 0 0
+{
+T 4000 3400 5 10 0 0 180 0 1
+pinseq=36
+T 3545 3395 5 10 1 1 0 6 1
+pinlabel=GND
+T 3695 3445 5 10 1 1 0 0 1
+pinnumber=36
+}
+P 4000 3800 3600 3800 1 0 0
+{
+T 4000 3800 5 10 0 0 180 0 1
+pinseq=37
+T 3545 3795 5 10 1 1 0 6 1
+pinlabel=BST_2M
+T 3695 3845 5 10 1 1 0 0 1
+pinnumber=37
+T 4000 3800 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 4200 3600 4200 1 0 0
+{
+T 4000 4200 5 10 0 0 180 0 1
+pinseq=38
+T 3545 4195 5 10 1 1 0 6 1
+pinlabel=OUT_2M
+T 3695 4245 5 10 1 1 0 0 1
+pinnumber=38
+T 4000 4200 5 10 0 0 0 0 1
+pintype=pas
+}
+P 4000 4600 3600 4600 1 0 0
+{
+T 4000 4600 5 10 0 0 180 0 1
+pinseq=39
+T 3545 4595 5 10 1 1 0 6 1
+pinlabel=GND
+T 3695 4645 5 10 1 1 0 0 1
+pinnumber=39
+T 4000 4600 5 10 0 0 0 0 1
+pintype=pwr
+}
+P 4000 5000 3600 5000 1 0 0
+{
+T 4000 5000 5 10 0 0 180 0 1
+pinseq=40
+T 3545 4995 5 10 1 1 0 6 1
+pinlabel=OUT_2P
+T 3695 5045 5 10 1 1 0 0 1
+pinnumber=40
+T 4000 5000 5 10 0 0 0 0 1
+pintype=pas
+}