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

tests/ddr-d9-ground-launches.test.ts

import{test,expect}from'bun:test'
import{existsSync,readFileSync}from'node:fs'
import{validateDdrReplacementChain}from'../scripts/improve-ddr-d9-ground-launches'
import{validateDeclaredDdrReplacements}from'../scripts/improve-ddr-a9-power-launches'
import{resolve}from'node:path'
test('recursive support provenance fails closed on cycle or excessive depth before reading files',async()=>{
 await expect(validateDdrReplacementChain('/tmp/cycle','',[],[],'',new Set([resolve('/tmp/cycle')]))).rejects.toThrow('Invalid recursive support chain')
 await expect(validateDdrReplacementChain('/tmp/too-deep','',[],[],'',new Set(Array.from({length:16},(_,i)=>String(i))))).rejects.toThrow('Invalid recursive support chain')
})
test.skipIf(!existsSync('dist/ddr-integrated-ten-power56/ram-power-launch-audit.json'))('power56 retains54 launches and all10hosts with only declared D9 drops/D7 tail trims/inner3 holes',()=>{
 const read=(p:string)=>JSON.parse(readFileSync(p,'utf8')),base='dist/ddr-integrated-ten-power54',dir='dist/ddr-integrated-ten-power56',parent=read(base+'/candidate.circuit.json'),child=read(dir+'/candidate.circuit.json'),m=read(dir+'/original-copper-replacements.json'),a=read(dir+'/ram-power-launch-audit.json'),old=read(base+'/ram-power-launch-audit.json'),r=read(dir+'/report.json')
 expect(validateDeclaredDdrReplacements(parent,child,m).declaredReplacementCount).toBe(5)
 expect(m.replacements.filter((e:any)=>e.before.type==='pcb_copper_pour').map((e:any)=>e.before.layer)).toEqual(['inner3'])
 for(const e of m.replacements.filter((e:any)=>e.reason.startsWith('Remove only')))expect(e.after.route).toEqual(e.before.route.slice(0,3))
 expect(readFileSync(dir+'/host-bundle.json').equals(readFileSync(base+'/host-bundle.json'))).toBe(true)
 expect(a.total).toBe(60);expect(a.launchQualified).toBe(56);expect(a.planeConnected).toBe(56)
 expect(old.rows.filter((e:any)=>e.launchWithin1524Mm).every((e:any)=>a.rows.some((n:any)=>n.byte===e.byte&&n.ball===e.ball&&n.launchWithin1524Mm))).toBe(true)
 for(const e of a.rows.filter((e:any)=>e.terminal==='VSSQ_D9')){expect(e.actualPadToContactViaMm).toBeCloseTo(.55,9);expect(e.connectionVia.annulusSamplesInPlane).toBe(32)}
 expect(r.planeAudit.every((p:any)=>p.viaContacts.every((v:any)=>v.annulusSamplesInPlane===32))).toBe(true)
 expect(r.physical.errors).toHaveLength(0);expect(r.physical.violations).toHaveLength(0);expect(r.physical.angles.valid).toBe(true);expect(r.physical.joinedBends).toHaveLength(0);expect(r.physical.connectivity.filter((c:any)=>c.connected)).toHaveLength(10)
})