code wiki / _hdl_build / nx_pcb_render_gate.nx

nx_pcb_render_gate.nx source

↩ module page · 81 lines · 5321 B

1// nx_pcb_render_gate.nx -- GATE for the mechanistically-ACCURATE PCB visual. Routes a real net on the shared router, 2// renders it at TRUE scale (pitch=10 mil, trace=6 mil, scale=4 px/mil), and PROVES the drawing is dimensionally exact: 3// T1 DIMENSIONAL -- a vertical scan through the trace shows EXACTLY trace_width*scale = 24 copper pixels (a 6-mil 4// trace is exactly 6 mil wide on screen). The visual is a scale twin, not a cartoon. (the liar-kill) 5// T2 NO-FABRICATE -- an empty board renders ZERO copper (the render never invents copper that wasn't routed). 6// T3 DETERMINISM -- routing+rendering twice yields byte-identical images (#26 never-brick: reproducible). 7// T4 REFLECTS-ROUTE- the routed board has copper>0 driven by the ACTUAL route. 8// Writes knowledge/nx_pcb_render.ppm to eyeball. GREEN iff T1-T4. Sovereign integer raster. expect_exit: 0 license_tier: ORIGINAL 9import "nx_pcb_render.nx" 10import "nx_pcb_autoroute.nx" 11import "nx_png_write.nx" 12import "nx_syscalls.nx" 13 14func w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 15func wn(v: i64) -> i64 { var m: i64=v; if m<0{w("-" as *u8);m=0-m} let t:*u8=sys_mmap(24); var k:i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var i:i64=0; let o:*u8=sys_mmap(24); while i<k{o[i]=t[k-1-i];i=i+1} sys_write(1,o,k); return 0 } 16func fill(a: *i64, n: i64, v: i64) -> i64 { var i: i64=0; while i<n { a[i]=v; i=i+1 } return 0 } 17 18func main() -> i64 { 19 w("=== nx_pcb_render_gate: mechanistically-ACCURATE PCB visual (true-scale, deterministic, sovereign) ===\n" as *u8) 20 var pass: i64 = 0; var total: i64 = 0 21 let W: i64 = 4; let H: i64 = 4 22 let pitch: i64 = 40; let tw: i64 = 24 // 10 mil pitch, 6 mil trace, 4 px/mil 23 let IMGW: i64 = W*pitch; let IMGH: i64 = H*pitch 24 let nb: i64 = IMGW*IMGH*3 25 let img: *u8 = sys_mmap(nb) 26 let img2: *u8 = sys_mmap(nb) 27 28 let nh: i64 = H*(W-1); let nv: i64 = (H-1)*W 29 let ax: *i64=sys_mmap(8*4) as *i64; let ay: *i64=sys_mmap(8*4) as *i64 30 let bx: *i64=sys_mmap(8*4) as *i64; let by: *i64=sys_mmap(8*4) as *i64 31 let cap_h: *i64=sys_mmap(8*64) as *i64; let cap_v: *i64=sys_mmap(8*64) as *i64 32 let block: *i64=sys_mmap(8*64) as *i64; let usedby: *i64=sys_mmap(8*64) as *i64 33 let vis: *i64=sys_mmap(8*64) as *i64; let came: *i64=sys_mmap(8*64) as *i64 34 let q: *i64=sys_mmap(8*64) as *i64; let pathbuf: *i64=sys_mmap(8*64) as *i64 35 let sh: *i64=sys_mmap(8*2) as *i64; let ok: *i64=sys_mmap(8*2) as *i64 36 37 // route a real horizontal net (0,1)->(3,1) on the shared router, render it 38 ax[0]=0; ay[0]=1; bx[0]=3; by[0]=1 39 fill(cap_h, nh, 8); fill(cap_v, nv, 8) 40 pa_route_board(1, ax, ay, bx, by, W, H, cap_h, cap_v, block, usedby, vis, came, q, pathbuf, 1, sh, ok) 41 pr_render_board(img, IMGW, IMGH, usedby, W, H, pitch, tw) 42 43 // T1 dimensional: vertical scan at x=80 (mid trace) must be EXACTLY tw copper px 44 var colc: i64 = 0 45 var y: i64 = 0 46 while y < IMGH { if pr_is_copper(img, IMGW, 80, y) == 1 { colc = colc + 1 } y = y + 1 } 47 total=total+1; if colc == tw { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 48 w("T1 dimensional: trace cross-section = " as *u8); wn(colc); w(" px (== 6 mil * 4 px/mil = 24; exact scale)\n" as *u8) 49 50 // T4 reflects-route: copper > 0 51 let cop: i64 = pr_count_copper(img, IMGW, IMGH) 52 total=total+1; if cop > 0 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 53 w("T4 reflects-route: copper pixels = " as *u8); wn(cop); w(" (the ACTUAL routed trace)\n" as *u8) 54 55 // T2 no-fabricate: empty board -> 0 copper 56 var i: i64 = 0 57 while i < W*H { usedby[i] = 0 - 1; i = i + 1 } 58 pr_render_board(img2, IMGW, IMGH, usedby, W, H, pitch, tw) 59 let cop0: i64 = pr_count_copper(img2, IMGW, IMGH) 60 total=total+1; if cop0 == 0 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 61 w("T2 no-fabricate: empty board copper = " as *u8); wn(cop0); w(" (render invents nothing)\n" as *u8) 62 63 // T3 determinism: re-route + re-render -> byte-identical 64 ax[0]=0; ay[0]=1; bx[0]=3; by[0]=1 65 fill(cap_h, nh, 8); fill(cap_v, nv, 8) 66 pa_route_board(1, ax, ay, bx, by, W, H, cap_h, cap_v, block, usedby, vis, came, q, pathbuf, 1, sh, ok) 67 pr_render_board(img2, IMGW, IMGH, usedby, W, H, pitch, tw) 68 var diff: i64 = 0 69 var k: i64 = 0 70 while k < nb { if (img[k] as i64) != (img2[k] as i64) { diff = 1; k = nb } else { k = k + 1 } } 71 total=total+1; if diff == 0 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 72 w("T3 determinism: re-render byte-identical diff=" as *u8); wn(diff); w("\n" as *u8) 73 74 pr_write_ppm("knowledge/nx_pcb_render.ppm" as *u8, img, IMGW, IMGH) 75 nx_png_write_rgb("knowledge/nx_pcb_render.png" as *u8, img, IMGW, IMGH) 76 w(" wrote knowledge/nx_pcb_render.png + .ppm (" as *u8); wn(IMGW); w("x" as *u8); wn(IMGH); w(" real-scale board, SOVEREIGN png no python)\n" as *u8) 77 78 w("\n=== nx_pcb_render_gate " as *u8); wn(pass); w("/" as *u8); wn(total) 79 if pass == total { w(" GREEN (true-scale PCB visual: dimensionally exact, no-fabrication, deterministic; the accurate engineering visual)\n" as *u8); sys_exit(0); return 0 } 80 w(" RED\n" as *u8); sys_exit(1); return 1 81}