31 lines
1.9 KiB
Python
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)")
|