Drogheda/03-Architecture-Hardware/Auditoria-Final-V56-V57/scripts/gcmp_b.py

31 lines
1.9 KiB
Python

import sys, hashlib
sys.path.insert(0, '.')
from gcmp import compare, prims
OLD="../in/03-Architecture-Hardware/kicad"; NEW="../inb"
LAY=(("F_Cu","gtl"),("In1_Cu","g1"),("In2_Cu","g2"),("B_Cu","gbl"))
def row(tag,a,b):
fs,ds,xa,blobs=compare(a,b)
print(f" {tag:34s} flashes={fs!s:5} draws={ds!s:5} fill-xor={xa:.3f} mm2 blobs={len(blobs)}", [f"{ar:.2f}@({x1},{y1})-({x2},{y2}){t}" for ar,x1,y1,x2,y2,t in blobs[:4]])
for v,b,prod in (("v56","v5","HBOX_v5_Rev6_PROD"),("v57","v57","HBOX_v5_Rev7_PROD")):
print("=====",v)
for lay,e in LAY:
saved=f"{NEW}/{v}/gerber-saved/hbox-watchdog-{b}-{lay}.gbr"
rfn=f"{NEW}/{v}/rf/gerber/hbox-watchdog-{b}-{lay}.gbr"
pkg=f"{NEW}/pkg{v[1:]}/hbox-watchdog-{b}-{lay}.{e}"
rfo=f"{OLD}/_to_delete/audit-20261022/{v}/rf/gerber/hbox-watchdog-{b}-{lay}.gbr"
pko=f"{OLD}/production/{prod}/hbox-watchdog-{b}-{lay}.{e}"
print(f" [{lay}]")
row("A saved-fill vs fresh refill (P-1)", saved, rfn)
row("B new package vs saved-fill", pkg, saved)
row("C new refill vs morning refill", rfn, rfo)
row("D new package vs morning package", pkg, pko)
# non-copper layers: primitive sets
for lay,e in (("F_Mask","gts"),("B_Mask","gbs"),("F_Paste","gtp"),("B_Paste","gbp"),("F_Silkscreen","gto"),("B_Silkscreen","gbo"),("Edge_Cuts","gm1")):
a=f"{NEW}/pkg{v[1:]}/hbox-watchdog-{b}-{lay}.{e}"; o=f"{OLD}/production/{prod}/hbox-watchdog-{b}-{lay}.{e}"
fa,da=prims(a); fo,do=prims(o)
print(f" {lay:12s} new pkg vs morning pkg: flashes={fa==fo} draws={da==do}")
for d in ("PTH.drl","NPTH.drl"):
a=open(f"{NEW}/pkg{v[1:]}/hbox-watchdog-{b}-{d}").read().splitlines(); o=open(f"{OLD}/production/{prod}/hbox-watchdog-{b}-{d}").read().splitlines()
body=lambda L:[l for l in L if not l.startswith(";")]
print(f" {d:12s} new pkg vs morning pkg: same={body(a)==body(o)} ({len(body(a))} lines)")