WGL扫描数据结构的常见问题

文章:John Cosley

下面是一些常见的问题和误解,当涉及到扫描的WGL文件。

扫描插入以增强测试覆盖率,减少测试图案体积在现在的测试(DFT)工具的设计中非常常见。所有主要的ATPG工具供应商(Synopsys,Cadyence和Mentor)在其产品套房中提供了这种方法。事实上,这种方法已经证明是非常有效的,以及一些其他模式压缩技术,帮助设计/测试工程师满足当今复杂设备的挑战。
对于使用这种语言作为模式表达媒介的工程师来说,在WGL文件中处理扫描的方式常常是混淆的来源。造成这种混淆的一个主要原因是WGL文件中表示的扫描数据是单元格数据,而不是移位数据。这意味着当将这些模式转换为实际的ATE测试程序时,映射必须由转换工具完成,因为实际的设备测试程序必须有移位数据。正是这种映射导致了混淆,有时甚至是错误。
让我们来看看扫描信息如何在WGL文件中表示:
•首先,有一个斯科肯块识别所有扫描细胞的名称(其中一些可以得到很长的层次结构),这里也可以有扫描细胞组定义。一个流行的供应商工具创建组,这些组对应于每个扫描链中包含的单元格。
•下一个块作为WGL中扫描结构的一部分是scanchain块。在这里,每个扫描链都指定一个名称,即扫描入引脚,然后是单元格的有序列表(按名称),后面是扫描出引脚。所有扫描链必须至少有一个扫描输入信号或一个扫描输出信号,或两者都有。单元格列表中可以包含''字符,表示它所分隔的单元格之间存在逻辑反转。<br>•最后是<b>scanstate.</b>块,它通常指定为每个扫描操作分配给扫描链(或扫描链组)中的每个单元的实际扫描数据。为每组扫描数据指定一个惟一名称,以便在每次扫描操作时调用该数据的赋值。现在,这三个块中的信息可以与文件的模式部分中的“scan”语句一起使用,在设备上执行扫描加载/卸载操作。<br>让我们更详细地看看这些。如上所述,当您分配WGL文件的scanstates部分中指定的数据时,它是单元格数据,而不是移位数据。因此,当将单元数据转换为移位数据时,必须考虑到每个单元与扫描入或扫描出引脚之间的扫描链中的任何反转。<br>例如,如果单元格在本身和输入扫描引脚之间具有2个反转,则小区数据将与该引脚的移位数据相同。如果有3个逆转,则在从单元数据转换以移位数据时,必须反转它。在输入和输出移位数据上单独应用此规则。它不仅仅是扫描中的扫描扫描的总体总数,这是重要的,它是来自扫描引脚的每个单元的倒数数量,并扫描销钉引脚。当从单元数据转换到移位数据时,这可能导致数据的奇怪映射。在以下示例中,扫描链中的字符表示单元之间的逻辑反转:</p>
       <p>[ednaol 2016jun07 ta 01fig1]“src =”<a href=https://images.contentful.com/7jb0g1eg08yi/1lln4sk3vikeewmmsuykki/d3f269b1293ab64059b1293ab64059fde35ab48be756/ednaol_2016jun07_ta_01fig1.gif“/>

扫描链由SCI Scanin引脚组成,链条中的扫描单元的有序列表(具有指示的反转)和SCO - 扫描输出引脚。加载单元数据是这些单元格中扫描静电块中指定的状态;我们希望在单元格中结束此数据。转换数据是翻译的移位数据,其将在移位后给我们所需的单元格数据。在这里,左位将首先转移到SCI。卸载单元数据是移位过程之前单元格中的状态。我们希望看到这些在SCO引脚上出来。在这里,扫描数据是左右的左转。如您所见,小区数据(如WGL文件Scanstates Block中呈现)当映射到所有ATE所需的换档数据时看起来非常不同。
以下是此换档过程的周期循环视图:

[EDNAOL 2016JUN07 TA 01Fig2]

总之,当在该示例中查找扫描阀块数据以进行扫描负载操作时,可以看到所需的小区数据11100,而用于将这些状态加载到单元中的转换的移位数据将是10011.类似于卸载处理预期在翻译后,11100的单元格状态将在SCO引脚上展示为01100。
一些常见问题
查看了使用扫描存在的大量WGL文件,存在许多常见问题/误解,似乎落入下列类别之一:

  1. 没有正确考虑扫描单元之间的逻辑反转
  2. 在不同的扫描链之间共享扫描单元
  3. 单链中具有重复的小区名称
    如上所述在讨论中所示,很容易误解细胞数据与移位数据的概念,以及如何影响WGL文件的扫描器块中存在的扫描数据的转换,以将所有ATE所需的数据移位。
    影响单元格数据和移位数据之间的结果数据映射的第二个问题是当不同的扫描链共享扫描单元格时。显然,这需要不同时使用具有共享单元格的链,但我们已经看到过这种限制没有被观察到,并且来自一个扫描状态加载的单元格数据会覆盖来自另一个扫描状态加载的单元格数据。
    当在同一扫描链中有重复的扫描单元时,上面列出的第三个问题。在扫描链上的一个案例中,例如,我们发现在链条的末尾(在最后一个小区之前),有10个细胞复制,前面是另外的10个细胞复制。但是,当您在ScanStates中指定001100110011的分配...... 001100110011第一个数据位都被分配给同一单元格;只有最后一个会坚持。目前尚不清楚为什么WGL文件在某些​​扫描链中具有这些重复的单元格:可能是使总扫描长度相等,或者因为没有总线索引的名称或其他原因。但是分配给它们的ScanState数据不会导致您通常期望的班次模式。
    其他问题我们看到,会影响scanstate数据最终被映射到数据转移相关的实践而不是扫描单元格数据直接分配给单独的细胞,而细胞群体通常指定为相反的顺序扫描链的细胞。这使得扫描状态数据的顺序看起来更像是移位顺序(最左边的位是第一个输入/输出位)。在任何情况下,当逆序组出现错误时,这会产生另一种可能的影响,因此单元格数据不会在预期的单元格中结束。
    最后,在WGL中执行扫描操作时,所有其他非扫描信号都保持在恒定状态(当然,时钟可以运行)。一个有趣的副产品是,WGL语法很难实现JTAG协议,因为JTAG协议通常需要一个非扫描信号在最后一个扫描位期间改变状态。我们所看到的绕过这一问题的尝试往往是错误的或违反WGL语义规则。
    关于作者
    John Cosley是Source III的总裁,是专注于逻辑模拟器,ATPG和ATE的创建,翻译和分析的模拟和测试数据管理工具的制造商。

留下你的评论