4. 设计预防策略(上):降额设计、冗余设计、容错设计
各位工程师朋友,咱们今天聊聊设计预防策略。说白了,就是给芯片穿上“防弹衣”。
我做了十几年失效分析,见过太多芯片“死”得不明不白。有的因为电压高了那么一点点,有的因为温度高了那么几度。其实很多问题,在设计阶段就能避免。
今天先讲三个最基础、也最实用的策略:降额设计、冗余设计、容错设计。
核心观点:设计预防不是“过度设计”,而是“聪明设计”。用最小的代价,换取最大的可靠性。
4.1 降额设计:给芯片留点“喘气”的空间
降额设计,听起来挺高大上。其实道理很简单:别把芯片用到极限。
你想想看,一个芯片标称能跑1.8V,你非要给它1.85V。短期内可能没事,但长期呢?温度一高,电压一波动,它就挂了。
我个人习惯,电压降额至少留10%。比如标称1.8V,我设计时按1.62V到1.8V来算。电流也是,别让管子一直工作在饱和区边缘。
实战经验:我曾经遇到一个项目,客户非要让芯片在1.95V下跑。我说不行,会出问题。他不信。结果批量生产后,退货率高达5%。后来降到1.8V,退货率直接降到0.1%。
降额设计主要分三类:
- 电压降额:工作电压不超过标称值的90%
- 电流降额:实际电流不超过最大额定值的80%
- 温度降额:结温不超过最大结温的85%
| 参数 | 标称值 | 降额系数 | 设计限值 |
|---|---|---|---|
| 电源电压 | 1.8V | 0.9 | 1.62V |
| 工作电流 | 100mA | 0.8 | 80mA |
| 结温 | 125°C | 0.85 | 106°C |
注意:降额不是越低越好。降额太多,性能会下降,成本也会增加。找到那个“甜点”才是关键。
4.2 冗余设计:别把所有鸡蛋放一个篮子里
冗余设计,说白了就是备份。
我记得有一次,一个客户做汽车芯片。他们用了单路CAN总线。我说,万一这路坏了呢?他说不可能。结果呢?路试的时候,有一辆车CAN总线短路,整个系统瘫痪。
后来他们改了设计,加了冗余CAN总线。成本多了5%,但可靠性提升了10倍。
冗余设计常见形式:
- 硬件冗余:关键模块做双份或三份
- 时间冗余:同一个任务重复执行多次
- 信息冗余:数据包加校验码
我建议,不是所有模块都需要冗余。只对“失效后后果严重”的模块做冗余。比如:
- 安全相关的控制逻辑
- 电源管理模块
- 时钟生成电路
- 关键通信接口
核心原则:冗余设计要遵循“成本-收益”分析。别为了冗余而冗余,那是浪费。
4.3 容错设计:允许犯错,但要能纠正
容错设计,和冗余设计不一样。冗余是“防止出错”,容错是“出错后能恢复”。
你想想看,芯片在太空环境中,经常被高能粒子击中。一个比特翻转,可能让整个系统崩溃。这时候就需要容错设计。
最经典的容错技术:ECC(纠错码)。
// 简单的汉明码示例(7,4码)
// 数据位:d1 d2 d3 d4
// 校验位:p1 p2 p3
// 编码:
p1 = d1 ^ d2 ^ d4
p2 = d1 ^ d3 ^ d4
p3 = d2 ^ d3 ^ d4
// 解码(检测并纠正单比特错误):
s1 = p1 ^ d1 ^ d2 ^ d4
s2 = p2 ^ d1 ^ d3 ^ d4
s3 = p3 ^ d2 ^ d3 ^ d4
// 如果s1,s2,s3不全为0,说明有错误
// 根据s1,s2,s3的值可以定位错误位置
除了ECC,还有TMR(三模冗余)。三个模块同时计算,取多数结果。我见过一个FPGA项目,用了TMR后,抗单粒子翻转能力提升了100倍。
避坑指南:我曾经犯过一个错误——只对数据做了ECC,没对控制逻辑做。结果数据对了,但控制逻辑被粒子打乱了,整个状态机跑飞了。后来我学乖了,控制逻辑也要做容错。
容错设计的三个层次:
- 检测层:发现错误(如奇偶校验)
- 纠正层:自动修复错误(如ECC)
- 恢复层:系统级恢复(如看门狗复位)
嗯,这里要注意:容错设计会增加面积和功耗。ECC大概增加10-20%的面积,TMR增加200%以上。所以,要权衡。
我个人习惯,先做失效模式分析。看看哪些失效最可能发生,哪些后果最严重。然后针对性地做容错设计。别一上来就全上ECC和TMR,那成本受不了。
总结一下:
- 降额设计:给芯片留余量,别用到极限
- 冗余设计:关键模块做备份,防止单点失效
- 容错设计:允许出错,但要能检测和纠正
这三个策略,不是互相替代的,而是互补的。好的设计,往往三者都用。
好了,今天就聊到这儿。下一节咱们继续讲设计预防策略的下半部分——热设计、ESD防护和DFT。到时候见。
公众号:蓝海资料掘金营,微信deep3321