反熔丝型器件的编程电路设计与实现
2022-01-08蔡永涛王雪萍张国华
蔡永涛,吴 宵,王雪萍,曹 靓,张国华,
(1.江南大学 物联网工程学院,江苏无锡 214122;2.中国电子科技集团公司第五十八研究所,江苏无锡 214035)
反熔丝工艺的器件由于具有集成度高、工作频率高、非易失性、功耗低等优点,被广泛地应用于数字系统中[1-3],如现场可编程门阵列(Field Programmable Gate Array,FPGA)和存储器。现阶段,主流的反熔丝工艺主要有MTM 反熔丝(Metal to Metal)、栅氧化层反熔丝和ONO(氧化物-氮化物-氧化物)反熔丝[4-6]。其中MTM 型反熔丝相比其他两种类型,表现出良好的编程后电阻分布一致性和集成度高的特点,编程后的电阻离散性极小[7-8]。因此,MTM 反熔丝更适合大规模集成电路的设计与制造。鉴于反熔丝编程单元的结构特点和编程特性[9-10],仅当用于传输信号时,单向编程反熔丝单元是可以满足要求的。但如果需要传递强信号,则需要采用双向编程来保证信号传输的稳定性。双向编程的反熔丝单元相比单向编程的反熔丝单元,表现出良好的编程、传输一致性和稳定性。因此,对反熔丝单元的编程处理变得尤为重要。传统编程方法是通过单向编程反熔丝单元实现的。由于工艺不成熟和工艺偏差,在单向编程过程中,可能出现反熔丝单元编程不完全现象,导致反熔丝单元输出阻抗较大[11-12]。又因为反熔丝仅一次可编程,不可重复编程,大阻抗会导致整个反熔丝器件失效[13-16],这对应用于高可靠领域的反熔丝器件是极为不利的。
该文对传统的反熔丝器件编程方法进行分析和总结,针对反熔丝工艺与编程特点,改进了寻址编程方式;针对需要流过大电流、强信号的反熔丝单元,提出了正反编程反熔丝单元的编程方法,提高了布线通道上反熔丝单元编程的可靠性。
1 传统编程结构
反熔丝器件的布线资源一般由金属连线和可编程开关组成。其中,金属连线被可编程开关分割为长度不一的互连线,各功能模块和编程资源通过互连线相互连接,通过寻址和编程反熔丝单元实现预定功能。图1所示为经典反熔丝阵列结构。反熔丝单元排列成4×4 结构组合成反熔丝块,反熔丝块排列成3×2结构组合成反熔丝阵列,反熔丝块和阵列通过布线资源相互连接。水平布线称为水平布线资源,垂直布线称为垂直布线资源。水平布线资源被水平通路晶体管分割为不同长度的水平互连线,垂直布线资源被垂直通路晶体管分割为不同长度的垂直通路晶体管,这些水平、垂直布线资源通过通路晶体管的打开与关闭实现布线资源长度灵活可调节。该结构与组合逻辑电路的输入输出相连,形成整体的反熔丝框架结构[17]。
图1 反熔丝阵列结构
通过寻址并编程目标反熔丝单元,使编程后的单元之间形成固定的连接关系,来实现组合逻辑电路预定的电路功能。寻址编程单元时,首先确定对应的反熔丝块的行列坐标,通过内部寄存器链打开相应的反熔丝块寻址行列开关管,再确定反熔丝单元在块中的位置,打开相应的反熔丝单元寻址开关管,先后施加预编程电压和编程电压实现反熔丝的寻址编程。传统的编程电路仅能实现“编程高压-反熔丝-GND”的编程方式,对反熔丝进行单向编程。由于反熔丝单元仅可一次编程,不可二次编程,该方法容易引起反熔丝编程不彻底的现象,编程后的反熔丝呈较高阻抗,电路功耗大,难以实现电路预定功能,甚至导致器件失效。
2 改进型编程设计
为了改进传统编程方法的不足,文中提出“编程高压-反熔丝-GND”和“GND-反熔丝-编程高压”双向编程方法。在编程电路里增加正反向编程电路、编程高压驱动控制电路。如图2 所示,双向编程电路与水平、垂直方向单元选址行列开关相连,可通过其内部正反向编程电路灵活地实现“编程高压-反熔丝-GND”和“GND-反熔丝-编程高压”正反编程,编程高压驱动电路还可提供编程电压(V_H)、预编程电压(V_M)、工作电压(V_L),提高了编程供电的灵活性。
图2 新的编程电路
2.1 正反编程电路设计
编程反熔丝单元前,需要Matlab 软件配合生成向量文件,将反熔丝器件放置在反熔丝工艺专用的编程器中。首先,向专用编程器中加载“查空校验”向量文件,对所有的反熔丝单元“查空校验”,即检查反熔丝单元是否为未编程状态(是否处于超高阻态)。“查空校验”通过后,再将编程向量文件烧写至专用编程器中,进而对器件编程。反熔丝正反编程主要通过编程文件,利用寄存器电路传递编程数据,从而配置电路来进行正反编程控制。
图3所示为正反编程配置电路,其中,寻址数据1和寻址数据2 是通过寄存器寻址得到的。其中,寻址数据2是寻址数据1的下一级串行数据。当控制信号使能时,两者由串行方式改为并行输出,共同控制后级正反编程电路模块。模块1 为配置电路,控制信号A2 为正反向编程控制信号,当A2 置为低电平信号(即逻辑“0”)时,编程电路通过组合逻辑可实现“编程高压-反熔丝-GND”的编程方式;当A2置为高电平信号(即逻辑“1”)时,编程电路通过组合逻辑可实现“GND-反熔丝-编程高压”的编程方式,从而实现编程方式的变换。配置时,A1信号接“1”。由于反熔丝工艺的特殊性,需要使用约为11 V 的高压来编程反熔丝单元,所以要在正反配置电路后级添加电平转换电路来满足后级编程驱动电路的电压要求。其中,产生的C1、C2、C3、C4 为电平转换电路的两个输入信号,电平转换电路内部均为高压MOS 管,N1、N2 为高压NMOS 管,可产生编程电压为10 V 和GND 的驱动控制信号。
图3 正反编程配置电路
正反配置电路仿真如图4 所示。在实际编程过程中,驱动控制信号输出电压可达10 V。当寻址数据1(data1)为“1”,寻址数据2(data2)为“0”,控制信号A2 为“1”时,输出端驱动控制信号A 和B 输出“1”和“0”;控制信号A2 为“0”时,输出端驱动控制信号A 和B 输出“0”和“1”,便实现了正反配置电路的灵活配置,再与驱动控制电路配合,即可实现正反编程反熔丝单元。图5 为正反编程配置电路版图。
图4 正反配置电路仿真
图5 正反编程配置电路版图
2.2 驱动控制电路设计
在反熔丝单元进行编程时,在同一条布线通道上会连接很多反熔丝,如果对目标反熔丝的一端施加编程电压V_H,那么与之相连的同一条布线通道上的反熔丝的一端都会施加V_H 电压,若目标反熔丝的另一端悬空,便会导致其他不需要编程的反熔丝被误编程。为了解决这一问题,在电路中设计了预编程电路。在编程前,对所有的布线通道预充电,在所有反熔丝单元两端施加预编程电压V_M,电压大小为V_H/2。编程时,在目标反熔丝的一端接入编程高压V_H,另一端悬空,反熔丝两端压差为V_H,满足编程条件,则不需要编程的反熔丝两端电压为V_H 和V_H/2,压差为V_H/2,不满足编程条件,可有效防止反熔丝误编程。
图6 所示为编程驱动控制电路。其中,驱动控制电路包括3 个部分,分别为编程高压V_H 选通模块、工作电压V_L 选通模块和预充电电压V_M选通模块,以上3 个选通电路模块内部均为高压MOS 管,N1 为高压NMOS 管。当处于预编程状态时,通过前级组合逻辑控制配置电路的开关,对反熔丝单元两端施加预编程电压V_M(电压大小为二分之一V_H 值),从而实现布线通道上所有反熔丝的预编程。当编程反熔丝单元时,前级正反配置电路产生的驱动控制信号A 和驱动控制信号B控制编程高压V_H 模块和N1 管的打开和关闭。当N1 管关闭、驱动控制信号A 使能时,输出端OUTPUT 输出V_H 信号;当只有驱动控制信号使能时,N1 管打开,OUTPUT 输出GND 信号,由于反熔丝单元两端均连接有图6 所示的编程驱动控制电路,在此过程中,便实现了对反熔丝的正反向编程。编程结束后,V_H 和V_M 电压被屏蔽。工作电压V_L 模块使能,OUTPUT 输出V_L,并加载到反熔丝的两端,结合其他的功能电路,实现预定逻辑功能。
图6 编程驱动控制电路
图7 为编程驱动控制电路仿真图。当时间为0~1 μs 时,为预编程过程,向所有反熔丝单元施加预编程电压V_M,电压大小为5.5 V。当时间为1~2 μs时,为编程过程,在编程的反熔丝单元一端加载V_H,另一端则悬空。在时刻2 μs 之后,为编程后的工作过程,向反熔丝单元加载V_L,便实现了编程反熔丝单元。
图7 编程驱动控制电路仿真图
电路编程整体仿真图如图8 所示。对反熔丝进行寻址后,施加V_M 和V_H,实现反熔丝单元的预编程。
图8 电路编程整体仿真图
3 仿真与测试结果
通过Matlab 软件生成FPGA 向量文件,利用Hsim 对反熔丝单元正反编程进行仿真验证分析,得到编程反熔丝单元状态波形。在数字平台和模拟平台上分别仿真验证,分析同一个被编程反熔丝单元。图9 所示为整体模拟仿真。其中,编程高压为11 V;TCK 为时钟输入;TDI 为编程数据的串行输入,在TCK 上升沿移入。图9 和图10 最后两组数据是反熔丝单元两端引脚编号M2 和M3,等到TDI 编程指令到来时,开始正向编程反熔丝单元。在TDI 下一个指令到来时,再反向编程反熔丝单元。图10 所示为整体数字仿真,其结果显示,可正确实现反熔丝单元的正反编程。通过模拟与数字仿真验证,反熔丝编程单元的编程位置及正反编程方式一致。
图9 整体模拟仿真
图10 整体数字仿真
4 结束语
在反熔丝器件传统编程方式基础上,提出了一种新颖的可正反编程反熔丝单元的电路方法,该改进型电路包括正反配置电路和编程驱动控制电路。该方法通过正反向编程需要配置的编程可有效降低反熔丝单元编程后的阻抗,从电路级有效地解决了工艺生产中存在的编程失效等问题,并成功应用于反熔丝某款器件中。该方法和传统的单向编程电路相比,极大提高了编程后反熔丝单元的可靠性。