eFUSE 与 OTP:芯片断电后必须记住的几百 bit
更新时间:2026-09-12。本文是「集成电路大类 · 芯片设计」进阶层(intermediate)数字逻辑第六十八篇。SRAM和寄存器一断电就失忆,但有些数据必须在断电后仍然存在:模拟模块的修调值、MBIST/BISR的冗余修复地址、安全启动的根密钥、唯一芯片 ID/MAC、功能配置。这一篇看承载它们的片上一次性非易失存储:eFUSE 与 OTP。
本文要回答的问题
- 芯片主存储断电即忘,为什么需要一小块「永远记住」的存储?
- 熔丝(fuse)和反熔丝(anti-fuse)物理上怎么从 0 变 1?为什么不可逆?
- 烧写为什么要高压/大电流和专用状态机?正常运行时怎么读出来?
- 什么是影子寄存器(shadow),为什么不直接每次都读熔丝?
- OTP/eFUSE、掩膜 ROM、MTP/EEPROM/Flash 各适合存什么?安全上要注意什么?
一、哪些数据「非易失」不可替代
| 数据 | 为什么断电后必须在 |
|---|---|
| 模拟修调值(trimming) | 出厂测出每颗芯片的偏差(振荡器、Bandgap、ADC 增益),烧进去,上电校准 |
| BISR 冗余修复地址 | 存储器自修复用熔丝记住「哪几行坏、换成谁」,否则每次上电都要重测 |
| 根密钥/安全配置 | Secure Boot 公钥哈希、调试口是否永久关闭,必须不能被软件改写 |
| 唯一 ID / MAC / 批次 | 每颗芯片的身份与可追溯性 |
| 功能配置/分级 | 同一片 die 熔断不同位做成不同 SKU、禁用缺陷模块 |
共同点:量小(几十~几 K bit)、写极少(通常出厂一次)、读很多、要求断电不失且不可篡改——和大容量 Flash 的需求很不一样。
二、熔丝与反熔丝:一次性的物理改写
- 熔丝 eFUSE(fuse,默认导通→烧断):每位是一条细金属/多晶硅连接,未烧时低阻(读出 0),编程时通过专用高压管通一个受控大电流(几 mA~十几 mA、数百 µs),把熔丝电迁移/热熔断成高阻(读出 1)。过程物理不可逆。
- 反熔丝 OTP(anti-fuse,默认断开→击穿连通):每位初始是高阻介质,编程时加高电压把薄氧/介质击穿形成永久导电通路(从高阻 1 变低阻 0),面积通常更小、更难从外观篡改,常见于高安全 FPGA。
- 掩膜 ROM:在光刻时用某层金属/接触孔的有无固定数据,零设备成本但内容出厂定死、适合大批量不变代码(如 boot ROM)。
三、编程与读出:高压、专用状态机、只做一次
烧断熔丝/击穿反熔丝需要常规逻辑电压之外的高电压/大电流(片内电荷泵升压或外部高压脚),且每位有规定的脉冲宽度和电流,还要回读验证、失败重试,绝不能让普通软件或失控代码误触发。因此 OTP 宏内含一个专用编程控制器/状态机:锁定在「只在特定解锁序列、特定测试/烧录模式下」接受命令,逐位按受控时序烧写;正常功能模式只允许读。POR/BOR 期间和电源不稳时禁止编程,防止半电压造成弱编程(似断非断、日后回弹)。
读出是一个类似 SRAM 灵敏放大的检测过程(比较熔丝支路与参考支路的电阻/电流),经锁存输出。
四、影子寄存器:上电搬一次,之后用影子
熔丝读通路慢、占面积、且带电读 eFUSE 还可能有应力/侧信道泄漏。惯例是上电后由 boot/修调逻辑把整块 OTP 读出一次、加载到普通触发器构成的「影子寄存器(shadow registers)」,之后运行期所有模块只读这些普通寄存器(快、可被正常时序分析),OTP 本体甚至可断电。模拟修调值、BISR 修复链、安全配置都遵循「OTP → shadow → 使用」路径,且加载必须在相关电路被使用前完成(修复信息要在 RAM 可用前、修调要在模拟块使能前),这天然挂在上电复位序列最前面。
五、可多次编程、安全与选型
- MTP/EEPROM/Flash:可反复擦写(MTP 几千次、EEPROM 十万次量级),适合需要现场改的配置/密钥/小参数,但工艺复杂、擦写需高压和时间,标准逻辑工艺集成成本高;Flash 容量大但有擦写寿命和数据保持年限问题。
- 安全要点:OTP 里是根密钥和「调试口永久关闭」位,是信任根(安全飞地)的起点。要防止:未授权读(敏感 OTP 读出路径加访问控制、密文熔丝/防探测)、故障注入改写、探针物理读取;安全启动时先验证 OTP 配置再开放 JTAG(见 JTAG 后门风险)。熔断动作不可逆,工程上常用「工厂默认→客户烧录→永久锁定」的生命周期状态机。
| 介质 | 可写次数 | 工艺/成本 | 典型内容 |
|---|---|---|---|
| 掩膜 ROM | 0(光刻固定) | 大批量最省 | 固定 boot 代码 |
| eFUSE/反熔丝 OTP | 1 次(或有限冗余) | 多数逻辑工艺可集成 | 修调、BISR、根密钥、ID、SKU |
| MTP/EEPROM | 千~十万次 | 需额外工艺模块 | 现场可改配置/密钥 |
| 嵌入式 Flash | 万~十万次 | 工艺复杂 | 代码、较大数据 |
与现有篇目的衔接
总结
一句话总结:SRAM 和触发器断电即忘,但模拟修调值、BISR 冗余修复地址、安全启动根密钥、唯一芯片 ID/MAC、SKU 配置这类量小、写极少(常仅出厂一次)、读很多、要求断电不丢且不可篡改的数据,必须用片上一次性非易失存储;eFUSE 通过受控大电流把细熔丝从低阻烧断成高阻、反熔丝 OTP 反向把高阻介质击穿成永久通路,二者都是不可逆的物理改写,掩膜 ROM 则在光刻时用金属/接触孔有无固定内容;编程需要电荷泵产生高压大电流和严格脉冲时序,故由专用状态机加解锁序列保护、只在烧录模式进行且电源不稳时禁止,避免弱编程回弹,正常模式用类似 SRAM 灵敏放大的电阻比较读出;运行期不直接读慢且有泄漏风险的 OTP,而是在上电最早期把它整体搬到影子寄存器,之后模块只读可正常时序分析的影子,且修复/修调加载必须早于相应电路使用;需要现场改配置时再上可多次编程但工艺更复杂的 MTP/EEPROM/Flash;安全上 OTP 是信任根起点,读出路径要访问控制、敏感内容加密熔丝,并在安全启动中尽早按熔断位永久关闭 JTAG 等调试后门。