Index: trunk/tests/drc_query/Makefile =================================================================== --- trunk/tests/drc_query/Makefile (revision 30384) +++ trunk/tests/drc_query/Makefile (revision 30385) @@ -6,7 +6,7 @@ GLOBARGS=-c rc/library_search_paths=../tests/RTT/lib -c rc/quiet=1 TESTS = \ -thickness.diff overlap.diff +thickness.diff overlap.diff netint.diff test: $(TESTS) @@ -24,7 +24,13 @@ overlap.out: FORCE @cd $(SRC) && echo "drc()" | $(PCBRND) $(GLOBARGS) $(TDIR)/overlap.lht --gui batch > $(TDIR)/overlap.out +netint.diff: netint.out + @diff -u netint.ref netint.out && rm netint.out +netint.out: FORCE + @cd $(SRC) && echo "drc()" | $(PCBRND) $(GLOBARGS) $(TDIR)/netint.lht --gui batch > $(TDIR)/netint.out + + clean: @echo "a" > dummy.out rm *.out Index: trunk/tests/drc_query/netint.lht =================================================================== --- trunk/tests/drc_query/netint.lht (nonexistent) +++ trunk/tests/drc_query/netint.lht (revision 30385) @@ -0,0 +1,598 @@ +ha:pcb-rnd-board-v6 { + + li:styles { + ha:Signal { + diameter = 2.0mm + text_scale = 0 + text_thick = 0.0 + thickness = 10.0mil + hole = 31.5mil + clearance = 20.0mil + } + } + + ha:meta { + ha:size { + thermal_scale = 0.500000 + x = 150.0mil + y = 350.0mil + } + ha:grid { + spacing = 25mil + } + } + + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=31.5mil; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=64.0mil; } + 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=64.0mil; } + 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=64.0mil; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + + ha:ps_proto_v6.1 { + hdia=1.5mil; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=64.0mil; } + 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=64.0mil; } + 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=64.0mil; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + } + + li:objects { + ha:subc.36 { + ha:attributes { + footprint=0402 Standard SMT resistor, capacitor etc + refdes=R1 + } + 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.249936mm + -0.349758mm + -0.249936mm + -0.349758mm + -0.249936mm + 0.349758mm + 0.249936mm + 0.349758mm + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 0.326136mm + -0.425958mm + -0.326136mm + -0.425958mm + -0.326136mm + 0.425958mm + 0.326136mm + 0.425958mm + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 0.249936mm + -0.349758mm + -0.249936mm + -0.349758mm + -0.249936mm + 0.349758mm + 0.249936mm + 0.349758mm + } + } + } + } + } + + li:objects { + ha:padstack_ref.50 { + proto=0; x=1.505204mm; y=50.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.51 { + proto=0; x=2.304796mm; y=50.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:subc-aux { + lid=0 + ha:combining { } + + li:objects { + ha:line.38 { + x1=75.0mil; y1=50.0mil; x2=75.0mil; y2=50.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.41 { + x1=75.0mil; y1=50.0mil; x2=75.0mil; y2=50.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.44 { + x1=75.0mil; y1=50.0mil; x2=2.905mm; y2=50.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.47 { + x1=75.0mil; y1=50.0mil; x2=75.0mil; y2=2.27mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = xK4LY0258SGWTnYfnvwAAAAB + } + ha:subc.77 { + ha:attributes { + footprint=0402 Standard SMT resistor, capacitor etc + refdes=R2 + } + 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.249936mm + -0.349758mm + -0.249936mm + -0.349758mm + -0.249936mm + 0.349758mm + 0.249936mm + 0.349758mm + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 0.326136mm + -0.425958mm + -0.326136mm + -0.425958mm + -0.326136mm + 0.425958mm + 0.326136mm + 0.425958mm + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 0.249936mm + -0.349758mm + -0.249936mm + -0.349758mm + -0.249936mm + 0.349758mm + 0.249936mm + 0.349758mm + } + } + } + } + } + + li:objects { + ha:padstack_ref.90 { + proto=0; x=1.505204mm; y=300.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.91 { + proto=0; x=2.304796mm; y=300.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:subc-aux { + lid=0 + ha:combining { } + + li:objects { + ha:line.78 { + x1=75.0mil; y1=300.0mil; x2=75.0mil; y2=300.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.81 { + x1=75.0mil; y1=300.0mil; x2=75.0mil; y2=300.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.84 { + x1=75.0mil; y1=300.0mil; x2=2.905mm; y2=300.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.87 { + x1=75.0mil; y1=300.0mil; x2=75.0mil; y2=8.62mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = xK4LY0258SGWTnYfnvwAAAAB + } + } + li:layers { + + ha:top-sig { + lid=0 + group=2 + ha:combining { } + + ha:attributes { + {pcb-rnd::key::vis}={l; Shiftt} + {pcb-rnd::key::select}={l; t} + } + + li:objects { + ha:line.98 { + x1=1.505204mm; y1=300.0mil; x2=1.505204mm; y2=5.315204mm; thickness=10.0mil; clearance=40.0mil; + ha:flags { + clearline=1 + } + } + ha:line.101 { + x1=1.505204mm; y1=5.315204mm; x2=50.0mil; y2=200.0mil; thickness=10.0mil; clearance=40.0mil; + ha:flags { + clearline=1 + } + } + ha:line.107 { + x1=50.0mil; y1=150.0mil; x2=1.505204mm; y2=140.74mil; thickness=10.0mil; clearance=40.0mil; + ha:flags { + clearline=1 + } + } + ha:line.110 { + x1=1.505204mm; y1=140.74mil; x2=1.505204mm; y2=50.0mil; thickness=10.0mil; clearance=40.0mil; + ha:flags { + clearline=1 + } + } + ha:line.113 { + x1=2.304796mm; y1=300.0mil; x2=2.304796mm; y2=50.0mil; thickness=10.0mil; clearance=40.0mil; + ha:flags { + clearline=1 + } + } + ha:line.116 { + x1=50.0mil; y1=150.0mil; x2=50.0mil; y2=190.8mil; thickness=10.0mil; clearance=40.0mil; + ha:flags { + clearline=1 + } + } + ha:line.119 { + x1=2.304796mm; y1=3.00482mm; x2=1.78562mm; y2=3.00482mm; thickness=10.0mil; clearance=40.0mil; + ha:flags { + clearline=1 + } + } + } + color = {#8b2323} + } + + ha:bottom-sig { + lid=1 + group=7 + ha:combining { } + + ha:attributes { + {pcb-rnd::key::vis}={l; Shiftb} + {pcb-rnd::key::select}={l; b} + } + + li:objects { + } + color = {#3a5fcd} + } + + ha:outline { + lid=2 + group=6 + ha:combining { } + + li:objects { + } + color = {#00868b} + } + + ha:top-paste { + lid=3 + group=0 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:top-mask { + lid=4 + group=1 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-mask { + lid=5 + group=8 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-paste { + lid=6 + group=9 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + } + } + + ha:netlists { + li:netlist_patch { + ha:add_conn { net=N1; term=R2-1; } + ha:add_conn { net=N1; term=R1-1; } + ha:add_conn { net=N2; term=R1-2; } + ha:add_conn { net=N2; term=R2-2; } + } + } + ha:layer_stack { + li:groups { + ha:0 { + name = top_paste + ha:type { top=1; paste=1; } + li:layers { 3; } + } + ha:1 { + name = top_mask + ha:type { top=1; mask=1; } + li:layers { 4; } + } + ha:2 { + name = top_copper + ha:type { copper=1; top=1; } + li:layers { 0; } + } + ha:3 { + name = grp_4 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness={0.7375mm } + } + } + ha:4 { + name = grp_6 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness={0.125mm } + } + } + ha:5 { + name = grp_8 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness={0.7375mm } + } + } + ha:6 { + name = global_outline + ha:type { boundary=1; } + li:layers { 2; } + purpose = uroute + } + ha:7 { + name = bottom_copper + ha:type { bottom=1; copper=1; } + li:layers { 1; } + } + ha:8 { + name = bottom_mask + ha:type { bottom=1; mask=1; } + li:layers { 5; } + } + ha:9 { + name = bottom_paste + ha:type { bottom=1; paste=1; } + li:layers { 6; } + } + } + } + li:pcb-rnd-conf-v1 { + ha:overwrite { + ha:plugins { + ha:drc_orig { + disable = 1 + } + } + } + } +} Index: trunk/tests/drc_query/netint.ref =================================================================== --- trunk/tests/drc_query/netint.ref (nonexistent) +++ trunk/tests/drc_query/netint.ref (revision 30385) @@ -0,0 +1,15 @@ +1: broken net: insufficient overlap +within (18.65, 113.55, 81.35, 227.25) mil +required value 0.00 +the overlap between two objects in the net is insufficient and can lead to broken network during board fabrication + +2: shorted nets: net too close to other net +within (36.40, 86.95, 124.64, 149.65) mil +required value 0.00 +insufficient clearance between an object of the network and objects of other networks + +3: shorted nets: net too close to other net +within (27.91, 7.31, 90.61, 183.43) mil +required value 0.00 +insufficient clearance between an object of the network and objects of other networks +