ICT 数字测试原理 27 - -PCF(Pattern Capture Format) (模式捕获格式)

ICT 数字测试原理 27 - -PCF(Pattern Capture Format) (模式捕获格式)



PCF(Pattern Capture Format) (模式捕获格式)

PCF提供了一种使测试系统能够接收从CAE系统和模拟器下载的测试模式。由于PCF类似于真值表,因此将测试数据转换为这种格式很容易。根据您的翻译软件所在的位置,数据可以在翻译之前或之后发送到测试系统。


将测试数据翻译为通用格式

在CAE系统或模拟器上开发的测试数据几乎肯定会以测试系统不识别的格式存在。在测试系统可以使用这些数据之前,必须将其转换为测试系统能够识别的格式,即PCF。

您可能需要一个(与系统相关的)后处理器从测试文件中提取所需的数据。转换数据到PCF的翻译器可以方便地位于您的CAE系统或测试系统上。在翻译前或翻译后发送到测试系统的任何数据必须是ASCII格式,并且不能包含嵌入代码。将数据存储在文本文件中(在后续过程中您将把这些文件转换为数字文件)。由于PCF仅由ASCII字符串组成,没有特殊代码,您可以根据需要编辑文件以添加、删除或更改矢量,或添加其他信息。

发送模式集到测试系统

一旦模式被转换为PCF,它们可以直接并入VCL测试的源文件中。或者,模式可以保留在一个或多个单独的文件中,由编译器在测试中包含(参见包含PCF矢量)。

  1. 下载测试模式。

    a. 将测试模式存储在一个或多个文本文件中。

    b. 如果模式尚未翻译,则将其翻译为PCF。

  2. 语法检查文件。

    a. 以数字模式调用文件。

    get digital "<file name>"
    

    b. 如有必要,编辑文件并重新保存。

  3. 将模式并入测试。

    a. 在编译测试之前,将模式文件直接合并到VCL源文件中;或者,

    b. 在VCL源文件中适当的位置插入一个包含语句,以便在编译测试时将模式文件中的数据合并到目标代码中。

如果模式存在于多个文件中,则每个文件都必须有一个包含语句。

在PCF中定义测试模式

本节介绍了PCF格式;下一节“将PCF矢量集成到测试中”将解释如何在VCL测试中使用PCF模式。

简单来说,一个矢量由两类状态组成:驱动状态和接收状态。驱动状态是要并行发送到被测电路输入端的状态(位)。接收状态定义了预期的响应;也就是说,测试系统期望从电路的输出端并行接收到的状态集合,以响应该矢量的驱动状态。

一个模式集由一系列矢量组成,按照它们在集合中出现的顺序应用于电路。然而,模式集中通常包括循环和分支指令,以改变矢量的执行顺序。集合中还可以包含时间信息,例如驱动和接收脉冲之间的延迟时间。PCF仅定义矢量的格式;任何其他与测试相关的数据或指令可以作为注释包含在PCF文件中,或者,如果翻译器程序有能力,可以作为VCL语句包含。或者,您可以在合并矢量时手动将这些语句添加到VCL测试中。

PCF模式集示例

一个PCF矢量由一系列字符组成,每个字符代表一个节点(引脚)的状态。不同的字符用于区分驱动器和接收器的状态。例如,驱动器的1与接收器的H(高)相同(更多信息请参考下述规则)。点(.)用于重复前一个矢量的状态。

示例3-9显示了一个简单的模式集,由四个PCF矢量组成——每个矢量都是引号内的一串字符。注释用来显示矢量中每个位位置(列)上的引脚类型。

示例 3-9
简单的PCF矢量集

! D = 驱动器; B = 双向; R = 接收器
!   DDDDBBRRRR 
!   ----------
   "000001HHHH" 
   "0111HLLLHL" 
   "00......LL"   ! 点表示"重复上一行的状态"
                  ! - 等同于 "0011HLLLLL"
   "1ZZ000HLXX" 

在该示例中,每个矢量占一行,包含十个引脚状态。根据使用的字符可以确定,前四个引脚是驱动引脚。接下来的两个引脚是双向的(在矢量1和4中是驱动器;在矢量2和3中是接收器)。最后四个引脚是接收引脚。PCF引脚可以按任意顺序声明,但如果按某种逻辑顺序分组,就像这里一样,可以帮助您阅读测试。

在测试执行过程中,PCF矢量按照它们在测试中定义的顺序执行。它们的行为像普通矢量,驱动和接收时间由矢量周期和接收延迟语句决定,除非使用定时设置(仅在Mux系统上),这时由定时设置来决定时间。

PCF矢量的适用规则

以下是定义PCF矢量格式的规则参考列表。

  • 可以将PCF矢量应用于驱动器、接收器和双向引脚,但不能用于格式化引脚。测试中所有的合格引脚不一定都必须由PCF矢量驱动。测试可以使用普通的VCL矢量、PCF矢量或两者兼有。

  • 在Mux系统中,如果使用定时设置,那么驱动矢量和接收矢量语句控制PCF矢量以及普通的VCL矢量。

  • 在矢量中出现的字符用于表示节点状态;不能使用其他字符。字母可以是大写或小写。空格被忽略,因此可以放在任何地方以提高可读性。

表 3-4
PCF矢量状态

驱动状态接收状态
0 = 低L (l) = 低
1 = 高H (h) = 高
Z (z) = 高阻态X (x) = 不关心
. (句号) = 见下文. (句号) = 见下文

句号重复前一个矢量中相同引脚的绝对状态。在PCF块的第一个矢量中或在use pcf order语句之后立即的矢量中不能使用句号。

对于双向节点,PCF矢量中使用的字符类型表示该矢量节点将具有的方向(驱动或接收):

  • 如果使用0、1或Z,该节点将被矢量驱动;
  • 如果使用L、H或X,该节点将被接收;
  • 句号重复之前的状态和方向;在测试期间,每次其字符类型改变时,双向节点会自动改变方向。

PCF状态始终为二进制,并且不受八进制或十六进制格式语句的影响。

  • 一个或多个PCF引脚集可以在VCL测试中定义;其中之一且只有一个必须指定为默认集。如果需要,各个集可以具有不同的长度(集中的引脚数量)。任何一组引脚可以包含在不止一个PCF引脚集中。(PCF引脚集由pcf order is语句定义,本章后面将描述。)

  • 当执行PCF矢量时,不包含在PCF引脚集中的引脚组会置于其默认状态。

  • 每个PCF矢量的长度必须与它所使用的PCF引脚集的长度匹配。也就是说,矢量中必须只有与集合中的PCF引脚相同数量的状态。

  • 矢量由一个或多个字符串定义。每个字符串可以包含上述任意字符。字符串必须用引号引起来。

  • 每个字符串必须单独占一行(可以后跟注释)。

  • 定义一个矢量的字符串可以是任何长度。但是,它们合在一起必须包含与使用该矢量的PCF引脚集中的引脚数量完全相同的状态。此外,状态必须按正确的顺序排列。

  • 不需要特殊字符来区分一个矢量的第一个字符串与前一个矢量的最后一个字符串——编译器知道何时开始一个新矢量,因为它知道每个矢量的长度。

  • 任何插入在PCF矢量集中的VCL语句必须位于矢量之间;它们不能插在定义同一个矢量的两个字符串之间。注释可以插在任何字符串之间。

多字符串矢量

如上述规则所述,一个矢量可以由一个或多个字符串定义。在遵循规则的前提下,字符串可以按任意方式拆分。下面的第一个示例展示了两个矢量,每个矢量用其自身的字符串定义。第二个示例展示了相同的两个矢量,字符串被任意拆分。但是请注意,每个矢量由若干完整的字符串组成,每个矢量具有正确的状态数量,并且状态的顺序相同。如示例2所示,长矢量可以被定义在多行上。

示例1:

"00110011LLHHLLHH"  ! 矢量 1
"01010101LHLHLHLH"  ! 矢量 2

示例2:

"0011"
"0011"
"LLHHL"
"LHH"         ! 矢量 1 结束
"010"
"10101LH"
"LHLHLH"      ! 矢量 2 结束

矢量中的字符串可以是任意长度的,因为数字编译器可以根据pcf order is语句得知矢量的长度。为了生成长矢量,编译器简单地连接字符串直到读取到所需数量的状态。每个矢量必须由一个完整的字符串数构成;如果矢量的最后一个字符串状态过多或在集合中的最后一个矢量情况下状态过少,都会导致错误。

实际上,如果您使用某种标准约定,例如使所有字符串长度相同,将有助于提高可读性;除非每个矢量中的最后一个字符串可能必须与其他字符串具有不同的长度。您还可以在矢量中任意位置放置空格以帮助提高可读性;编译器会忽略这些空格。

改变双向引脚的方向

在VCL中,每个设置双向引脚状态的矢量必须指定这些引脚在该矢量中是驱动器还是接收器;可以使用drivereceive语句来达到这个目的。这些语句不用于PCF矢量。在PCF中,方向的变化是自动的,并且基于用于指示双向引脚状态的字符类型(参见PCF矢量的适用规则)。

PCF对于驱动状态和接收状态使用不同类型的字符;这使得测试编译器能够确定何时驱动双向引脚以及何时接收双向引脚。在测试期间,每当双向引脚的状态用不同类型的字符表示时,其方向会自动改变。

在以下PCF块示例中,第五和第六列的引脚是双向的。在第一个矢量中它们用作驱动器,在第二和第三个中用作接收器,在第四个矢量中再次用作驱动器。示例中在矢量中使用了空格以增强可读性。

"0000 01 HHHH" 

"0111 HL LLHL" 

"00.. .. ..LL" 

"1ZZ0 00 HLXX" 

请注意,单个双向引脚的方向可以切换。(这与普通矢量的操作不同,在普通矢量中,引脚组的方向必须同时改变——参见drivereceive语句。)

只有双向引脚的字符类型可以更改。声明为固定输入或输出的引脚必须始终接收适当的字符类型;否则,将发生编译错误。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值