PCB 上的测试点(Test Point)

 测试点要不要加?怎么加?网络覆盖率是否要做到 100%?这些问题都没有确切的答案,要根据实际的场景而定。 

如果你在一家外资企业工作,可能遇到过这样的情况:当PCB设计完成后,QA/QC部门坚决要求添加测试点,以实现100%的测试点覆盖率,否则不允许进行小批量生产(pilot run)。

这让你感到很无奈,因为板子上的走线已经非常密集,难以再添加测试点。你可能会与QA部门争论,指出高速信号线路上添加测试点会影响信号质量,好像在加一根天线一样,问他们是否愿意为此负责。这时候,你可能会心里抱怨QA部门什么都不懂。

如果你在国有企业或国内企业工作,可能遇到过这样的情况:设计完成后,才意识到工艺部门要求“每个网络至少有一个测试点”的规定,否则不会进行试产。你可能会感到无奈,觉得这样简单的板子自己已经测试过多次,肯定没问题。你可能会拿起电话与工艺部门争论,说产品下个月就要投产,现在改动已经来不及,问他们是否愿意为可能出现的延误负责。你心里可能会抱怨工艺部门完全不考虑研发的感受。

问题究竟出在哪里?其实没有哪一方是错的,只是考虑问题的角度(职位)不同而已。研发人员更关注产品的性能,需要通过热测试、可靠性测试、S&V测试、EMI/EMC测试等一系列测试,并获得FCC、CE、BSMI、KCC等安规证书。对他们而言,测试点几乎没有帮助,只会增加工作量和设计复杂性。如果没有调试或检测的需求,研发部门可能会认为没必要添加这些测试点(TP)。

而工艺和品质控制部门更关注生产或量产时的良品率,确保交到客户手中的产品没有质量问题,这对企业至关重要。因此,他们认为产品设计应该遵循DFM(为制造而设计)和DFT(为测试而设计)的原则。

那么,是否所有的板子都需要添加测试点,以及如何添加测试点呢?首先,需要明确添加测试点的目的,而不是单纯为了添加而添加。测试点的主要用途包括:产品研发阶段方便调试、产品生产(量产)阶段用于ICT测试、产品返修时便于检测。针对不同的目的,添加测试点的策略也会有所不同。

研发阶段,需要加哪些测试点?

一些工程师可能会说:“我在研发工作多年,从未专门添加过测试点。在调试时,我直接从元件的管脚或过孔测量信号。”先不说这些“点”在严格意义上是否算作测试点,但每次调试时都需要辨认芯片的管脚号,然后四处寻找可以用万用表测量的地方,这难道不很繁琐吗?特别是处理QFP、BGA等元件时,难度不是更大吗?

因此,合理地添加测试点是有其必要性的。当然,只需要为“关注”的信号添加测试点。以下是一些建议添加测试点的网络:

电源

当你拿到第一块原型PCB时,你会检测哪些信号呢?如果发现板子运行不正常,你会首先检查什么?是的,通常首先检查的是电源。因此,在所有电源网络上添加测试点是非常重要的。

重要的控制信号(Control Signal)

例如,电源管理芯片的PowerOn(即Power Enable/Power OK)信号。在这些关键的控制信号上添加测试点可以方便我们观察信号的时序,并协助分析板子运行异常的原因。

某些需要与外部接线的信号

以下图中的I2C信号为例,加入了两个测试点,这些测试点可以用来连接外部编程器,以便对右侧的芯片进行编程。

除此之外,其他的工程师认为重要的信号也应该添加测试点。

量产阶段的ICT是什么?

关于文章开头提出的问题,即是否所有批量生产的产品都需要满足“每个网络至少有一个测试点”的要求,这主要取决于生产的规模。对于年产量达到千千万万级别的产品,无疑需要借助ICT(在线电路测试)来快速检查PCBA的品质。而对于小规模量产的产品,许多公司会在FCT(功能性测试)阶段运行一些诊断工具或测试软件来判断产品的优劣。如果采用ICT,理论上每个网络的确应至少配备一个测试点。对于工业控制板、家电等PCB面积较大的产品,这个要求是合理的。但对于手机、电脑主板等线路密度较高的产品,实现100%测试点覆盖有时是不可行的,因此有时会采取“关键网络覆盖率100%”的策略。至于哪些网络属于关键网络,通常由研发部门决定。

下面来稍微深入了解一下ICT,这对于理解测试点的设计非常有益。

ICT理论知识

ICT是在线电路测试(In Circuit Test)的缩写,它的作用类似于一个自动化的万用表,能在生产线上快速且批量地对PCBA进行测试。ICT通过探针与PCB布局上的测试点接触,用于检测PCBA线路是否有短路或开路,以及元件的焊接质量,并能准确地指出问题所在。

除ICT之外,用于PCBA检测的还有AOI(自动光学检测)和FCT(功能测试)。AOI利用摄像头扫描PCB,并将扫描出的图像与标准图像进行比对,从而识别潜在的缺陷。AOI的优势在于它的灵活性和无需治具,但它无法检测到不可见的焊点,对于虚焊等问题也无法识别。而FCT则通过软件来验证PCBA的功能是否符合要求。相比ICT,FCT的主要缺点是它不能指出具体的缺陷位置。对于产量较大的产品,由于测试成本相对较低,通常会采用AOI、ICT和FCT作为连续的多个检测工位。

以下是一个ICT治具的参考图:

其中最贵的就是下图中的探针,表面镀金,一整套治具的价格十来万不在话下。

ICT的一个主要缺点是其对市场变化的响应速度较慢。这是因为为单个PCBA设计和调试一个专用的ICT针床夹具通常需要耗费一周甚至数周的时间,而这个夹具仅适用于特定的PCBA。为了提供更大的灵活性,市场上也出现了飞针测试仪。这种测试仪可以通过编程快速更换测试针,但其测试速度较慢。因此,尽管存在这些限制,ICT仍然是生产线上的主流检测方法。

测试点设计规范
由于 ICT 探针的机械限制,测试点的设计也要遵循一定的规范。

测试点间距

探针的标准行业间距是0.100英寸/2.54毫米,这种尺寸的探针价格低且可靠性高。因此,对于这类探针,测试点之间的最小间距应该是0.100英寸/2.54毫米或更大。如果这个间距无法满足要求,就需要使用较小尺寸的标准探针,例如0.075英寸/1.91毫米(这也是一种常用尺寸)或者0.050英寸/1.27毫米,但需要注意的是,更小的尺寸意味着成本更高。

以下图示展示了一种测试点间距的设计方法:将格网间距直接设置为0.080英寸/2毫米,以便于测试点的统一布局。

测试点尺寸
测试点的尺寸对于治具的可靠性来讲非常重要。有可能的话,TP 尺寸越大越好,最常见的 TP 尺寸是 ⌀1.2mm,最小的 TP 建议为 ⌀0.8mm,再小的话会使探针的成本极具上升。

一般建议企业定义几种规范的测试点,如 ⌀1mm,⌀1.2mm,⌀1.6mm 等。

测试点位置

在考虑测试点间距的同时,测试点的位置也需要遵循以下几个原则:

  • 分散摆放测试点:测试点应均匀分布,避免集中在一个小区域内。集中摆放可能在探针接触测试点时导致PCB发生弯曲。

  • 测试点与板边的距离:测试点应尽量远离PCB的边缘,例如最好至少距离板边5毫米。

  • 测试点与定位孔的距离:测试点应远离定位孔,建议中心距离至少为4毫米。

  • 测试点应避免靠近较高的元件,以防止相互干扰。

  • 尽可能将所有测试点布置在PCB的同一侧。如果测试点分布在顶层和底层,这将需要制作双面治具或两套治具,从而增加复杂性和成本。

下图展示了一个设计良好的例子。在这个例子中,工程师没有直接选择蓝色箭头指向的焊点作为测试点,而是将测试点引出,从而提高了测试的灵活性和可靠性。

测试点类型
在选择测试点应该是通孔(through-hole)还是贴片(SMT)的问题上,原则上,通孔测试点通常具有优势。通孔测试点的最大优点是其结构使得探针定位更加准确,并且可以从板的两面进行测试。然而,通孔测试点的主要问题在于它会占据PCB上所有层的走线空间,这正是SMT测试点的主要优势所在。因此,在PCB尺寸不断缩小的当今趋势中,SMT测试点得到了更广泛的应用。

测试点的材质

测试点最常见的材料有以下两种:

  1. ENIG(Electroless Nickel/Immersion Gold),俗称化学镀金
  2. HASL(Hot Air Solder Level),俗称喷锡

建议使用化学镀金的方式,因为电导率更高,虽然价格略贵。

下图是镀金测试点的一个实例:

KiCad 中测试点的使用

与基准点(Fiducial)和安装孔(Mounting Hole)一样,KiCad 一如既往地为大家准备了各种样式、各种尺寸的测试点,只有你想不到的,没有你找不到的。直接在封装管理器中查找 ”Test Point”,就可以看到所有的测试点封装:

下图分别是一个贴片测试点、通孔测试点以及一个用于插入测试珠的封装:

标识测试点

在 KiCad 中,打开焊盘的属性,可以在制造属性中标识测试点:

测试点相关规则

目前的默认规则中没有与测试点相关的。如果您需要定义与测试点相关的规则,可以使用自定义规则(Custom Rule)。

比如以下语句就定义了测试点的孔径最小为 0.5mm,最大为 5mm:

(version 7)(rule "测试点孔径"
    (constraint hole_size (min 0.5mm)(max 5mm))    (condition "A.Pad_Type == 'Test Point'"))

测试点报告

目前 KiCad 没有测试点报告来检查是否所有的网络都有测试点,或者测试点的数量等信息。有类似需求的小伙伴可以看一下以下项目:

https://github.com/Peboli/kicad_netlist_tp_parser

插件可以解析 KiCad 生成 xml 网表并输出简单的测试点报告

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注