eFuse技术
1. 基本概况及介绍
不同于大多数FPGA使用的SRAM阵列,eFuse一次只有一根熔丝能够被编程,这是该方法的配置能力存在限制范围的原因。但当与日益成熟的内置自测试(BIST)引擎组合使用时,这些熔丝就变成了强大的工具,能减少测试和自修复的成本,而这正是复杂芯片设计所面临的重大挑战。
eFuse就好像在硅片上建立了无数个交通岗哨,控制信号的传输或停止,据悉这将把芯片中的电路运行效率提高上千倍。比如您购买了一个新的控制器,最开始的时候控制器的功能是空的,不过在把它带回家后,它重新识别了您家中的所有系统,电视、音响、DVD,并且自动对自身进行改造,来控制这些电器。
1.1 相关简介
(1)非易失性存储器(NVM,Non-Volatile Memory)
所谓非易失性存储器NVM 的特点是存储的数据不会因为电源关闭而消失。比如Mask ROM、PROM、EPROM、EEPROM、NAND / NOR 闪存 (Flash Memory) 等传统 NVM,以及目前许多正在研发的新型态存储器,如磁性存储器 (MRAM)、阻变存储器 (RRAM)、相变存储器 (PRAM)、铁电存储器 (FeRAM) 等等都属于 NVM。因此,非易失性存储器NVM的概念设计的范围很广。从可编程次数来看,NVM可以分为3类:
MTP:Multiple-Time Programmable,可以多次编程
FTP:Few-Time Programmable,可编程的次数有限
OTP:One-Time Programmable,只允许编程一次,一旦被编程,数据永久有效。
实际上我们常说的OTP(One-Time Programmable)指的是可编程的次数,代表一次可编程存储器此类特性的存储单元,并不特指某一种存储器。
(2)关于一些存储器(Mask ROM, PROM, EPROM, EEPROM)
Mask ROM是掩模只读存储器,Mask也称为光罩,所以也称为光罩只读存储器。其通过掩模工艺,一次性制造,其中的代码与数据将永久保存(除非坏掉),不能进行修改,属于不可编程ROM.
PROM(Programmable Read Only Memory)是可编程只读存储器,相对于传统的ROM,其数据不是在制造过程中写入的,而是在制造完成之后通过PROM programmer写入的。PROM 中的每个bit 由熔丝 ( fuse ) 或反熔丝 ( antifuse ) 锁定,根据采用的技术不同,可以在晶圆、测试或系统级进行编程。典型的PROM的所有位都为“ 1”。在编程过程中烧断熔丝位(Burning a fuse bit)会使该位读为“ 0”。存储器在制造后可以通过熔断保险丝(blowing the fuses)进行一次编程,这是不可逆的过程。典型的PROM是“双极性熔丝结构”,如果想改写某些单元,可以给这些单元通以足够大的电流,并维持一定的时间,原先的熔丝(fuse)即可熔断,这样就达到了改写某些位的效果。另外一类经典的PROM是使用“肖特基二极管”的PROM,出厂时,其中的二极管处于反向截止状态,采用大电流的方法将反相电压加在“肖特基二极管”,造成其永久性击穿即可。
EPROM(Erasable Programmable Read-Only Memory)是可擦写可编程只读存储器。它的特点是具有可擦除功能,擦除后即可进行再编程,但是缺点是擦除需要使用紫外线照射一定的时间。
EEPROM(Electrically Erasable Programmable Read-Only Memory)是电可擦除可编程只读存储器。它的最大特点是可直接用电信号擦除,也可用电信号写入。
(3)一次可编程的非易失性存储器(OTP NVM)
针对OTP NVM存储器主要有两种eFuse 和Anti-Fuse。fuse是保险丝·、熔丝的意思,在计算机技术中,eFuse(electric-fuse,电子保险丝)是置于计算机芯片中的微观保险丝。该技术是IBM在2004年发明的,可以对芯片进行动态实时重新编程。概括地说,计算机逻辑通常被“蚀刻”或“硬连线”(“etched” or “hard-wired”)到芯片上,在芯片制造完成后不能更改,但使用eFuse,芯片制造商可以在芯片上的电路运行时进行更改。具体下文详解。
1.2 关于eFuse工作原理
OTP,One time programmable,是一种特殊类型的非易失性存储器 ( non-volatile memory ), 只允许『编程』一次,一旦被编程,数据『永久』有效。相较于MTP (multi-time programmable ) 如EEPROM, OTP 的面积更小而且不需要额外的制造步骤,因此广泛应用于low-cost 芯片中,OTP 常用于存储可靠且可重复读取的数据。
eFuse电子保险丝可以用硅或金属制成,它们都是通过电迁移来工作的,即电流导致导体材料移动的现象。随着时间的流逝,编程期间产生的“熔丝碎屑”会反向生长,导致金属线断开的相同电迁移也会导致金属线无意中再次连接,从而改变原本要存储的数据,导致了错误的行为。此特性限制了eFuse 的可读次数。
Anti-Fuse(反熔丝)是一种电气装置,其功能与保险丝相反。保险丝从低电阻开始,默认是导通状态,当灌以较大的电流时切断电路。而反熔丝从高电阻开始,默认是不导通状态,当灌以较大的电压时,可将其转换为永久性导电路径。
Anti-fuse 比eFuse 的安全性更好,eFuse的编程位可以通过电子显微镜看到,因此其存储的内容可以被轻易破解,但Anti-fuse在显微镜下无法区分编程位和未编程位,因此无法读取数据。
传统eFuse的熔丝由多晶硅栅极层制成,随着工艺几何尺寸的缩小和High-K 材料的使用,现在eFuse的熔丝改由金属制成,随着时间的流逝,编程期间产生的『熔丝碎屑』会反向生长,这限制了eFuse的可读次数。eFuse的形状类似于领结,中心是一条窄金属条,较大的端头用作通孔和散热器的连接,受限于该形状,随着晶体管尺寸的减小,eFuse 的尺寸不能按比例减小,因此随着Macro 尺寸变大,eFuse 的密度并不能同比例增加,很少会超过4KB。
计算机逻辑通常是“蚀刻”或“硬编码”到芯片上,在芯片完成后不能改变。通过使用eFuse技术,芯片制造商可以允许芯片上的电路在运行时发生变化。该技术的主要应用还主要是为了芯片的性能调优。如果芯片局部发生问题,例如存储器发生问题,或者需要花费太长的时间来响应,或者消耗了太多的电力,那么芯片就可以通过“blowing”一个eFUSE来立即改变它的行为,已保证其他功能不受影响。
1. eFuse默认导通,存储的是"1",而Anti-fuse默认是断开,存储的是"0",因此Anti-Fuse的功耗也较eFuse小,面积也较eFuse小。
2、从器件面积上讲,eFuse的cell的面积比OTP更大,所以仅仅有小容量的器件可以考虑。当然如果需要大容量的,也可以多个eFuse Macro拼接,但是这意味着芯片面积的增加,成本也会增加;OTP的cell面积很小,所有相对来讲,可以提供更大容量的Macro可供使用。
eFuse技术是根据多晶硅熔丝特性发展起来的一种技术。 多晶硅熔丝初始电阻小,有大电流流过多晶硅熔丝时,多晶硅熔丝被熔化烧毁。 当大电流连续流过多晶硅熔丝时,导致多晶硅熔丝熔断,多晶硅熔丝电阻成倍增加。熔断的多晶硅熔丝保持永久故障状态,不烧熔丝多晶硅熔丝仍处于导通状态。 eFuse存储单元判断多晶硅熔丝是否熔断,并以数字信息存储,一根多晶硅熔丝可以存储一个二进制数——“0”或“1”。 一般情况下,未被烧断的多晶硅熔丝对应的存储低电平“0”; 被熔断的多晶硅的熔丝称为被编程,对应存储高电平“1”。
eFuse的主要用途是实现集成电路(通常是半导体存储器)的冗余电路,电路正常工作时它是一个备而不用的电路,一旦检测到电路有缺陷,通过eFuse可以修复或取代有缺陷的电路。以存储器结构为例,现代技术通常是在芯片中加入一定存储位数的eFuse,,当存储器制造完成后,如果有部分存储单元,字线或位线功能有问题 ,eFuse可以让这部分关闭,而不影响芯片的其余部分继续运行。 或者使用eFuse连接一些冗余的存储单元,替换内存中有问题的字线或位线。
eFuse有助于芯片控制单个电路的速度以管理功率消耗和修复不可预测的潜在缺陷,例如,该技术可以检测芯片单个电路执行速度是 过快或过慢,芯片可以通过调整局部电压加速或降低电路工作速度,从而有效管理芯片的性能和能耗等问题。
其次,eFuse具有可编程存储器的特性,可以提供编程的功能,以使各类用户可以根据不同的功能对电路进行编程。 例如,为了节省研发和生产成本,芯片工厂可以使用金属联机连接到存储阵列的每个晶体管,并在连接组件中添加编程连接。待半导体芯片制作完成后,再由外部进行数据输入,,将标准芯片编程为各种功能芯片,实现芯片的智能化。
eFuse还可以完成现场修复芯片。 一旦软件检测到错误数据,并判断出需要修复的数据长度,BIST(build in selftest 内置自检)将需要修复的数据传递给eFuse,并进行相应的数据编程和修复。
通过eFuse编程可以使 芯片在运行中随时更改密码,有效防止黑客入侵,或可以微调电阻、电容等独立元件等。
起初,开发eFuse技术只是为了对缺陷芯片进行修复。 它只是一个可以编程的熔丝,配置能力有一定的限制。 但由于eFuse技术在芯片封装后也可以实现编程,使其得到广泛应用。 并且,当 eFuse 与日益成熟的内置自测试 (BIST) 引擎相结合时,已成为一种更强大的工具。不仅可以持续监控芯片功能还可以自行调整,无需人为干预,还可以降低测试和自修复成本。
1.3 应用功能总结
eFuse应用范围很广,从模拟器件的调整、校准、修复到系统软件的现场更新,且被广泛应用于安全领域,但由于eFuse的『编程结点』可以通过电子显微镜看到,因此其存储的内容可以被轻易破解。efuse类似于EEPROM,是一次性可编程存储器,在芯片出场之前会被写入信息,在一个芯片中,efuse的容量通常很小,可EFuse支持反复写入,但写到总的空间就不可以再写。
简单就 eFuse功能 作以总结介绍,具体如下文:
(1)Efuse被广泛利用最重要的一个原因就是能够对有缺陷的芯片进行修复,而且在修复的过程当中不需要外界的干预。对于芯片的生产以及考虑到生产的成本,最重要的一点就是芯片生产的良率,若生产出有缺陷的芯片,而又不能修复那处理的结果就只能是报废,这样的处理方式在很大程度上增加芯片的成本。Efuse技术的出现,即通过改变电路的某些电压,或者特意去关闭一些功能模块,这样即使芯片出现缺陷,但是依旧能去实现芯片要实现的某些功能。这样即使有生产出来的芯片有缺陷,通过Efuse技术去发现错误,并且对错误进行修复,这样一来芯片还是可以正常使用,所以Efuse技术在提高芯片的良率以及降低芯片的成本上有很大的贡献。另一方面,通过找到芯片易出错的地方,有助于以后芯片的改进,以前的熔丝都是单排的,只能进行一次的编程,而随着工艺的改进,现在Efuse采用的都是多排阵列,这就实现了Efuse的自我修复。
(2)利用Efuse可以降低芯片的功耗以及增加芯片的可控性,由于Efuse可以进行编程,从而可以实现芯片关闭某些工作模块,当我们不需要某些模块时可以利用Efuse的编程来限制或者是屏蔽某些功能,从而可以降低芯片的功耗,也能进一步增加芯片的可控性。
(3)可提高芯片的安全性,利用Efuse技术,密码随时都可以进行修改,能有效的降低黑客的入侵。
(4)Efuse技术还可以降低制造的成本。在第一个功能应用中我们通过对芯片的修复,能减小芯片的报废而降低一部分成本,另外一个降低成本是通过芯片的集成多种不同的应用功能模块,当客户选择不同的功能时,不需要重新设计与制造,只需要通过Efuse技术来选择功能模块。这就在另一个层面来达到降低成本的效果。
(5)随着工艺的更微小化,Efuse利用电位迁移的技术,不仅不会对周边的电路造成破坏,而且还能对在封装后的芯片进行编程,这使得Efuse在芯片中的应用更为广泛。
(6)类似启动程序、加密密钥、模拟器件配置参数等。可通过efuse 控制着系统启动方式。模拟电路受工艺制造等误差的影响,流片回来的芯片往往需要对作参数校准,调试完成后将确定的值烧写到OTP中,芯片上电后OTP的值被装载到寄存器中,模拟电路参数完成校准。通过运用eFuse技术,允许计算机芯片的动态实时重新编程。Efuse可用于存储MEM repair的存储修复数据,也可用于保存芯片量产信息,以便后续追踪,如芯片可使用电源电压,芯片的版本号,生产日期。
Efuse对于芯片而言就像一个指挥官,它能够控制芯片中很多信号的的传输或者将其停止,这样就使得芯片中的其他电路能够更快的运转,Efuse不仅再一次的拯救芯片,还能提高芯片的效率。
2 关于eFuse解析
2.1 eFuse操作模式
eFuse宏有三种操作模式,具体如下:
(1)编程模式(Program mode)、
(2)读取模式(Read mode)、
(3)非活动模式(Inactive mode)。
eFuse模块三种模式选择由其读选择信息(RDEN)和程序选择(PGMEN)的逻辑电平共同决定。
工作模式:
Mode 编程使能
PGMEN 读取使能
RDEN 模拟电源
注意事项:
(1) 编程使能和读使能不允许同时为H。
(2) 除了在编程模式或读取模式下,不允许地址输入高电平,也就是说只有在编程或读取模式下才允许AEN为高电平。
(3) 在编程模式或读取模式下,当AEN为高电平时,不允许端口(地址)切换。
(4) 既不允许读取模式直接转换到编程模式,也不允许PGM模式直接转换到读取模式。
2.2 编程模式(Program Mode)
在燃烧前,初始Fuse输出为“0”,燃烧后写入“1”。当编程模式(读使能RDEN=L,编程使能PGMEN=H)时,由地址A[11:0](地址输入位)指定的EFUSE位将被AEN(地址使能位)的高脉冲烧毁。程序模式的详细时序见详解。D[7:0]在程序模式下未定义。
注意:一根Fuse只能烧一次。
2.3读取模式(Read Mode)
如果RDEN=H,PGMEN=L,则EFUSE进入读取模式。读取模式的详细时序间详解。地址信号A[11]~A[9]为“无效”。4K = (4*1024) byte = 4096byte
2^9 = 512 组织成512×8位的一次性可编程非易失性电熔丝存储单元。其中A[11:0]为地址输入,A[0]A[8]是有效单元,D[0]D[7]是读取模式下的并行数据输出。
【重点分析】 对于上图所示的efuse阵列,为了精准控制每一个efuse,显然需要进行行列控制。A[8:0]的高3位可产生8(23)个列信号,低6位可产生64(26)个行信号,这样就可以对64*8的矩阵实现地址控制。需要编程时,令PGEN=1,RD=0,对指定地址位的熔丝进行熔烧操作。当需要读取熔丝数据时,令PGEN=0,RD=1,数据以每次8bit的形式并行输出,实际是一次读出一行数据(512bit),全部读出需要64(512/8=64)次。
2.4 非活动模式(Inactivate Mode)
如果编程模式和读取模式都不活动,则EFUSE进入非活动模式。非活动模式下的首选待机条件为AEN = L,RDEN = L,PGMEN=L,D[7:0]在非活动模式下未定义。
eFuse技术的更多相关文章
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXRT Bo ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(5)- 再聊eFUSE及其烧写方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的eFUSE. 在i.MXRT启动系列第二篇文章 Boot配置(BOOT Pin, eFUSE) 里痞子 ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXR ...
- 痞子衡嵌入式:揭秘i.MXRT1170 eFuse空间访问可靠性的保护策略(冗余与ECC)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1170的eFuse空间访问可靠性保护策略. 关于i.MXRT系列的eFuse/OTP,痞子衡之前在介绍Boot时写过 ...
- 【原创】i.MXRT J-Flash烧写算法使能eFuse熔丝位写入
临近年底,终于又憋了一篇文章出来,本来年初的时候是有计划把去年总结的一些东西整理下发布出来的,结果还是被工作和生活上各种琐事给耽搁了.哎,今年刚过了自己35岁的生日,眼瞅着这个人生节点 ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- 本人提供微软系.NET技术顾问服务,欢迎企业咨询!
背景: 1:目前微软系.NET技术高端人才缺少. 2:企业很难直接招到高端技术人才. 3:本人提供.NET技术顾问,保障你的产品或项目在正确的技术方向. 技术顾问服务 硬服务项: 1:提供技术.决策. ...
- 分布式锁1 Java常用技术方案
前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.所以自己结合实际工作中的一些经验和网上看到的一些资 ...
- 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...
随机推荐
- Linux练习题--打印文本第10行
文本test.txt,需要打印文本第10行 方法一: sed -n '10p' test.txt 说明:sed命令使用-n参数时,只有经过sed 特殊处理的那一行(或者动作)才会被列出来. 命令&qu ...
- LKWA靶机学习
LKWA靶机学习 目录 LKWA靶机学习 1 下载地址 2 Blind RCE 2.1 利用Burpsuite Collaborato模块来查看输出. 2.2 尝试利用dnslog进行回显 3 XSS ...
- 【javascript】slice()、substring()和substr() 三种字符串截取方法区别
slice(start, end) :slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分. 1.start(包含) 和 end(不包含) 参数来指定字符串 ...
- springboot跳转页面404的问题
今天测试的时候出现了这个问题: Cannot forward to error page for request [/] as the response has already been commit ...
- kubebuilder简明教程
一.operator概述 Operator 是 Kubernetes 的扩展软件,它利用 定制资源 管理应用及其组件. Operator 遵循 Kubernetes 的理念,特别是在控制器 方面[1] ...
- .Net Core Elasticsearch 时间查询问题
查询时增加条件需要设置时区,这样时间才不会出现问题. new QueryContainerDescriptor<T>().DateRange(t => t.Field(f => ...
- 开始学python不知该怎么学?Python基础教程(第2版) 免费下载
Python基础教程(第2版)pdf高清版免费下载 解压码:n0nl 内容简介 · · · · · · 本书是经典教程的全新改版,作者根据Python 3.0版本的种种变化,全面改写了书中内容 ...
- [后端-Python]-项目练习集
1 1. 2 ''' 3 knowledge_point: 4 1.练习if...else: 5 2.练习while; 6 3.练习列表的切片取值: 7 8 requirements: 9 购物车: ...
- ABAP 拆批拣货交货bapi以及实例
使用函数 BAPI_OUTB_DELIVERY_CHANGE:拆批bapi WS_DELIVERY_UPDATE:拣货函数 BAPI_OUTB_DELIVERY_CONFIRM_DEC:过账函数 样例 ...
- [学习计划]mysql常用语句-随学随整理
<> 不等于 三元表达式 select *, if (num=1, "第一", "其他") as 别名 from 表 COUNT 统计总数并按某 ...