efuseIP进行spice建模的实现方案

1. efuse是什么?
回答efuse是什么之前,fuse是什么呢?fuse当然是熔丝,熔丝有很多种,常见的保险丝就是熔丝的一种。那什么是efuse呢?这个e的前缀表示电子的、可电子控制的。也就是说,efuse是可以电控制的fuse。
芯片设计中有时候要使用熔丝修调,工艺厂可提供的熔丝一般有金属熔丝和多晶熔丝,前者称作metal fuse,后者称作poly fuse。两种fuse随着过流的增加都会发生熔断,熔断前后的阻值差异巨大,比如熔断前可能在10ω以内,熔断后可能在mω量级。因此,fuse具有以下两个明显的特点:
(1)通过选择是否熔断可以获得前后不同的阻值状态;
(2)熔断行为是不可逆的;
因为具有以上两个特点,所以在ic设计中,fuse被广泛应用在参数修调方面,当设计初值达不到要求或不理想时,可以通过对已经集成在ic中的fuse进行编程,从而改变配置,使性能参数达到目标值。由于不可逆特性,经过这种编程操作的ic的特性会固化下来,无法进行二次编程。所以应用在ic中的fuse也通常是为了出厂校正或者出厂修调。在一些数据需要加密的ic中,也会采用fuse来固化内部数据,使之不可更改。
2. efuseip是什么?
实际的ic设计中,可能只需要用到很少量的fuse,这时候一般也就需要几个用几个,layout时按照设计规则放置就好了。但在需要大量控制字的应用中,直接使用很多单个的fuse就显得不那么经济了。这一方面是因为可靠性,另一方面也有面积、功耗等的考虑。这时候往往就需要用到efuseip。
efuseip是工艺厂提供的、具有全套资料且经过测试可直接调用的硬件ip。efuseip包含多个熔丝单元,比如256个或者512个等,此外ip内部还会集成有读写控制等电路。既然集成有读写控制,efuseip必须在一定的读写时序下工作。我们购买了工艺厂家efuseip后,工艺厂家会提供相应的技术资料和.v文件等,.v文件其实就是用verilog编写的程序文件,但只是对efuseip的行为的描述,该文件本身是不可综合的。
3. 为什么要进行efuseip的spice建模?
目前正在设计的一款adc芯片刚好需要用到efuseip,由于efuseip的.v模型无法直接带入spice或spectre仿真环境中,故只能通过混合仿真的方式进行顶层验证。为了能够用spectre或spice模拟仿真工具进行验证,所以就产生了对efuseip进行spice建模的想法。
注意,这里说的spice建模”,并不是100%用spice语法进行建模,而是建一个可以带入spice仿真环境的模型。
经过迭代尝试,最终还是建模成功了,并且经过仿真验证,已建模型的行为和厂家.v模型的行为基本一致。下面将解释具体的建模内容。
4. efuseip的基本情况
首先我们看下图,该efuseip包含一个8位的地址输入a、一个 读使能rd,一个编程使能pgen,一个地址使能aen,以及8位并行输出d。
图1:efuseip的输入输出示意图
接着再看下表,其展示了厂家ip中各fuse的排布情况。可以看到,第一列从fuse0~fuse31,第二列从fuse32~fuse63,然后依次排布下去。
图2:熔丝的位置排布
以上介绍了efuseip的基本情况,那实际中该efuseip是怎样工作的呢?
对于上图所示的fuse阵列,为了精准控制每一个fuse,显然需要进行行列控制。a的高3位可产生8个列信号,低5位可产生32个行信号,这样就可以对32*8的矩阵实现地址控制。需要编程时,令pgen=1,rd=0,对指定地址位的熔丝进行熔烧操作。当需要读取熔丝数据时,令pgen=0,rd=1,数据以每次8bit的形式并行输出,实际是一次读出一行数据,全部读出需要32次。
5. spice建模的具体实现
知道了efuseip的行为,我们就可以着手进行建模了。看下图,最终的模型架构主要包括以下模块:decode(译码电路,主要实现行列编码)、efuse array(熔丝单元阵列)、read(读取电路)
图3:模型电路架构图
我们最终搭建出的spice模型如下图所示,该模型电路全部利用veriloga和理想器件构建而成。
图4: 模型原理图
5.1 decode电路
下图为译码电路的原理框图。地址信号为a,其高三位a作为3-8译码器的输入,产生8个列控制信号。低五位a作为5-32译码器的输入,产生32个行控制信号。3-8译码器和5-32译码器可以用基本的组合逻辑电路实现,基本逻辑门可以调用理想的veriloga模型。
图5: 译码电路原理框图
需要注意的是,rd与列控制信号colx或操作后输出真正的列控制信号col。这样一来,在数据读取时,rd=1,所有列信号都为1,表示所有列有效,就可以一次8bit读出有效行的所有数据。而熔丝编程时,rd=0,并不影响列控制信号,可以实现对每一位fuse的编程操作。
5.2 fuse 单元电路
我们看下图,其为第0行、第0列对应的fuse单元电路。图中用r1表示fuse。m1为编程开关,大尺寸,可以流过大电流。m2为读取开关,提供读取电流。
图6: fuse单元电路
编程时:当行列信号以及pgen同时有效,m1导通,流过大电流,熔断fuse。读取时:当行列信号和rd同时有效时,m2导通,提供一路读取电流,读取电流在fuse两端形成压降,输出点经过反相之后的值即为读取结果。具体为:
(1)fuse熔断前,r1很小,r下端电压为高,d0_0=0;
(2)fuse熔断后,r1很大,r1下端电压为低,d0_0=1;
5.3 read电路
下图所示为第0列读取电路原理图,其实质上是将第一列的所有fuse单元的结果进行了求和。
图7:read电路原理图
之所以可以用最简单的求和电路来实现,是因为基于这样一个认识:
因为读取的时候,是从第0~第31行依次来读的,也就是说开始读第0行时,其他行都不读取,所以其他行的数据为0,因此求和并不会影响当前行数据的读出。当然,读其他行的时候也是一样的道理。
6. 写在最后
说说这个模型的缺点吧。该模型不能实现编程然后读取的一体动作。为什么呢?因为fuse是用一个电阻代替的,而电阻是没有记忆能力的,无论编不编程,阻值一旦给定就不能改变。那么这一点有没有办法改进呢?我想是有办法的。设想有一个记忆单元,只要不受到编程触发,就一直保持为0,一旦受到编程触发,就变为1,那就可以解决这个问题。具有这种功能之一的,电平触发型dff是一个选择。

概伦电子NanoDesigner产品的技术优势
华为手环3Pro发布 0.95英寸AMOLED触摸彩屏售价99欧元
邮轮控制系统中电容器的作用什么?
基于CDMA 1X的无线通信监控方案设计
UDS在CAN和以太网上的实现方案
efuseIP进行spice建模的实现方案
法国石油巨头道达尔收购电池开发商的股份 并专注于开发针对高能量密度电池的先进材料
第三届无代码探索者大会将于7月6日盛大开幕
数字频率合成器的作用
配置开关频率的方法?何时需要调节开关频率的大小?
HC 2022 | 一图看懂iMaster NCE-Fabric数字地图
封杀中兴:通信产业缺芯之痛 制造之痒
飞兆半导体高效LED驱动器助力欧司朗照明产品开发
深圳市互联网金融协会发布区块链风险通知 谨防区块链骗局
机器时代:机器人不会毁灭人类 但人类会越来越依赖机器人
区块链的新时代对于数字货币意味着什么
蜂鸣器可以发出不同声音吗 如何让蜂鸣器发出不同频率的声音
薄膜瑕疵在线检测仪的原理以及功能的介绍
微雪电子Micro:bit金属机器手臂套件简介
赫联电子品牌建设—长效且动态的关系管理进程