2. OTP与eFuse基础

在设备密钥工程中,密钥、证书、校准参数、生命周期状态等数据一旦写入芯片,就必须具备“不可随意更改”或“仅能单向演进”的属性。实现这类一次性或有限次写入能力的底层器件,统称为非易失性一次性可编程存储。理解 OTP、MTP、eFuse、反熔丝与浮栅之间的区别,是后续设计密钥注入流程、评估安全边界和制定量产策略的前提。

一、核心概念:从“一次”到“多次”的谱系

OTP(One-Time Programmable)指器件在出厂后只能被编程一次,之后内容永久固定。它强调“写一次,读多次”,常用于密钥、唯一ID、安全启动使能位等不可回滚的场景。严格来说,OTP 是一个功能范畴,而不是某一种具体器件结构。

MTP(Multiple-Time Programmable)允许有限次数的擦写,通常为几十到几百次。它介于 OTP 与 Flash 之间,适合需要小批量更新校准值或配置参数的场合,但擦写次数远低于标准 Flash,且往往需要较高的编程电压。

eFuse(电子熔丝)是一种典型的 OTP 实现。每个比特对应一根细小的多晶硅或金属熔丝,编程时通过大电流将其熔断,或通过电迁移改变电阻。未编程为低阻,编程后为高阻,读出电路据此判断 0/1。eFuse 的优点是结构简单、面积小、与标准 CMOS 工艺兼容;缺点是编程电流较大,且熔断过程不可逆。

反熔丝(Anti-fuse)与 eFuse 相反:未编程时处于高阻断路状态,编程时通过击穿薄栅氧形成永久导电通路。反熔丝单元面积更小,适合高密度 OTP 阵列,但编程电压较高,需要专门的电荷泵和高压管。

浮栅(Floating Gate)是 EPROM、EEPROM 和 Flash 的基础结构。电荷被注入并存储在隔离的浮栅中,通过电荷量改变晶体管阈值电压,从而实现数据保持。浮栅器件可擦写,但用于 OTP 模式时,可通过禁止擦除操作或熔断控制逻辑,将其“锁定”为一次性写入。

一句话区分:eFuse 靠“熔断”写 1,反熔丝靠“击穿”写 1,浮栅靠“存电荷”写 1;OTP 是使用策略,MTP 是擦写能力,二者与具体器件结构是正交关系。

二、器件分类与关键参数对比

选型时不能只看“能不能写一次”,还要关注编程电压、面积、保持年限、抗篡改能力和工艺可得性。下表汇总了常见 OTP/MTP 器件的核心差异。

器件类型编程机制可擦写性典型编程电压单元面积典型应用
eFuse大电流熔断/电迁移不可擦写1.8~3.3V 或片内升压中等密钥、ID、使能位
反熔丝栅氧击穿不可擦写6~12V小高密度 OTP 阵列
浮栅 OTP热电子注入/隧穿可擦但被锁定5~12V小代码存储、参数区
MTP浮栅或 SONOS 擦写有限次(约 10²)5~12V小校准值、配置更新
掩膜 ROM光刻时定义不可写无最小固定代码、查找表

从安全角度看,eFuse 和反熔丝在物理上更难恢复原始状态,适合存放根密钥;浮栅器件虽然可擦写,但若配合访问控制熔丝和加密读出,也能用于密钥存储。MTP 则更适合非敏感参数,避免因反复擦写引入可靠性风险。

三、编程与读出流程:以 eFuse 为例

eFuse 的典型操作分为“编程”和“读出”两个阶段。编程时,地址译码选中目标比特,片内电荷泵将电压抬升到编程电平,驱动管导通大电流,熔丝在数十微秒内熔断。读出时,小电流流过熔丝,灵敏放大器比较其压降与参考电阻,输出逻辑值。

// eFuse 编程伪代码
efuse_init();
efuse_set_voltage(PROG_VOLT);   // 使能片内升压
efuse_write_word(ADDR_KEY0, 0xA5A5);
efuse_wait_ready(10ms);         // 等待熔断完成
efuse_read_word(ADDR_KEY0, &val);
if (val != 0xA5A5) {
    log_error("eFuse program verify failed");
}
efuse_lock(ADDR_KEY0);          // 锁定,禁止再次写入

关键点在于“编程后校验”和“锁定”。校验用于确认熔断充分,避免读出时处于中间阻态;锁定则通过额外的控制熔丝禁止后续写入,防止密钥被覆盖。对于反熔丝,流程类似,但需要更高的击穿电压和更严格的限流,否则可能损伤周边电路。

四、选型考量与常见误区

实际项目中,选型通常围绕以下维度展开:

  • 安全性:是否可物理探测、是否支持加密读出、锁定机制是否可靠。
  • 可靠性:数据保持年限、编程后阻值漂移、温度循环下的稳定性。
  • 工艺与成本:是否与主芯片工艺兼容、是否需要额外掩膜、单元面积和良率。
  • 编程条件:编程电压、电流、时间,是否可在封装后编程(post-package programming)。
  • 容量与组织:按位、按字节还是按字,是否有冗余和纠错。

常见误区一:把“OTP”等同于“绝对安全”。OTP 只保证不可改写,不保证不可读取。若读出路径未加密,攻击者仍可通过探针或调试接口获取密钥。误区二:忽略编程窗口。eFuse 熔断不充分会形成中间阻态,导致读出不稳定;反熔丝击穿过度则会短路相邻单元。误区三:用 MTP 存根密钥。MTP 可擦写,若访问控制被绕过,密钥可被替换。

一个典型场景是:某物联网设备需要在产线注入设备唯一密钥和证书。方案选择 eFuse 存储根密钥哈希和使能位,选择 MTP 存储可更新的校准参数。产线流程为:先写 MTP 参数并校验,再写 eFuse 密钥并锁定,最后触发安全启动。若先锁定 eFuse 再写 MTP,一旦 MTP 写入失败,设备将因无法进入安全启动而报废。因此,编程顺序本身也是选型与流程设计的一部分。

OTP / MTP 器件分类与编程机制 OTP 功能范畴 写一次,读多次 MTP 功能范畴 有限次擦写 掩膜 ROM 光刻定义,不可写 eFuse 电子熔丝 大电流熔断 / 电迁移 不可逆,面积中等 反熔丝 Anti-fuse 栅氧击穿形成通路 不可逆,面积小 浮栅 Floating Gate 电荷注入改变阈值 可擦写,可锁定为 OTP 编程:大电流熔断 未编程 = 低阻 编程后 = 高阻 编程:高压击穿 未编程 = 高阻 编程后 = 低阻 编程:电荷注入 阈值电压偏移 可擦除或锁定 选型维度 安全性 · 可靠性 · 工艺兼容 · 编程电压/电流 · 容量组织 · 封装后可编程性 · 成本

总结来看,OTP 与 MTP 描述的是“可写次数”这一使用属性,eFuse、反熔丝、浮栅描述的是“如何实现写入”的物理机制。工程选型时,应先把数据按敏感度和更新需求分层,再为每一层匹配最合适的器件,最后用锁定、校验和编程顺序把安全边界固化下来。