@
CrazyBoyFeng #12 原文:“给一楼的 jtag 补充一下:jtag 是事先定义好的测试接口,测试时需要把待测 cpu 接入外部测试工具。它并不不是自测机制。包括 cpu 在内的半导体芯片大都有一个比较基础的奇偶校验机制,用于寄存器检查。原来说起来很简单,统计一串数据的 1 的个数是奇数还是偶数。还有 ECC 寄存器,把数据备 5 份,有 3-5 个一致就是有效数据。还有多个寄存器的设计,如三模冗余 TMR 。某些厂商还会设计专门的校验机制,例如 intel 的 mce/cmci 。较少的错误会被自动纠正,较多较频繁的错误则会输出错误。除此以外,为了防范高温、电磁脉冲(包括 EMP 、核爆)、宇宙射线(包括太阳风暴和地磁较弱臭氧空洞的南北极),还会设计物理屏蔽结构,如金属封装。我们甚少见到输出错误的 cpu,是因为现代 cpu 一般设计时都考虑了一定程度的极端环境,并有一定的容错纠错机制。”
======
回复:
看到 12L 这么热情我也补充点。
对于自测试常用的 bist 即内建自测试,常见的奇偶校验说白了仅仅起到告警作用,而更多的是 ECC 等校验。但是 ECC 这些的校验的多数都是有校验门限的不是你想校验就能校验的。且这这些都是多用于存储校验而不在计算路径。
其次,对于计算单元的校验,更多的是根本就是不会管。即使在抗浮躁情况下工作,即使是多次计算取最大概率也是有概率错误的。所以更多的是使用抗浮躁库和加罩子屏蔽干扰来从根本解决问题而不是内外部修正。
至于我为什么在一楼来说 Jtag,就是因为你的消费电子芯片在生产前就会做信号完整性分析和电源完整性分析( SIPI 分析)。在可能存在问题的地方是要提前规避的,比如加 power 。而在生产之后,要 DFT 筛片,而 DFT 是在设计时就加好的测试电路,通过 Jtag 的接口送激励测试筛片,且要做老化压力试验后再测试的。所以你能拿到的都是筛过的。有个词叫做“盆浴曲线”你可以了解下。所以更多的是出现老化问题的片子已经过了生命周期了。
我再给你们说个我这辈子目前为止见过的一个最牛逼的 BUG:
我们之前做某功能的片子测试后已经商用了两三年了,但是某个新客户再使用后总是周期性出现数据误码且不可纠。AE 跑去定位找不到问题但就是有误码,我们再把之前的的代码拿出来仿真也找不到错误。最后拿出问题的数据回来灌进系统发现是没问题的。那就是怀疑是不是芯片老化了,换了新的片子还是有同样问题。最后发现周期性出问题的时候旁边过火车,后来把机柜拖远了,解决了。