用TypeScript检查多端口ESD候选器件是否缺少关键参数

2 阅读1分钟

多端口设备的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尚未验证。

数据从哪里来

线路最高持续电压来自实测,后级耐压来自芯片资料,器件参数来自完整型号当前规格书。不同波形或电流点不能由程序自动排序。

参考资料: