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/qualify-ddr-ram0-alternate-c1-power.ts
/** Rail-swap plane qualification and self-contained export of the RAM0 distinct-C1 repair. */
import F from '@flatten-js/core'
import{readFileSync,writeFileSync,mkdirSync}from'node:fs'
import{resolve}from'node:path'
import{createHash}from'node:crypto'
import{spawnSync}from'node:child_process'
import{refreshDdrPlaneContacts}from'./ddr-plane-contact-audit'
import{verifyDdrSystemCopper,auditDdrTraceJunctions}from'./check-ddr-system-copper'
import{auditCompositeHostTopology}from'./ddr-composite-routing-context'
import{auditRouteAngles}from'./check-route-angles'
import{planeCoverageIntervals}from'./audit-ddr-host-reference-coverage'
import{auditDdrLocalEscapeContacts}from'./audit-ddr-local-escape-contacts'
const[parentArg,trialArg,outArg]=process.argv.slice(2),dir=resolve(parentArg!),trialDir=resolve(trialArg!),out=resolve(outArg!),capture=resolve('dist/ddr-system/host-taps-54af3e346b5e'),hash=(x:any)=>createHash('sha256').update(JSON.stringify(x)).digest('hex'),bound:Record<string,string>={},read=(p:string)=>{p=resolve(p);bound[p]=createHash('sha256').update(readFileSync(p)).digest('hex');return JSON.parse(readFileSync(p,'utf8'))},parent=read(`${dir}/candidate.circuit.json`),prior=read(`${dir}/report.json`),host=read(`${dir}/host-bundle.json`),input=read(`${dir}/routing-input.json`),trial=read(`${trialDir}/joint-conductor-report.json`),candidate=read(`${trialDir}/candidate.circuit.json`),m=read(`${trialDir}/original-copper-replacements.json`),beforePower=read(`${dir}/ram-power-launch-audit.json`),poly=(vs:any[])=>{const p=new F.Polygon(vs.map(p=>[p.x,p.y]));if([...p.faces][0]!.orientation()===1)p.reverse();return p},vertices=(f:any)=>[...f.edges].map((e:any)=>({x:e.start.x,y:e.start.y})),same=(a:any,b:any)=>Math.hypot(a.x-b.x,a.y-b.y)<1e-7
if(hash(parent)!==m.parentCircuitSha256||hash(candidate)!==m.candidateCircuitSha256||host.traces.length!==21||beforePower.launchQualified!==58||trial.diagnostic.physical.violations.length)throw Error('Expected checked joint21/power58 conductor proposal')
let replay=structuredClone(parent);for(const r of m.replacements){const i=replay.findIndex((e:any)=>`${e.type}:${e[`${e.type}_id`]}`===r.id);if(i<0||hash(replay[i])!==r.beforeSha256||hash(r.after)!==r.afterSha256)throw Error('Exact replacement invalid');replay[i]=r.after}if(hash(replay)!==hash(candidate))throw Error('Undeclared changes')
const busPath=resolve('/Users/ankan/Documents/Codex/2026-09-10/what-x20/outputs/mt41k512m8da-107-it-p-fanout/src/bus-rules.ts');bound[busPath]=createHash('sha256').update(readFileSync(busPath)).digest('hex');const{BUS_MANUFACTURING}=await import(busPath);if(BUS_MANUFACTURING.referencePourClearanceMm!==.107)throw Error('External reference policy changed')
let child=structuredClone(candidate);const byId=(id:string)=>child.find((e:any)=>e.type==='pcb_trace'&&e.pcb_trace_id===id),e2=byId('saved_fanout_pcb_group_3_15'),e2vi=e2.route.findIndex((p:any)=>p.route_type==='via');e2.route=e2.route.slice(0,e2vi+1);e2.route[e2vi].to_layer='inner3';e2.connectsTo=[e2.source_trace_id,e2.route[0].start_pcb_port_id];delete e2.connection_name;const e2v=child.find((e:any)=>e.type==='pcb_via'&&e.pcb_trace_id===e2.pcb_trace_id);e2v.to_layer='inner3';const d1=byId('saved_fanout_pcb_group_3_3'),c1=byId('saved_fanout_pcb_group_3_2'),signalTraces:any[]=[],dv=d1.route.at(-1),ev=e2.route.at(-1),cv=c1.route.at(-1),clearance=.107,minimumWeb=.127,radius=(.2286+clearance)/Math.cos(Math.PI/64),planeChanges:any[]=[],coverage:any[]=[],planeErrors:any[]=[]
for(const before of parent.filter((e:any)=>e.type==='pcb_copper_pour')){const ground=before.layer!=='inner3',refill=ground?dv:ev,foreign=ground?[ev,cv]:[dv],removed=before.brep_shape.inner_rings.filter((h:any)=>poly(h.vertices).contains(new F.Point(refill.x,refill.y)));if(removed.length!==1)throw Error(`Expected one explicit rail-swap hole on ${before.layer}, got ${removed.length}`);let region=poly(before.brep_shape.outer_ring.vertices);for(const h of before.brep_shape.inner_rings.filter((h:any)=>!removed.includes(h))){const points=h.vertices.map((p:any)=>new F.Point(p.x,p.y));if([...new F.Polygon(points).faces][0]!.orientation()!==1)points.reverse();region.addFace(points)}for(const v of foreign)region=F.BooleanOperations.subtract(region,poly(Array.from({length:64},(_,i)=>({x:v.x+radius*Math.cos(i*Math.PI/32),y:v.y+radius*Math.sin(i*Math.PI/32)}))));const faces=[...region.faces],outers=faces.filter(f=>f.orientation()===-1),holes=faces.filter(f=>f.orientation()===1).map(f=>({vertices:vertices(f)}));if(outers.length!==1)throw Error('Plane fragmented');for(const h of before.brep_shape.inner_rings.filter((h:any)=>!removed.includes(h)))if(F.BooleanOperations.intersect(region,poly(h.vertices)).area()>1e-9)throw Error('Undeclared void refill');const affected=holes.filter(h=>foreign.some(v=>poly(h.vertices).contains(new F.Point(v.x,v.y)))),webs=affected.map(h=>Math.min(...holes.filter(o=>o!==h).map(o=>poly(h.vertices).distanceTo(poly(o.vertices))[0]),...[...poly(before.brep_shape.outer_ring.vertices).edges].map(e=>poly(h.vertices).distanceTo(e.shape)[0])));if(Math.min(...webs)<minimumWeb-1e-7)planeErrors.push({layer:before.layer,webMm:Math.min(...webs),minimumWeb});const after={...before,brep_shape:{outer_ring:before.brep_shape.outer_ring,inner_rings:holes}};child=child.map((e:any)=>e.type==='pcb_copper_pour'&&e.pcb_copper_pour_id===before.pcb_copper_pour_id?after:e);planeChanges.push({before,after,railSwapRefill:{center:{x:refill.x,y:refill.y},oldHole:removed[0],newRail:ground?'GND':'DDR_1V5'},foreignVias:foreign.map(v=>({x:v.x,y:v.y})),minimumNewWebMm:Math.min(...webs),allOtherVoidsRetained:true});for(const t of child.filter((e:any)=>e.type==='pcb_trace'))for(let i=1;i<t.route.length;i++){const a=t.route[i-1],b=t.route[i];if(a.route_type!=='wire'||b.route_type!=='wire'||a.layer!==b.layer||!['inner2','inner4'].includes(a.layer)||!((a.layer==='inner2'&&['inner1','inner3'].includes(before.layer))||(a.layer==='inner4'&&['inner3','inner5'].includes(before.layer)))||same(a,b))continue;const missed=(p:any)=>planeCoverageIntervals(a,b,p.brep_shape).filter((v:any)=>!v.covered).reduce((n:number,v:any)=>n+v.lengthMm,0),old=missed(before),now=missed(after);if(now-old>1e-7)coverage.push({traceId:t.pcb_trace_id,layer:a.layer,referenceLayer:before.layer,segment:i,a,b,addedUncoveredMm:now-old})}}
const witnesses=structuredClone(prior.planeAudit);for(const p of witnesses){if(p.layer==='inner3'){for(const v of p.viaContacts)if(same(v,dv)){v.x=ev.x;v.y=ev.y}p.viaContacts.push({id:`${c1.pcb_trace_id}:via:${c1.route.length-1}`,x:cv.x,y:cv.y,annulusSamplesInPlane:32,total:32});p.uniqueViaCount++}else{p.viaContacts.push({id:`${d1.pcb_trace_id}:via:${d1.route.length-1}`,x:dv.x,y:dv.y,annulusSamplesInPlane:32,total:32});p.uniqueViaCount++}}
let planeAudit:any,contactError:string|undefined;try{planeAudit=refreshDdrPlaneContacts(witnesses,child.filter((e:any)=>e.type==='pcb_copper_pour'),child)}catch(e){contactError=String(e)}
const fresh=[...host.traces,c1,d1,e2,...signalTraces],physical=verifyDdrSystemCopper(child,fresh,input.connections,{},50,{reportSameNetContacts:true}),topology=auditCompositeHostTopology(child,host.traces,input.connections),angles=auditRouteAngles(child.filter((e:any)=>e.type==='pcb_trace')),junctions=auditDdrTraceJunctions(child,input.connections),allTraces=child.filter((e:any)=>e.type==='pcb_trace'),allPhysical=verifyDdrSystemCopper(child,allTraces,input.connections,{}),planeForeignViolations=allPhysical.violations.filter((v:any)=>v.aShape.polygon||v.bShape.polygon),local=signalTraces.map(t=>{const ex=child.find((e:any)=>e.type==='pcb_breakout_point'&&e.source_trace_id===t.source_trace_id),co=input.connections.find((c:any)=>c.pointsToConnect.some((p:any)=>p.pointId===ex.pcb_breakout_point_id)),ids=new Set(host.traces.filter((h:any)=>h.connection_name===co.name).map((h:any)=>h.pcb_trace_id));return{traceId:t.pcb_trace_id,audit:auditDdrLocalEscapeContacts(child.filter((e:any)=>!ids.has(e.pcb_trace_id)),t,input.connections)}}),geometryPass=!planeErrors.length&&!coverage.length&&!contactError&&!physical.errors.length&&!physical.violations.length&&topology.valid&&angles.valid&&junctions.valid&&!planeForeignViolations.length&&local.every(l=>l.audit.valid)
const replacements=parent.flatMap((before:any,i:number)=>{const after=child[i];if(before.type!==after.type||before[`${before.type}_id`]!==after[`${after.type}_id`])throw Error('Object order changed');return hash(before)===hash(after)?[]:[{id:`${before.type}:${before[`${before.type}_id`]}`,before,after,beforeSha256:hash(before),afterSha256:hash(after)}]}),manifest={captureHash:prior.captureHash,parentDirectory:dir,parentCircuitSha256:hash(parent),candidateCircuitSha256:hash(child),replacements},report={...prior,accepted:false,candidateCircuitSha256:hash(child),supportCircuitSha256:hash(child),originalCopperReplacementsSha256:hash(manifest),physical,topology,fullCandidateAngles:angles,fixedJunctionAudit:junctions,planeAudit,jointPowerRepair:{geometryPass,planeErrors,coverage,contactError,planeForeignViolations,local,planeChanges,policy:{clearanceMm:.107,minimumWebMm:.127,scope:'Explicit provisional BGA rail-swap/C1 web assumption; not fabricator signoff'}},inputFileHashes:bound,scope:'Joint21-host RAM0 C1/E2/D1 rail swap with all data copper unchanged. E2 bottom stub removed, logicaltop→inner3 physicalall10. Acceptance requires full geometry and power59/no58regression and current nominal data budgets.'}
mkdirSync(out,{recursive:true});const write=(n:string,v:any)=>writeFileSync(`${out}/${n}`,JSON.stringify(v,null,2));write('candidate.circuit.json',child);write('host-bundle.json',host);write('routing-input.json',input);write('original-copper-replacements.json',manifest);write('report.json',report)
if(!geometryPass){console.log(JSON.stringify({geometryPass,planeErrors,coverage,contactError,physicalErrors:physical.errors,physicalViolations:physical.violations.length,planeForeignViolations:planeForeignViolations.length,angles:angles.valid,junctions:junctions.valid}));process.exit(0)}
const cache0=read(`${dir}/ram-byte0-facing-progress.trace-paths.json`),cache1=read(`${dir}/ram-byte1-facing-progress.trace-paths.json`);for(const t of signalTraces){const port=child.find((e:any)=>e.type==='pcb_port'&&e.pcb_port_id===t.route[0].start_pcb_port_id),sp=child.find((e:any)=>e.type==='source_port'&&e.source_port_id===port.source_port_id),i=cache1.findIndex((p:any)=>p.connection===`U1.${sp.name}`);if(i<0)throw Error('Missing cached ball');cache1[i]={...cache1[i],route:t.route.map((p:any)=>{const{x,y,start_pcb_port_id,end_pcb_port_id,...rest}=p;return{...rest,x:-12-x,y:6.5-y}})}}if(cache0.length!==72||cache1.length!==72||!auditRouteAngles(cache1).valid)throw Error('Cache validation failed');const contract0={...read(`${dir}/exit-contract.json`),candidateCircuitSha256:hash(child),ramCacheSha256:hash(cache0)},contract1={...read(`${dir}/ram-byte1-exit-contract.json`),candidateCircuitSha256:hash(child),ramCacheSha256:hash(cache1),ramByte1CacheSha256:hash(cache1)};write('ram-byte0-facing-progress.trace-paths.json',cache0);write('ram-byte1-facing-progress.trace-paths.json',cache1);write('exit-contract.json',contract0);write('ram-byte1-exit-contract.json',contract1);write('parent-report.json',prior);write('parent-original-copper-replacements.json',read(`${dir}/original-copper-replacements.json`));write('host-route-report.json',read(`${dir}/host-route-report.json`));const provenance={inherited:read(`${dir}/source-provenance.json`),parentCircuitSha256:hash(parent),candidateCircuitSha256:hash(child),manifestSha256:hash(manifest),inputHashes:bound};write('source-provenance.json',provenance)
for(const script of['audit-ddr-global-power-launches.ts','audit-ddr-host-reference-coverage.ts']){const r=spawnSync('bun',[`scripts/${script}`,out,capture],{encoding:'utf8'});writeFileSync(`${out}/${script}.log`,r.stdout+r.stderr);if(r.status)throw Error(`Audit failed ${script}`)}const power=read(`${out}/ram-power-launch-audit.json`),ref=read(`${out}/host-reference-coverage.json`),regressions=beforePower.rows.filter((r:any)=>r.launchWithin1524Mm&&!power.rows.find((p:any)=>p.byte===r.byte&&p.ball===r.ball)?.launchWithin1524Mm);if(regressions.length||power.total!==60||power.launchQualified!==59)throw Error('Power59 regression');Object.assign(report,{accepted:true,launchQualified:59,launchAuditSha256:hash(power),hostReferenceCoverageSha256:hash(ref),ramCacheSha256:hash(cache0),ramByte1CacheSha256:hash(cache1),exitContractProvenance:{byte0Sha256:hash(contract0),byte1Sha256:hash(contract1)},powerNoRegression:{before:58,after:59,total:60,regressions},sourceProvenance:provenance});write('report.json',report);const run=spawnSync('bun',['scripts/audit-ddr-current-byte-budgets.ts',capture,out,`${out}/current-byte-budgets.json`],{encoding:'utf8'});writeFileSync(`${out}/byte-budget-audit.log`,run.stdout+run.stderr);if(run.status)throw Error('Byte audit failed');const budgets=read(`${out}/current-byte-budgets.json`);const oldBudgets=read(`${dir}/current-byte-budgets.json`);if(hash(budgets.bytes)!==hash(oldBudgets.bytes))throw Error('Unchanged data budget proof differs');Object.assign(report,{currentByteBudgetsSha256:hash(budgets)});for(const[p,h]of Object.entries(bound))if(createHash('sha256').update(readFileSync(p)).digest('hex')!==h)throw Error('Source changed');write('source-provenance.json',provenance);Object.assign(report,{sourceProvenanceSha256:hash(provenance)});write('report.json',report);console.log(JSON.stringify({accepted:true,hosts:21,power:59,candidateCircuitSha256:hash(child),replacements:replacements.length}))