Index: bug_files/TODO/disj.lht =================================================================== --- bug_files/TODO/disj.lht (nonexistent) +++ bug_files/TODO/disj.lht (revision 35407) @@ -0,0 +1,853 @@ +ha:pcb-rnd-board-v8 { + + ha:meta { + ha:size { + thermal_scale = 0.500000 + x = 7.7mm + y = 6.2mm + } + ha:grid { + spacing = 0.05mm + offs_x = 0.0 + offs_y = 0.0 + } + board_name = HDMI firewall dongle + } + + ha:data { + li:padstack_prototypes { + + unused = 1 + unused = 1 + 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:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + ps_hshadow = + } + } + } + + + unused = 1 + unused = 1 + unused = 1 + } + + li:objects { + ha:padstack_ref.21186 { + proto=2; x=6.65mm; y=5.15mm; rot=0.000000; xmirror=0; smirror=0; clearance=30.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + li:2 { + on + solid + noshape + } + li:3 { + on + solid + noshape + } + li:20 { + on + solid + noshape + } + li:21 { + on + solid + noshape + } + } + } + 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.2mm + 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 + } + } + } + } + + unused = 1 + unused = 1 + } + + li:objects { + ha:padstack_ref.8674 { + proto=0; x=5.085mm; y=5.15mm; rot=90.000000; xmirror=0; smirror=0; clearance=0.2mm; + ha:flags { + clearline=1 + } + + li:thermal { + li:2 { + on + solid + noshape + } + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:subc-aux { + lid=0 + ha:combining { } + + li:objects { + ha:line.8620 { + x1=0.85mm; y1=1.15mm; x2=0.85mm; y2=1.15mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.8623 { + x1=0.85mm; y1=1.15mm; x2=0.85mm; y2=0.15mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.8626 { + x1=0.85mm; y1=1.15mm; x2=1.85mm; y2=1.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=0.85mm; y1=1.85mm; x2=0.85mm; y2=0.45mm; thickness=0.1mm; clearance=0.0; + } + ha:line.8656 { + x1=0.15mm; y1=1.15mm; x2=1.55mm; y2=1.15mm; thickness=0.1mm; clearance=0.0; + } + ha:arc.8671 { + x=0.85mm; y=1.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=-1.65mm; y=-0.35mm; 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: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.22371 { + x1=6.65mm; y1=5.15mm; x2=5.085mm; y2=5.15mm; thickness=0.3mm; clearance=0.4mm; + } + } + 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 { + } + 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 { + ha:type { substrate=1; intern=1; } + li:layers { } + name = grp_6 + ha:attributes { + thickness=1.065mm + } + } + ha:7 { + name = Intern + ha:type { intern=1; copper=1; } + li:layers { 21;} + ha:attributes { + thickness={0.0175mm} + } + } + ha:8 { + name = grp_9 + ha:type { intern=1; substrate=1; } + li:layers { } + ha:attributes { + thickness=0.2mm + } + } + ha:9 { + ha:type { boundary=1; } + li:layers { 4;} + name = global_outline + 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; } + purpose = ko.courtyard + ha:attributes { + init-invis=true + } + } + 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 { bottom=1; silk=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 { doc=1; top=1; } + li:layers { 13; } + purpose = assy + ha:attributes { + init-invis=1 + } + } + ha:20 { + name = bot_assy + ha:type { doc=1; bottom=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:design { + via_proto = 2 + text_font_id = 0 + text_scale = 100 + min_slk = 0.15240000 mm + text_thickness = 0 + line_thickness = 200.00 um + ha:drc { + min_ring = 0.125 mm + min_copper_overlap = 5.0 mil + min_drill = 0.2 mm + min_copper_thickness = 5.0 mil + min_copper_clearance = 5.0 mil + } + min_wid = 0.15240000 mm + bloat = 0.15240000 mm + clearance = 30.00 mil + } + ha:editor { + grid_unit = mm + grids_idx = 8 + grid = 50.00 um + buffer_number = 0 + line_refraction = 1 + rubber_band_mode = false + ha:view { + flip_y = 0 + } + show_solder_side = 0 + clear_line = false + } + ha:rc { + li:library_search_paths { + $(rc.path.design)/coraleda/subc + $(rc.path.design)/coraleda/subc + ?../pcblib + ?~/pcblib/ + $(rc.path.share)/pcblib + } + } + ha:plugins { + ha:import_sch { + li:args { + ./hdmi_firewall.sch + } + import_fmt = lepton + } + ha:show_netnames { + enable = true + } + } + } + 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 { + } + ha:netlists { + + li:input { + ha:D2- { + li:conn { J1-3; J2-3; } + } + ha:CK+ { + li:conn { J1-10; J2-10; } + } + ha:CK- { + li:conn { J1-12; J2-12; } + } + ha:SDA { + li:conn { J1-16; R2-1; U1-3; } + } + ha:SCL { + li:conn { J1-15; R3-1; U1-1; } + } + ha:GND { + li:conn { C1-1; C2-1; J1-2; J1-5; J1-8; J1-11; J1-17; J2-2; J2-5; J2-8; J2-11; J2-17; R4-1; R6-1; R6-2; U1-2; U1-5; } + } + ha:5V { + li:conn { C1-2; C2-2; J1-18; J2-18; R1-2; R2-2; R3-2; R4-2; R5-1; R5-2; U1-4; } + } + ha:unnamed_net3 { + li:conn { J1-19; R1-1; } + } + ha:D0+ { + li:conn { J1-7; J2-7; } + } + ha:D0- { + li:conn { J1-9; J2-9; } + } + ha:D1+ { + li:conn { J1-4; J2-4; } + } + ha:D1- { + li:conn { J1-6; J2-6; } + } + ha:D2+ { + li:conn { J1-1; J2-1; } + } + } + li:netlist_patch { + ha:change_attrib { net=CK+; key=len_match_net; val=HDMI; } + ha:change_attrib { net=CK-; key=len_match_net; val=HDMI; } + ha:change_attrib { net=D0+; key=len_match_net; val=HDMI; } + ha:change_attrib { net=D0-; key=len_match_net; val=HDMI; } + ha:change_attrib { net=D1+; key=len_match_net; val=HDMI; } + ha:change_attrib { net=D1-; key=len_match_net; val=HDMI; } + ha:change_attrib { net=D2+; key=len_match_net; val=HDMI; } + ha:change_attrib { net=D2-; key=len_match_net; val=HDMI; } + ha:change_attrib { net=D2-; key=len_match_tol; val=0.05mm; } + ha:change_attrib { net=D2+; key=len_match_tol; val=0.05mm; } + ha:change_attrib { net=D1-; key=len_match_tol; val=0.05mm; } + ha:change_attrib { net=D1+; key=len_match_tol; val=0.05mm; } + ha:change_attrib { net=D0-; key=len_match_tol; val=0.05mm; } + ha:change_attrib { net=D0+; key=len_match_tol; val=0.05mm; } + ha:change_attrib { net=CK-; key=len_match_tol; val=0.05mm; } + ha:change_attrib { net=CK+; key=len_match_tol; val=0.05mm; } + } + } + ha:attributes { + thickness=1.6mm + } + li:styles { + } +}