Index: bug_files/clipbug.lht =================================================================== --- bug_files/clipbug.lht (revision 35479) +++ bug_files/clipbug.lht (nonexistent) @@ -1,1123 +0,0 @@ -ha:pcb-rnd-board-v8 { - - ha:attributes { - thickness=1.6mm - } - - li:styles { - ha:Signal { - via_proto = 0 - thickness = 0.2mm - text_thick = 0.0 - text_scale = 100 - clearance = 6.0mil - } - ha:Power { - via_proto = 0 - thickness = 0.3mm - text_thick = 0.0 - text_scale = 100 - clearance = 0.2mm - } - ha:imp_diff100 { - via_proto = 2 - thickness = 0.2mm - text_thick = 0.0 - text_scale = 100 - clearance = 30.0mil - } - ha:thin { - via_proto = 4 - thickness = 0.1mm - text_thick = 0.0 - text_scale = 100 - clearance = 0.2mm - } - ha:outline { - via_proto = 3 - thickness = 0.1mm - text_thick = 0.0 - text_scale = 100 - clearance = 0.2mm - } - } - - ha:meta { - ha:size { - thermal_scale = 0.500000 - x = 100.0mm - y = 100.0mm - } - board_name = HDMI firewall dongle - ha:grid { - spacing = 0.05mm - offs_x = 0.0 - offs_y = 0.0 - } - } - - ha:data { - li:padstack_prototypes { - - ha:ps_proto_v6.0 { - hdia=0.3mm; hplated=1; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } - ha:combining { } - ha:layer_mask { - bottom = 1 - copper = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - intern = 1 - } - clearance=0.0 - } - } - } - - ha:ps_proto_v6.1 { - hdia=0.6mm; hplated=1; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.3mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.3mm; } - ha:combining { } - ha:layer_mask { - bottom = 1 - copper = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.3mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - intern = 1 - } - clearance=0.0 - } - } - } - - ha:ps_proto_v6.2 { - hdia=0.2mm; hplated=1; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.45mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.45mm; } - ha:combining { } - ha:layer_mask { - bottom = 1 - copper = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.45mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - intern = 1 - } - clearance=0.0 - } - } - } - - ha:ps_proto_v6.3 { - hdia=0.5mm; hplated=0; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.0 - ps_hshadow = - } - - ha:ps_shape_v4 { - ha:combining { } - ha:layer_mask { - copper = 1 - intern = 1 - } - clearance=0.0 - ps_hshadow = - } - - ha:ps_shape_v4 { - ha:combining { } - ha:layer_mask { - bottom = 1 - copper = 1 - } - clearance=0.0 - ps_hshadow = - } - } - name = mouse bite - } - - ha:ps_proto_v6.4 { - hdia=0.5mm; hplated=1; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } - ha:combining { } - ha:layer_mask { - bottom = 1 - copper = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } - ha:combining { } - ha:layer_mask { - copper = 1 - intern = 1 - } - clearance=0.0 - } - } - } - unused = 1 - } - - li:objects { - ha:subc.8619 { - ha:attributes { - value=untrusted device - footprint=CONNECTOR_HDMI-001S.lht - refdes=J1 - } - ha:data { - li:padstack_prototypes { - - ha:ps_proto_v6.0 { - hdia=0.0; hplated=0; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.0 - li:ps_poly { - -0.15mm - -1.3mm - 0.15mm - -1.3mm - 0.15mm - 1.3mm - -0.15mm - 1.3mm - } - } - - ha:ps_shape_v4 { - ha:combining { sub=1; auto=1; } - ha:layer_mask { - top = 1 - mask = 1 - } - clearance=0.0 - li:ps_poly { - -0.2mm - -1.35mm - 0.2mm - -1.35mm - 0.2mm - 1.35mm - -0.2mm - 1.35mm - } - } - - ha:ps_shape_v4 { - ha:combining { auto=1; } - ha:layer_mask { - top = 1 - paste = 1 - } - clearance=0.0 - li:ps_poly { - -0.15mm - -1.3mm - 0.15mm - -1.3mm - 0.15mm - 1.3mm - -0.15mm - 1.3mm - } - } - } - } - - ha:ps_proto_v6.1 { - hdia=0.0; hplated=1; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.35mm; x2=0.0; y2=0.35mm; thickness=0.9mm; square=0; } - ha:combining { auto=1; } - ha:layer_mask { - mech = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.5mm; square=0; } - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.2mm - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.6mm; square=0; } - ha:combining { sub=1; auto=1; } - ha:layer_mask { - top = 1 - mask = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.5mm; square=0; } - ha:combining { } - ha:layer_mask { - copper = 1 - intern = 1 - } - clearance=0.2mm - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.5mm; square=0; } - ha:combining { } - ha:layer_mask { - bottom = 1 - copper = 1 - } - clearance=0.2mm - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.6mm; square=0; } - ha:combining { sub=1; auto=1; } - ha:layer_mask { - bottom = 1 - mask = 1 - } - clearance=0.0 - } - } - } - - ha:ps_proto_v6.2 { - hdia=0.0; hplated=1; htop=0; hbottom=0; - li:shape { - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.9mm; x2=0.0; y2=0.9mm; thickness=0.9mm; square=0; } - ha:combining { auto=1; } - ha:layer_mask { - mech = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.5mm; square=0; } - ha:combining { } - ha:layer_mask { - copper = 1 - top = 1 - } - clearance=0.2mm - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.6mm; square=0; } - ha:combining { sub=1; auto=1; } - ha:layer_mask { - top = 1 - mask = 1 - } - clearance=0.0 - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.5mm; square=0; } - ha:combining { } - ha:layer_mask { - copper = 1 - intern = 1 - } - clearance=0.2mm - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.5mm; square=0; } - ha:combining { } - ha:layer_mask { - bottom = 1 - copper = 1 - } - clearance=0.2mm - } - - ha:ps_shape_v4 { - ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.6mm; square=0; } - ha:combining { sub=1; auto=1; } - ha:layer_mask { - bottom = 1 - mask = 1 - } - clearance=0.0 - } - } - } - } - - li:objects { - ha:padstack_ref.8691 { - proto=0; x=32.735mm; y=17.65mm; rot=90.000000; xmirror=0; smirror=0; clearance=0.2mm; - ha:flags { - clearline=1 - } - - li:thermal { - } - - ha:attributes { - term=19 - name=19 - } - } - ha:padstack_ref.8693 { - proto=1; x=26.015mm; y=14.9mm; rot=90.000000; xmirror=0; smirror=0; clearance=0.2mm; - ha:flags { - clearline=1 - } - - li:thermal { - } - - ha:attributes { - term=NC2 - name=NC2 - } - } - } - li:layers { - - ha:subc-aux { - lid=0 - ha:combining { } - - li:objects { - ha:line.8620 { - x1=28.5mm; y1=22.15mm; x2=28.5mm; y2=22.15mm; thickness=0.1mm; clearance=0.0; - ha:attributes { - subc-role=origin - } - } - ha:line.8623 { - x1=28.5mm; y1=22.15mm; x2=28.5mm; y2=21.15mm; thickness=0.1mm; clearance=0.0; - ha:attributes { - subc-role=x - } - } - ha:line.8626 { - x1=28.5mm; y1=22.15mm; x2=29.5mm; y2=22.15mm; thickness=0.1mm; clearance=0.0; - ha:attributes { - subc-role=y - } - } - } - ha:type { - top = 1 - misc = 1 - virtual = 1 - } - } - - ha:top-silkscreen { - lid=1 - ha:combining { } - - li:objects { - } - ha:type { - silk = 1 - top = 1 - } - } - - ha:top-assembly { - lid=2 - ha:combining { } - - li:objects { - ha:line.8653 { - x1=28.5mm; y1=22.85mm; x2=28.5mm; y2=21.45mm; thickness=0.1mm; clearance=0.0; - } - ha:line.8656 { - x1=27.8mm; y1=22.15mm; x2=29.2mm; y2=22.15mm; thickness=0.1mm; clearance=0.0; - } - ha:line.8659 { - x1=22.425mm; y1=29.65mm; x2=22.425mm; y2=14.65mm; thickness=0.1mm; clearance=0.0; - } - ha:line.8662 { - x1=22.425mm; y1=14.65mm; x2=34.575mm; y2=14.65mm; thickness=0.1mm; clearance=0.0; - } - ha:line.8665 { - x1=34.575mm; y1=14.65mm; x2=34.575mm; y2=29.65mm; thickness=0.1mm; clearance=0.0; - } - ha:line.8668 { - x1=34.575mm; y1=29.65mm; x2=22.425mm; y2=29.65mm; thickness=0.1mm; clearance=0.0; - } - ha:arc.8671 { - x=28.5mm; y=22.15mm; width=0.5mm; height=0.5mm; astart=90.000000; adelta=360.000000; thickness=0.1mm; clearance=0.0; - } - ha:text.8672 { - string=%a.parent.refdes%; x=26.0mm; y=20.65mm; scale=100; fid=0; - ha:flags { - dyntext=1 - floater=1 - } - rot = 90.000000 - } - } - ha:type { - top = 1 - doc = 1 - } - purpose = assy - } - - ha:top-courtyard { - lid=3 - ha:combining { } - - li:objects { - ha:polygon.8696 { - li:geometry { - ta:contour { - { 22.175mm; 30.4mm } - { 22.175mm; 13.9mm } - { 34.825mm; 13.9mm } - { 34.825mm; 30.4mm } - } - } - } - } - ha:type { - top = 1 - doc = 1 - } - purpose = ko.courtyard - } - } - } - uid = UsZVGY9SkJLERZiC+TcAAAAj - } - } - li:layers { - - ha:top-sig { - lid=0 - group=3 - ha:combining { } - - ha:attributes { - {pcb-rnd::key::vis}={l; Shiftt} - {pcb-rnd::key::select}={l; t} - } - - li:objects { - } - color = {#238b27} - } - - ha:bottom-sig { - lid=1 - group=13 - ha:combining { } - - ha:attributes { - {pcb-rnd::key::vis}={l; Shiftb} - {pcb-rnd::key::select}={l; b} - } - - li:objects { - } - color = {#38ee39} - } - - ha:top-gnd { - lid=2 - group=3 - ha:combining { } - - li:objects { - ha:line.21180 { - x1=41.0mm; y1=21.0mm; x2=42.325mm; y2=21.0mm; thickness=0.5mm; clearance=0.4mm; - ha:flags { - clearline=1 - } - li:thermal { - on - solid - } - } - ha:polygon.21680 { clearance=0.4mm; - li:geometry { - ta:contour { - { 24.55mm; 12.95mm } - { 43.25mm; 12.95mm } - { 43.25mm; 30.05mm } - { 24.55mm; 30.05mm } - } - } - - ha:flags { - clearpoly=1 - } - } - } - color = {#104e8b} - } - - ha:bottom-gnd { - lid=3 - group=13 - ha:combining { } - - li:objects { - } - color = {#6164ff} - } - - ha:outline { - lid=4 - group=9 - ha:combining { } - - li:objects { - } - color = {#00868b} - } - - ha:bottom-silk { - lid=5 - group=15 - ha:combining { auto=1; } - - ha:attributes { - {pcb-rnd::key::vis}={l; Shiftx} - {pcb-rnd::key::select}={l; x} - } - - li:objects { - } - color = {#000000} - } - - ha:top-silk { - lid=6 - group=1 - ha:combining { auto=1; } - - ha:attributes { - {pcb-rnd::key::vis}={l; Shifts} - {pcb-rnd::key::select}={l; s} - } - - li:objects { - } - color = {#000000} - } - - ha:top-paste { - lid=7 - group=0 - ha:combining { auto=1; } - - li:objects { - } - color = {#cd00cd} - } - - ha:top-mask { - lid=8 - group=2 - ha:combining { sub=1; auto=1; } - - li:objects { - } - color = {#ff0000} - } - - ha:bottom-mask { - lid=9 - group=14 - ha:combining { sub=1; auto=1; } - - li:objects { - } - color = {#ff0000} - } - - ha:bottom-paste { - lid=10 - group=16 - ha:combining { auto=1; } - - li:objects { - } - color = {#cd00cd} - } - - ha:slot-plated { - lid=11 - group=17 - ha:combining { auto=1; } - - li:objects { - } - color = {#8b7355} - } - - ha:slot-unplated { - lid=12 - group=18 - ha:combining { auto=1; } - - li:objects { - } - color = {#00868b} - } - - ha:top-assy { - lid=13 - group=19 - ha:combining { } - - li:objects { - } - color = {#444444} - } - - ha:bot-assy { - lid=14 - group=20 - ha:combining { } - - li:objects { - } - color = {#444444} - } - - ha:fab { - lid=15 - group=21 - ha:combining { auto=1; } - - li:objects { - ha:text.905 { - string=board thickness needs to be 1.6 mm for edge mounted HDMI plug; x=1.7mm; y=1.15mm; scale=200; fid=0; - ha:flags { - clearline=1 - } - rot = 0.000000 - } - } - color = {#222222} - } - - ha:top-courtyard { - lid=16 - group=10 - ha:combining { } - - li:objects { - } - color = {#104e8b} - } - - ha:bot-courtyard { - lid=17 - group=11 - ha:combining { } - - li:objects { - } - color = {#cd3700} - } - - ha:top-pwr { - lid=18 - group=3 - ha:combining { } - - li:objects { - } - color = {#c24744} - } - - ha:bottom-pwr { - lid=19 - group=13 - ha:combining { } - - li:objects { - } - color = {#ff5759} - } - - ha:inner-top { - lid=20 - group=5 - ha:combining { } - - li:objects { - } - color = {#548b54} - } - - ha:inner-bottom { - lid=21 - group=7 - ha:combining { } - - li:objects { - } - color = {#8b7355} - } - - ha:break-tabs { - lid=22 - group=12 - ha:combining { } - - li:objects { - } - color = {#00868b} - } - } - } - - - ha:layer_stack { - li:groups { - ha:0 { - name = top_paste - ha:type { top=1; paste=1; } - li:layers { 7; } - } - ha:1 { - name = top_silk - ha:type { silk=1; top=1; } - li:layers { 6; } - } - ha:2 { - name = top_mask - ha:type { top=1; mask=1; } - li:layers { 8; } - } - ha:3 { - name = top_copper - ha:type { copper=1; top=1; } - li:layers { 0; 18; 2; } - ha:attributes { - thickness=0.035mm - } - } - ha:4 { - name = grp_4 - ha:type { substrate=1; intern=1; } - li:layers { } - ha:attributes { - thickness={0.2mm } - } - } - ha:5 { - name = Intern - ha:type { copper=1; intern=1; } - li:layers { 20; } - ha:attributes { - thickness=0.0175mm - } - } - ha:6 { - name = grp_6 - ha:type { substrate=1; intern=1; } - li:layers { } - ha:attributes { - thickness=1.065mm - } - } - ha:7 { - name = Intern - ha:type { copper=1; intern=1; } - li:layers { 21; } - ha:attributes { - thickness=0.0175mm - } - } - ha:8 { - name = grp_9 - ha:type { substrate=1; intern=1; } - li:layers { } - ha:attributes { - thickness=0.2mm - } - } - ha:9 { - name = global_outline - ha:type { boundary=1; } - li:layers { 4; } - purpose = uroute - } - ha:10 { - name = top-courtyard - ha:type { top=1; doc=1; } - li:layers { 16; } - ha:attributes { - init-invis=true - } - purpose = ko.courtyard - } - ha:11 { - name = bot-courtyard - ha:type { bottom=1; doc=1; } - li:layers { 17; } - ha:attributes { - init-invis=true - } - purpose = ko.courtyard - } - ha:12 { - name = global-doc - ha:type { doc=1; } - li:layers { 22; } - } - ha:13 { - name = bottom_copper - ha:type { bottom=1; copper=1; } - li:layers { 1; 19; 3; } - ha:attributes { - thickness=0.035mm - } - } - ha:14 { - name = bottom_mask - ha:type { bottom=1; mask=1; } - li:layers { 9; } - } - ha:15 { - name = bottom_silk - ha:type { silk=1; bottom=1; } - li:layers { 5; } - } - ha:16 { - name = bottom_paste - ha:type { bottom=1; paste=1; } - li:layers { 10; } - } - ha:17 { - name = pmech - ha:type { mech=1; } - li:layers { 11; } - purpose = proute - } - ha:18 { - name = umech - ha:type { mech=1; } - li:layers { 12; } - purpose = uroute - } - ha:19 { - name = top_assy - ha:type { top=1; doc=1; } - li:layers { 13; } - ha:attributes { - init-invis=1 - } - purpose = assy - } - ha:20 { - name = bot_assy - ha:type { bottom=1; doc=1; } - li:layers { 14; } - ha:attributes { - init-invis=1 - } - purpose = assy - } - ha:21 { - name = fab - ha:type { top=1; doc=1; } - li:layers { 15; } - ha:attributes { - init-invis=1 - } - purpose = fab - } - } - } - li:pcb-rnd-conf-v1 { - ha:overwrite { - ha:plugins { - ha:show_netnames { - enable = true - } - ha:import_sch { - li:args { - ./hdmi_firewall.sch - } - import_fmt = lepton - } - } - ha:design { - via_proto = 0 - text_font_id = 0 - text_scale = 100 - min_slk = 0.15240000 mm - text_thickness = 0 - line_thickness = 300.00 um - ha:drc { - min_ring = 0.125 mm - min_copper_overlap = 6.0 mil - min_copper_thickness = 5.0 mil - min_drill = 0.2 mm - } - min_wid = 0.15240000 mm - bloat = 0.15240000 mm - clearance = 200.00 um - } - ha:editor { - grid_unit = mm - grids_idx = 8 - clear_line = true - grid = 50.00 um - line_refraction = 1 - buffer_number = 0 - rubber_band_mode = false - ha:view { - flip_y = 0 - } - show_solder_side = 0 - wireframe_draw = false - } - ha:rc { - li:library_search_paths { - $(rc.path.design)/coraleda/subc - $(rc.path.design)/coraleda/subc - ?../pcblib - ?~/pcblib/ - $(rc.path.share)/pcblib - } - } - } - ha:append { - ha:plugins { - ha:drc_query { - li:rules { - ha:net-length { - type = net length - title = network length violation - desc = network length is not within the specified range - query = {rule net_len_min -let ALLNETS netlist() -let LNET (ALLNETS.a."len_min" != "") -assert (isvoid(netlen(LNET))) thus violation(DRCGRP1, LNET, DRCTEXT, "network can not be verified for length (not a 2-terminal net): ", DRCTEXT, LNET.name) -assert (netlen(LNET) < coord(LNET.a."len_min")) thus violation(DRCGRP1, LNET, DRCTEXT, "network is too short: ", DRCTEXT, LNET.name, DRCMEASURE, netlen(LNET), DRCEXPECT, LNET.a."len_min") -rule net_len_max -let ALLNETS netlist() -let LNET (ALLNETS.a."len_max" != "") -assert (isvoid(netlen(LNET))) thus violation(DRCGRP1, LNET, DRCTEXT, "network can not be verified for length (not a 2-terminal net): ", DRCTEXT, LNET.name) -assert (netlen(LNET) > coord(LNET.a."len_max")) thus violation(DRCGRP1, LNET, DRCTEXT, "network is too long: ", DRCTEXT, LNET.name, DRCMEASURE, netlen(LNET), DRCEXPECT, LNET.a."len_max") -rule net_len_match_net -let ALLNETS netlist() -let LNET ((ALLNETS.a."len_match_net" != "") && (ALLNETS.a."len_match_tol" != "")) -assert (isvoid(netlen(LNET))) thus violation(DRCGRP1, LNET, DRCTEXT, "network can not be verified for length (not a 2-terminal net): ", DRCTEXT, LNET.name) -assert (abs(netlen(LNET) - netlen(LNET.a."len_match_net")) > coord(LNET.a."len_match_tol")) thus violation(DRCGRP1, LNET, DRCTEXT, "network is length match out of range: ", DRCTEXT, LNET.name, DRCTEXT, " vs. ", DRCTEXT, LNET.a."len_match_net", DRCMEASURE, abs(netlen(LNET) - netlen(LNET.a."len_match_net")), DRCEXPECT, LNET.a."len_match_tol") -} - } - } - } - } - } - } - ha:pixmaps { - } -} Index: bug_files/TODO/clipbug.lht =================================================================== --- bug_files/TODO/clipbug.lht (nonexistent) +++ bug_files/TODO/clipbug.lht (revision 35480) @@ -0,0 +1,1123 @@ +ha:pcb-rnd-board-v8 { + + ha:attributes { + thickness=1.6mm + } + + li:styles { + ha:Signal { + via_proto = 0 + thickness = 0.2mm + text_thick = 0.0 + text_scale = 100 + clearance = 6.0mil + } + ha:Power { + via_proto = 0 + thickness = 0.3mm + text_thick = 0.0 + text_scale = 100 + clearance = 0.2mm + } + ha:imp_diff100 { + via_proto = 2 + thickness = 0.2mm + text_thick = 0.0 + text_scale = 100 + clearance = 30.0mil + } + ha:thin { + via_proto = 4 + thickness = 0.1mm + text_thick = 0.0 + text_scale = 100 + clearance = 0.2mm + } + ha:outline { + via_proto = 3 + thickness = 0.1mm + text_thick = 0.0 + text_scale = 100 + clearance = 0.2mm + } + } + + ha:meta { + ha:size { + thermal_scale = 0.500000 + x = 100.0mm + y = 100.0mm + } + board_name = HDMI firewall dongle + ha:grid { + spacing = 0.05mm + offs_x = 0.0 + offs_y = 0.0 + } + } + + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.3mm; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + + ha:ps_proto_v6.1 { + hdia=0.6mm; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.3mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.3mm; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.3mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + + ha:ps_proto_v6.2 { + hdia=0.2mm; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.45mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.45mm; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.45mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + + ha:ps_proto_v6.3 { + hdia=0.5mm; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + ps_hshadow = + } + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + ps_hshadow = + } + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + ps_hshadow = + } + } + name = mouse bite + } + + ha:ps_proto_v6.4 { + hdia=0.5mm; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=0.6mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + unused = 1 + } + + li:objects { + ha:subc.8619 { + ha:attributes { + value=untrusted device + footprint=CONNECTOR_HDMI-001S.lht + refdes=J1 + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + -0.15mm + -1.3mm + 0.15mm + -1.3mm + 0.15mm + 1.3mm + -0.15mm + 1.3mm + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + -0.2mm + -1.35mm + 0.2mm + -1.35mm + 0.2mm + 1.35mm + -0.2mm + 1.35mm + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + -0.15mm + -1.3mm + 0.15mm + -1.3mm + 0.15mm + 1.3mm + -0.15mm + 1.3mm + } + } + } + } + + ha:ps_proto_v6.1 { + hdia=0.0; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.35mm; x2=0.0; y2=0.35mm; thickness=0.9mm; square=0; } + ha:combining { auto=1; } + ha:layer_mask { + mech = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.5mm; square=0; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.2mm + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.6mm; square=0; } + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.5mm; square=0; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.2mm + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.5mm; square=0; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.2mm + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.4mm; x2=0.0; y2=0.4mm; thickness=1.6mm; square=0; } + ha:combining { sub=1; auto=1; } + ha:layer_mask { + bottom = 1 + mask = 1 + } + clearance=0.0 + } + } + } + + ha:ps_proto_v6.2 { + hdia=0.0; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.9mm; x2=0.0; y2=0.9mm; thickness=0.9mm; square=0; } + ha:combining { auto=1; } + ha:layer_mask { + mech = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.5mm; square=0; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.2mm + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.6mm; square=0; } + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.5mm; square=0; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.2mm + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.5mm; square=0; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.2mm + } + + ha:ps_shape_v4 { + ha:ps_line { x1=0.0; y1=-0.95mm; x2=0.0; y2=0.95mm; thickness=1.6mm; square=0; } + ha:combining { sub=1; auto=1; } + ha:layer_mask { + bottom = 1 + mask = 1 + } + clearance=0.0 + } + } + } + } + + li:objects { + ha:padstack_ref.8691 { + proto=0; x=32.735mm; y=17.65mm; rot=90.000000; xmirror=0; smirror=0; clearance=0.2mm; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=19 + name=19 + } + } + ha:padstack_ref.8693 { + proto=1; x=26.015mm; y=14.9mm; rot=90.000000; xmirror=0; smirror=0; clearance=0.2mm; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=NC2 + name=NC2 + } + } + } + li:layers { + + ha:subc-aux { + lid=0 + ha:combining { } + + li:objects { + ha:line.8620 { + x1=28.5mm; y1=22.15mm; x2=28.5mm; y2=22.15mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.8623 { + x1=28.5mm; y1=22.15mm; x2=28.5mm; y2=21.15mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.8626 { + x1=28.5mm; y1=22.15mm; x2=29.5mm; y2=22.15mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + + ha:top-silkscreen { + lid=1 + ha:combining { } + + li:objects { + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:top-assembly { + lid=2 + ha:combining { } + + li:objects { + ha:line.8653 { + x1=28.5mm; y1=22.85mm; x2=28.5mm; y2=21.45mm; thickness=0.1mm; clearance=0.0; + } + ha:line.8656 { + x1=27.8mm; y1=22.15mm; x2=29.2mm; y2=22.15mm; thickness=0.1mm; clearance=0.0; + } + ha:line.8659 { + x1=22.425mm; y1=29.65mm; x2=22.425mm; y2=14.65mm; thickness=0.1mm; clearance=0.0; + } + ha:line.8662 { + x1=22.425mm; y1=14.65mm; x2=34.575mm; y2=14.65mm; thickness=0.1mm; clearance=0.0; + } + ha:line.8665 { + x1=34.575mm; y1=14.65mm; x2=34.575mm; y2=29.65mm; thickness=0.1mm; clearance=0.0; + } + ha:line.8668 { + x1=34.575mm; y1=29.65mm; x2=22.425mm; y2=29.65mm; thickness=0.1mm; clearance=0.0; + } + ha:arc.8671 { + x=28.5mm; y=22.15mm; width=0.5mm; height=0.5mm; astart=90.000000; adelta=360.000000; thickness=0.1mm; clearance=0.0; + } + ha:text.8672 { + string=%a.parent.refdes%; x=26.0mm; y=20.65mm; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 90.000000 + } + } + ha:type { + top = 1 + doc = 1 + } + purpose = assy + } + + ha:top-courtyard { + lid=3 + ha:combining { } + + li:objects { + ha:polygon.8696 { + li:geometry { + ta:contour { + { 22.175mm; 30.4mm } + { 22.175mm; 13.9mm } + { 34.825mm; 13.9mm } + { 34.825mm; 30.4mm } + } + } + } + } + ha:type { + top = 1 + doc = 1 + } + purpose = ko.courtyard + } + } + } + uid = UsZVGY9SkJLERZiC+TcAAAAj + } + } + li:layers { + + ha:top-sig { + lid=0 + group=3 + ha:combining { } + + ha:attributes { + {pcb-rnd::key::vis}={l; Shiftt} + {pcb-rnd::key::select}={l; t} + } + + li:objects { + } + color = {#238b27} + } + + ha:bottom-sig { + lid=1 + group=13 + ha:combining { } + + ha:attributes { + {pcb-rnd::key::vis}={l; Shiftb} + {pcb-rnd::key::select}={l; b} + } + + li:objects { + } + color = {#38ee39} + } + + ha:top-gnd { + lid=2 + group=3 + ha:combining { } + + li:objects { + ha:line.21180 { + x1=41.0mm; y1=21.0mm; x2=42.325mm; y2=21.0mm; thickness=0.5mm; clearance=0.4mm; + ha:flags { + clearline=1 + } + li:thermal { + on + solid + } + } + ha:polygon.21680 { clearance=0.4mm; + li:geometry { + ta:contour { + { 24.55mm; 12.95mm } + { 43.25mm; 12.95mm } + { 43.25mm; 30.05mm } + { 24.55mm; 30.05mm } + } + } + + ha:flags { + clearpoly=1 + } + } + } + color = {#104e8b} + } + + ha:bottom-gnd { + lid=3 + group=13 + ha:combining { } + + li:objects { + } + color = {#6164ff} + } + + ha:outline { + lid=4 + group=9 + ha:combining { } + + li:objects { + } + color = {#00868b} + } + + ha:bottom-silk { + lid=5 + group=15 + ha:combining { auto=1; } + + ha:attributes { + {pcb-rnd::key::vis}={l; Shiftx} + {pcb-rnd::key::select}={l; x} + } + + li:objects { + } + color = {#000000} + } + + ha:top-silk { + lid=6 + group=1 + ha:combining { auto=1; } + + ha:attributes { + {pcb-rnd::key::vis}={l; Shifts} + {pcb-rnd::key::select}={l; s} + } + + li:objects { + } + color = {#000000} + } + + ha:top-paste { + lid=7 + group=0 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:top-mask { + lid=8 + group=2 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-mask { + lid=9 + group=14 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-paste { + lid=10 + group=16 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:slot-plated { + lid=11 + group=17 + ha:combining { auto=1; } + + li:objects { + } + color = {#8b7355} + } + + ha:slot-unplated { + lid=12 + group=18 + ha:combining { auto=1; } + + li:objects { + } + color = {#00868b} + } + + ha:top-assy { + lid=13 + group=19 + ha:combining { } + + li:objects { + } + color = {#444444} + } + + ha:bot-assy { + lid=14 + group=20 + ha:combining { } + + li:objects { + } + color = {#444444} + } + + ha:fab { + lid=15 + group=21 + ha:combining { auto=1; } + + li:objects { + ha:text.905 { + string=board thickness needs to be 1.6 mm for edge mounted HDMI plug; x=1.7mm; y=1.15mm; scale=200; fid=0; + ha:flags { + clearline=1 + } + rot = 0.000000 + } + } + color = {#222222} + } + + ha:top-courtyard { + lid=16 + group=10 + ha:combining { } + + li:objects { + } + color = {#104e8b} + } + + ha:bot-courtyard { + lid=17 + group=11 + ha:combining { } + + li:objects { + } + color = {#cd3700} + } + + ha:top-pwr { + lid=18 + group=3 + ha:combining { } + + li:objects { + } + color = {#c24744} + } + + ha:bottom-pwr { + lid=19 + group=13 + ha:combining { } + + li:objects { + } + color = {#ff5759} + } + + ha:inner-top { + lid=20 + group=5 + ha:combining { } + + li:objects { + } + color = {#548b54} + } + + ha:inner-bottom { + lid=21 + group=7 + ha:combining { } + + li:objects { + } + color = {#8b7355} + } + + ha:break-tabs { + lid=22 + group=12 + ha:combining { } + + li:objects { + } + color = {#00868b} + } + } + } + + + ha:layer_stack { + li:groups { + ha:0 { + name = top_paste + ha:type { top=1; paste=1; } + li:layers { 7; } + } + ha:1 { + name = top_silk + ha:type { silk=1; top=1; } + li:layers { 6; } + } + ha:2 { + name = top_mask + ha:type { top=1; mask=1; } + li:layers { 8; } + } + ha:3 { + name = top_copper + ha:type { copper=1; top=1; } + li:layers { 0; 18; 2; } + ha:attributes { + thickness=0.035mm + } + } + ha:4 { + name = grp_4 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness={0.2mm } + } + } + ha:5 { + name = Intern + ha:type { copper=1; intern=1; } + li:layers { 20; } + ha:attributes { + thickness=0.0175mm + } + } + ha:6 { + name = grp_6 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness=1.065mm + } + } + ha:7 { + name = Intern + ha:type { copper=1; intern=1; } + li:layers { 21; } + ha:attributes { + thickness=0.0175mm + } + } + ha:8 { + name = grp_9 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness=0.2mm + } + } + ha:9 { + name = global_outline + ha:type { boundary=1; } + li:layers { 4; } + purpose = uroute + } + ha:10 { + name = top-courtyard + ha:type { top=1; doc=1; } + li:layers { 16; } + ha:attributes { + init-invis=true + } + purpose = ko.courtyard + } + ha:11 { + name = bot-courtyard + ha:type { bottom=1; doc=1; } + li:layers { 17; } + ha:attributes { + init-invis=true + } + purpose = ko.courtyard + } + ha:12 { + name = global-doc + ha:type { doc=1; } + li:layers { 22; } + } + ha:13 { + name = bottom_copper + ha:type { bottom=1; copper=1; } + li:layers { 1; 19; 3; } + ha:attributes { + thickness=0.035mm + } + } + ha:14 { + name = bottom_mask + ha:type { bottom=1; mask=1; } + li:layers { 9; } + } + ha:15 { + name = bottom_silk + ha:type { silk=1; bottom=1; } + li:layers { 5; } + } + ha:16 { + name = bottom_paste + ha:type { bottom=1; paste=1; } + li:layers { 10; } + } + ha:17 { + name = pmech + ha:type { mech=1; } + li:layers { 11; } + purpose = proute + } + ha:18 { + name = umech + ha:type { mech=1; } + li:layers { 12; } + purpose = uroute + } + ha:19 { + name = top_assy + ha:type { top=1; doc=1; } + li:layers { 13; } + ha:attributes { + init-invis=1 + } + purpose = assy + } + ha:20 { + name = bot_assy + ha:type { bottom=1; doc=1; } + li:layers { 14; } + ha:attributes { + init-invis=1 + } + purpose = assy + } + ha:21 { + name = fab + ha:type { top=1; doc=1; } + li:layers { 15; } + ha:attributes { + init-invis=1 + } + purpose = fab + } + } + } + li:pcb-rnd-conf-v1 { + ha:overwrite { + ha:plugins { + ha:show_netnames { + enable = true + } + ha:import_sch { + li:args { + ./hdmi_firewall.sch + } + import_fmt = lepton + } + } + ha:design { + via_proto = 0 + text_font_id = 0 + text_scale = 100 + min_slk = 0.15240000 mm + text_thickness = 0 + line_thickness = 300.00 um + ha:drc { + min_ring = 0.125 mm + min_copper_overlap = 6.0 mil + min_copper_thickness = 5.0 mil + min_drill = 0.2 mm + } + min_wid = 0.15240000 mm + bloat = 0.15240000 mm + clearance = 200.00 um + } + ha:editor { + grid_unit = mm + grids_idx = 8 + clear_line = true + grid = 50.00 um + line_refraction = 1 + buffer_number = 0 + rubber_band_mode = false + ha:view { + flip_y = 0 + } + show_solder_side = 0 + wireframe_draw = false + } + ha:rc { + li:library_search_paths { + $(rc.path.design)/coraleda/subc + $(rc.path.design)/coraleda/subc + ?../pcblib + ?~/pcblib/ + $(rc.path.share)/pcblib + } + } + } + ha:append { + ha:plugins { + ha:drc_query { + li:rules { + ha:net-length { + type = net length + title = network length violation + desc = network length is not within the specified range + query = {rule net_len_min +let ALLNETS netlist() +let LNET (ALLNETS.a."len_min" != "") +assert (isvoid(netlen(LNET))) thus violation(DRCGRP1, LNET, DRCTEXT, "network can not be verified for length (not a 2-terminal net): ", DRCTEXT, LNET.name) +assert (netlen(LNET) < coord(LNET.a."len_min")) thus violation(DRCGRP1, LNET, DRCTEXT, "network is too short: ", DRCTEXT, LNET.name, DRCMEASURE, netlen(LNET), DRCEXPECT, LNET.a."len_min") +rule net_len_max +let ALLNETS netlist() +let LNET (ALLNETS.a."len_max" != "") +assert (isvoid(netlen(LNET))) thus violation(DRCGRP1, LNET, DRCTEXT, "network can not be verified for length (not a 2-terminal net): ", DRCTEXT, LNET.name) +assert (netlen(LNET) > coord(LNET.a."len_max")) thus violation(DRCGRP1, LNET, DRCTEXT, "network is too long: ", DRCTEXT, LNET.name, DRCMEASURE, netlen(LNET), DRCEXPECT, LNET.a."len_max") +rule net_len_match_net +let ALLNETS netlist() +let LNET ((ALLNETS.a."len_match_net" != "") && (ALLNETS.a."len_match_tol" != "")) +assert (isvoid(netlen(LNET))) thus violation(DRCGRP1, LNET, DRCTEXT, "network can not be verified for length (not a 2-terminal net): ", DRCTEXT, LNET.name) +assert (abs(netlen(LNET) - netlen(LNET.a."len_match_net")) > coord(LNET.a."len_match_tol")) thus violation(DRCGRP1, LNET, DRCTEXT, "network is length match out of range: ", DRCTEXT, LNET.name, DRCTEXT, " vs. ", DRCTEXT, LNET.a."len_match_net", DRCMEASURE, abs(netlen(LNET) - netlen(LNET.a."len_match_net")), DRCEXPECT, LNET.a."len_match_tol") +} + } + } + } + } + } + } + ha:pixmaps { + } +}