现在有空,整理下前段时间关于efuse中redundancy program/read模式的理解,下面以TEF22ULP128X32HD18_PURM这款芯片为例,进行笔记整理,如有侵权或不妥之处,请时告知并及时处理。
1 redundancy的作用
efuse中存放的是芯片初始化的参数配置,也是出厂前需要把最优的配置参数烧写到efuse中,这样用户在使用过程中才会用到最优的芯片性能,但是这个efuse不对用户开放。efuse的好坏决定了一颗芯片的性能好坏,甚至决定了一颗芯片的成败。在电路的生产和制造过程中,总是存在着一些不好的概率事件,一旦这个概率发生,则意味着产品成本的增加。对于efuse来说,则可能是某bit不能烧写,或者某些bit不能烧写,甚至在烧写过程中某些bit烧写错误,则会导致一颗芯片的失败。
但redundancy的存在,则减少了芯片无效的事情发生。比如此笔记中的这款efuse就存在8bit的冗余(redundancy),也就意味着有8bit的容错率,也就减少了芯片失败的风险,但是一旦超过8bit的错误,则只能宣告efuse烧写失败。
2 redundancy read模式
进入redundancy read模式需要一次性读取四次,对应[A6,A5]为2’b00、2'b01、2'b10、2'b11的情况,每次读取都会得到一个32bit的数据,对应如下图:
其中FB0_disable到FB7_disable代表了对应冗余bit是否有效,FB0_data到FB7_data对应了具体冗余bit的值,而RF0-RF7指示对应冗余bit是否已被使用,FB0_A[11:0]到FB7_A[11:0]为冗余bit实际对应的efuse的bit。
一次性读取四次,因为每一次读取会获得两个冗余bit的信息。一次性读全,可以知道整个efuse的bit状况,方便后续处理。
3 redundancy program模式
由于冗余bit的单bit信息需要32bit来表示,即,所以需要用5bit来表示,即,又因为8bit冗余位分成了4组,需要2bit来表示具体的分组,即,如下图所示。为dont care的bit。
4 实际应用中的思考
在efuse control的设计中,至少需要考虑一下几点:
(1)如果efuse出厂就存在bit位的失效,则在烧写前需要确认efuse的bit情况;
(2)如果在烧写过程中出现某bit烧写错误,需考虑对冗余bit的烧写;
(3)如果冗余bit在烧写时出现烧写错误,应该对出错的冗余bit进行处理并烧写新的冗余bit;
(4)如果错误bit大于了芯片能接受的最大冗余bit数,需给出相应的指示;