0hmX/am3352
This code suite comprises TypeScript scripts that analyze, verify, and assemble complex DDR memory interface hardware, focusing on physical routing, via and pad placement, electrical clearance, and physical constraints, often involving precise geometric calculations and consistent provenance tracking.
- Version
- 1.0.5
- License
- unset
- Stars
- 0
scripts/audit-ddr-current-byte-budgets.ts
/** Current, source-owned byte escape floors and measured connected host lengths. */
import {readFileSync,writeFileSync,mkdirSync} from 'node:fs'
import {resolve,dirname} from 'node:path'
import {createHash} from 'node:crypto'
import {verifyDdrCapture} from './ddr-capture-provenance'
import {objectHash} from './improve-ddr-a9-power-launches'
import {auditCompositeHostTopology} from './ddr-composite-routing-context'
const [capture,artifact,output]=process.argv.slice(2)
if(!output)throw Error('Usage: capture current-artifact output-json')
const hashes=new Map<string,string>(),fileHash=(p:string)=>createHash('sha256').update(readFileSync(p)).digest('hex')
const read=(p:string)=>{p=resolve(p);hashes.set(p,fileHash(p));return JSON.parse(readFileSync(p,'utf8'))}
const {captureHash}=verifyDdrCapture(capture),candidate=read(resolve(artifact,'candidate.circuit.json')),host=read(resolve(artifact,'host-bundle.json')),input=read(resolve(artifact,'routing-input.json')),parent=read(resolve(artifact,'report.json'))
if(parent.captureHash!==captureHash||host.captureHash!==captureHash||parent.candidateCircuitSha256!==objectHash(candidate)||host.layerSpace!=='physical')throw Error('Current artifact provenance mismatch')
if(new Set(host.traces.map((t:any)=>t.pcb_trace_id)).size!==host.traces.length)throw Error('Duplicate host identity')
for(const t of host.traces){const actual=candidate.filter((e:any)=>e.type==='pcb_trace'&&e.pcb_trace_id===t.pcb_trace_id);if(actual.length!==1||objectHash(actual[0])!==objectHash(t))throw Error('Host bundle differs from actual candidate copper')}
const ownerPath=resolve('/Users/ankan/Documents/Codex/2026-09-10/what-x20/outputs/mt41k512m8da-107-it-p-fanout/scripts/audit-am3352-obstacle-ownership.ts')
hashes.set(ownerPath,fileHash(ownerPath))
const {getSourceNetOwnerForAudit}=await import(ownerPath),owner=getSourceNetOwnerForAudit(candidate)
const topology=auditCompositeHostTopology(candidate,host.traces,input.connections)
if(!topology.valid||host.traces.some((t:any)=>!topology.physical.connectivity.some((c:any)=>c.name===t.connection_name&&c.connected)))throw Error('Current hosts fail topology/connectivity; measured lengths would be misleading')
const planar=(route:any[])=>route.reduce((s:number,p:any,i:number)=>{const q=route[i-1];return s+(p.route_type==='wire'&&q?.route_type==='wire'&&p.layer===q.layer?Math.hypot(p.x-q.x,p.y-q.y):0)},0)
const rows=input.connections.filter((c:any)=>/^DQ[0-7]$/.test(c.ramTerminal)||['DM','DQS_P','DQS_N'].includes(c.ramTerminal)).map((c:any)=>{
const net=owner(c.source_trace_id);if(!net||c.pointsToConnect.length!==2)throw Error('Missing two-point byte identity')
const escapes=c.pointsToConnect.map((p:any)=>{
const e=candidate.find((e:any)=>e.type==='pcb_breakout_point'&&e.pcb_breakout_point_id===p.pointId)
if(!e||e.x!==p.x||e.y!==p.y||e.layer!==p.layer||owner(e.pcb_breakout_point_id)!==net)throw Error('Stale or foreign actual exit')
const traces=candidate.filter((t:any)=>t.type==='pcb_trace'&&t.source_trace_id===e.source_trace_id&&t.route.at(-1)?.layer===p.layer&&Math.hypot(t.route.at(-1).x-p.x,t.route.at(-1).y-p.y)<1e-7)
if(traces.length!==1)throw Error('Actual saved escape is ambiguous')
const t=traces[0],first=t.route[0],pads=candidate.filter((pad:any)=>pad.type==='pcb_smtpad'&&pad.layer===first.layer&&Math.hypot(pad.x-first.x,pad.y-first.y)<1e-7&&owner(pad.pcb_smtpad_id)===net)
if(pads.length!==1)throw Error('Actual source-owned ball is ambiguous')
return {exit:p,ball:{x:pads[0].x,y:pads[0].y,id:pads[0].pcb_smtpad_id},traceId:t.pcb_trace_id,planarMm:planar(t.route)}
}).sort((a:any,b:any)=>a.ball.x-b.ball.x)
const [ram,cpu]=escapes,dx=Math.abs(ram.exit.x-cpu.exit.x),dy=Math.abs(ram.exit.y-cpu.exit.y),hostFloorMm=Math.max(dx,dy)+(Math.SQRT2-1)*Math.min(dx,dy),routes=host.traces.filter((t:any)=>t.connection_name===c.name)
if(routes.length>1)throw Error('Ambiguous byte host')
const escapeMm=ram.planarMm+cpu.planarMm
return {byte:c.ramByte,terminal:c.ramTerminal,name:c.name,ram,cpu,escapeMm,hostFloorMm,totalFloorMm:escapeMm+hostFloorMm,ballManhattanMm:Math.abs(ram.ball.x-cpu.ball.x)+Math.abs(ram.ball.y-cpu.ball.y),layerTransitionNeeded:ram.exit.layer!==cpu.exit.layer,connected:routes.length===1,measuredTotalPlanarMm:routes.length?escapeMm+planar(routes[0].route):null}
})
const bytes=[0,1].map(byte=>{
const members=rows.filter((r:any)=>r.byte===byte);if(members.length!==11)throw Error('Expected eleven members per byte')
const nominalMm=Math.max(...members.filter((r:any)=>r.terminal==='DM'||/^DQ[0-7]$/.test(r.terminal)).map((r:any)=>r.ballManhattanMm))
return {byte,nominalMm,members:members.map((r:any)=>({...r,floorMarginMm:nominalMm-r.totalFloorMm,hostOptimizationAloneInsufficient:r.totalFloorMm>nominalMm+1e-7,measuredNominalExcessMm:r.measuredTotalPlanarMm===null?null:r.measuredTotalPlanarMm-nominalMm}))}
})
for(const[p,h]of hashes)if(fileHash(p)!==h)throw Error('Audit input changed')
mkdirSync(dirname(resolve(output)),{recursive:true})
writeFileSync(output,JSON.stringify({captureHash,candidateCircuitSha256:objectHash(candidate),inputHashes:Object.fromEntries(hashes),topologyValid:topology.valid,bytes,scope:'Actual saved planar escapes plus obstacle-free octilinear host distance. Floors omit obstacles, endpoint heading constraints, via delay and package delay. A positive margin is not routing or electrical qualification. Connected lengths require endpoint-only host topology. Nominal is maximum paired data/DM ball Manhattan distance; matching and board SI remain separate requirements.'},null,2)+'\n')
console.log(JSON.stringify(bytes.map(b=>({byte:b.byte,nominalMm:b.nominalMm,members:b.members.map((m:any)=>({terminal:m.terminal,connected:m.connected,floorMarginMm:m.floorMarginMm,measuredTotalPlanarMm:m.measuredTotalPlanarMm,layerTransitionNeeded:m.layerTransitionNeeded}))})),null,2))