首页> 中国专利> 任意全数据非标准扇区大小支持的以软件为中心的解决方案

任意全数据非标准扇区大小支持的以软件为中心的解决方案

摘要

本公开提供了任意全数据非标准扇区大小支持的以软件为中心的解决方案。自动化测试设备(ATE)系统包括计算机系统,该计算机系统包括系统控制器,其中,该系统控制器通信地耦合到测试器处理器,其中,该系统控制器用于向测试器处理器发送指令。测试器处理器用于根据指令生成用于协调对被测设备(DUT)测试的命令和数据,其中,该DUT支持任意扇区大小,并且其中,测试器处理器上的软件层执行计算以能够控制测试器处理器与DUT中的任意大小的扇区之间的数据流。

著录项

  • 公开/公告号CN113327642A

    专利类型发明专利

  • 公开/公告日2021-08-31

    原文格式PDF

  • 申请/专利权人 爱德万测试公司;

    申请/专利号CN202110224734.8

  • 申请日2021-03-01

  • 分类号G11C29/36(20060101);G11C29/56(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人杨佳婧

  • 地址 日本东京都

  • 入库时间 2023-06-19 12:24:27

说明书

本申请是于2018年12月20日提交的、题为“用于固态设备(SSD)非标准扇区大小和保护模式的自动化测试设备(ATE)支持框架(AUTOMATED TEST EQUIPMENT(ATE)SUPPORTFRAMEWORK FOR SOLID STATE DEVICE(SSD)ODD SECTOR SIZES AND PROTECTION MODES)”,发明人为Srdjan Malisic、Micahel Jones和Albert Yuan,律师案卷号为ATSY-0062-01.01US的美国专利申请16/227,389号的部分继续申请,其全部内容通过引用将其全部内容并入本文并用于所有目的。

本申请还要求于2020年2月28日提交的、题为“用于任意全数据非标准扇区大小支持的仅软件解决方案”、案卷号为ATSY-0080-00.00US的美国临时申请62/983,118的优先权。以上所列申请中的每一个的全部内容通过引用结合于此,用于所有目的,就像在此完全阐述一样。

技术领域

本公开总体上涉及电子设备测试系统的领域,并且更具体地涉及用于测试被测设备(DUT)(例如,固态驱动器(SSD))的电子设备测试设备的领域。

背景技术

自动化测试设备(ATE)可以是对半导体器件或电子组件执行测试的任何测试组件。ATE组件可用于执行快速执行测量并生成然后可被分析的测试结果的自动化测试。ATE组件可以是从与仪表耦合的计算机系统到复杂的自动化测试组件的任何设备,该复杂的自动化测试组件可以包括定制的专用计算机控制系统和能够自动地测试电子部件和/或半导体晶圆测试(例如,片上系统(SOC)测试或集成电路测试)的许多不同测试仪器。ATE系统既减少了测试设备所花费的时间以确保设备功能符合设计,又充当诊断工具以在到达消费者之前确定给定设备是否存在故障组件。

图1是用于测试某些典型DUT(例如,诸如DRAM之类的半导体存储器设备)的常规自动测试设备主体100的示意性框图。ATE包括具有硬件总线适配器插槽110A-110N的ATE主体100。专用于特定通信协议(例如,PCIe、USB、SATA、SAS等)的硬件总线适配器卡110A-110N连接到设置在ATE主体上的硬件总线适配器插槽以及经由专用于相应协议的电缆与DUT接口。ATE主体100还包括具有相关联的存储器108的测试处理器101,用于控制内置在ATE主体100中的硬件组件以及生成通过硬件总线适配器卡与被测DUT通信所需的命令和数据。测试器处理器101通过系统总线130与硬件总线适配器卡进行通信。可以将测试器处理器编程为包括某些功能块,这些功能块包括模式生成器102和比较器106。替代地,模式生成器102和比较器106可以是安装在插入到ATE主体100中的扩展或适配器卡上的硬件组件。

ATE主体100通过插入到ATE主体100的硬件总线适配器插槽中的硬件总线适配器来测试连接到ATE主体100的DUT 112A-112N的电气功能。因此,测试器处理器101被编程为使用硬件总线适配器特有的协议来将测试程序传送到DUT。同时,根据测试器处理器101中运行的测试程序,ATE主体100中内置的其他硬件组件彼此之间以及与DUT传送信号。

由测试器处理器101运行的测试程序可以包括功能测试,该功能测试涉及:将由模式生成器102产生的输入信号写入DUT、从DUT中读出所写入的信号、以及使用比较器106将输出与期望的模式进行比较。如果输出与输入不匹配,则测试器处理器101将DUT识别为有缺陷的。例如,如果DUT是诸如DRAM之类的存储器设备,则测试程序将使用写入操作将由模式生成器102生成的数据写入DUT,使用读取操作从DRAM读取数据并且使用比较器106将期望的位模式与读取的模式进行比较。

在常规系统中,测试器处理器101需要包含功能逻辑块以生成在测试DUT(例如,模式生成器102和比较器106)中使用的命令和测试模式,它们以软件直接编程在处理器上。然而,在一些情况下,诸如比较器106之类的某些功能块可以在现场可编程门阵列(FPGA)上实现,FPGA是可以根据用户需求对逻辑电路进行编程的专用集成电路(ASIC)型半导体器件。

常规系统中使用的FPGA依赖于测试器处理器101将命令和测试模式发送到FPGA,FPGA又将这些命令和测试模式转发到DUT。因为测试器处理器而不是FPGA负责生成命令和测试模式,所以可以使用给定ATE主体测试的DUT的数量和类型受到测试器处理器的处理能力和编程的限制。

同样,在常规系统中,用于与DUT进行通信的通信协议是固定的,因为插入到ATE主体100中的硬件总线适配器卡被设计为仅以一种协议进行通信并且无法被重新编程为以不同的协议进行通信的单用途设备。例如,被配置为测试PCIe设备的ATE主体将具有插入到该主体中并且仅支持PCIe协议的硬件总线适配器卡。为了测试支持不同协议(例如,SATA)的DUT,用户通常需要用支持SATA协议的总线适配器卡替换PCIe硬件总线适配器卡。除非用支持其他协议的卡来物理地替代PCIe硬件总线适配器卡,否则这样的系统只能测试支持PCIe协议的DUT。因此,在测试平台上,当需要测试运行与现有适配器卡支持的协议不同的协议的DUT时,更换硬件总线适配器卡消耗了关键时间。

传统测试器系统的一个缺点是这些测试系统目前不支持测试具有包含全数据的非标准扇区大小的DUT(例如,SSD),例如,具有不包含任何保护信息(非PI)的非标准扇区大小的DUT。例如,市场上可买到的大多数固态驱动器(SSD)都被格式化为具有标准扇区大小,例如,每个扇区4096字节、每个扇区512字节。大多数现代硬盘驱动器使用以下两种标准扇区大小之一:每个扇区512字节或每个扇区4096字节。然而,某些供应商还支持全数据非标准扇区大小,例如,每个扇区520字节(BPS)或每个扇区528字节(BPS),特别是用于要在企业级系统中使用的驱动器。

这些驱动器具有专用于用户数据存储的整个扇区大小,而非使用用于系统使用(例如,保护信息)的附加大小。每个扇区(520字节或528字节)中的每个字节的数据可供设备用户访问。测试器系统无法像对具有保护信息(PI)的附加字节的驱动器那样剥离附加字节。此外,测试器系统需要访问包括附加字节的数据的驱动器的所有扇区。大多数操作系统无法处置这样的驱动器。因此,由于SSD上的常规ATE测试不支持具有全数据非标准扇区大小的驱动器的测试,因此SSD上的常规ATE测试受到了限制。

发明内容

因此,需要一种能够解决上述系统问题的测试器架构。所需要的是一种支持用于测试包括全数据非标准扇区大小的DUT(例如,SSD)的软件级的测试器系统。此外,需要一种能够处置对任何扇区大小(包括通过软件变化的非标准大小)的全数据扇区SSD的测试器系统。例如,SSD可具有520BPS、4104BPS、528BPS和4224BPS(或者甚至任何其他任意扇区大小)的非标准扇区大小。所需要的是一种能够无缝且高效地测试具有任意扇区大小的SSD(其中,扇区包括数据)的测试器系统。

在一个实施例中,公开了一种自动化测试设备(ATE)系统。该系统包括计算机,该计算机包括系统控制器,其中,该系统控制器通信地耦合到测试器处理器,其中,该系统控制器用于向测试器处理器发送指令。测试器处理器用于根据指令生成命令和属于用于协调对被测设备(DUT)的测试,其中,该DUT支持任意扇区大小,并且其中,测试器处理器上的软件层执行计算以能够控制测试器处理器与DUT中的任意大小的扇区之间的数据流。

在另一实施例中,一种用于使用自动化测试设备(ATE)进行测试的方法包括:从计算机系统的系统控制器向测试器处理器发送指令,其中,该系统控制器通信地耦合到测试器处理器。该方法还包括:使用测试器处理器生成命令和属于用于协调对被测设备(DUT)的测试,其中,DUT支持多个任意全数据扇区大小,并且其中,测试器处理器上的软件层执行计算以能够控制测试器处理器与DUT中的多个任意全数据扇区大小之间的数据流。

此外,需要一种测试架构,通过该架构,可以将命令和测试模式生成功能转移到FPGA上,使得可以将测试器处理器上的处理负载和系统总线上的带宽需求保持在最小。此外,需要一种测试架构,通过该架构,可以在FPGA设备上对通信协议引擎进行编程,使得用于与DUT通信的协议是可被重配置的。

在不同的实施例中,自动化测试设备(ATE)装置包括:计算机系统,包括系统控制器,其中,系统控制器通信地耦合到测试器处理器和FPGA,其中,系统控制器用于向测试器处理器发送指令,并且其中,测试器处理器用于根据指令生成命令和数据用于协调对被测设备(DUT)的测试,其中,DUT支持多个非标准全数据扇区大小。FPGA通信地耦合到测试器处理器,其中FPGA包括至少一个硬件加速器电路,该硬件加速器电路用于透明地从测试器处理器内部生成命令和数据用于测试DUT。此外,测试器处理器被配置为在多种功能模式之一下进行操作,其中,每种功能模式被配置为以不同的方式在测试器处理器与FPGA之间分配用于生成命令和用于生成数据的功能,并且其中,在标准模式下,测试器处理器被配置为生成所有命令和数据用于协调对包括多个非标准全数据扇区大小的DUT的测试。

下面的具体实施方式以及附图将提供对本发明的性质和优点的更好的理解。

附图说明

在附图的图中,本发明的实施例通过示例而不通过限制来图示,在附图中,相似的附图标记指代相似的元件。

图1是用于测试典型的被测设备(DUT)的常规自动测试设备主体的示意框图。

图2是根据本发明的一个实施例的系统控制器、站点模块和DUT之间的互连的高级示意框图。

图3是根据本发明的实施例的站点模块及其与系统控制器和DUT的互连的详细示意框图。

图4是根据本发明的实施例的图2的实例化FPGA测试器块的详细示意框图。

图5是根据本发明的实施例的测试DUT的示例性方法的高级流程图。

图6是图5的继续并且是本发明的一个实施例中在旁路模式下测试DUT的示例性方法的流程图。

图7是图5的继续并且是本发明的一个实施例中在硬件加速器模式生成器模式下测试DUT的示例性方法的流程图。

图8是图5的继续并且是本发明的一个实施例中在硬件加速器存储器模式下测试DUT的示例性方法的流程图。

图9是图5的继续并且是本发明的一个实施例中在硬件加速器分组构建器模式下测试DUT的示例性方法的流程图。

图10图示根据本发明的实施例的与设备接口板(DIB)接口的基元。

图11是根据本发明的实施例的自动测试设备装置的示例性高级框图,其中主机控制器连接到多个基元并控制多个基元的测试操作。

图12A示出了根据本发明实施例的包括在测试器处理器上执行的软件的应用层。

图12B示出了根据本发明实施例的包括在测试器处理器上执行的软件的应用层中的每层的功能。

图13描绘了根据本发明的实施例的测试支持任意扇区大小的DUT的示例性计算机实现的过程的流程图。

图14描绘了根据本发明的实施例的测试支持任意扇区大小的DUT的示例性计算机实现的过程的流程图,其中,测试器处理器直接控制DUT。

在附图中,具有相同标号的元件具有相同或类似的功能。

具体实施方式

现在将详细地参考实施例,其示例被图示在附图中。虽然将结合附图描述实施例,但是应理解的是,它们不旨在限制实施例。相反,实施例旨在涵盖替代、修改和等同物。此外,在以下具体实施方式中,为了提供透彻理解,阐述了许多具体细节。然而,本领域的普通技术人员应认识到,可以在没有这些具体细节的情况下实践实施例。在其他情况下,尚未详细地描述众所周知的方法、程序、组件和电路,以免不必要地模糊实施例的各方面。

表示和术语部分

以下具体实施方式的某些部分是根据计算机存储器内数据位操作的程序、逻辑块、处理和其他符号表示来呈现的。这些描述和表示是数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的手段。在本申请中,程序、逻辑块、过程等被设想为导致期望结果的步骤或指令的自洽序列。这些步骤是要求对物理量进行物理操纵的步骤。通常,尽管不是必须的,这些量采取能够在计算机系统中存储、传输、组合、比较和以其他方式操纵的电或磁信号的形式。

然而,应该记住的是,所有这些和类似的术语将与适当的物理量相关联并且仅仅是应用于这些量的方便标签。除非特别说明,否则如以下讨论中显而易见的,应当理解的是,贯穿本发明,利用诸如“访问”、“添加”、“调整”、“分析”、“应用”、“组装”、“分配”、“计算”、“捕获”、“组合”、“比较”、“收集”、“创建”、“调试”、“定义”、“描绘”、“检测”、“确定”、“显示”、“建立”、“执行”、“生成”、“分组”、“识别”、“启动”、“修改”、“监视”、“移动”、“输出”、“执行”、“放置”、“呈现”、“处理”、“编程”、“查询”、“移除”、“重复”、“恢复”、“采样”、“模拟”、“排序”、“存储”、“减去”、“挂起”、“跟踪”、“变换”、“解锁”、“使用”等这样的术语的讨论指代计算机系统或类似的电子计算设备的动作和处理,所述计算机系统或类似的电子计算设备将被表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵并变换成被类似地表示为计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内的物理量的其他数据。

以下描述提供对可以包括一个或多个模块的计算机和其他设备的讨论。如本文所使用的,术语“模块”或“块”可以被理解为指代软件、固件、硬件和/或其各种组合。注意,块和模块是示例性的。块或模块可以被组合、集成、分离和/或复制以支持各种应用。另外,代替或者除了在所描述的特定模块或块处执行的功能,本文描述为在特定模块或块上执行的功能可以在一个或多个其他模块或块上执行和/或由一个或多个其他设备执行,而不是在所述特定模块或块处执行的功能。此外,可以跨越彼此本地或远程的多个设备和/或其他组件来实现模块或块。附加地,模块或块可以被从一个设备移动并添加到另一设备,并且/或者可以被包括在两个设备中。本发明的任何软件实施方式可以被有形地具体实现在一个或多个存储介质中,诸如例如存储器设备、软盘、紧致盘(CD)、数字通用盘(DVD)或可以存储计算机代码的其他设备中。

本文使用的术语仅用于描述特定实施例的目的,而不旨在限制本发明的范围。如贯穿本公开所使用的,除非上下文另外清楚地规定,否则单数形式“一”、“一个”和“该”包括复数形式。因此,例如,对“模块”的引用包括多个这样的模块以及单个模块,以及本领域的技术人员已知的等同物。

用于任意全数据非标准扇区大小支持的以软件为中心的解决方案

本发明的实施例允许通过在测试器内包括操作系统(OS)支持以用于测试支持不同的(例如,非标准、非标准或任意)扇区大小的DUT(例如,固态驱动器(SSD)、硬盘驱动器(HDD)等)而无需重新配置硬件来提高测试吞吐量。更具体地,支持任意或非标准扇区大小所需的计算和运算可以由测试器系统内的测试器处理器执行。换句话说,在一个实施例中,可以在通用测试器处理器上的软件中执行用于测试任意全数据扇区DUT(例如,SSD)的计算功能。本发明的实施例有利地增加了可以在普遍的硬件和时间约束下测试的被测设备(DUT)的数量和类型,例如,通过配置硬件使得支持多种不同类型的扇区大小的DUT可用相同的硬件来测试而不需要替换或替代任何硬件组件。本发明的实施例旨在改善自动测试设备的硬件的测试效率。

图2是根据本发明的实施例的自动测试设备(ATE)装置200的示例性高级框图,其中测试器处理器通过具有内置功能模块的FPGA设备连接到被测设备(DUT)。在一个实施例中,可以在能够同时测试多个DUT的任何测试系统内实现ATE装置200。例如,在一个实施例中,如图10所示,可在基元内部实现装置200。

参考图2,根据本发明的实施例的用于更高效地测试半导体器件的ATE装置200包括:系统控制器201;系统控制器连接到站点模块板230A-230N的网络交换机202;包括实例化FPGA测试器块210A-210N的FPGA设备211A-211M;存储器块模块240A-240M,其中每个存储器块均连接到FPGA设备211A-211M之一和被测设备(DUT)220A-220N,其中每个被测设备220A-220N连接到实例化FPGA测试器块210A-210N之一。应该注意的是,在一个实施例中,DUT 220A-220N可以是固态驱动器(SSD)。此外,如图2所示,单个实例化FPGA测试器块也可以连接到多个DUT。

在一个实施例中,系统控制器201可以是计算机系统,例如,为ATE的用户提供用户界面以加载测试程序并运行对连接到ATE 200的DUT的测试的个人计算机(PC)。在一个实施例中,系统控制器201可以运行Windows操作系统(OS)。在Windows环境中执行的Verigy手写笔软件是通常在设备测试期间使用的测试软件的一个示例。它给用户提供用来配置并控制测试的图形用户界面。它还可包括用于控制测试流程、控制测试程序的状态、确定哪一个测试程序正在运行并且记录测试结果和与测试流程有关的其他数据的功能。在一个实施例中,系统控制器可连接到并控制多达512个DUT。

在一个实施例中,系统控制器可通过网络交换机(例如,以太网交换机)连接到站点模块板230A-230N。在其他实施例中,网络交换机可以与诸如例如TCP/IP、光纤通道、802.11或ATM的不同协议兼容。

在一个实施例中,站点模块板230A-230N中的每一个均可以是用于评估和开发目的的单独的独立板,其附接到装载DUT 220A-220N的定制负载板固定装置,并且还附接到接收测试程序的系统控制器201。在其他实施例中,站点模块板可以作为插入式扩展卡或者作为直接插入系统控制器201的机箱中的子板被实现。替代地,站点模块板可以被容纳在基元的外壳内(如图10中所示)并且可以使用设备接口板(DIB)连接到各种DUT。

站点模块板230A-230N可各自包括至少一个测试器处理器204和至少一个FPGA设备。在一个实施例中,测试器处理器及其关联的存储器可以位于附接到相应的站点模块的单独的板(未示出)上。此单独的板可以被称作模块上计算机(或COM)板。换句话说,FPGA可以位于单独的站点模块板上,然而测试器处理器(具有关联的存储器)位于COM板上。

站点模块板上的测试器处理器204和FPGA设备211A-211M根据从系统控制器201接收到的测试程序指令运行每个测试用例的测试方法。在一个实施例中,测试器处理器可以是市场上可买到的Intel x86 CPU或任何其他公知的处理器。此外,测试器处理器可以在Ubuntu OS x64操作系统上操作并运行核心软件,其允许它与在系统控制器上运行的软件进行通信以运行测试方法。在一个实施例中,测试器处理器204可以是运行Linux OS或Linux OS的修改版本的x86处理器。在一个实施例中,在测试器处理器上运行的Linux OS能够从在系统控制器上运行的Windows OS接收命令和数据。测试器处理器204基于从系统控制器接收到的测试程序来控制站点模块上的FPGA设备和连接到站点模块的DUT。

测试器处理器204通过总线212连接到FPGA设备并可与FPGA设备进行通信。在一个实施例中,测试器处理器204通过单独的专用总线与FPGA设备211A-211M中的每一个进行通信。在一个实施例中,例如,在标准或旁路模式下,测试器处理器204可通过FPGA透明地控制对DUT220A-220N的测试,其中,分配给FPGA设备的处理功能尽可能少。在此实施例中,因为测试器处理器所生成的所有命令和数据都需要通过总线被传送到FPGA设备,所以总线212的数据业务容量可被迅速地耗尽。其他实施例中,例如,如下面进一步讨论的,在协议独立数据加速(PIDA)或全加速(FA)模式下,测试器处理器204可通过向FPGA设备分配用于控制DUT的测试的功能来分担处理负载。在这些实施例中,因为FPGA设备可生成它们自己的命令和数据,所以减少了总线212上的业务。

在一个实施例中,FPGA设备211A-211M中的每一个均连接到它自己的专用存储器块240A-240M。这些存储器块可用于存储被写出到DUT的测试模式数据。在一个实施例中,FPGA设备中的每一个均可包括具有用于执行功能的功能模块的两个实例化FPGA测试器块210A-210B,该功能包括如本文进一步描述的通信协议引擎和硬件加速器的实现方式。存储器块240A-240M可各自包含一个或多个存储器模块,其中存储器块内的每个存储器模块可专用于实例化FPGA测试器块210A-210B中的一个或多个。因此,实例化FPGA测试器块210A-210B中的每一个均可连接到存储器块240A内的它自己的专用存储器模块。在另一实施例中,实例化FPGA测试器块210A和210B可共享存储器块240A内的存储器模块之一。在不同的实施例中,每个FPGA设备可具有多个实例化FPGA测试器块,每个具有相应的存储器块。

此外,系统中的DUT 220A-220N中的每一个均可连接到“每DUT的测试器”配置中的专用的实例化FPGA测试器块210A-210N,其中每个DUT获得它自己的测试器块。这允许对于每个DUT执行单独的测试。这样的配置中的硬件资源是以支持最小硬件共享的单独的DUT的方式而设计的。此配置还允许并行测试许多DUT,其中每个DUT可连接到它自己的专用FPGA测试器块并运行不同的测试程序。在不同的实施例中,每个实例化FPGA测试器块也可以连接到多个DUT并且被配置为测试多个DUT。

图2中描绘的本发明的实施例的架构有若干优点。首先,它消除了对系统中的协议专用硬件总线适配器插槽和卡的需要,因为通信协议模块可以直接在FPGA器件内的实例化的FPGA测试器块上编程。实例化测试器块可被配置为以DUT支持的任何协议与DUT进行通信。因此,如果需要测试具有不同的协议支持的DUT,则可将它们连接到同一系统并且可在支持相关协议的情况下对FPGA进行重新编程。结果,一个ATE主体可被容易地配置为测试支持许多不同类型的协议的DUT。

在一个实施例中,通过从系统控制器201上的缓存经由简单的比特流下载可以直接在FPGA上下载和安装新的协议,而不需要任何种类的硬件交互。FPGA将通常包括可编程以为DUT提供一个或多个基于协议的接口的功能并且可编程以与DUT接口的可配置接口核心(或IP核心)。在许多情况下,IP内核将包括第三方协议转换器IP,该第三方协议转换器IP将信号从一种协议转换为另一种协议。

例如,ATE装置200中的FPGA 211A-211M将包括可配置有PCIe协议以最初测试PCIe设备并随后经由软件下载重新配置以测试SATA设备的接口核心。在FPGA中编程的第三方协议转换器IP可以被配置为将传入的PCIe信号转换为SATA信号。另外,如果发布了新协议,则FPGA可容易地经由比特流下载配置有该协议,而不必物理地切换系统中的所有硬件总线适配器卡。最后,如果需要实现非标准协议,则FPGA可仍然被配置为实现这样的协议。

在另一实施例中,FPGA 211A-211M可被配置为运行多于一种通信协议,其中这些协议也可从系统控制器201下载并通过软件来配置。换句话说,每个FPGA实现定制固件和软件映像以在单个芯片中实现一个或多个基于PC的测试器的功能。所需要的电信令和基于协议的信令由FPGA中的片上IP核心提供。如上所述,每个FPGA可用预先验证的接口或IP核心进行编程。如上所述,IP核心可以包括第三方协议IP。这确保根据给定接口标准的顺应性和兼容性。FPGA的可编程性质被用于优化SSD、HDD和其他基于协议的存储设备的存储测试应用的灵活性、成本、并行性和可升级性。

例如,实例化FPGA测试器块210A可被配置为运行PCIe协议,而实例化FPGA测试器块210B可被配置为运行SATA协议(例如使用第三方协议IP)。这允许测试器硬件同时测试支持不同协议的DUT。FPGA211A现在可被连接以测试支持PCIe协议和SATA协议两者的DUT。替代地,它可被连接以测试两个不同的DUT,一个DUT支持PCIe协议而另一个DUT支持SATA协议,其中每个实例化功能模块(例如210A、210B)配置有用于测试它连接到的相应的DUT的协议。

在一个实施例中,FPGA中的接口或IP核心可从第三方供应商获取,但是可能需要一些定制以与本文描述的实施例兼容。在一个实施例中,接口核心提供两个功能:a)将存储命令封装到标准协议以便在物理信道上传输;以及2)是电信号生成器和接收器。

图2中呈现的架构的另一个主要优点是它通过将命令和测试模式生成功能分配给FPGA设备来减少测试器处理器204上的处理负载,其中每个DUT有运行特定于它的测试程序的专用FPGA模块。例如,实例化FPGA测试器块210A连接到DUT 220A并运行特定于DUT 220A的测试程序。这样的配置中的硬件资源是以支持最小硬件共享的单独的DUT的方式来设计。这种“每DUT的测试器”配置也允许每个处理器测试更多的DUT并且允许并行测试更多的DUT。此外,利用能够在某些模式下生成它们自己的命令和测试模式的FPGA,也降低了将测试器处理器与其他硬件组件(包括FPGA设备、设备电源(DPS)和DUT)连接的总线212的带宽要求。结果,与在现有配置相比,可同时测试更多的DUT。

图3提供根据本发明的实施例的站点模块及其与系统控制器和DUT的互连的更详细示意框图。

参考图3,在一个实施例中,ATE装置的站点模块可被机械地配置在测试器片340A-340N上,其中每个测试器片包括至少一个站点模块。在某些典型的实施例中,每个测试器片可包括两个站点模块和两个设备电源板。在其他实施例中,测试器片可以包括更多或更少的站点模块和/或电源板。例如,图3的测试器片340A包括站点模块310A和310B以及设备电源板332A和332B。然而,可被配置到测试器片上的设备电源板或站点模块的数量没有限制。测试器片340通过网络交换机302连接到系统控制器301。系统控制器301和网络交换机302分别执行与图2中的元件201和202相同的功能。网络交换机302可用32位宽总线连接到每个站点模块。

如上所述,在一个实施例中,系统控制器301可以是计算机系统,例如,为ATE的用户提供用户界面以加载测试程序并针对连接到ATE 300的DUT运行测试的个人计算机(PC)。通常,系统控制器将运行Windows操作系统。Advantest触控笔是通常在设备测试期间使用的测试软件的一个示例。它为用户提供用来配置和控制测试的图形用户界面。它还可包括用于控制测试流程、控制测试程序的状态、确定哪一个测试程序正在运行并且记录测试结果和与测试流程有关的其他数据的功能。

每个设备电源板332A-332B可以从现场模块310A-310B之一进行控制。在测试器处理器304上运行的软件可被配置为将设备电源分配给特定站点模块。在一个实施例中,例如,站点模块310A-310B和设备电源332A-332B被配置为使用高速串行协议(例如,外围组件互连快速(PCIe)、串行AT连接(SATA)或串行连接SCSI(SAS))相互通信。

在一个实施例中,如图3所示,每个站点模块被配置有两个FPGA。图3的实施例中的FPGA 316和318中的每一个均由测试器处理器304控制并执行与图2中的FPGA 211A-211M类似的功能。测试器处理器304可使用诸如图3中的系统总线330和332所指示的PCIe的8通道高速串行协议接口与每个FPGA进行通信。在其他实施例中,测试器处理器304还可使用不同的高速串行协议(例如,串行AT连接(SATA)或串行连接SCSI(SAS))与FPGA进行通信。

FPGA 316和318分别连接到存储器模块308和305,其中这些存储器模块执行与图2中的存储器块240A-240N类似的功能。这些存储器模块与FPGA设备和测试器处理器304耦合并且可由FPGA设备和测试器处理器304控制。

FPGA 316和318可分别通过总线352和354连接到负载板380上的DUT 372A-372M。负载板380是允许在现场模块端进行通用高速连接的物理线束,该现场模块端对于用于在线路352和354上与DUT通信的协议是不可知的。然而,在DUT端处,负载板需要被设计为具有专用于DUT所使用的协议的连接器。

在本发明的一个实施例中,DUT 372A-372M被加载在被放置在热室390内的负载板380上以供测试。DUT 372A-372M和负载板380从设备电源332A和332B获得电力。

可连接到每个FPGA的DUT的数量取决于FPGA中的收发器的数量以及每个DUT所需的I/O通道的数量。在一个实施例中,FPGA 316和318可各自包括32个高速收发器并且总线352和354可各自是32位宽的,然而,可取决于应用实现更多的或更少。例如,如果每个DUT需要8个I/O通道,则在这样的系统中仅4个DUT可连接到每个FPGA。

在一个实施例中,用于在测试器处理器304与DUT 372A-M之间进行通信的通信协议可有利地是可重新配置的。这样的实施方式中的通信协议引擎被直接地编程到测试器片上的一个或两个FPGA中。FPGA(例如,316或318)因此可被配置为以DUT支持的任何协议与DUT进行通信。这有利地消除了每次需要测试具有不同协议的DUT时换出测试器的需要。在一个实施例中,协议可以是高速串行协议,包括但不限于SATA、SAS或PCIe等。新的或修改的协议可以通过测试器处理器从系统控制器经由简单的比特流下载而直接下载并安装在FPGA上,而不需要任何类型的硬件交互。另外,如果发布了新协议,则FPGA可容易地经由软件下载配置有该协议。

在本发明的一个实施例中,每个FPGA包括多个协议引擎模块,其中FPGA设备内的每个协议引擎模块均可被配置有不同的通信协议。因此,FPGA设备可被连接以测试多个DUT,每个DUT同时支持不同的通信协议。替代地,FPGA设备可连接到支持多种协议的单个DUT并且同时测试在该设备上运行的所有模块。例如,如果FPGA被配置为运行PCIe协议和SATA协议两者,则它可被连接以测试支持PCIe协议和SATA协议两者的DUT。替代地,它可被连接以测试两个不同的DUT,一个DUT支持PCIe协议而另一个DUT支持SATA协议。

图4是根据本发明的实施例的图2的实例化FPGA测试器块的详细示意框图。

参考图4,实例化FPGA测试器块410通过PCIe上游端口270连接到测试器处理器并且通过PCIe下游端口480连接到DUT。

实例化FPGA块410可包括协议引擎模块430、逻辑块模块450和硬件加速器块440。硬件加速器块440可进一步地包括存储器控制模块444、比较器模块446、分组构建器模块445和算法模式生成器(APG)模块443。

在一个实施例中,逻辑块模块450包括:解码逻辑,用于对来自测试器处理器的命令进行解码;路由逻辑,用于将来自测试器处理器304的所有传入命令和数据以及由FPGA设备生成的数据路由到适当的模块;以及仲裁逻辑,用于在实例化FPGA测试器块410内的各种通信路径之间进行仲裁。

在一个实施方式中,用于在测试器处理器与DUT之间通信的通信协议可有利地是可重新配置的。这样的实现方式中的通信协议引擎被直接编程到实例化FPGA测试器块410的协议引擎模块430中。因此,实例化FPGA测试器块410可被配置为以DUT支持的任何协议与DUT进行通信。例如,可将上述预先验证的接口或IP核心编程到协议引擎模块430中。这确保根据给定接口标准的符合性和兼容性。进一步地,IP核心允许测试器实现灵活性,因为IP核心启用接口的基于软件的改变。实施例提供独立于硬件总线适配器插槽而测试多种类型的DUT的能力。利用这样的接口灵活性,可以将新接口加载到可编程芯片的IP核心中,从而消除对于硬件总线适配器插槽(关于图1讨论)的需要。

在一个实施例中,例如,对于存储装置/SSD/HDD,每个FPGA包括连接到SSD并且可编程以通过诸如SATA或SAS的存储专用接口来提供基于存储的模式的可配置IC。

在一个实施例中,FPGA可以是使用基于协议的通信来与DUT或模块接口的基于SSD模块的测试器。在一个实施例中,可配置接口核心可以被编程为提供任何基于标准化协议的通信接口。例如,在一个实施例中,在基于SSD模块的测试的情况下,接口核心可以被编程为提供诸如SATA、SAS等的基于标准化协议的通信接口。

因此,从电气角度来看,FPGA利用IP核心而不是硬件总线适配器插槽。通过对FPGA的可编程芯片资源进行软件编程,给定IP核心可以被容易地重新编程并用另一IP核心替换,而无需改变物理FPGA芯片或其他硬件组件。例如,如果给定的基于FPGA的测试器当前支持SATA,则能够连接到SAS DUT所需的全部是将FPGA重新编程为使用SAS IP核心而不是针对SATA配置现有IP核心。

这有利地消除了对于硬件总线适配器卡的需要,并且不需要替换协议专用硬件来测试具有不同协议支持的DUT。在一个实施例中,协议可以是高速串行协议,包括但不限于SATA、SAS或PCIe等。新的或修改的协议可以通过测试器处理器从系统控制器经由简单的比特流下载而直接下载并安装在FPGA上,而不需要任何类型的硬件交互。另外,如果发布了新协议,则通过软件下载FPGA可以很容易地配置有该协议。

在图4中,如果耦合到PCIe下游端口480的DUT是PCIe设备,则包含PCIe协议的实例化的比特文件可通过PCIe上游端口470来下载并安装在协议引擎模块430上的IP核心中。每个FPGA设备316或318可包括一个或多个实例化FPGA测试器块,并且因此,包括一个或多个协议引擎模块。任何一个FPGA设备可支持的协议引擎模块的数量仅受FPGA的大小和门计数限制。

在本发明的一个实施例中,FPGA设备内的协议引擎模块中的每一个均可被配置有不同的通信协议。因此,FPGA设备可被连接以测试多个DUT,每个DUT同时支持不同的通信协议。替代地,FPGA设备可连接到支持多种协议的单个DUT并且同时测试在该设备上运行的所有模块。例如,如果FPGA被配置为运行PCIe协议和SATA协议两者,则其可被连接以测试支持PCIe协议和SATA协议两者的DUT。替代地,它可被连接以测试两个不同的DUT,一个DUT支持PCIe协议而另一个DUT支持SATA协议。

图4的硬件加速器块440可用于在FPGA硬件上加速某些功能,而不是在测试器处理器上以软件执行。硬件加速器块440可提供在测试DUT时使用的初始测试模式数据。它还可包含用于生成用于控制对DUT测试的某些命令的功能。为了生成测试模式数据,加速器块440使用算法模式生成器模块443。

硬件加速器块440可使用比较器模块446来将从DUT读取的数据与在前一周期中写入DUT的数据进行比较。比较器模块446包括用于将失配标记给测试器处理器304以识别不符合的设备的功能。更具体地,比较器模块446可包括跟踪失配并将其传送到测试器处理器304的错误计数器。

硬件加速器块440可连接到本地存储器模块420。存储器模块420执行与存储器块240A-240M中的任一个内的存储器模块类似的功能。存储器模块420可由硬件加速器块440和测试器处理器304两者控制。测试器处理器304可控制本地存储器模块420并将初始测试模式数据写入本地存储器模块420。

存储器模块420存储要写入DUT的测试模式数据并且硬件加速器块440访问它以将存储的数据与在写入周期之后从DUT读取的数据进行比较。本地存储器模块420还可用于记录故障。存储器模块将存储具有在测试期间DUT经历的所有故障的记录的日志文件。在一个实施例中,加速器块440具有无法被任何其他实例化FPGA测试器块访问的专用本地存储器模块块420。在另一实施例中,本地存储器模块块420与另一实例化FPGA测试器块中的硬件加速器块共享。

硬件加速器块440还可包括存储器控制模块444。存储器控制模块444与存储器模块420交互并控制对存储器模块420的读取和写入访问。

最后,硬件加速器块440包括分组构建器模块445。在某些模式下,分组构建器模块由硬件加速器模块使用以构造要写出到DUT的包括报头/命令数据和测试模式数据的分组。

在一个实施例中,站点模块可以包括通用连接器481。因为协议引擎模块430可被配置为运行任意数量的各种通信协议,所以在站点模块上需要通用高速连接器481。因此,如果需要改变在协议引擎模块430上实现的协议,则不需要在站点模块上进行附带的物理修改。站点模块使用负载板380连接到DUT,负载板380可连接到站点模块端上的通用连接器,但是特定于在DUT端上实现的协议。支持不同通信协议的DUT将需要不同的配置。因此,如果协议被重新编程以适应需要不同配置的DUT,则需要切换并替换负载板。

图10图示根据本发明的实施例的与设备接口板(DIB)1000接口的基元1010。与图3中所示的测试器片(例如,340A等)类似,图10的基元是一种类型的离散测试模块,其装配到测试头中并包括测试电路,该测试电路根据测试计划对DUT执行测试。基元包括外壳1050,所有各种电子装置(例如,站点模块、电源等)都被容纳在该外壳1050中。DIB 1000可使用针对DUT 1020调整大小的定制连接器来与多个DUT 1020连接。DUT与DIB 1000物理接口和电子接口。基元还可包括外壳1070。DIB1000(通过与图3中所示的负载板380类似的负载板(未示出)与基元1010的通用背板(未示出)接口。基元1010包含用于对DUT 1020执行测试计划的测试电路(与图3中所示的测试器片340A类似)。基元1010可独立于任何其他基元操作并连接到控制服务器(与图3中所示的系统控制器301类似)。

应该注意的是,连接到任何给定测试器片(例如,340A-340N)或任何给定基元的DUT能够运行与连接到同一相应的测试器片或基元的一个或多个其他DUT不同的协议。例如,基元1010可连接到多个DUT 1020并用于测试多个DUT 1020,其中每一个都可运行不同的协议,例如SATA、ATA、SCSI等。在一个实施例中,基元1010可以连接到SSD驱动器并用于主要测试SSD驱动器。

图11是根据本发明的实施例的自动测试设备(ATE)装置的示例性高级框图,其中主机控制器连接到多个基元并控制多个基元的测试操作。图11图示用于测试支持各种非标准扇区大小(或非标准扇区大小)和保护模式的SSD的整体集成系统或测试框架1105。

在一个实施例中,基于Windows的主机控制器1110可以通信地耦合到若干不同的基元,例如1130A和1130B。基于Windows的主机控制器1110能够向用户显示图形用户界面以用于显示信息和接受用户输入。通信背板1120耦合在主机控制器1110与一个或多个基元1130A和1130B之间。每个基元包括多个测试器片(例如,测试器片340A-340N)。在一个实施例中,每个基元可以包括经由驱动器1160耦合到多个FPGA测试器片1150的多个COM板1140(包括测试器处理器和相关联的存储器)。(如前所述,在一个实施例中,测试器处理器可以位于作为与包含FPGA的测试器片分开的板的COM板上)。在一个实施例中,测试器片经由设备接口板1165耦合到DUT(例如,SSD)。不同的DIB可用于支持不同形状因数和连接类型的SSD。在机架内可以有若干基元,其中每个基元耦合到主机控制器并由主机控制器控制。这允许同时测试大量的DUT。

在一个实施例中,COM板1140可以包含根据本发明的嵌入式OS平台的示例。COM板1140可以控制基元内的测试器片1150。嵌入式OS平台被配置为在一侧与主机控制器1110进行通信并且在另一侧与填充在基元内的各种FPGA测试器片1150进行通信。在一个实施例中,嵌入式OS平台可以是Linux OS的经大量修改的版本。在系统1105内可以由多达32个嵌入式OS平台示例并由主机控制器1110控制。各种OS平台提供与FPGA测试板1150通信以及直接与DUTS 1170通信的功能。

在某些实施例中,硬件加速器块440可由测试器处理器304编程以在几种硬件加速模式之一下操作。

I、多种硬件加速模式

在旁路或标准模式下,硬件加速器被旁路并且命令和测试数据由测试器处理器304通过路径472直接发送到DUT。注意,在一个实施例中,使用旁路或标准模式来启用对非标准或任意大小的全数据扇区DUT的测试。换句话说,在一个实施例中,旁路模式包括这样的特征,根据该特征,测试器处理器执行计算以测试具有任意扇区大小的DUT。

还应当注意,在一个实施例中,测试器处理器304可以直接与DUT进行通信以测试非标准或任意大小的全数据扇区DUT。换句话说,在该实施例中,FPGA(具有其可编程核心和各种可配置操作模式)不是必需的,因为测试器处理器304可以直接与DUT进行通信。

在硬件加速器模式生成器模式下,测试模式数据由APG模块443生成,而命令由测试器处理器304生成。测试分组通过路径474发送到DUT。此模式也称为协议独立数据加速(PIDA)模式。

在硬件加速器存储器模式下,当测试器处理器304生成命令时,从与FPGA相关联的本地存储器模块420访问测试模式数据。测试模式数据通过路径476发送到DUT。路由逻辑482需要在路径472、474和476之间仲裁以控制到DUT的数据流。

在硬件加速器分组构建器模式下,测试模式数据可以由APG模块443生成并且FPGA的分组构建器模块445用于构造要写出到DUT的包括报头/命令数据和测试模式数据的分组。测试分组通过路径474发送到DUT。此模式也被称为全加速(FA)模式。

图5描绘根据本发明的实施例的测试DUT的示例性过程的流程图500。然而,本发明不限于流程图500所提供的描述。而是,根据本文提供的教导,对于相关领域的技术人员而言显而易见的是,其他功能流程也在本发明的范围和精神内。

将继续参考上面参考图2、图3和图4描述的示例性实施例来描述流程图500,但是方法不限于这些实施例。

现在参考图5,在块502处,用户启动设置并将测试程序加载到系统控制器中。启动设置可以包括从可用协议库中选择一种或多种协议以配置到ATE装置200中的FPGA设备上。这些协议被作为文件缓存在系统控制器301上并且可作为比特文件被下载到FPGA上。用户可以通过图形用户界面从可用的版本列表中选择协议。在协议作为选项可用之前,必须对其进行构建、测试并集成到版本中。发布的FPGA配置包含有关所支持的协议和可用于连接DUT的收发器的数量的定义。然后,可通过系统或主机控制器上的图形用户界面使版本库对用户可用。

在块502处,用户还通过图形用户界面将测试程序加载到系统控制器301中。测试程序定义了需要在DUT上运行的测试的所有参数。在块504处,系统控制器将指令发送到站点模块310A上的测试器处理器。此步骤包括要编程到FPGA上的协议引擎用的比特文件的传输。系统控制器可以包括用于将特定测试程序的指令路由到连接至测试程序所控制的DUT的测试器处理器的路由逻辑。

在块506处,在从系统控制器接收到指令之后,测试器处理器304可以确定用于在连接到站点模块310A的DUT上运行测试的硬件加速模式。

在一个实施例中,测试器处理器304可以在四种不同的硬件加速模式之一下操作。每种功能模式被配置为在测试器处理器304与FPGA 316和318之间分配用于生成命令和测试数据的功能。在一个实施例中,测试器处理器可被编程为在旁路或标准模式下操作,其中用于测试DUT的所有命令和测试数据都由测试器处理器304生成并且FPGA 316和318被旁路。

在另一实施例中,测试器处理器304可被编程为在硬件加速器模式生成器模式(或PIDA模式)下操作,其中由FPGA 316和318生成用于测试DUT的伪随机或随机数据,并由FPGA进行比较,但是测试器处理器处置命令生成。

在又一实施例中,测试器处理器304可被编程为在硬件加速器存储器模式下操作,其中,在初始设置期间,测试模式由测试器处理器预先写入连接至每个FPGA 316和318的存储器模块上。在这种模式下,FPGA访问专用存储器设备以检索要写入DUT的测试数据,从DUT读取测试数据并将所读取的数据与写入存储器设备的数据进行比较。在这种模式下,FPGA中的每一个响应于来自DUT的读取和写入操作而控制存储器设备。然而,在这种模式下,测试器处理器仍然负责命令生成。

在再一实施例中,测试器处理器304可被编程为在硬件加速器分组构建器模式(或全加速模式)下操作,其中数据和基本读取/写入/比较命令由FPGA 316和318生成。

在块508处,测试器处理器分支到将运行测试的模式。

应该注意的是,图10的FPGA 1035能够被编程为上述四种功能模式(即,旁路模式、硬件加速器模式生成器模式、硬件加速器存储器模式和硬件加速器分组构建器模式)中的任何一种。在一个实施例中,测试器卡1000经由连接器1010连接到的计算机或系统控制器将执行测试器处理器304的功能。

I.A)旁路(或标准)模式

图6描绘根据本发明的实施例在旁路模式下测试DUT的示例性过程的流程图600。然而,本发明不限于流程图600所提供的描述。而是,根据本文提供的教导,对于相关领域的技术人员而言显而易见的是,其他功能流程也在本发明的范围和精神内。

将继续参考上面参考图2、图3和图4描述的示例性实施例来描述流程图600,但是方法不限于这些实施例。

现在参考图6,在旁路模式下,在块602处,测试器处理器304为要路由到DUT的测试分组生成命令和分组报头。在块604处,测试器过程还为要路由到DUT的分组生成测试模式数据。在这种模式下,因为测试器处理器生成它自己的命令和测试数据,所以没有硬件加速。

在块606处,测试器处理器与实例化FPGA块410和下游端口480进行通信以将包含测试模式数据的测试分组路由到DUT。旁路模式是直通模式,其中,除了一些有限的异常以外,命令和数据透明地通过实例化FPGA块410直接地传递到DUT。在旁路模式下,测试器处理器304直接控制DUT。虽然实例化FPGA块可包括用于将分组路由到下游端口的逻辑,但是它不参与命令生成(也称为“发信号通知”)或数据生成。

在块608处,测试器处理器304与下游端口480进行通信以启动从DUT对先前在块606处被写入DUT的数据的读取操作。在块610处,测试器处理器将从DUT读取的数据与在块606处写入的数据进行比较。如果在块606处写入的数据与在块610处读取的数据之间存在任何失配,则在块612处由测试器处理器304向系统控制器301发送标志。系统控制器然后将失配标记给用户。

应该注意的是,旁路或标准模式是测试全数据非标准扇区大小DUT的主要操作模式。换句话说,可以仅使用旁路或标准模式并且将测试器处理器直接连接到DUT或通过FPGA(其中FPGA用作直通设备)连接到DUT来测试全数据非标准扇区大小的DUT。其他操作模式(例如,PIDA或全加速)对于测试全数据非标准扇区大小的DUT并不重要。

标准模式下任意全数据非标准扇区大小支持

在一个实施例中,当测试具有全数据任意大小扇区的DUT(例如,SSD DUT)时,使用标准(或旁路)模式。注意,尽管利用旁路模式来测试任意大小扇区的DUT,但是测试器处理器304的速度可能受到限制,因为其处理能力可能由于生成DUT的所有命令和测试数据而快速地最大化。

本发明的实施例对软件(例如,在图3的测试器处理器304上执行的软件)进行配置以提供可以处置对任何扇区大小(包括非标准大小)的全数据扇区SSD的测试的系统。相比之下,常规测试器系统不提供任意扇区大小测试。例如,基于Linux的系统仅支持512字节或4096字节大小的扇区。大多数其他系统使用硬件来隐藏非标准数据扇区大小,并且对于所支持的大小存在限制。

图12A示出了根据本发明实施例的包括在测试器处理器上执行的软件堆栈的应用层。在测试器软件上执行的软件堆栈可以包括至少四层。这些层包括设备驱动器层1240、Linux块层1230、Vast系统软件(VSS)层1220和用户应用层1210。注意,设备驱动器层1240被配置为与DUT1250进行通信。

在一个实施例中,设备驱动器层1240被配置为与DUT 1250进行通信并查询DUT以确定扇区大小。一旦DUT实际扇区大小(RSS)被报告给设备驱动器层1240,设备驱动器层1240通过VSS层将该信息传送到用户应用层1210。

例如,考虑对包括524字节的非标准扇区大小的SDD的读取操作。当数据请求被从用户应用层1210沿着协议栈向下发送时,VSS层1220计算扇区大小(例如,对于本示例为524字节)并将其向下舍入到Linux块层1230所支持的最接近的数字(例如,512字节)。例如,Linux块层1230可以仅包含对具有512字节扇区大小的DUT的支持。此外,VSS层1220维持附加的12个字节的信息(524个字节减去512个字节)的记录。

在该示例中,如果用户应用层1210请求N个数据块(或N个扇区)(例如524*N字节),则VSS层1220将向Linux块层1230请求(N+M)个块,其中,N个块将包括512个字节的数据,并且其中M个块将包括每个块剩余12个字节的附加数据(在524字节大小的扇区的情况下)。M的值由软件计算,其中,M个块能够保持来自所有N个块的附加数据。例如,在N=100的情况下,总的附加字节数将为12*100=1200字节。为了包含1200个字节,需要从Linux块层1230请求至少3个大小为512字节的块。因此,如果使用M=3,则这3个附加块保持来自N个块(其中,N=100)中的附加字节。因此,VSS层1220可以向Linux块层1230请求100+3个块。Linux块层1230将该请求转换为对103个512字节的块(103*512字节)的请求,并且Linux块层1230允许该操作。

之后,该请求被向下传递到设备驱动器层1240。设备驱动器层1240直接与DUT1250进行通信,并且设备驱动器层1240能够确定DUT具有524字节的非标准扇区大小。此外,设备驱动器层1240可以确定Linux块层1230正在提出对103个块的请求,其中每个块的大小为512字节。

设备驱动器层能够使用关于DUT的扇区大小和Linux块层1230所请求的块数的信息来确定最初在用户应用层1210发出请求的是针对100个块。因此,设备驱动器层1240向DUT发送对100个块的请求,DUT通过用100*524个字节来填充设备驱动器层1240中的缓冲器来响应该请求。该缓冲器中的信息通过Linux块层1230传递。此后,用户应用层1210在每个扇区中获得100个524字节的块。在一个实施例中,与上述读取操作的示例类似地进行写入操作。

注意,用户应用层1210、VSS层1220和设备驱动器层1240包括附加逻辑(分别为模块1293、1292和1291),以能够识别任意扇区大小的DUT。Linux块层1230不包括用于确定DUT是否包括任意扇区大小或能够与其进行通信的附加逻辑。

图12B示出了根据本发明实施例的包括在测试器处理器上执行的软件堆栈的应用层中的每层的功能。如图12B所示,用户应用层1210接收关于DUT扇区大小的信息。在上面讨论的示例中,对于从DUT读取100个扇区的信息,用户应用层1210将请求来自100个扇区(或块)的数据。考虑到上面讨论的Linux块层1230的限制,VSS层1220从Linux块层1230请求103个块(N+M=100+3)。Linux块层1230不支持非标准扇区大小,但是给定512字节的标准扇区大小,Linux块层1230被配置为检查所请求的信息长度是否满足其以512字节的倍数来处理数据的限制。因此,它允许请求沿协议栈向下传递,并且允许来自DUT的数据沿协议栈向上传递。

设备驱动器层1240与DUT进行通信,并且因此设备驱动器层1240能够使用关于DUT的扇区大小的信息来计算从DUT请求多少扇区的信息。在上面讨论的示例中,设备驱动器层1240将请求100个信息块。DUT 1250又将接收来自设备驱动器层1240的请求并且满足该请求。

本发明的实施例控制输入、输出、驱动器和用户空间,以有利地提供用于测试任何任意扇区大小的SSD的纯软件解决方案而不牺牲性能,并且由于不需要数据复制。本发明的实施例有利地扩展了可以被测试的设备的范围,并且给予测试器系统的用户对整个扇区的数据的直接访问。

在一个实施例中,测试器处理器(在标准或旁路模式或者其变型下)用于读取数据和将数据写入DUT。FPGA可能无法支持具有任意大小扇区的DUT,因为它仅支持有限数量的预定义数据大小。FPGA一旦被配置(在将比特流下载到FPGA之后),则在运行时,FPGA可以仅支持扇区大小的有限短列表。将认识到,对测试器处理器上的测试器软件进行编程以测试任意扇区大小的DUT允许用户从DUT读取和向DUT写入任何长度的用户指定数据,因此有利地具有通用性。在运行时,测试器处理器能够支持任何任意扇区大小,并且不限于任何特定的预定义大小。

本发明的实施例提供了这样的“纯软件解决方案”,其允许用户利用用户数据模式来测试任意扇区大小的设备。在对被测设备(DUT)进行写入的情况下,在测试器处理器上运行的软件生成用于对该扇区执行测试的完整的数据和命令。在读取的情况下,软件将从扇区回读完整数据,而不会剥离附加的字节。

本发明的实施例是灵活的,并且能够测试将整个扇区用于数据存储的任何扇区大小的设备。它为用户提供对整个扇区的访问,而无需剥离或插入任何附加字节。因为不需要附加的数据复制,所以这样做不牺牲性能。

常规ATE相对受限,因为它不支持测试具有全数据非标准扇区大小的驱动器。本发明的实施例有利地允许对这种驱动器进行基于软件的测试,尤其是对任意非标准扇区大小的测试。

图13描绘了根据本发明的实施例的测试支持任意扇区大小的DUT的示例性计算机实现的过程的流程图。然而,本发明不限于流程图1300所提供的描述。而是,根据本文提供的教导,对于相关领域的技术人员而言显而易见的是,其他功能流程也在本发明的范围和精神内。

在块1310处,主机控制器耦合到测试器处理器和FPGA。主机控制器可以是如上所述的基于Windows的操作系统。此外,测试器处理器可以运行Linux或Linux OS的修改版本。FPGA通信地耦合到测试器处理器,并且FPGA用于根据上述各种加速模式之一生成用于测试DUT的命令和数据。

在块1312处,选择加速模式来生成用于测试DUT的命令和数据。加速模式可以是标准模式或旁路模式,其中,测试器处理器生成所有命令和数据,并且FPGA被旁路。注意,如上所述,在一个实施例中,标准或旁路模式可以是测试全数据非标准尺寸DUT所需的首要或主要模式。

在块1314处,测试器处理器向DUT生成命令(例如,读取、写入等),其中,DUT包括任意扇区大小。

响应于所读取的命令,然后,在块1316处,在测试器处理器上执行的测试器软件的VSS层计算扇区大小(例如,对于上面的示例为524字节)并将其向下舍入到Linux块层1230所支持的最接近的数字(例如,512字节)。此外,如果用户应用层1210请求N个数据块(或N个扇区),则VSS层1220将向Linux数据块层1230请求(N+M)个块,其中,N个块中的每一个是标准大小的块(例如,512字节),并且其中,M个块将包括每个块的附加字节的数据。

在块1318处,Linux块层1230被编程为检查所请求的信息长度满足其以标准大小的块的倍数(例如,在上述示例为512个字节的倍数)来处理数据的限制。之后,它允许请求沿协议栈向下传递,并且允许来自DUT的数据沿协议栈向上传递。

在块1320处,设备驱动器层1240与DUT进行通信,并且设备驱动器层1240能够使用关于DUT的扇区大小的信息来计算DUT中需要访问(例如,用于读取或写入操作)的扇区的数量。

在块1322处,访问来自DUT的所确定数量的扇区的数据,并且执行比较操作以测试DUT。例如,可以从DUT读取数据或将数据写入DUT,并将该数据与预期数据进行比较以确定DUT是否正常工作。

图14描绘了根据本发明的实施例的测试支持任意扇区大小的DUT的示例性计算机实现的过程的流程图,其中,测试器处理器直接控制DUT。

在块1410处,主机控制器耦合到测试器处理器。主机控制器可以是如上所述的基于Windows的操作系统。此外,测试器处理器可以运行Linux或Linux OS的修改版本。测试器处理器被配置为与DUT直接进行通信并且直接向DUT发出命令和数据。如上所述,虽然在一个实施例中,测试器处理器可以在旁路模式下操作并且使用FPGA作为直通设备来测试DUT,但是在其他实施例中,测试器处理器可以直接连接到DUT。

在块1412处,测试器处理器向DUT生成命令(例如,读取、写入等),其中,DUT包括任意扇区大小。

响应于所读取的命令,然后,在块1414处,VSS层计算扇区大小(例如,对于此示例为524字节)并将其向下舍入到Linux块层1230所支持的最接近的数字(例如,512字节)。此外,如果用户应用层1210请求N个数据块(或N个扇区),则VSS层1220将向Linux数据块层1230请求(N+M)个块,其中,N个块中的每一个是标准大小的块(例如,512字节),并且其中,M个块将包括每个块的附加字节的数据。

在块1416处,Linux块层1230被编程为检查所请求的信息长度满足其以标准大小的块的倍数处理数据的限制,例如,在上述示例中为512个字节的倍数。因此,它允许请求沿协议栈向下传递,并且允许来自DUT的数据沿协议栈向上传递。

在块1418处,设备驱动器层1240与DUT进行通信,并且设备驱动器层1240能够使用关于DUT的扇区大小的信息来计算从DUT请求多少扇区的信息。

在块1420处,访问来自DUT的确定数量的扇区的数据,并且执行比较操作以测试DUT。例如,可以从DUT读取数据或将数据写入DUT,并将该数据与预期数据进行比较以确定DUT是否正常工作。

I.B)硬件加速器模式生成器模式(PIDA模式)

图7描绘根据本发明的实施例在硬件加速器模式生成器模式下测试DUT的示例性过程的流程图700。然而,本发明不限于流程图700所提供的描述。而是,根据本文提供的教导,对于相关领域的技术人员而言显而易见的是,其他功能流程也在本发明的范围和精神内。

将继续参考上面参考图2、图3和图4描述的示例性实施例来描述流程图700,但是方法不限于这些实施例。

现在参考图7,示出了硬件加速的方法,其中FPGA设备共享数据生成功能以便减轻测试器处理器304上的处理负载以及系统总线330和332上的数据负载。在硬件加速器模式生成器模式的块702处,测试器处理器304为要路由到DUT的分组生成命令和分组报头。在这种模式下,测试器过程保留发信号通知的功能。在块704处,硬件加速器块440内的算法模式生成器模块443生成要写入DUT的伪随机测试数据。逻辑块模块450包括用于路由所生成的数据并将其添加到要写出到DUT的分组的功能。

该模式被认为是“硬件加速的”,因为与通过测试器处理器在软件中相比可通过FPGA设备的算法模式生成器在硬件中更快地完成用于生成数据的功能。另外,“每个DUT的测试器”架构允许DUT直接连接到其自己的专用的实例化FPGA测试器块,从而为DUT生成测试模式数据,如图4所示,这在测试器处理器304通过系统总线330和332将所有命令和数据提供给DUT的旁路模式下导致带宽显著增加。在FPGA设备共享数据生成功能的情况下,系统总线330和332被释放,使得可以比在旁路模式下更快的速率将命令传送到FPGA。进一步地,对于诸如需要多次测试迭代的固态驱动器的设备,具有通过实例化FPGA测试器块的专用数据路径比其中测试器处理器的资源被多个DUT共享的数据路径大大加速了测试。它还允许DUT以接近全性能运行,因为它不必等待测试器处理器为其分配处理资源。

在一个实施例中,算法模式生成器模块443可被编程为及时生成数据。APG模块可生成增量模式、伪随机模式或某种类型的恒定模式。APG模块还可具有一定的选通能力以生成具有条纹、对角条纹或交替模式的测试模式。在一个实施例中,APG模块可使用有限状态机、计数器或线性反馈移位寄存器等生成测试模式。

在一些实施方式中,可以给APG模块提供起始种子作为初始值以生成更复杂的随机模式。如上所述,例如,使用扇区号作为种子,APG模块将生成任何长度(例如,非标准扇区大小的长度)的可再现序列。当需要回读数据时,可以再次重新生成数据(使用扇区地址作为种子),使得可将其与从DUT回读的数据相比较,以便确保DUT的完整性。

在步骤706处,实例化FPGA块410与下游端口480进行通信以根据由测试器处理器生成的命令和分组报头将测试模式数据路由到DUT。在步骤708处,实例化FPGA块410与下游端口进行通信以根据由测试器处理器生成的命令从DUT读取测试模式数据。在块710处,硬件加速器块440的比较器模块446然后用于将所读取的数据与写入DUT的数据进行比较。APG模块443被设计为使得比较器模块能够利用用于生成伪随机数据的相同参数而对其执行读取操作并且接收在块704处被写入DUT的相同数据。APG模块443及时重新生成被写入DUT的数据并将其传送到比较器模块446。在块712处,任何失配由存储器控制模块444记录在存储器模块420上或者由实例化FPGA块传送到测试器处理器。接收到错误日志之后,在块714处,测试器处理器随后将失配标记给系统控制器。

I.C)硬件加速器存储器模式

图8描绘根据本发明的实施例在硬件加速器存储器模式下测试DUT的示例性过程的流程图800。然而,本发明不限于流程图800所提供的描述。而是,根据本文提供的教导,对于相关领域的技术人员而言显而易见的是,其他功能流程也在本发明的范围和精神内。

将继续参考上面参考图2、图3和图4描述的示例性实施例来描述流程图800,但是方法不限于这些实施例。

现在参考图8,示出了硬件加速的方法,其中FPGA设备共享数据生成功能以便减轻测试器处理器304上的处理负载以及系统总线330和332上的数据负载。与硬件加速器模式生成器模式相比较,在硬件加速器存储器模式下,实例化FPGA测试器块访问本地存储器模块420以获取要写入DUT的数据,而不使用APG模块443。

在硬件加速器模式存储器模式的块800处,测试器处理器304为要路由到DUT的分组生成命令和分组报头。测试器过程保留用于在这种模式下发信号通知的功能性。在块802处,测试器处理器用要写出到DUT的测试模式来初始化实例化FPGA测试器块410的本地存储器模块420。硬件加速器存储器模式的一个优点是与由APG模块443在硬件加速器模式生成器模式下生成的伪随机数据相反,由测试器处理器生成的测试模式可以构成真实随机数据。测试器处理器和实例化FPGA测试器块都具有对本地存储器模块420的读取和写入访问。然而,测试器处理器仅在初始设置期间访问存储器模块420。在加速器模式期间,测试器处理器不访问存储器模块,因为测试器处理器304上的附加处理负载以及系统总线330和332上的附加数据负载显著减慢了加速度。

在块804处,实例化FPGA测试器块从存储器模块420读取要路由到DUT的测试模式数据。因为存储器模块420专用于FPGA测试器块或者与仅一个其他FPGA测试器块共享,所以存在位于两者之间产生快速读取操作的高带宽连接。逻辑块模块450包括用于路由所生成的数据并将其添加到要写出到DUT的分组的功能。

在将数据添加到分组之后,在块806处,实例化FPGA测试器块与下游端口480进行通信以根据由测试器处理器生成的命令和分组报头将测试模式数据路由到DUT。在块808处,实例化FPGA块410与下游端口进行通信以根据由测试器处理器生成的命令从DUT读取测试模式数据。在块810处,硬件加速器块440的比较器模块446然后用于将所读取的数据与写入DUT的数据相比较。在块812处,任何失配被记录在存储器模块420上或者由实例化FPGA块传送到测试器处理器。在接收到错误日志之后,在814处,测试器处理器随后将失配标记给系统控制器。

I.D)硬件加速器分组构建器模式(FA模式)

图9描绘根据本发明的实施例在硬件加速器分组构建器模式下测试DUT的示例性过程的流程图900。然而,本发明不限于通过流程图900提供的描述。而是,根据本文提供的教导,对于相关领域的技术人员而言显而易见的是,其他功能流程也在本发明的范围和精神内。

将继续参考上面参考图2、图3和图4描述的示例性实施例来描述流程图900,但是方法不限于那些实施例。

现在参考图9,示出了硬件加速的方法,其中FPGA设备共享数据和命令生成功能性以便减轻测试器处理器304上的处理负载以及系统总线330和332上的数据负载。这种模式也被称为“全加速”(FA)模式,因为用于运行设备测试的大多数控制被转移到FPGA设备并且测试器处理器304仅保留用于对除读取和写入及比较以外的命令的控制。

在硬件加速器分组构建器模式的块902处,测试器处理器304生成要传送到实例化FPGA块410以生成它自己的分组的命令。测试器处理器在这种模式下仅保留用于非读取/写入/比较命令的功能。用于诸如读取、写入和比较操作的命令的功能被输送到实例化FPGA块。在块904处,实例化FPGA测试器块的分组构建器模块445构建要传送到DUT的具有报头和命令信息的分组。这些分组至少包括命令类型、设备的块地址和测试模式数据。

在块906处,硬件加速器块440内的算法模式生成器模块443生成要写入DUT的伪随机测试数据。逻辑块模块450包括用于路由由实例化FPGA块生成的数据和命令并将它们合并到要写出到DUT的分组中的功能。

在块908处,实例化FPGA测试器块与下游端口480进行通信以将测试模式数据路由到DUT。在步骤910处,实例化FPGA块410与下游端口进行通信以从DUT读取测试模式数据。然后,在块912处,硬件加速器块440的比较器模块446用于将所读取的数据与写入到DUT的数据相比较。在块916处,任何失配被记录在存储器模块420上或者由实例化FPGA块传送到测试器处理器。在接收到错误日志之后,在916处,测试器处理器随后将失配标记给系统控制器。

出于说明的目的,已参考具体实施例描述了前面的描述。然而,以上说明性讨论不旨在穷举或者将本发明限于所公开的精确形式。许多修改和变化鉴于以上教导是可能的。选择和描述这些实施例以便最好地说明本发明的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本发明以及具有如可以适于设想的特定用途的各种修改的各种实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号