测试多端口存储器器件、以检测多端口存储器故障的装置的制作方法

文档序号:6766563阅读:320来源:国知局
专利名称:测试多端口存储器器件、以检测多端口存储器故障的装置的制作方法
技术领域
本公开一般涉及电子设计自动化。更确切地说,本公开涉及测试多端口存储器器件以发现现实故障(realistic fault)的多种方法和装置。

背景技术
随着多处理器计算系统的应用越来越广泛,多端口存储器器件也更为常见。在同步计算系统的两个或更多微处理器所执行操作的过程中,多端口存储器器件起着重要的作用。因此,在将多端口存储器器件集成到多处理器计算系统之前,对多端口存储器器件进行充分完全的测试以确定其不存在故障,是非常重要的。
然而,对多端口存储器器件进行测试存在着独特挑战,不能由用于测试单端口存储器器件的一般方法和装置来解决。更具体地说,多端口存储器器件中可能发生现实故障,例如在存储器器件的两个端口同时进行存储器访问操作时,会激活现实故障。更糟糕的是,现实故障可能属于特定存储器设计的很多可能故障模型中的一种,例如端口间故障和单元阵列故障。
端口间故障包括同时进行的存储器访问操作之间的干扰所引起的现实故障,如字线和位线之间的短路或耦合。此外,单元阵列故障可能由两个弱耦合故障组合而成(请注意,弱故障发生在对单元的操作可能会扰乱该单元的状态,而扰乱强度还不足以改变该单元的状态时)。如果两个弱故障有叠加效应,并且它们是因从存储器器件两个端口同时进行两个存储器访问操作而激活,那么两个弱故障可以改变一个公共已耦合单元的状态。此外,同时从存储器器件的不同端口激发弱故障的组合时,两个或更多弱故障的组合可能会导致强故障。
请注意,对多端口存储器器件执行一套穷举性的详尽测试是不可行的,因为这样做需要对该存储器器件的端口组之间可以执行的所有可能的相互作用进行测试,这可能导致全部测试需要数年时间才能完成。因此,测试工程师通常负责开发可以覆盖被测存储器器件的一组理想故障模型的定制测试程序,以及开发可以对存储器器件应用测试程序的定制测试设备。不幸的是,如果测试程序是硬接线到测试设备的,则在将测试设备装备有多端口存储器器件之后创建的新的测试程序就无法在存储器中采用。当最初的测试集不满足目标故障覆盖时,可能需要这些新的测试算法来执行故障诊断、故障分析、或执行生产测试。

实用新型内容一个实施例提供了一种可编程系统,包括用于测试多端口存储器器件以发现多端口存储器故障的多种方法和装置。更确切地说,本系统包含多种机制,可以配置为在同时进行两个存储器访问操作时,激活和检测影响存储器器件的任何现实故障。此外,这些机制还使得系统能够激活并检测典型的单端口故障,从而保证了多端口存储器器件的高测试质量。在测试存储器器件时,该系统能够在运行时接收特定指令序列,指令序列实现测试该存储器器件的新程序。该系统实现了测试任何多端口存储器器件的内建自测试(BIST)解决方案,并且部分地以指令序列的信息作为基础,生成针对特定存储器设计的测试。
请注意,当第一个存储器单元通过存储器器件的第一端口访问,第二存储器单元通过存储器器件的第二端口访问时,多端口存储器故障会影响到存储器器件。为检测存储器器件的多端口存储器故障,该系统部分地以实现存储器测试以发现多端口存储器故障的指令序列作为基础,生成针对存储器器件的测试操作。在一些实施例中,该装置包括扫描寄存器,该扫描寄存器可以在装置测试多端口存储器器件时,接收指令序列。在其他实施例中,该装置可以在运行时产生实现预置的测试程序的预定的指令序列。
在一些实施例中,该系统部分地以指令序列作为基础,生成测试多端口存储器器件的专用测试,该专用测试中一些测试操作通过第一端口应用到存储器器件,而其他测试操作通过第二端口应用到存储器器件。然后,该系统通过从读端口(根据测试程序的当前测试序列和测试操作,可以是多端口存储器器件的第一端口或第二端口,或者两个端口)读取值,并确定读取的值是否匹配相应的预期二进制值,确定多端口存储器器件是否发生多端口存储器故障。
在一些实施例中,该系统包括一个不规则数据控制器,在读取值因以前通过多端口存储器器件第二端口的写操作而改变,从而使得从第一端口读取的二进制值不同于预期的二进制值时,反转预期的二进制值。
在一些实施例中,该系统提供了部分地以测试程序作为基础,生成测试序列的方法。
在一些实施例中,该系统提供了配置BIST存储器测试器,以测试该存储器器件的方法和装置。

图1示出了按照一个实施例的集成电路的设计和制造过程中的不同阶段。
图2A示出了一个能够通过按照一种实施例的存储器测试系统获得好处的计算设备。
图2B示出了按照一个实施例对多端口存储器器件进行测试的存储器测试器。
图3示出了按照一个实施例的存储器测试器的示例性实现。
图4示出了按照一个实施例的序列和数据生成器的示例性实现。
图5示出了按照一个实施例的地址生成器的示例性实现。
图6示出了按照一个实施例的具有多个耦合故障的示例性存储器阵列。
图7A示出了按照一个实施例的测试操作的规则存储器读。
图7B示出了按照一个实施例的测试操作的不规则存储器读。
图7C示出了按照一个实施例的测试操作的规则存储器读。
图7D示出了按照一个实施例的测试操作的不规则存储器读。
图8给出的流程图说明了按照一个实施例生成测试程序的位流和测试台的过程。
图9给出的流程图说明了按照一个实施例测试多端口存储器器件的过程。
图10示出了按照一个实施例的辅助测试多端口存储器器件的示例性计算机系统。
表1给出了按照一个实施例的覆盖了现实故障的多个示例性测试程序。
表2给出了按照一个实施例激活现实同时耦合故障所需的多个条件。
表3给出了按照一个实施例的可以检测出相邻单元之间故障的条件精简集。
表4给出了按照一个实施例激活双重耦合故障所需的多个条件。
表5给出了按照一个实施例的与存储器测试器的测试指令相关联的多个字段。
在附图中,相同的数字引用同一个图中元素。
具体实施方式
给出下列说明是为了使本领域技术人员能实现和使用实施例,且在特定应用及其需求的上下文中提供。对所公开的实施例的各种修改对本领域技术人员将是明显的,以及此处限定的总体原则可应用于其他实施例和应用而不脱离本实用新型的精神和范围。因此,本实用新型不限于示出的实施例,而是与和这里公开的原则和特征相一致的最宽范围相一致。
在此详细说明书中描述的数据结构和代码典型地存储在计算机可读存储介质上,它可以是可存储计算机系统可用的代码和/或数据的任何设备或介质。计算机可读存储介质包括,但不限于,易失存储器、非易失存储器、磁和光存储设备如磁盘驱动器、磁带、CD(光盘)、DVD(数字多用途盘或数字视频盘),或者已知或将来开发的能存储计算机可读介质的其他介质。
在此详细描述部分中所述的方法和过程,可以以代码和/或数据形式实现,这些代码和/或数据可以存储于如上所述的计算机可读存储介质。当计算机系统读取和执行存储在计算机可读存储介质中的代码和/或数据时,计算机系统执行以数据结构和代码体现并存储在计算机可读存储介质中的方法和过程。
此外,下面描述的方法和过程可以包含在硬件模块中。例如,硬件模块可以包括,但不限于,特定应用集成电路(ASIC)芯片,现场可编程门阵列(FPGA),以及现在已知或以后开发的其他可编程逻辑器件。当硬件模块被激活时,该硬件模块执行包含在硬件模块中的方法和过程。
集成电路(IC)设计过程 图1示出了按照一种实施例的集成电路的设计和制造过程中的不同阶段。
该IC的设计过程通常开始于产品概念(操作100),其通过电子设计自动化过程(操作110)实现。一旦设计完成,通常是流片(事件140),此时它经过制造过程(操作150)和封装与组装过程(操作160),生产出成品微型芯片(结果170)。
电子设计自动化过程(操作110)包括操作112-130,以下给出的说明仅供参考,并不意味着限制本实用新型。具体来说,一个实际的集成电路设计可能需要设计者执行与所述顺序不同的设计操作。
系统设计(操作112)在这个阶段,设计者描述实现产品概念的功能。他们还可以执行假设分析(what-if)规划来完善功能,进行成本分析等。硬件-软件架构区分可以发生在这个阶段。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括Model Architect,

System Studio和Design
逻辑设计和功能验证(操作114)在这个阶段,编写系统中模块的VHDL或Verilog代码,针对功能准确性检查设计。更具体地说,检查设计以确保它产生一个正确的响应。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括

Design

MagellanTM,

ESP和
综合及用于测试的设计(操作116)在这个阶段VHDL/Verilog源代码可以翻译成网表。可针对目标技术优化网表,并可以设计并实现测试以检查所制微型芯片。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括Design

Physical

Test Compiler,Power CompilerTM,FPGA Compiler,

以及Design
网表验证(操作118)在这个阶段,针对与定时限制兼容性以及与VHDL/Verilog源代码一致性检查网表。在这个阶段可使用的Synopsys公司的示例EDA软件产品包括

Prime

以及
设计规划(操作120)在这个阶段,针对定时和顶级路由构造以及分析微型芯片的总体平面布置图。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括AstroTM和IC编译器产品。
物理实现(操作122)放置(电路元件的定位)和路由(互连的安排)发生在这个阶段。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括AstroTM和IC编译器产品。
分析和提取(操作124)在这个阶段,在晶体管级进行电路功能验证,这使得假设分析完善成为可能。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括AstroRailTM,PrimeRail,Prime

和Star-RCXTTM。
物理验证(操作126)在这个阶段,检查设计以确保生产,电气事项,光刻事项和电路的正确性。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括HerculesTM。
分辨率增强(操作128)这个阶段涉及布局的几何操作,以提高设计的生产能力。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括Proteus/Progen,ProteusAF和PSMGen。
掩膜数据准备(操作130)这一阶段提供“流片”数据用于掩膜生产,以生产出成品芯片。可在此阶段使用的Synopsys公司的示例性EDA软件产品包括

系列产品。
存储器测试系统 本实用新型的实施例提供了一种内建自测试(BIST)系统,其可测试多端口存储器器件,以检测出功能故障。BIST存储器测试器可以在存储器器件设计过程的综合和测试设计(DFT)阶段(即图1的操作116),集成到多端口存储器器件的设计中。在一些实施例中,多端口存储器器件可以是随机存取存储器(RAM)模块。在其他实施例中,多端口存储器器件可以是ASIC器件中的注册文件。
图2A示出了一种能够通过按照一种实施例的存储器测试系统获得益处的计算设备。计算设备200包括一个主板202,后者包括一个微处理器204和存储器器件210。此外,存储器器件210包括一个存储器测试器212和存储器模块214。在一些实施例中,存储器模块214是一个多端口存储器器件,存储器模块214的两个或更多端口可同时被用于访问存储器模块214的一个或多个存储器单元。在其他实施例中,存储器模块214可以是一个单端口存储器器件,这样,存储器测试器212可以通过存储器模块214的单个端口进行测试。在还有一些实施例中,存储器测试器212还可以测试单端口和多端口存储器器件的组合。在一些实施例中,存储器测试器212可接收指令序列,该指令序列实现测试存储器模块214故障的存储器测试程序。
在一些实施例中,计算设备200还包括一个可存储指令的存储设备206,当微处理器204执行这些指令时,会导致计算设备200执行配置存储器测试器212来测试存储器模块214的故障的方法。更具体地说,这些指令可以导致计算设备200提供给存储器测试器212相应的指令序列,该指令序列实现测试存储器模块214故障的存储器测试程序。存储器测试器212接收这些指令,执行这些指令来生成存储器模块214的一个或多个测试,并对存储器模块214应用这一个或多个测试。
在其他实施例中,存储设备206可存储指令,当微处理器204执行这些指令时,会导致计算设备200执行测试存储器模块214的多端口存储器故障的方法。更具体地说,这些指令可能会导致计算设备200生成存储器模块214的一个或多个测试,并对存储器模块214应用这一个或多个测试。
图2B示出了按照一种实施例对多端口存储器器件进行测试的存储器测试器。存储器测试器220包括一个指令输入222和多个控制输入224,并生成测试结果226,该测试结果指定在存储器模块214中是否检测出故障。此外,存储器模块240包括存储器端口242-244,其可以对存储器模块240的一个或多个存储器单元同时进行访问。
在一些实施例中,测试结果226包括“静态失败”信号,只要检测到故障,它就显示高,这样,“静态失败”信号会保持高,直到检测到故障的测试完成。在一些实施例中,测试结果226包括“动态失败”信号,它表明在每一个测试序列周期中的当前测试结果。请注意,可以对“动态失败”引脚进行监测,以确定检测到故障的确切测试周期。这可以帮助测试工程师确定激活故障的测试序列,导致故障被发现的当前测试序列中的存储器地址,以及计算给定测试序列检测到的故障事件的数目。
在操作过程中,存储器测试器220通过指令输入222接收多个指令,当存储器测试器220执行这些指令时,导致存储器测试器220产生一个或多个存储器模块240测试,并导致存储器测试器220在存储器模块240存储器端口242-244上应用这一个或多个测试。在一些实施例中,存储器测试器220利用控制信号230、地址信号231和双向数据信号232,通过存储器端口242对存储器模块240进行存储器访问操作。同样,存储器测试器220利用控制信号234、地址信号235和双向数据信号236,通过存储器端口244对存储器模块240进行存储器访问操作。在其他一些实施例中,存储器测试器220通过存储器端口244,或同时通过两个存储器端口242和244,来访问存储器模块240。
在一些实施例中,存储器测试器220对存储器模块240实施多个测试,以确定存储器模块240中是否出现多端口存储器故障(例如,一个并发耦合故障,或一个复杂的耦合故障)。在一些实施例中,存储器测试器220对共享存储器模块240的行和/或列地址的耦合单元和已耦合单元同时执行一个读和/或写操作,然后对已耦合单元执行读操作,以确定是否在已耦合单元上发生耦合故障。在其他实施例中,存储器测试器220还对物理毗邻已耦合单元的单元进行读操作,以确定已耦合单元和毗邻单元之间是否发生了耦合故障。
在其他实施例中,存储器测试器220在存储器模块240的两个耦合单元之间执行一个读和/或写操作,然后,对与两个耦合单元共享行和/或列地址的已耦合单元执行一个读操作,以确定是否在已耦合单元上发生耦合故障。在其他实施例中,存储器测试器220还对毗邻已耦合单元的单元进行读操作,以确定已耦合单元的故障是否引起毗邻单元的故障。
在一些实施例中,存储器测试器220管理给定测试序列的测试数据中异常。这使存储器测试器220能够实现先进的测试解决方案,这些测试解决方案能检测出所有现有的现实多端口故障(例如,两个或更多弱故障组合形成的现实故障)。
图3示出了按照一种实施例的存储器测试器的示例性实现。存储器测试器300包括扫描寄存器302、预置测试程序生成器304、指令寄存器308、有限状态机(FSM)控制器310、序列和数据生成器312、预置数据生成器314、地址生成器318、不规则数据控制器320和响应验证模块322-324。
在操作过程中,扫描寄存器302通过指令输入330接收指令序列,接收的指令序列实现测试多端口存储器器件故障的测试程序。在一些实施例中,指令输入330可以是一个串行接口,包括一个时钟信号和一个串行数据信号。在其他实施例中,指令输入330可以是并行接口,包括多个数据信号。
在一些实施例中,存储器测试器300可以通过配置预置测试程序生成器304在运行时产生实现预定测试程序的指令序列利用预定的测试程序。例如,预置测试程序生成器304可配置为生成实现典型存储器测试程序,和/或实现给定存储器器件的一个测试程序的早期版本的测试。
在一些实施例中,指令寄存器308从扫描寄存器302或预置测试程序生成器304接收指令序列。在操作过程中,存储器测试器300可以配置复用器306,把从扫描寄存器302或预置测试程序生成器304得到的指令提供给指令寄存器308。例如,可以配置复用器306,在对存储器器件应用默认的存储器测试时,把从预置测试程序生成器304得到的指令序列提供给指令寄存器308。然后,一旦为给定存储器器件创建新的测试程序后,扫描寄存器302可配置为接收实现新测试程序的指令序列。
在一些实施例中,在存储器测试器300对多端口存储器器件进行测试时,扫描寄存器302可以接收指令序列。这对于确保测试序列之间测试程序不中断,这使得序列间的高速测试成为可能,并缩短整体测试时间非常重要。此外,通过从外部存储器件接收指令并且同时将测试应用于该存储器器件300,存储器器件300可以执行任何复杂的测试方法(例如,测试长度),而不受限于指令寄存器308的容量。
在一些实施例中,序列和数据生成器312生成控制信号334-336,并生成数据信号338-340。控制信号334-336控制多端口存储器器件的访问端口上进行的存储器访问操作。例如,控制信号334可以激活多端口存储器器件的第一端口的存储器访问操作,并可以指定该存储器访问操作是读操作还是写操作。同样地,控制信号336可以激活多端口存储器器件的第二端口的存储器访问操作,并可以指定该存储器访问操作是读操作还是写操作。
在一些实施例中,数据信号338可以为多端口存储器器件第一端口指定一个与写操作有关的信号值。同样,数据信号340可以为多端口存储器器件第二端口指定一个与写操作有关的信号值。
在其他实施例中,数据信号338可以为多端口存储器器件第一端口指定一个与读操作有关的预期数据值。同样,数据信号340可以为多端口存储器器件第二端口指定一个与读操作有关的预期数据值。
在一些实施例中,预置数据生成器314为数据信号342生成预定数据值,对应于多端口存储器器件第一端口的写操作。此外,预置数据生成器314为数据信号344生成预定数据值,对应于多端口存储器器件第二端口的写操作。请注意,在数据信号342-344中的数据值可以对应于预置测试程序生成器304所生成的测试指令。
在一些实施例中,预置数据生成器314可以扩展压缩数据(从指令寄存器308接收),以适应数据信号346-348和358-360的给定存储器数据宽度。例如,压缩数据可以使用3位(如001)编码。因此,如果存储器数据宽度大小为8,在不对目前的测试操作进行数据反转时,预置数据生成器314可以对存储器器件应用数据背景图案00100100。否则,如果对目前的测试操作进行数据反转,预置数据生成器314可以对存储器器件应用数据背景图案11011011。
在其他一些实施例中,预置数据生成器314将部分地以地址信号350-352作为基础,生成数据信号342-344。例如,预置数据生成器314可以包括一个缓存,存储多个基本数据背景图案字(例如,8个数据背景图案字)。此外,预置数据生成器314可以利用地址信号的最低有效位(例如,地址信号350的信号A0,A1和A2),选择一个缓存条目,从而产生了每8个存储器位置重复的8个存储器字的数据背景图案。
在一些实施例中,数据输出346-348从序列和数据生成器312,或从预置数据生成器314接收写操作的数据值。在操作过程中,存储器测试器300可以配置复用器316,将来自数据信号338或数据信号342的数据值提供给数据输出346。同样,存储器测试器300可配置复用器316,把来自数据信号340或数据信号344的数据值提供给数据输出348。
在一些实施例中,存储器测试器300可以配置地址生成器318,把一个存储器地址提供给地址信号350,前述存储器地址与多端口存储器器件的第一端口上进行的存储器访问操作有关。此外,存储器测试器300可以配置地址生成器318,把一个存储器地址提供给地址信号352,前述存储器地址与多端口存储器器件的第二端口上进行的存储器访问操作有关。请注意,地址生成器318还可以配置为生成一个测试程序的存储器地址序列,该程序向下扫描存储器器件的一列存储器单元,并且可以配置为生成一个测试程序的存储器地址序列,该程序扫描跨越一行存储器单元。
请注意,在某些测试程序中,多端口存储器器件第二端口上的存储器访问操作可以与一个存储器单元相关联,该存储器单元比多端口存储器器件第一端口上的存储器访问操作领先或落后一行。此外,多端口存储器器件第二端口上的存储器访问操作可以与一个存储器单元相关联,该存储器单元比多端口存储器器件第一端口上的存储器访问操作领先或落后一列。因此,当测试程序对多端口存储器器件进行的测试跨越一个完整的行(或向下到一列),其中读操作所针对的存储器单元比同步进行的写操作提前一行(或列)时,最后读操作的预期数据值可以与该测试程序的任何其他读操作的预期数据值是不同的。
这种情况被称为“不规则数据图案”,存储器测试器300可以在执行扫描跨越多端口存储器器件一个完整行(或向下到一列)的测试程序的最后读操作时,反转预期数据值,来解决这种不规则的数据图案。在一些实施例中,不规则数据控制器320可自行决定何时需要反转预期数据值,以解决不规则数据图案。当不规则数据控制器320确定需要对多端口存储器器件第一端口的读操作进行预期数据值的反转时,不规则数据控制器320生成IR信号354的反转信号值。此外,当不规则数据控制器320确定需要对多端口存储器器件第二端口的读操作进行预期数据值的反转时,不规则数据控制器320生成IR信号356的反转信号值。在一些实施例中,反转信号值可以是一个逻辑1值。在其他实施例中,反转信号值可以是一个逻辑0值。
在一些实施例中,测试结果362-364包括“静态失败”信号,只要检测到故障,它就显示高,这样,“静态失败”信号会保持高,直到检测到故障的测试完成。在其他实施例中,测试结果362-364包括“动态失败”信号,它表明在测试序列给定周期中的当前测试结果。请注意,可以对“动态失败”引脚进行监测,以确定检测到故障的确切测试周期。这可以帮助测试工程师确定激活给定故障的测试序列,导致故障被发现的当前测试序列中的存储器地址,以及计算给定测试序列检测到的故障的数目。
在一些实施例中,响应验证模块322判断与第一端口上读操作相关联的数据值是否匹配该读操作的预期数据值。为此,响应验证模块322比较通过数据输入358接收的数据值和通过数据信号338接收到的预期数据值。如果两个数据值不匹配,那么响应验证模块322针对测试结果362生成一个错误信号值,指明在第一端口读操作所访问的存储器单元中检测到故障。否则,如果两个数据值匹配,那么访问的存储器单元被确定为无故障,响应验证模块322不会为测试结果362生成错误信号值。在一些实施例中,该错误信号的值是逻辑1值。在其他实施例中,该错误信号的值是逻辑0值。
在一些实施例中,响应验证模块322可以通过IR信号354收到一个反转信号值,通知响应验证模块322,通过数据输入358接收到的数据值与不规则的数据图案相关。因此,当反应验证模块322通过IR信号354接收该反转信号值时,响应验证模块322反转通过数据信号338接收的预期数据值,并比较反转的预期数据值和通过数据输入358接收的数据值,以确定两个数据值是否匹配。如果两个数据值不匹配,那么响应验证模块322针对测试结果362生成一个错误信号值,指明在读操作所访问的存储器单元中检测到故障。否则,如果两个数据值匹配,那么访问的存储器单元被确定为无故障,以及响应验证模块322不会为测试结果362生成错误信号值。
在一些实施例中,响应验证模块324可以确定与第二端口上读操作相关联的数据值是否匹配该读操作的预期数据值。为此,响应验证模块322比较通过数据输入360接收的数据值和通过数据信号340接收到的预期数据值。如果两个数据值不匹配,那么响应验证模块324针对测试结果364生成一个错误信号值,指明在第二端口读操作所访问的存储器单元中检测到故障。否则,如果两个数据值匹配,那么访问的存储器单元被确定为无故障,响应验证模块324不会为测试结果364生成错误信号值。
在一些实施例中,响应验证模块324可以通过IR信号356收到一个反转信号值,通知响应验证模块324,通过数据输入360接收到的数据值与不规则的数据图案相关。因此,当反应验证模块324通过IR信号356接收该反转信号值时,响应验证模块324反转通过数据信号340接收的预期数据值,并比较反转的预期数据值和通过数据输入360接收的数据值,以确定两个数据值是否匹配。如果两个数据值不匹配,那么响应验证模块324针对测试结果364生成一个错误信号值,指明在读操作所访问的存储器单元中检测到故障。否则,如果两个数据值匹配,那么访问的存储器单元被确定为无故障,响应验证模块324不会为测试结果364生成错误信号值。
图4示出了按照一种实施例的序列和数据生成器的示例性实现。在一些实施例中,序列和数据生成器400可以包括一个运算计数器402、复用器404-406、数据生成器408-410和一个数据背景控制器(DBC)412。在一些实施例中,序列和数据生成器400可以为控制信号430生成一个值,其控制多端口存储器器件第一端口上的存储器访问操作。此外,序列和数据生成器400可以为控制信号432生成一个值,其控制多端口存储器器件第二端口上的存储器访问操作。
在一些实施例中,序列和数据生成器400可以为数据信号434生成一个值,它可以是与多端口存储器器件第一端口上的读操作相关联的预期数据值,或者与多端口存储器器件第一端口上的写操作相关联的数据值。此外,序列和数据生成器400可以为数据信号436生成一个值,它可以是与多端口存储器器件第二端口上的读操作相关联的预期数据值,或者与多端口存储器器件第二端口上的写操作相关联的数据值。
在一些实施例中,存储器器件的指令寄存器至少包括一组字段,所述字段包括存储器测试序列的测试操作,这样,这些字段的数量决定了测试序列操作的最大数量。在一些实施例中,运算计数器402在指令寄存器的不同测试操作字段间成功地迭代,对存储器器件进行测试操作。例如,运算计数器402可以是一个向下计数器,这样,当到达存储器地址00..00,运算计数器402断言控制信号430,通知存储器器件的状态机控制器在当前存储器地址测试序列已完成。这会导致存储器器件地址生成器循环到下一存储器地址(如,在向上寻址存储器方案中,循环向上到下一个存储器地址,或者在向下寻址方案中,循环向下到前一个存储器地址),此时再重复存储器测试序列。
在一些实施例中,复用器404可以部分地以运算计数器402提供的指令寄存器地址作为基础,从指令阵列420(即,指令寄存器)中选择指令信号426的值。同样地,复用器406可以部分地以指令寄存器地址作为基础,从指令阵列420中选择指令信号428的值。请注意,控制信号430可以从指令信号426中提取,控制信号432可从指令信号428中提取。
在一些实施例中,数据生成器408可以部分地以指令信号426作为基础,产生数据信号438的数据值。同样,数据生成器410可以部分地以指令信号428作为基础,产生数据信号440的数据值。请注意,数据信号438-440可对应多端口存储器器件上读操作的预期数据值,也可对应多端口存储器器件上写操作的数据值。
在一些实施例中,DBC 412可能会导致序列和数据生成器400执行多端口存储器器件的写操作序列,将重复数据图案(也称为“背景图案”)跨越存储器器件的区段来存储。背景图案的性质由测试指令指定,并跨越与测试指令相关联的测试序列保持不变。在一些实施例中,DBC 412也能使序列和数据生成器400在产生存储器器件读操作的预期数据值时,考虑测试序列的背景图案,这样,预期数据值考虑了存储器器件上存储的数据图案的变化。在操作过程中,DBC 412可以接受第一端口的列地址446和行地址448,并可以接受第二端口的列地址450和行地址452。此外,DBC 412可以从复用器414接受行背景反转(RBI)信号444,以及可以接受列背景反转(CBI)信号442。
在第一个例子中,当CBI信号442被置位(例如,有一个逻辑1值),CBI信号444未被置位(例如,有一个逻辑0值),在执行跨越存储器器件交替列的存储器访问操作时,DBC 412可以将反转(INV)信号454设置为逻辑1值。这样,在第一端口的访问操作对应存储器器件的交替列时,DBC 412可配置逻辑反转器416反转数据信号438。此外,在执行跨越存储器器件相同交替列的存储器访问操作时,DBC 412可以将INV信号456设置为逻辑1值。这样,在第二端口的访问操作对应第一端口上被反转的相同交替列时,DBC412可配置逻辑反转器417,反转数据信号440。这种配置实现了列带(column-strip)背景场景,使得存储器器件给定列的两个存储器单元存储匹配数据值,而相邻列的两个存储器单元存储反转的数据值。
在第二个例子中,当CBI信号442未被置位(例如,有一个逻辑0值),CBI信号444被置位(例如,有一个逻辑1值),在存储器器件交替行下执行存储器访问操作时,DBC 412可以将INV信号454设置为逻辑0值。这样,在第一端口的访问操作对应存储器器件的交替行时,DBC 412可配置逻辑反转器416,反转数据信号438。此外,在存储器器件相同交替行下执行存储器访问操作时,DBC412可以将INV信号456设置为逻辑1值。这样,在第二端口的访问操作对应第一端口上反转的相同交替行时,DBC 412可配置逻辑反转器417,反转数据信号440。这种配置实现了行带(row-strip)背景场景,使得存储器器件给定行的两个存储器单元存储匹配数据值,而相邻行的两个存储器单元存储反转的数据值。
在第三例子中,当CBI信号442和RBI信号444都被置位(例如,有一个逻辑1值),在存储器器件交替行下或者跨越存储器器件交替列执行存储器访问操作时,DBC 412可以将INV信号454设置为逻辑1值。这样,在第一端口的访问操作对应存储器器件交替行或交替列时,DBC 412可配置逻辑反转器416,反转数据信号438。此外,在存储器器件交替行下或者跨越存储器器件交替列执行存储器访问操作时,DBC 412可以将INV信号456设置为逻辑1值。这样,在第二端口的访问操作对应第一端口上反转的相同交替行或相同交替列时,DBC 412可配置逻辑反转器417,反转数据信号440。这种配置实现了棋盘背景场景,使得跨越存储器器件给定行或列的任意两个相邻存储器单元存储反转的数据值。在一些实施例中,多端口存储器器件端口i的INV信号由以下布尔方程式计算INVi=CBI and C0i xor RBI and R0i,其中C0i和R0i分别是端口i的列和行地址的最低有效位(LSB)。
在一些实施例中,序列和数据生成器400可考虑不规则的数据图案。在操作过程中,序列和数据生成器400以IR信号422为输入,当IR信号422为逻辑1值时,可配置逻辑反转器418反转逻辑反转器416的输出。此外,序列和数据生成器400以IR信号424为输入,当IR信号424为逻辑1值时,可配置逻辑反转器419反转逻辑反转器417的输出。逻辑反转器418和逻辑反转器419的输出分别传送给数据信号434和数据信号436。
图5示出了按照一种实施例的地址生成器的示例性实现。地址生成器500可以生成对应于多端口存储器器件第一端口的存储器访问操作的地址538,并且可以生成对应于多端口存储器器件第二端口的存储器访问操作的地址540。在一些实施例中,地址生成器500可包括行地址寄存器502、列地址寄存器504和加法器510-512。
在操作过程中,行地址寄存器502存储存储器器件第一端口上存储器访问操作的行地址值(RA)542,列地址寄存器504存储存储器器件第一端口上存储器访问操作的列地址值(CA)544。此外,地址编码器506根据行地址寄存器502和列地址寄存器504的输出,生成地址538。在一些实施例中,地址编码器506可以将RA 542乘以存储器器件的列数,再加上CA 544(即以行为主的顺序),来生成地址538。在其他的实施例中,地址编码器506可以将CA 544乘以存储器器件的行数,再加上RA 542(即以列为主的顺序),生成地址538。
在一些实施例中,行地址寄存器502和列地址寄存器504采用向上/向下二进制计数器来实现。当使能信号524被激活时,行地址寄存器502通过存储该地址值(地址526中),可以更新寄存器值。此外,当增量(INCR)信号520被激活时,行地址寄存器502增量RA 542,而当减量(DECR)信号522被激活时,行地址寄存器502减量RA 542。同样,当使能信号528被激活时,列地址寄存器504通过存储该地址值(地址526中),可以更新寄存器值。此外,当INCR信号530被激活时,列地址寄存器504增量CA 544,而当DECR信号532被激活时,列地址寄存器504减量CA 544。
在一些实施例中,加法器510可以通过在RA 542上加入行偏移534,为存储器器件第二端口上的存储器访问操作产生行地址值(RA)546。同样,加法器512可以通过在CA 544上加入列偏移536,为存储器器件第二端口上的存储器访问操作产生列地址值(CA)548。此外,地址编码器508可以基于加法器510-512的输出产生地址540。在一些实施例中,地址编码器508可以通过将RA 546乘以存储器器件的列数,再加上CA 548(即以行为主的顺序),生成地址540。在其他的实施例中,地址编码器508可以通过将CA 548乘以存储器器件的行数,再加上RA 546(即以列为主的顺序),生成地址540。
目标故障模型和支持的测试程序 一种有效的多端口存储器器件测试解决方案,考虑了特定两端口(DP-RAM)故障模型,以及考虑了仅在一个存储器端口上进行存储器访问操作时可以影响到存储器器件的单端口(SP-RAM)故障模型。此外,测试解决方案还测试所有可能的并发存储器访问模式。例如,在测试读写(RW)端口时,测试解决方案在RW端口上进行读存储器访问和写存储器访问。此外,测试解决方案还考虑了多端口存储器器件存储器端口操作的完整组合。例如,在测试有一个RW端口和一个只读(RO)端口的两端口存储器器件时,测试解决方案通过在RO端口以读模式被访问的同时,将RW端口置于读和写模式,来测试存储器器件。
在一些实施例中,测试解决方案的程序可以用跨步测试(marchtest)注释表示。跨步测试由花括号定界(即′{′和′}′),包括由分号分隔的跨步元素序列。此外,跨步元素包含表示寻址顺序的符号,之后是操作序列,由逗号分隔,括号定界。一个操作可以是一个预期值为0或1的读操作(即分别为r0,r1),或者一个值为0或1的写操作(即分别为w0,w1)。
寻址顺序的符号可以是向上箭头、向下箭头或上下箭头。向上箭头

表示向上寻址的顺序,对应于线性增加存储器地址。向下箭头

表示向下寻址的顺序,对应于线性下降存储器地址。上下箭头

说明可以使用向上寻址顺序或向下寻址顺序。跨步测试的巴科斯范式(BNF)语法规则如下 <跨步测试>::=“{”<跨步元素>{“;”<跨步元素>}“}” <跨步元素>::=<寻址顺序>“(”<操作>{“,”<操作>}“)”
<操作>::=r0|r1|w0|w1 在一些实施例中,测试解决方案可以通过考虑以下故障模型,提供测试质量 -可以通过跨步测试覆盖的SP-RAM功能故障模型。这些故障对应于存储器器件单端口上的一个存储器访问操作,并且可以包括单一单元故障模型,如固定故障(SAF)、过渡故障(TF)、固定开路(SO)故障、维持故障(RF)和读干扰故障(RDF)。此外,这些故障可以包括影响两个相邻单元的耦合故障(CF),其中包括幂等耦合故障(CFid)、反转耦合故障、状态耦合故障和干扰耦合故障(CFD)。
-具体DP-RAM故障模型。传统的SP-RAM测试无法检测到这些故障,因为它们需要在存储器器件的两个存储器端口上同时进行存储器访问操作。这些错误可以包括DP-RAM端口间故障和单元阵列故障。
图6示出了按照一种实施例的具有多个耦合故障的示例性存储器阵列。存储器阵列600可以包括多个位线(例如,BL 610-618),并且可以包括多个字线(例如,WL 620-625)。为说明起见,存储器阵列600还包括耦合故障630-638,代表了可发生在存储器器件上的各种可能的故障类型。此外,在多端口存储器器件的两个端口被同时访问时,耦合故障630-638可以导致存储器阵列600的存储器单元经历值的变化。
请注意,DP-RAM端口间故障包括对应于多端口存储器器件两个端口上存储器访问操作之间干扰的故障(如,存储器阵列的字线和位线之间短路和耦合)。例如,DP-RAM可能会遇到相邻行字线之间的短路(例如,耦合WL 623到WL 624的故障632),或者可能遇到单行的字线之间的短路(例如,耦合WL 620到WL 621的故障630)。此外,DP-RAM可能遇到相邻列位线之间的短路(例如,耦合BL 618到BL 614的故障636),或者可能会遇到单列的字线之间的短路(例如,耦合614-617中两根或更多根字线的故障634)。DP-RAM也可能遇到给定存储器单元字线和位线之间的短路(例如,耦合WL 622到BL 615的故障638)。
请注意,在产生检测存储器器件故障632(即相邻行字线之间的短路)的测试序列时,需要对存储器器件加以分析,以确定故障632会如何影响到它。通过端口1对存储器单元Ci+1,j+1的访问激活了WL624。然而,故障632可能会导致通过端口2访问的字线(即WL 623)也被激活,从而允许对单元Ci,j+1的访问。因此,对列j+1上任何一个单元的并行的写操作(例如,在端口2上对单元Ci-1,j+1的写操作),可能导致单元Ci,j+1上的写操作。同样,从端口2对单元Ci-1,j+1的读操作也可能造成对单元Ci,j+1的读操作。
在一些实施例中,故障632可以通过在多端口存储器器件两个端口上同时执行存储器访问操作来检测。例如,通过端口1对存储器阵列600的存储器单元Ci+1,j+1进行存储器访问操作也可以激活端口2的单元Ci,j+1的WL 623。因此,如果单元Ci,j+1保持有一个初始值v,则通过端口2在j+1列单元上写入v的写操作也将v写入单元Ci,j+1。为了检测故障632,对单元Ci,j+1进行读操作,以确定读取值(v)不匹配预期值(v)。请注意,SP-RAM测试不能检测故障632,因为它不在多端口存储器器件两个端口上同时执行访问操作。
在有些实施例中,单元阵列故障包括复杂的(双重)耦合故障(CF)和并发耦合故障。当两个弱耦合故障的影响综合在一起时,双重耦合故障(CFdx)会影响存储器器件。请注意,当耦合单元上的操作可能会扰动已耦合单元状态,但由耦合故障引起的扰动没有强大到足以修改已耦合单元的状态时,弱耦合可以影响存储器器件。因此,如果两个弱耦合故障影响特定已耦合单元,并且这两个弱耦合故障通过存储器器件的两个端口被同时激活,则由单个耦合故障造成的综合扰动能改变已耦合单元的状态。此外,对耦合单元(Cj)同时进行存储器访问操作影响已耦合单元(Ci)上存储器访问操作的结果时,并发耦合故障(CFcr)可以影响存储器器件。请注意,为了发现多端口存储器器件上的并发耦合故障,需要通过多端口存储器器件的两个端口同时进行两次存储器访问操作。
请注意,多端口存储器器件的故障模型可分为三组(一)故障涉及单个单元,这样,攻击单元与受害单元是同一个(例如,弱RDF的组合);(二)故障涉及两个单元(例如,组合了一个弱TF和一个弱RDF形成的弱CFid或弱CFd)和(三)故障涉及三个单元,这样,两个不同的攻击单元影响了一个给定的受害单元(例如,多个弱CFd的组合,或一个弱CFid和一个弱CFd的组合)。
请注意,支持所有DP-RAM测试程序的详尽完备的测试策略是不现实的测试解决方案,因为它会导致BIST解决方案具有大面积开销和很长执行时间。更具体地说,涵盖DP-RAM故障的一个典型的功能测试并没有考虑到在多端口存储器器件单元阵列内耦合的这些单元的位置。因此,一个典型的功能测试可能考虑存储器器件中n个单元集合中两个单元的所有组合,从而导致昂贵的测试复杂度(即测试复杂度为O(n2))。为尽量减少测试程序的不必要的复杂性,应仔细挑选BIST存储器测试器所支持的测试操作集。
在一些实施例中,测试程序执行拓扑测试策略,它利用了存储器器件的物理结构,以降低存储器器件测试序列的复杂性。例如,当在存储器器件上同步执行两个存储器访问操作时,两个存储器访问操作可以限制在存储器器件的相邻单元。这种拓扑测试策略可以将测试的复杂性降低为线性复杂度(即复杂度为O(n)),因为测试程序所针对的相互作用在存储器器件的相邻单元之间。此外,请注意拓扑测试策略并没有显著降低故障覆盖率的质量,因为通过测试程序没有执行的同时存储器访问操作检测到独特的多端口存储器故障的概率很低(即,无法通过拓扑测试策略发现的多端口存储器故障)。
请注意,拓扑测试策略的实现需要存储器器件物理结构的相关信息(例如,存储器器件的行/列数),这些信息可能随存储器器件的不同而不同。
现实故障模型 在有些实施例中,测试程序主要考虑现实故障模型,它考虑那些已被证实在现实生活的设计中(而不是理论的故障模型)发生的故障。在例如电磁干扰的情况下,一个现实的故障模型考虑共享存储器器件一行或一列的相邻存储器单元。下面几段采用类似跨步测试注释的DP-RAM测试注释,介绍现实故障模式的测试程序。
请注意,DP-RAM测试注释与跨步测试注释有两处不同(一)每个端口可以有一个独立的寻址顺序(例如,向上寻址或向下寻址,对应于x(快x)或y(快y)的方向),及(二)存储器访问操作可以使用两个索引(i,j),以表示相对参考行地址和参考列地址的偏移。
只有在必须支持功能故障模型时,才需要这种完全的灵活性。当针对现实故障时,测试注释可以根据现实故障的多个特性简化。例如,端口2地址与端口1地址具有相同的寻址顺序(即,向上寻址或向下寻址),并与端口1地址有相同的方向(即沿x,y或z轴)。此外,端口偏移仅限于集合{0,1}。基于这些简化,DP-RAM测试的巴科斯范式(BNF)语法规则如下 <DP-RAM测试>::=“{“<测试元素>{“;”<测试元素>}“}”<测试元素>::=<plad>[<plm>]“:”<端口偏移><反转规则>] “(”<存储器操作>{“,”<存储器操作>}“)”
<plm>::=x|y <端口偏移>::=“[”<p2co>“,”<p2ro>“]” <p2co>::=0|1 <p2ro>::=0|1 <存储器操作>::=<端口1操作>“:”<端口2操作> <端口1操作>::=r0|r1|r?|rx|w0|w1|N <端口2操作>::=r0|r1|r?|rx|w0|w1|N <反转规则>::=“<”<cib>“,”<rib>“>” <cib>::=0|1 <rib>::=0|1 DP-RAM测试可以包括一个或多个测试元素的序列。请注意,plad指定多端口存储器器件端口1的寻址顺序,plm可选地指定其模式(x对应于快x和y对应快Y)。此外,测试元素指定,对于存储器器件端口2,与存储器器件端口1的端口地址偏移。也就是说,测试元素p2co指定了与端口1列地址的列偏移,p2ro指定了与端口1行地址的行偏移。
请注意,存储器操作包括存储器器件每个端口上的操作,这两个端口操作由冒号分隔。存储器操作的两个端口操作同时进行。
在一些实施例中,端口操作可以是读操作(r),写操作(w),或空操作(N)。端口操作可以是一个预期值为0或1的读操作(即分别为r0,r1),或者一个值为0或1的写操作(即分别为w0,w1)。此外,读操作还可以包括一读预期(r?),和读无所谓(rx)。在一些实施例中,读预期操作用来管理具有非平凡预期读取值的测试程序的复杂性。指定了读取预期操作之后,本实用新型实施例可以计算出读预期操作的预期数据值。通过同时执行读操作(或同时进行读写操作),rx操作可以用来激活一些并发的CF,前述操作并不需要具体的预期读取值。
测试元素还可以包含一个反转规则<cib,rib>,其中cib和rib可以是逻辑1值或逻辑0值。请注意,cib(rib)的逻辑1值说明存储器访问操作的读或写的值需要针对存储器器件的交替列(行)反转。因此,反转规则<1,0>说明测试程序使用列带背景,反转规则<0,1>说明测试程序使用行带背景。此外,反转规则<1,1>说明测试程序使用棋盘背景,而反转规则<0,0>说明测试程序不使用反转背景。请注意,反转规则对测试元素是可选的。因此,当测试元素没有指定反转规则时,cib和rib的值被假定为逻辑0。
表1给出了按照一种实施例的现实故障的多个示例性测试程序。行2和3代表现实单元阵列故障的测试程序,行4和5代表现实端口间故障的测试程序。

表1 现实并发和复杂CF及其测试程序 可以通过如下确定一组现实故障模型(即存储器器件上发生概率很高的故障模型)对有缺陷存储器器件的代表样本进行系统分析,或采用一种推导故障分析(IFA)技术,该技术对存储器器件布局的所有故障进行识别和特征定义,并进行电子模拟,以汇编一组故障模型,这组模型是现实故障模型(即,发生概率比预定值大)。然而,这种确定现实故障模型的方法依赖于分析样品集(例如,样本集的大小,其设计和制造技术)。此外,这种方法也依赖于注入点缺陷的规模和分布,及其相应的电气建模。
在一些实施例中,通过将故障模型集合限制在给定存储器设计和/或制造过程中实际会发生的那些故障模型,确定多端口存储器器件的现实故障模型集合。这种故障分析可以通过在高的抽象层次分析故障模型来完成,如下所述。
在一些实施例中,多端口存储器器件的测试程序考虑了与通过存储器器件两个端口同时进行的存储器访问相关联的扰动。
请注意,这些扰动中的每一个都可以由存储器器件中的某个缺陷造成。虽然可能,双缺陷情况发生的概率非常低,并且通常针对可靠性要求很高的应用才考虑。因此,在一些实施例中,系统考虑与RAM两个端口上同时进行的操作有关的扰动,这样,一个缺陷最多引发一个扰动(即第二个扰动与存储器器件的正确操作相关联)。多端口存储器器件的测试程序可以通过分析存储器器件设计,确定可导致存储器单元最差电气行为的存储器测试操作的集合来产生。然后,可以组合激活单个缺陷的这些存储器测试操作,以生成检测现实并发和双重CF的测试。
在一些实施例中,测试程序不考虑存储器器件可能会出现两个故障的可能性,因为电路上同时出现两个缺陷的可能性很低。在其他实施例中,通过生成考虑存储器器件可以发生两个或更多故障(由两个或更多缺陷所致)的可能性的测试程序,可以生成具有高可靠性期望的存储器器件的测试程序。
在一些实施例中,并发CF影响两个单元已耦合单元Ci,和耦合单元Cj。因此,为了激活并发CF,在存储器器件第一端口上进行存储器访问操作以访问已耦合单元,以及在第二端口同时进行第二存储器访问操作以访问耦合单元。此外,为检测并发CF,两种类型的缺陷都必须加以考虑。
在第一缺陷类型中,该缺陷只影响已耦合单元,或影响到已耦合单元的读/写放大器。在某些情况下,当已耦合单元和耦合单元被同一个字线选中时,可能会出现一种严重的电气情况,其导致已耦合单元的电容增加一倍。这可能会导致第二端口上的读和写操作对已耦合单元有相同的效果(即存储器访问操作将已耦合单元连接到第二端口预充电位线。另一方面,需要针对读和写操作执行第一端口上的存储器访问操作,因为两个存储器访问操作可以激发独特的故障(例如,影响读放大器或写放大器的缺陷引发的故障)。此外,需针对逻辑0和逻辑1值来在第一端口上执行读和写存储器访问操作,以检查出进一步缺陷变化(例如,某个缺陷可以使存储器单元或放大器不对称,从而影响存储器单元的逻辑0值或逻辑1值)。
对于写操作,当写操作改变了存储器单元的状态(即状态从逻辑0转换为逻辑1值,或从逻辑1转换成逻辑0)时,会出现一种严重的电气情况。在这种转换过程中,该单元的前一状态涉及可以抵抗状态转换的电流。此外,该缺陷可以不对称,例如,它可以只影响到与存储器器件的第一端口或第二端口相关的路径。因此,为检测存储器器件中由存储器单元状态转换引起的故障,通过多端口存储器器件的两个端口进行存储器访问操作,以激活该故障。
表2给出了按照一种实施例激活现实并发耦合故障所需的多个条件。请注意,Op2可以对应于任何可能的存储器访问操作。激活现实并发耦合故障的条件在列1和2中给出,列3和4中给出了可激活现实并发耦合故障的存储器访问操作第一精简集。此外,列5和6给出了激活现实并发耦合故障的存储器访问操作的可选集合。
下面给出能满足来自存储器访问操作的第一或第二精简集的4个条件的现实并发跨步(RCM1)测试程序
在第二缺陷类型中,缺陷可以创建已耦合单元和邻近单元(即耦合单元)之间的相互作用。已耦合单元和耦合单元之间的相互作用可以是静态或动态的。在静态相互作用中,耦合单元在某个特定状态下会影响已耦合单元(例如,桥接故障),在这种情况下,它不涉及并发CF。在动态相互作用中,耦合单元上的存储器访问操作能够影响已耦合单元(例如,单元之间的电容耦合)。请注意,如果已耦合单元和耦合单元属于连续列上同一行或同一列上的连续行(也就是说,它们是相邻单元),则这两个单元能够相互作用。此外,在耦合单元的操作改变了该耦合单元的状态时(即耦合单元的存储值经历了状态转换),电容耦合可以影响存储器器件。
在一些实施例中,已耦合单元上的存储器访问操作可以是读或写操作。此外,一些读操作针对预期逻辑0值执行,而另一些读操作针对预期逻辑1值执行。与写操作相关联的严重电气情况对应于改变了存储器单元状态的写操作。

表2 表3给出了按照一种实施例,可以检测出相邻单元之间故障的条件精简集。请注意,存储器访问操作针对属于连续列上同一行或同一列上的连续行(也就是说,它们是相邻单元)的两个单元执行。在耦合单元和已耦合单元属于同一行和连续列的情况下,测试程序RCM1可以涵盖列1和2上情况的一半。列1和2上条件的另一半可以由测试程序RCM2a涵盖
测试程序RCM2a进行列带初始化(即列存储单一重复值,而行被初始化成存储交替位序列)。当耦合和已耦合单元属于连续的行,在使用行带背景(即行存储单一重复值,而列初始化成存储交替位序列)的同时,利用0列偏移和1行偏移,再次重复测试程序RCM1和RCM2b。
列3和4给出的条件可以由测试程序RCM2b涵盖(也就是说,在耦合和已耦合单元属于同一行时)
请注意,测试程序RCM2b的前半部分采用了纯0背景,而后半部分采用了列带背景。
请注意,在耦合单元和已耦合单元属于连续行时,通过采用行偏移而不是列偏移,并对第三和第四测试元素应用行带背景,可以应用测试程序RCM2b。

表3 在一些实施例中,双重CF拥有一个已耦合单元Ck与两个耦合单元Ci和Cj,使得对单元Ci和Cj同时进行存储器访问操作能够改变单元Ck的状态。在实际的双重CF中,所涉及的故障由后述缺陷类型给出。
在第一种缺陷类型中,缺陷只影响已耦合单元。当Ci和Cj与单元Ck属于同一行时,发生会对单元Ck产生最强的扰动的双重操作。这种扰动与单元Ck的缺陷的存在相结合,会激活双重CF。请注意,可在耦合单元上进行任何类型的操作以引起干扰,因为读和写操作将单元Ck连接到预充电位线。此外,应进行测试以考虑已耦合单元Ck的两个逻辑状态(即预期的逻辑0和逻辑1值)。
在第二种缺陷类型中,缺陷可以创建单元Ck和另一单元Cl之间的静态相互作用(例如桥接故障)。当单元Ck和另一单元Cl存储特定值对时,会激活这种缺陷造成的故障。因此,应该针对单元Ck和Cl之间所有可能的状态对进行测试。请注意,当由与Ck的相同的字线选择单元Ci和Cj时,单元Ck上可能发生严重电气情况。
在第三种缺陷类型中,缺陷可以创建单元Ck和Cl之间的动态相互作用(如电容耦合)。当单元Ck位于某个特定的状态,并且对单元Cl进行特定的存储器访问操作(例如,导致单元Cl状态转换的写操作)时,会激活该缺陷引起的故障。请注意,第一存储器访问操作用于激活故障,第二存储器访问操作用于激活双重CF。此外,当在与单元Ck属于同一行的单元Cj上执行存储器访问操作时,在单元Ck上会发生严重电气情况。单元Ck与Cl间的电容耦合意味着这两个单元属于同一行和连续列,或同一列和连续行。
表4给出了按照一种实施例用于双重耦合故障的多个测试条件。实际的双重CF可以对应于上述三种缺陷中的任何一类。请注意,在由与Ck的相同的字线选择的存储器单元上进行op1和op2操作,而在单元Cl上(即第三故障类型)执行转换写,单元Cl和单元Ck属于同一行,相邻列,或属于同一列,相邻行。
第一缺陷类型的双重CF可以由测试程序RDM1涵盖
表4 注意,测试程序RDM1与测试程序RCM1类似,除了测试程序RDM1以读操作开始,测试程序RDM1的测试元素4和5的寻址次序相反。此外,RDM1可以检测到一半的类型2缺陷。类型2缺陷的另一半可以通过采用行带背景执行测试程序RDM1来检测。同样,对于第3类缺陷,RDM1可以检测到一半的第3类缺陷(当Cl和Ck属于同一行时),第3类缺陷的另一半可以通过采用列带背景重复RDM1来检测。
当Cl和Ck属于连续列时,可以通过测试程序RDM3检测出第三缺陷类型的双重DF

请注意,测试程序RCM1、RCM2a和RCM2b可以用来检测现实并发耦合故障,测试程序RDM1、RDM2和RDM3可以用来检测现实双重耦合故障。导致电容耦合的故障发生概率最低,而影响单个单元故障发生概率最高。在一些实施例中,当只考虑单个单元故障(即类型1的并发CF和类型1的双重CF)时,测试程序RDM1可以用来实现最小测试长度的最高故障覆盖率。在考虑了所有并发CF之后,测试程序RCM1可以与测试程序RCM2a和RCM2b相结合(这两个测试程序都应用两次,第二次用于连续行和行带背景),以达到最佳的故障覆盖率。此外,如果考虑所有双重CF类型,那么测试程序RDM1(执行3次,最后两次使用行带和列带背景)与测试程序RDM3可以结合,以达到最佳的故障覆盖率。即使在这些最坏情况下(即考虑所有故障类型),该测试程序的复杂性大大低于典型的拓扑测试程序(即测试长度为N时,为50N对456N的复杂性)。
可编程BIST体系架构 转回图3,存储器测试器300实现了一个可编程BIST(PBIST)架构,它为涵盖多端口存储器器件所特有的故障模型的测试程序提供支持,同时确保成本有效实现。此外,PBIST架构还可以为现有的用于实际故障模型、功能故障模型和SP-RAM测试的测试程序提供支持。
表5给出了按照一种实施例,与存储器测试器的测试指令相关联的多个字段。请注意,粗边框内的行代表了新的以及修改后的指令字段。
端口模式和测试模式字段(如PP和TM字段)可以用来指定存储器测试器300是否运作在预置操作模式下。PP和TM字段对存储器测试器300的两个端口都有影响。字段Pause(用于维持测试)也是两个端口共同的,表明BIST测试是否会暂停,直到它通过一个专门的信号恢复。
端口2地址与端口1地址相关联,使得具有相同的寻址方式和同一个方向。因此,AM和AS位对应于存储器测试器300的两个端口。此外,地址控制字段还用偏移列(CO)和偏移行(RO)位增加。CO和RO位分别为存储器测试器300的端口2地址指定了从端口1列地址和行地址的偏移量。
NBOPS字段也是两个端口共同的,它指定了DP-RAM测试序列的操作数目。当使用SP-RAM测试时,NBOPS字段指定了活跃端口的操作。每个操作字段由3位组成;前2位指定其模式(即读,写,读不关心,以及无操作),第三位表明该操作的数据极性。在一些实施例中,当第三位被设置为1时,反转测试数据。
在一些实施例中,CBI和RBI位指定测试序列的背景图案。也就是说,列背景图案可以通过设置CBI为1,设置RBI为0来指定。行背景图案可以通过设置CBI为0,设置RBI为1来指定。此外,棋盘背景图案可以通过将CBI和RBI都设置为1来指定。
在执行测试序列时,1ID和2ID字段可用于正确处理不规则的数据。也就是说,当不规则数据位1ID置位时,不希望不规则数据出现在或写入多端口存储器器件的端口1。同样,当不规则数据位2ID置位时,不希望不规则数据出现在或写入多端口存储器器件的端口2。
表5可编程BIST码字 在一些实施例中,扫描寄存器302和指令寄存器308管理指令集的加载和存储。此外,序列和数据生成器312根据指令寄存器308中存储的指令指定需要执行的指令(操作和数据)。
地址生成器318为多端口存储器器件的两个端口生成存储器地址。此外,地址生成器318通过分别计算列地址和行地址,生成存储器地址。两维地址的实现(即单独的行和列地址模块)有助于快x和快y寻址模式的推导,并方便部分地以行和列偏移为基础,计算第二端口的行和列地址。使用CO和RO地址模式控制位选择这些模式,并可以如下执行(假设有m个行地址和k个列地址,并假设RA1,RA2,CA1和CA2分别是端口1和端口2的行和列地址) 地址模式0RA2=RA1并且CA2=CA1。初始值是RA1=0,RA2=0,CA1=0,CA2=0。RA1、RA2、CA1和CA2在遵循给定的寻址模式(快x,快y)的同时增量。
地址模式1行地址相等(RA1=RA2),端口2列地址比端口1列地址大1(CA2=CA1+1)。CA1随着测试操作从0到k增量,而CA2从1到k增量,随后跳到0。在CA1和CA2完成一个周期之后,RA1和RA2增量(快x)。为了使RA1和RA2增量,需要执行比较操作,以确定CA1是否为值k,或者确定CA2是否为值0。在这种方案的向下寻址顺序情况下,为了使RA1和RA2减量,需要执行比较操作,以确定CA1是否为值0,并确定CA2是否为值k。此外,CA1初始值为k,CA2初始值为0。
地址模式2RA2=RA1+1,CA2=CA1。初始值是RA1=0,RA2=1,CA2=CA1=0。CA1和CA2随着测试操作从0到k增量。在CA1和CA2完成一个周期之后,RA1和RA2增量。为了使RA1和RA2增量,需要执行比较操作,以确定CA1和CA2是否都为值k。在向下寻址顺序情况下,为了使RA1和RA2减量,需要执行比较操作,以确定CA1和CA2是否都为0。
地址模式3RA2=RA1+1,CA2=CA1+1。初始值是RA1=0,RA2=1,CA1=0,CA2=1。CA1随着测试操作从0到k增量,而CA2从1到k增量,随后跳到0。在CA1和CA2完成一个周期之后,RA1和RA2增量一次。RA1从0到k增量,而RA2从1到k增量,随后跳到0。为了使RA1和RA2增量,需要执行比较操作,以确定CA1是否为值k,并确定CA2是否为值0。在向下寻址顺序情况下,为了使RA1和RA2减量,需要执行比较操作,以确定CA1是否为值0,并确定CA2是否为值k。
在一些实施例中,存储器测试器300有助于测试不同DP-RAM和寄存器文件设计。更具体地说,存储器测试器300可以方便测试两端口静态RAM设备,后者实现了任何两个端口的组合,包括2读/写端口(2RW);1读/写和1只读端口(1RW,1RO);1读/写和1只写端口(1RW,1WO);1只写和1只读端口(1WO,1RO);以及DP-RAM,其可以对一个存储器位置进行同时读和/或同时读写。在这些实施例的一些变化例中,一个时钟周期中写入的数据可以在相同的时钟周期中读取。在其他的变化例中,在进行写操作时,允许读取以前的数据(写之前的周期)。在另一些变化例中,在进行写操作时,读数据被舍弃(写操作的优先级高)。在其他变化例,DP-RAM可以允许每个端口有不同的时钟频率。在一些实施例中,通过以最低功能频率执行测试顺序,存储器测试器300支持允许每个端口有不同的时钟频率的DP-RAM。请注意,存储器测试器300可以用来测试具有两个以上存储器端口的多端口存储器器件。
在一些实施例中,存储器测试器300支持完全可编程BIST模式(即转移模式),其中实现全面测试序列的指令集可采用自动测试设备(ATE)时钟信号,通过串行输入信号330转移到扫描寄存器302。此外,来自扫描寄存器302的指令可采用不中断的实际速度系统时钟,作为矢量移入指令寄存器308。请注意,扫描寄存器302可以加载后续指令,以便它在目前的测试序列完成之后,可以由指令寄存器308加载。
在一些实施例中,存储器测试器300允许预置的测试模式。预置测试程序生成器304可配置为产生一个或多个预定义的存储器测试序列(即,用于制造测试)。测试指令包括两个字段,允许对预置模式进行最低控制,而不会影响引脚数量。端口模式字段指定当前的SP测试是否应用于端口1,端口2,或顺序地两个端口。此外,在有一个以上的嵌入式测试程序时,测试模式字段支持预置测试程序的选择。
请注意,预置测试程序的数量应保持相对较低,以确保在BIST控制和面积开销中实现较好的折中。通过在预置测试程序生成器304中包括充分证明和通用目的的测试程序,以及在运行时通过指令输入330向扫描寄存器302提供任何专门的测试程序(例如,针对某一特定存储器类型和/或特定存储器操作模式),可以实现最低限度的预置测试集。
管理测试数据不规则性 在本实用新型的一些实施例中,测试指令可以指定读操作的预期数据值。因此,每当一个存储器测试器执行读操作,存储器测试器可以比较预期数据值与读操作得到的实际值。如果这两个数据值匹配,那么存储器测试器确定对应于读操作的存储器单元不存在故障。但是,如果这两个数据值不匹配,那么存储器测试器确定相应的存储器单元中存在故障。
在本实用新型的一些实施例中,测试指令可以指定对存储器器件同时进行两次存储器访问操作,其中预期数据值对应于一次典型的存储器访问操作。然而,在测试序列的一次特定迭代中,从存储器单元读取的数据值不匹配该存储器器件在正常工作条件下的预期数据值。预期数据值与实际数据值的差异是由于测试序列的数据不规则性造成的。在测试操作的一个迭代通过第一端口对存储器单元进行一次存储器读操作时,可以发生测试操作的数据不规则性,其中第一端口的状态是由通过第二端口的同一测试操作的前一迭代修改的。
图7A示出了按照一种实施例的测试操作的规则存储器读。更具体地说,采用寻址模式1(即,RA2=RA1,CA2=CA1+1)在两端口存储器700的i行上执行存储器测试程序请注意,第一测试序列将两端口存储器700的i行上的存储器单元初始化为初始逻辑值0。因此,当在两端口存储器700的列1和2上执行第二测试序列702(即,)时,列2上的读操作返回预期逻辑值0。请注意,写操作在第1列(如图7A的括号所示)上执行,将存储器单元的状态从逻辑0改变为逻辑值1。此外,请注意,存储器写操作用实箭头表示,存储器读操作用虚箭头表示。
图7B示出了按照一种实施例的测试操作的不规则存储器读。更具体地说,在两端口存储器器件710的列k-1和0上执行测试序列712(即)时,对列0的读操作返回不期望逻辑值1,不匹配测试操作所指定的预期值0。这种不规则数据是由测试操作第一迭代在列0上进行的第一写操作引起的。
图7C示出了按照一种实施例的测试操作的规则存储器读。更具体地说,采用寻址模式2(即,RA2=RA1+1,CA2=CA1),在两端口存储器720的j列上执行存储器测试序列722请注意,第一测试序列(即,)将两端口存储器720的j列上的存储器单元初始化为初始逻辑值1。因此,当在两端口存储器720的行0和行1上执行第二测试操作(即,)时,行0上的读操作返回预期逻辑值1。请注意,写操作在第1行(如图7C的括号所示)上执行,将存储器单元的状态从逻辑1改变为逻辑值0。此外,请注意,存储器写操作用实箭头表示,存储器读操作用虚箭头表示。
图7D示出了按照一种实施例的测试操作的不规则存储器读。更具体地说,在两端口存储器器件730的行1和2上执行测试序列732(即)时,对行1的读操作返回不期望逻辑值0,不匹配测试操作所指定的预期值1。这种不规则数据是由测试序列第一迭代在行0上进行的第一写操作引起的。请注意,在这种情况下,从行1到行m-1的单元上进行的所有读操作都会返回不规则数据值。
在一些实施例中,测试数据不规则性可以由一个不规则数据控制器处理,后者可以在一个硬件模块中实现。不规则数据控制器可以反转测试程序所指定的读和写数据,以匹配测试操作期间经历的不规则数据。为此,不规则数据控制器可以为多端口存储器器件的每个端口生成一个不规则控制信号(即IR信号),其指定相应的读/写数据何时需要被反转。不规则数据控制器可以通过合并不规则数据位1ID与2ID和地址模式位CO与RO,和指示了0列地址和0行地址的2位,产生IR信号。
在一些实施例中,计算设备中执行的软件模块可以由存储在计算设备的计算机可读存储介质中的指令集实现,在计算设备的处理器执行该指令集时,可导致计算设备监测多端口存储器器件端口集上进行的存储器访问操作。更具体而言,该软件模块可配置计算设备来分析存储器器件端口上的写操作,并比较测试序列所有写操作的极性,以确定该端口上是执行了奇数还是偶数数量的反转写操作。此外,该软件模块可以使计算设备设置指令寄存器中不规则数据位(例如,端口1的1ID位或端口2的2ID位),当测试序列在存储器器件相应端口上执行奇数数量的反转写时,该位的逻辑值为1。
在一些实施例中,当一个端口的不规则数据位设置为逻辑值1时,从另一个端口收到的读数据值如下反转 地址模式1如果端口1不规则数据位(位1ID)设置为一个逻辑1值,并采用向上寻址顺序,当端口2的列地址等于列地址0时,反转与端口2关联的数据值。相反,对于向下寻址顺序,当端口2的列地址不等于列地址0时,反转与端口2关联的数据值(即除了序列的第一周期,其他所有都执行反转)。如果端口2不规则数据位(位2ID)设置为一个逻辑1值,并采用向上寻址顺序,当端口1的列地址不等于列地址0时,反转与端口1关联的数据值。相反,对于向下寻址顺序,当端口2的列地址等于列地址0时,反转与端口2关联的数据值。
地址模式2和3如果端口1的不规则数据位(位1ID)设置为一个逻辑1值,并采用向上寻址顺序,当端口2的行地址等于行地址0时,反转与端口2关联的数据值。相反,对于向下寻址顺序,当端口2的行地址不等于行地址0时,反转与端口2关联的数据值(即除了序列的第一周期,其他所有都执行反转)。如果端口2不规则数据位(位2ID)设置为一个逻辑1值,并采用向上寻址顺序,当端口1的行地址不等于行地址0时,反转与端口1关联的数据值。相反,对于向下寻址顺序,当端口2的行地址等于行地址0时,反转与端口2关联的数据值。
地址模式0在整个测试序列中,与端口1或端口2相关联的数据值没有反转。
在一些实施例中,测试序列期间进行的管理测试数据不规则性的数据反转可撤消,以考虑测试序列的数据背景。更具体地说,序列和数据生成器可以对存储器访问操作有关的数据值进行反转操作,以考虑其数据背景,这可以抵消考虑到不规则数据图案而在数据值上进行的反转操作。例如,当采用列带背景和地址模式1时,针对一半存储器访问操作(即当端口2不规则数据位(位2ID)为高,并且端口1列地址为非0时,针对偶数列地址)反转从端口1收到的数据。
在一些实施例中,管理不规则测试数据的方法及装置可以向存储器测试器提供支持不同的测试程序,从而允许获得高测试质量的灵活性。例如,根据一些实施例,存储器测试器可以支持下列特殊情况(a)测试序列可以在一些周期中写端口1但不写端口2,在其他周期中写端口2但不写端口1;(b)测试序列可以在一些周期中写两个端口,在其他周期不写端口;(c)测试序列可以在整个测试序列期间写两个端口,这样,一个端口进行反转写操作,其他端口不执行反转写操作;及(d)测试序列可以在整个测试序列期间一直写两个端口,使得每个端口的反转写操作数量是奇数。
位流生成 图8给出的流程图说明了按照一种实施例生成测试程序的位流和测试台的过程。在一些实施例中,这个过程可以由计算机系统实现,该计算机系统可以配置测试多端口存储器器件的ATE。该系统可以通过接收一个测试程序,该测试程序用于检测存储器器件的多端口存储器故障集(操行802)开始。然后,系统验证测试程序(操作804),并计算ID1和ID2的值(操作806)。接下来,系统部分地以测试程序为基础,进行存储器器件位流的格式化(操作808)。在一些实施例中,位流可以包括实现测试程序的指令序列。然后,系统部分地以位流为基础,生成一个测试台(操作810)。
在一些实施例中,操作804可以检查测试程序对于测试中的存储器器件的有效性和遵从性。它可以拒绝满足一个或更多下列限制的任何测试程序 a)通过这两个端口对同一地址进行两次写操作。
b)在不支持此同时操作的存储器器件同一个地址上进行读和写操作。
c)在前面的写操作与一个数据值D相关联时,针对第一端口上的读操作指定预期数据值D,并且 当存储器器件支持同时读和写能力时,前面写入的数据值等于第二端口上同时进行的写操作。根据存储器器件的规范,读数据值可以返回以前的数据值,或从写操作得到的数据值。
如果存储器器件不支持同时读和写能力,需要考虑两种可能情况。如果两个端口间没有地址偏移(无论是从列地址或行地址),前面的写数据的值是在当前序列或最近的前序列中,在端口1或端口2上的最后一个写操作的数据。相反,当有偏移量(在列地址或行地址上),前面的写数据在写操作只针对一个端口进行时,对应于端口1或端口2上最后写操作的数据,在这两个端口都进行写操作时,对应于端口1上最后写操作的数据。
在一些实施例中,操作804也可以确定一个预期的数据值,该预期的数据值对应于测试程序的一个通配符。请注意,在描述测试程序时,通配符可以指定以替换预期读数据值(即一个‘r?’操作),从而简化生成测试程序所需的努力。此外,请注意通配符没有编码到测试指令。以下部分描述了部分地以存储器器件的地址模式和规范为基础,确定通配符的预期读数据值的一种方法。
在一些实施例中,部分地以测试程序所指定的存储器访问操作和地址模式为基础,操作806可确定ID1和ID2位的值。
在一些实施例中,操作808可以为存储器器件格式化位流,它包括将加载到存储器测试器的指令寄存器中的一系列指令。位流可以通过指定指令字的字段集的值,使得该字段值满足测试程序的描述来生成。这样做,需要考虑和解决两种特殊情况 不规则数据位1ID和2ID必须被正确设置。在只有端口1执行写操作,并且反转写操作的数量为奇数时,测试序列中端口1不规则数据位(1ID)设置为1。同样,在只有端口2执行写操作,并且反转写操作的数量为奇数时,测试序列中端口2不规则数据位(2ID)设置为1。
对于采用向下寻址顺序,并且在第一端口上执行的反转写操作数量为奇数的测试序列,针对第二端口的读或写操作,反转位流中操作数据值。请注意,通过在指令流而不是在存储器测试器中反转与存储器访问操作有关的数据值,存储器测试器的不规则数据控制器可以处理向下寻址顺序的不规则数据图案。
在一些实施例中,操作810可以生成采用BIST存储器测试器测试多端口存储器器件的测试台,并可以生成一个标准测试接口语言(STIL)文件,该文件可以配置ATE来执行测试程序。
确定通配符的预期读取值 在一些实施例中,系统部分地以存储器器件的地址模式和规范为基础,确定通配符的预期读数据值。这样,当测试程序在存储器器件上逐个端口地进行不同地址的存储器访问操作(即,地址模式1-3)时,或当测试过程在存储器器件上逐个端口地进行相同地址的存储器访问操作(即地址模式0)时,系统能够确定预期读数据值。
端口地址偏移的测试程序(地址模式1、2和3) 如果测试程序在存储器器件上逐个端口地进行不同地址的存储器访问操作,系统如下确定通配符的预期读值 系统可以通过分析测试程序的测试序列集在端口1上进行的读操作,以确定其值开始。系统还分析端口2上进行的读操作,以确定其值。然后,当确定测试序列周期j中,端口i(i∈{1,2})上执行的读操作的通配符的预期数据值时,系统分析同一测试序列最近周期k(k<j)中端口i上进行的操作,以识别端口i上的前一写操作。然后,系统以识别的写操作数据值作为预期数据值,替换通配符。
例如,系统可以评估测试程序生成决定性的测试程序同样,系统可以评估测试程序生成决定性的测试程序 如果对任何周期k<j,测试序列都不执行端口i上的写操作,系统利用最近的前一测试序列,识别任何端口上进行的写操作。然后,系统以识别的写操作数据值作为预期数据值,替换通配符。
例如,考虑以下测试程序系统首先用确定性测试元素替换第二测试元素。请注意,根据第一测试元素上的写操作,为第二测试元素的第一通配符确定预期数据值(即,端口1上的读操作),因为这是在端口1上最近的前序读操作。同样,系统用确定性测试元素替换第三测试元素。
没有端口地址偏移的测试程序(地址模式0) 如果测试程序在存储器器件上逐个端口地进行单个地址的存储器访问操作,系统如下确定通配符的预期读值 该系统可以通过分析测试程序同时进行的存储器访问操作的类型开始。如果系统确定测试程序打算在两个端口上执行写操作,系统就会拒绝该测试程序。因此,允许的同时存储器访问操作包括同时读操作(即读-读),包括同时读和写操作(即读-写,和写-读)。请注意,读-读操作根据两个端口之一上进行的最后的写操作,为两个端口返回相同的读值。此外,读-写或写-读操作依赖于被测试的存储器器件的规范。
在一些实施例中,通配符可以用来创建一个测试程序,其中预期读值依赖于存储器器件的实现,从而使系统能够根据具体情况确定目标存储器器件的适当的预期值。让我们考虑下面的测试程序 这个测试程序指定在存储器器件第一端口上执行以下操作序列(w0);(w1);(r1);(w0)。
然而,为第二端口指定的多个读操作包括通配符,这就需要分析测试程序,以确定其相应的预期数据值。
在一些实施例中,系统可以通过首先删除第一端口上执行的读操作,然后分析其他操作(即第一端口执行的写和第二端口执行的读),犹如它们属于单端口测试程序那样,分析测试程序。换句话说,系统对被测存储器器件两个端口上同时进行的存储器访问操作对进行序列化。请注意,为确定操作顺序,系统首先确定执行同时读和写存储器访问操作时,存储器器件是优先考虑读操作还是写操作。
●如果存储器器件优先考虑读操作(即在存储器单元上执行同时写操作之前,为读操作返回存储器单元中的值),然后系统通过在写操作之前安排读操作序列化同时进行的存储器访问操作。下一步,系统通过重复典型的测试程序中替换通配符所用的方法,确定测试程序中通配符的预期数据值。这样,系统转换测试程序,以考虑新的排序顺序,并生成新的测试程序{(w0,n);(r0,w1);(r1);(r1,w0)}。然后系统将删除写操作,以生成第二端口的测试程序{(n);(r0);(r1);(r1)}。
●如果存储器器件优先考虑写操作(即在存储器单元上执行同时读和写操作时,返回写操作的值),然后系统通过在读操作之前安排写操作,序列化同时进行的存储器访问操作。下一步,系统通过重复典型的测试程序中替换通配符所用的方法,确定测试程序中通配符的预期数据值。这样,系统转换测试程序,以考虑新的排序顺序,并生成新的测试程序{/(w0,n);/(w1,r1);/(r1);(w0,r0)}。然后系统将删除写操作,以生成第二端口的测试程序{(n);(r1);(r1);(r0)}。
请注意,测试程序可以包括多个同时读和写操作,这样,一个测试元素可以指定存储器器件第一端口的同时读操作,而第二测试元素可以指定存储器器件第二端口的读操作。在一些实施例中,系统可以通过首先将确定性读操作序列与它们各自在原测试程序中的读操作相匹配,然后将原测试程序的通配符替换成相应的确定性读操作的相应的预期数据值,从而生成保留了原来测试程序结构的确定性测试程序。
在其他一些实施例中,系统可以通过多个迭代分析原测试程序,从而生成保留了原来测试程序结构的确定性测试程序。例如,在第一迭代中,系统可以为存储器器件第一端口上进行同时读操作的测试操作序列确定预期数据值。然后,在第二迭代中,系统可以为第二端口上进行同时读操作的测试操作序列确定预期数据值。然后,部分地以新的确定性测试程序为基础,生成一个位流。
图9给出的流程图说明了按照一种实施例测试多端口存储器器件的过程。在一些实施例中,这个过程可以由配置成测试多端口存储器器件的一个系统来执行。在某些变化例中,系统可以在存储器器件内部,作为一个BIST解决方案实现。在其他的变化例中,系统可以作为耦合到多端口存储器器件的ASIC设备来实现。在进一步的变化例中,系统可以是安装有存储器器件的计算设备。
系统可以通过接收实现存储器测试以发现多端口存储器器件故障的指令序列(操作902)开始。然后,系统为存储器器件的第一端口生成第一测试操作集(操作904),并为存储器器件的第二端口生成第二测试操作集(操作906)。下一步,该系统在存储器器件第一端口应用第一测试操作集(操作908),并同时在存储器器件第二端口应用第二测试操作集(操作910)。然后,系统通过确定从读端口读取的二进制值是否匹配预期数据值,确定多端口存储器器件是否发生多端口存储器故障(操作912)。请注意,如果从第一端口或第二端口读取的二进制值不匹配预期数据值,则系统确定该存储器器件发生故障。
图10示出了按照一种实施例的辅助测试多端口存储器器件的示例性计算机系统。计算机系统1002包括处理器1004,存储器器件1006-1007以及存储设备1008。此外,计算机系统1002可以连接到显示设备1010和输入设备1012。
存储设备1008能够存储操作系统1014、存储器测试配置系统1016、存储器测试器1028、测试程序1030、测试指令1032、位流1034、测试台1036和测试操作1038。存储器测试配置系统1016可以包括一个图形用户界面(GUI)1018、测试程序重格式化器1020、位流生成器1022、测试台生成器1024以及BIST编程器1026。此外,存储器测试器1028可以包括一个GUI 1029。
在操作过程中,存储器测试配置系统1016从存储设备1008加载到存储器1006中,并由处理器1004执行。在一些实施例中,存储器测试配置系统1016可以配置BIST设备1042,测试多端口存储器器件1040以检测多端口存储器器件。这样,测试程序重格式化器1020分析测试程序1030,以验证它不对存储器器件1040执行非法存储器访问操作,并将测试程序重新格式化成可用于生成测试序列的确定性测试程序。位流生成器1022生成实现测试程序1030的一组测试指令1032,并将测试指令1032配置成位流1034。测试台生成器1024生成一个可用于配置BIST装置1042以测试存储器器件1040的测试平台1036。然后,BIST编程器1026配置BIST设备1042,以部分地以测试台1036为基础,测试被测存储器器件1040。在一些变化例中,计算机系统1002可以连接到存储器器件1040。在其他的变化例中,计算机系统1002可以包括存储器器件1040。
在一些实施例中,存储器测试器1028可以实现在计算机系统1002中的硬件模块,如ASIC或FPGA中。在其他的实施例中,存储器测试器1028从存储设备1008加载到存储器1006中,并且由处理器1004执行。在操作过程中,存储器测试器1028可以测试多端口存储器器件1007。这样,存储器测试器1028可以为测试多端口存储器器件1007生成测试操作1038。然后,存储器测试器1028可在存储器器件1007上应用测试操作1038,使得测试操作1038可以对存储器器件1007的至少两个端口同时进行存储器访问操作。
以上对不同实施例的描述仅用于说明和描述。描述不是穷举性的,也不旨在将本实用新型限定在所公开的形式。因此,对本领域技术人员来说,许多改进和变化是显而易见的。此外,上述公开并不旨在限制本实用新型。
权利要求1.一种测试多端口存储器器件,以检测多端口存储器故障的装置,其中通过第一端口和第二端口同时访问该存储器器件时,多端口存储器故障会影响该存储器器件,该装置包括
扫描寄存器,配置成在该装置测试多端口存储器器件时接收指令序列,其中指令序列实现存储器测试,以发现多端口存储器器件的多端口存储器故障;
指令寄存器,配置成存储扫描寄存器所接收的指令序列;
有限状态机控制器,配置成部分地以前述指令序列为基础,生成多端口存储器器件的存储器访问操作序列;
序列和数据生成器,配置成部分地以存储器访问操作序列为基础,生成存储器器件第一端口的第一测试操作集合,以及存储器器件第二端口的第二测试操作集合,其中第一测试操作集合配置成通过第一端口,访问多端口存储器器件的第一存储器单元,其中第二测试操作集合配置成通过第二端口,访问多端口存储器器件的第一存储器单元或第二存储器单元,其中第二存储器单元毗邻第一存储器单元;
第一端口控制器,配置成对存储器器件第一端口提供第一测试操作集合,其中第一端口控制器包括第一端口控制信号,第一端口地址信号,以及第一数据信号;
第二端口控制器,配置成对存储器器件第二端口提供第二测试操作集合,其中第二端口控制器包括第二端口控制信号,第二端口地址信号,以及第二数据信号;以及
响应验证机制,配置成通过确定从第一端口或第二端口读取的被访问二进制值是否匹配预期二进制值,确定多端口存储器器件是否发生多端口存储器故障。
2.根据权利要求1的装置,其中存储器测试配置成发现单端口存储器器件上发生的任何功能性故障。
3.根据权利要求1的装置,其中存储器测试配置成发现从下列组中选择的多端口存储器故障,所述组包括端口间故障和单元阵列故障。
4.根据权利要求3的装置,其中端口间故障包括多端口存储器器件的两个端口之间的静态或动态相互作用,包括耦合故障、短路故障和开路故障。
5.根据权利要求3的装置,其中单元阵列故障包括从下列组中选择的故障,前述组包括并发耦合故障、双重耦合故障以及两个或更多弱故障的组合。
6.根据权利要求5的装置,其中现实耦合故障包括物理上相邻或者共享公共电路元件的两个存储器单元之间的耦合故障。
7.根据权利要求1的装置,还包括一个不规则数据控制器,配置成在第一端口读取的被访问二进制值被第二端口上以前进行的存储器访问操作改变时,反转第一端口的预期二进制值。
8.根据权利要求1的装置,还包括一个地址生成器,配置成实现下列组中的寻址模式,前述组包括向上寻址模式,向下寻址模式,快x寻址模式,以及快y寻址模式;
其中地址生成器还配置成实现地址偏移模式,地址偏移模式维持第一端口地址和第二端口地址之间行地址偏移,以及维持第一端口地址和第二端口地址之间列地址偏移。
9.根据权利要求1的装置,还包括
预置测试生成器,配置成提供预定的指令序列给指令寄存器,这些预定的指令序列实现一种或多种缺省存储器测试,缺省存储器测试的目标是多端口存储器器件中可能发生的多端口存储器故障;以及
预置数据生成器,配置成生成与预定指令序列相关联的存储器访问操作序列的二进制值。
专利摘要本实用新型公开了一种用于测试多端口存储器器件的运行时可编程BIST。一种实施例提供了一种运行时可编程系统,包括测试多端口存储器器件以发现多端口存储器故障,以及在访问存储器器件单个端口时可以激活的典型单端口存储器故障的多种方法和装置。更具体地说,本系统包含多种机制,它们可以配置成在同时进行两个存储器访问操作时,激活和检测影响存储器器件的任何现实故障。在操作中,该系统能够在测试存储器器件时接收指令序列,该指令序列实现测试该存储器器件的新测试程序。此外,该系统可以实现测试任何多端口存储器器件的内置自测试(BIST)解决方案,并且可以部分地以指令序列的信息作为基础,生成针对特定存储器设计的测试。
文档编号G11C29/12GK201562462SQ20092026964
公开日2010年8月25日 申请日期2009年10月30日 优先权日2009年4月28日
发明者M·尼科莱迪斯, S·鲍托布扎 申请人:新思科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1