多端口设备的ESD选型容易把USB、RS-485和按键放在同一张表中,却遗漏不同接口需要的字段。TypeScript可以检查数据完整性和明显冲突,但输出只能是候选状态。
定义端口与候选器件
type PortRequirement = {
name: string;
maxContinuousV: number;
maxCapacitancePf?: number;
protectedAbsMaxV: number;
targetIppA?: number;
targetWaveform?: string;
};
type EsdCandidate = {
partNumber: string;
vrwmV: number;
capacitancePf?: number;
vcMaxV?: number;
ippA?: number;
waveform?: string;
};
高速端口需要maxCapacitancePf,脉冲审核需要targetIppA和targetWaveform。可选字段不是允许忽略,而是让程序按端口要求决定是否报缺失。
执行规则检查
function review(port: PortRequirement, part: EsdCandidate): string[] {
const issues: string[] = [];
if (part.vrwmV < port.maxContinuousV) issues.push("VRWM不足");
if (port.maxCapacitancePf !== undefined) {
if (part.capacitancePf === undefined) issues.push("缺少结电容");
else if (part.capacitancePf > port.maxCapacitancePf) issues.push("结电容超出预算");
}
if (port.targetIppA !== undefined) {
if (part.vcMaxV === undefined || part.ippA === undefined || !part.waveform) {
issues.push("缺少完整钳位测试点");
} else if (part.waveform !== port.targetWaveform) {
issues.push("脉冲波形不可直接比较");
} else if (part.ippA < port.targetIppA) {
issues.push("额定测试电流未覆盖目标点");
}
}
if (part.vcMaxV !== undefined && part.vcMaxV > port.protectedAbsMaxV) {
issues.push("钳位窗口需人工复核");
}
return issues;
}
程序没有对缺失VC做插值,也没有把峰值功率反推成任意电流点的钳位电压。
输出保留板级验证状态
function result(port: PortRequirement, part: EsdCandidate) {
const issues = review(port, part);
return {
port: port.name,
part: part.partNumber,
status: issues.length ? "REJECTED_OR_INCOMPLETE" : "BOARD_TEST_PENDING",
issues
};
}
字段全部通过后仍返回BOARD_TEST_PENDING,因为封装、极性、布局、回流、信号完整性和整机ESD尚未验证。
数据从哪里来
线路最高持续电压来自实测,后级耐压来自芯片资料,器件参数来自完整型号当前规格书。不同波形或电流点不能由程序自动排序。
参考资料: