Added test for rotation filter in the bottom side.
This commit is contained in:
parent
2d4f73d822
commit
d97ca18590
|
|
@ -0,0 +1,157 @@
|
||||||
|
(kicad_pcb (version 20171130) (host pcbnew 5.1.9-73d0e3b20d~88~ubuntu21.04.1)
|
||||||
|
|
||||||
|
(general
|
||||||
|
(thickness 1.6)
|
||||||
|
(drawings 0)
|
||||||
|
(tracks 0)
|
||||||
|
(zones 0)
|
||||||
|
(modules 1)
|
||||||
|
(nets 1)
|
||||||
|
)
|
||||||
|
|
||||||
|
(page A4)
|
||||||
|
(layers
|
||||||
|
(0 F.Cu signal)
|
||||||
|
(31 B.Cu signal)
|
||||||
|
(32 B.Adhes user)
|
||||||
|
(33 F.Adhes user)
|
||||||
|
(34 B.Paste user)
|
||||||
|
(35 F.Paste user)
|
||||||
|
(36 B.SilkS user)
|
||||||
|
(37 F.SilkS user)
|
||||||
|
(38 B.Mask user)
|
||||||
|
(39 F.Mask user)
|
||||||
|
(40 Dwgs.User user)
|
||||||
|
(41 Cmts.User user)
|
||||||
|
(42 Eco1.User user)
|
||||||
|
(43 Eco2.User user)
|
||||||
|
(44 Edge.Cuts user)
|
||||||
|
(45 Margin user)
|
||||||
|
(46 B.CrtYd user)
|
||||||
|
(47 F.CrtYd user)
|
||||||
|
(48 B.Fab user)
|
||||||
|
(49 F.Fab user)
|
||||||
|
)
|
||||||
|
|
||||||
|
(setup
|
||||||
|
(last_trace_width 0.25)
|
||||||
|
(trace_clearance 0.2)
|
||||||
|
(zone_clearance 0.508)
|
||||||
|
(zone_45_only no)
|
||||||
|
(trace_min 0.2)
|
||||||
|
(via_size 0.8)
|
||||||
|
(via_drill 0.4)
|
||||||
|
(via_min_size 0.4)
|
||||||
|
(via_min_drill 0.3)
|
||||||
|
(uvia_size 0.3)
|
||||||
|
(uvia_drill 0.1)
|
||||||
|
(uvias_allowed no)
|
||||||
|
(uvia_min_size 0.2)
|
||||||
|
(uvia_min_drill 0.1)
|
||||||
|
(edge_width 0.1)
|
||||||
|
(segment_width 0.2)
|
||||||
|
(pcb_text_width 0.3)
|
||||||
|
(pcb_text_size 1.5 1.5)
|
||||||
|
(mod_edge_width 0.15)
|
||||||
|
(mod_text_size 1 1)
|
||||||
|
(mod_text_width 0.15)
|
||||||
|
(pad_size 1.524 1.524)
|
||||||
|
(pad_drill 0.762)
|
||||||
|
(pad_to_mask_clearance 0)
|
||||||
|
(aux_axis_origin 97.0026 97.0026)
|
||||||
|
(visible_elements FFFFFF7F)
|
||||||
|
(pcbplotparams
|
||||||
|
(layerselection 0x010fc_ffffffff)
|
||||||
|
(usegerberextensions false)
|
||||||
|
(usegerberattributes true)
|
||||||
|
(usegerberadvancedattributes true)
|
||||||
|
(creategerberjobfile true)
|
||||||
|
(excludeedgelayer true)
|
||||||
|
(linewidth 0.100000)
|
||||||
|
(plotframeref false)
|
||||||
|
(viasonmask false)
|
||||||
|
(mode 1)
|
||||||
|
(useauxorigin false)
|
||||||
|
(hpglpennumber 1)
|
||||||
|
(hpglpenspeed 20)
|
||||||
|
(hpglpendiameter 15.000000)
|
||||||
|
(psnegative false)
|
||||||
|
(psa4output false)
|
||||||
|
(plotreference true)
|
||||||
|
(plotvalue true)
|
||||||
|
(plotinvisibletext false)
|
||||||
|
(padsonsilk false)
|
||||||
|
(subtractmaskfromsilk false)
|
||||||
|
(outputformat 1)
|
||||||
|
(mirror false)
|
||||||
|
(drillshape 1)
|
||||||
|
(scaleselection 1)
|
||||||
|
(outputdirectory ""))
|
||||||
|
)
|
||||||
|
|
||||||
|
(net 0 "")
|
||||||
|
|
||||||
|
(net_class Default "This is the default net class."
|
||||||
|
(clearance 0.2)
|
||||||
|
(trace_width 0.25)
|
||||||
|
(via_dia 0.8)
|
||||||
|
(via_drill 0.4)
|
||||||
|
(uvia_dia 0.3)
|
||||||
|
(uvia_drill 0.1)
|
||||||
|
)
|
||||||
|
|
||||||
|
(module Package_DFN_QFN:QFN-12-1EP_3x3mm_P0.5mm_EP1.65x1.65mm (layer B.Cu) (tedit 5DC5F6A3) (tstamp 601B53A7)
|
||||||
|
(at 100 100)
|
||||||
|
(descr "QFN, 12 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_12_%2005-08-1855.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py")
|
||||||
|
(tags "QFN NoLead")
|
||||||
|
(attr smd)
|
||||||
|
(fp_text reference U1 (at 0 2.82) (layer B.SilkS)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
|
||||||
|
)
|
||||||
|
(fp_text value QFN-12-1EP_3x3mm_P0.5mm_EP1.65x1.65mm (at 0 -2.82) (layer B.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
|
||||||
|
)
|
||||||
|
(fp_line (start 0.885 1.61) (end 1.61 1.61) (layer B.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 1.61 1.61) (end 1.61 0.885) (layer B.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -0.885 -1.61) (end -1.61 -1.61) (layer B.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.61 -1.61) (end -1.61 -0.885) (layer B.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 0.885 -1.61) (end 1.61 -1.61) (layer B.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 1.61 -1.61) (end 1.61 -0.885) (layer B.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -0.885 1.61) (end -1.61 1.61) (layer B.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -0.75 1.5) (end 1.5 1.5) (layer B.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.5 1.5) (end 1.5 -1.5) (layer B.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.5 -1.5) (end -1.5 -1.5) (layer B.Fab) (width 0.1))
|
||||||
|
(fp_line (start -1.5 -1.5) (end -1.5 0.75) (layer B.Fab) (width 0.1))
|
||||||
|
(fp_line (start -1.5 0.75) (end -0.75 1.5) (layer B.Fab) (width 0.1))
|
||||||
|
(fp_line (start -2.12 2.12) (end -2.12 -2.12) (layer B.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -2.12 -2.12) (end 2.12 -2.12) (layer B.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 2.12 -2.12) (end 2.12 2.12) (layer B.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 2.12 2.12) (end -2.12 2.12) (layer B.CrtYd) (width 0.05))
|
||||||
|
(fp_text user %R (at 0 0) (layer B.Fab)
|
||||||
|
(effects (font (size 0.75 0.75) (thickness 0.11)) (justify mirror))
|
||||||
|
)
|
||||||
|
(pad "" smd roundrect (at 0.41 -0.41) (size 0.67 0.67) (layers B.Paste) (roundrect_rratio 0.25))
|
||||||
|
(pad "" smd roundrect (at 0.41 0.41) (size 0.67 0.67) (layers B.Paste) (roundrect_rratio 0.25))
|
||||||
|
(pad "" smd roundrect (at -0.41 -0.41) (size 0.67 0.67) (layers B.Paste) (roundrect_rratio 0.25))
|
||||||
|
(pad "" smd roundrect (at -0.41 0.41) (size 0.67 0.67) (layers B.Paste) (roundrect_rratio 0.25))
|
||||||
|
(pad 13 smd rect (at 0 0) (size 1.65 1.65) (layers B.Cu B.Mask))
|
||||||
|
(pad 12 smd roundrect (at -0.5 1.4625) (size 0.25 0.825) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 11 smd roundrect (at 0 1.4625) (size 0.25 0.825) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 10 smd roundrect (at 0.5 1.4625) (size 0.25 0.825) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 9 smd roundrect (at 1.4625 0.5) (size 0.825 0.25) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 8 smd roundrect (at 1.4625 0) (size 0.825 0.25) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 7 smd roundrect (at 1.4625 -0.5) (size 0.825 0.25) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 6 smd roundrect (at 0.5 -1.4625) (size 0.25 0.825) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 5 smd roundrect (at 0 -1.4625) (size 0.25 0.825) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 4 smd roundrect (at -0.5 -1.4625) (size 0.25 0.825) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 3 smd roundrect (at -1.4625 -0.5) (size 0.825 0.25) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 2 smd roundrect (at -1.4625 0) (size 0.825 0.25) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 1 smd roundrect (at -1.4625 0.5) (size 0.825 0.25) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25))
|
||||||
|
(model ${KISYS3DMOD}/Package_DFN_QFN.3dshapes/QFN-12-1EP_3x3mm_P0.5mm_EP1.65x1.65mm.wrl
|
||||||
|
(at (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
EESchema Schematic File Version 4
|
||||||
|
EELAYER 30 0
|
||||||
|
EELAYER END
|
||||||
|
$Descr A4 11693 8268
|
||||||
|
encoding utf-8
|
||||||
|
Sheet 1 1
|
||||||
|
Title ""
|
||||||
|
Date ""
|
||||||
|
Rev ""
|
||||||
|
Comp ""
|
||||||
|
Comment1 ""
|
||||||
|
Comment2 ""
|
||||||
|
Comment3 ""
|
||||||
|
Comment4 ""
|
||||||
|
$EndDescr
|
||||||
|
$Comp
|
||||||
|
L Comparator:LTC6752xUD-3 U1
|
||||||
|
U 1 1 601AFEFD
|
||||||
|
P 4125 3375
|
||||||
|
F 0 "U1" H 4469 3421 50 0000 L CNN
|
||||||
|
F 1 "LTC6752xUD-3" H 4469 3330 50 0000 L CNN
|
||||||
|
F 2 "Package_DFN_QFN:QFN-12-1EP_3x3mm_P0.5mm_EP1.65x1.65mm" H 4125 2725 50 0001 C CNN
|
||||||
|
F 3 "https://www.analog.com/media/en/technical-documentation/data-sheets/6752fc.pdf" H 4025 3375 50 0001 C CNN
|
||||||
|
1 4125 3375
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$EndSCHEMATC
|
||||||
|
|
@ -29,7 +29,10 @@ if prev_dir not in sys.path:
|
||||||
from utils import context
|
from utils import context
|
||||||
|
|
||||||
POS_DIR = 'positiondir'
|
POS_DIR = 'positiondir'
|
||||||
positions = {'R1': (105, 35, 'top'), 'R2': (110, 35, 'bottom'), 'R3': (110, 45, 'top')}
|
positions = {'R1': (105, 35, 'top', 90),
|
||||||
|
'R2': (110, 35, 'bottom', 270),
|
||||||
|
'R3': (110, 45, 'top', 0),
|
||||||
|
'U1': (100, 100, 'bottom', 90)}
|
||||||
CSV_EXPR = r'^"%s",[^,]+,[^,]+,([-\d\.]+),([-\d\.]+),([-\d\.]+),(\S+)$'
|
CSV_EXPR = r'^"%s",[^,]+,[^,]+,([-\d\.]+),([-\d\.]+),([-\d\.]+),(\S+)$'
|
||||||
ASCII_EXPR = r'^%s\s+\S+\s+\S+\s+([-\d\.]+)\s+([-\d\.]+)\s+([-\d\.]+)\s+(\S+)\s*$'
|
ASCII_EXPR = r'^%s\s+\S+\s+\S+\s+([-\d\.]+)\s+([-\d\.]+)\s+([-\d\.]+)\s+(\S+)\s*$'
|
||||||
|
|
||||||
|
|
@ -47,7 +50,7 @@ def expect_position(ctx, file, comp, no_comp=[], inches=False, csv=False, neg_x=
|
||||||
texts.append(ASCII_EXPR % k)
|
texts.append(ASCII_EXPR % k)
|
||||||
res = ctx.search_in_file(file, texts)
|
res = ctx.search_in_file(file, texts)
|
||||||
for k in comp:
|
for k in comp:
|
||||||
x, y, side = positions[k]
|
x, y, side, angle = positions[k]
|
||||||
if inches:
|
if inches:
|
||||||
x = x/25.4
|
x = x/25.4
|
||||||
y = y/25.4
|
y = y/25.4
|
||||||
|
|
@ -56,6 +59,7 @@ def expect_position(ctx, file, comp, no_comp=[], inches=False, csv=False, neg_x=
|
||||||
matches = res.pop(0)
|
matches = res.pop(0)
|
||||||
assert(abs(float(x) - float(matches[0])) < 0.001)
|
assert(abs(float(x) - float(matches[0])) < 0.001)
|
||||||
assert(abs(float(y) + float(matches[1])) < 0.001)
|
assert(abs(float(y) + float(matches[1])) < 0.001)
|
||||||
|
assert(angle == float(matches[2]))
|
||||||
assert(side == matches[3])
|
assert(side == matches[3])
|
||||||
|
|
||||||
# Components that must not be found
|
# Components that must not be found
|
||||||
|
|
@ -224,3 +228,12 @@ def test_position_rot_2(test_dir):
|
||||||
ctx.compare_txt(output)
|
ctx.compare_txt(output)
|
||||||
ctx.compare_txt(prj+'_bom_jlc.csv')
|
ctx.compare_txt(prj+'_bom_jlc.csv')
|
||||||
ctx.clean_up()
|
ctx.clean_up()
|
||||||
|
|
||||||
|
|
||||||
|
def test_rot_bottom(test_dir):
|
||||||
|
ctx = context.TestContext(test_dir, 'test_rot_bottom', 'comp_bottom', 'simple_position_rot_bottom', POS_DIR)
|
||||||
|
ctx.run()
|
||||||
|
pos_bot = ctx.get_pos_both_filename()
|
||||||
|
ctx.expect_out_file(pos_bot)
|
||||||
|
expect_position(ctx, pos_bot, ['U1'], neg_x=True)
|
||||||
|
ctx.clean_up()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Example KiBot config file for a basic 2-layer board
|
||||||
|
kibot:
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
variants:
|
||||||
|
- name: default
|
||||||
|
comment: 'Just a place holder for the rotation filter'
|
||||||
|
type: kibom
|
||||||
|
variant: default
|
||||||
|
pre_transform: _rot_footprint
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
- name: 'position'
|
||||||
|
comment: "Pick and place file"
|
||||||
|
type: position
|
||||||
|
dir: positiondir
|
||||||
|
options:
|
||||||
|
variant: default
|
||||||
|
format: ASCII # CSV or ASCII format
|
||||||
|
units: millimeters # millimeters or inches
|
||||||
|
separate_files_for_front_and_back: false
|
||||||
|
only_smd: true
|
||||||
|
bottom_negative_x: true
|
||||||
Loading…
Reference in New Issue