ICT 数字测试原理 28 - -如何在测试中使用PCF

ICT 数字测试原理 28 - -如何在测试中使用PCF



在测试中集成PCF矢量

如上所述,PCF仅指定矢量的格式;一旦格式化,这些矢量可以直接用于VCL测试。以下描述了如何将PCF矢量纳入测试中。

与PCF直接相关的VCL语句包括:

  • pcf order is(声明)
  • pcf(矢量执行)
  • use pcf order(矢量执行)
  • end pcf(矢量执行)

基本上,集成过程包括两个步骤:在测试的声明部分指定PCF引脚的顺序(pcf order is),并在矢量执行部分将矢量放入PCF块中(pcfend pcf)。

如果您的测试定义了多组PCF引脚,还必须指定哪些矢量与哪些PCF引脚集相关联(use pcf order)。

此外,如果您在Mux系统上使用定时设置,则必须在定时部分创建所需的额外定时设置。必要时,将适当的use timing set语句添加到PCF矢量块中;如果语句不在PCF矢量块中,那么这些矢量将使用默认定时设置。

虽然本章的这一部分仅讨论PCF矢量,但您也可以在同一测试中使用普通矢量。测试中并非所有引脚必须包含在PCF引脚集中;包含在内的,也可以通过普通矢量进行驱动或接收。另外,如果您在Mux系统上使用定时设置,普通矢量和PCF矢量可以使用相同的定时设置或不同的定时设置。

定义引脚顺序的具体方式取决于测试使用的是一组PCF引脚还是多组。如果有多个集合,则必须命名这些集合并指定一个默认集——默认集将由未明确与PCF引脚集关联的PCF矢量使用。如果仅定义了一组,则该集自动成为默认集。因为只有一个集,您不需要为其命名,但如果您愿意,可以命名。使用PCF的测试必须至少定义一组PCF引脚。

定义单组PCF引脚

pcf order is(声明)

当执行VCL测试时,PCF矢量将状态驱动至预定义的一个或多个PCF引脚集,并从其中接收状态。在测试的声明部分,pcf order is语句指定哪些引脚组包含在PCF引脚集中。当执行一个PCF矢量时,其状态从左到右应用于PCF集中按照分配顺序排列的引脚。每组矢量必须与一组PCF引脚相关联。

使用某一个PCF引脚集的PCF矢量必须长度相同,并且必须包含该集中声明的每个PCF引脚的一个状态。在整个VCL测试中,引脚/状态顺序保持不变。

示例3-10展示了如何在测试中分配PCF引脚,该测试只有一组PCF引脚。在这种情况下,两组引脚(P_in和P_out)被包含在集中。

示例3-10

pcf order is语句示例

! 在声明部分

     . . .

  assign Data_Strobe to nodes "U8-11"

  assign P_in to nodes "U17-14", "U17-18", "U17-16" 

  assign P_in to nodes "U17-7", "U17-8", "U17-9"

  assign P_out to nodes "U21-2", "U21-4", "U21-8", "U21-9"

     . . .

  outputs P_out 

  inputs Data_Strobe, P_in 

     . . .

  pcf order is P_in, P_out 

     !

     ! PCF引脚的顺序为:

     ! U17的引脚14, 18, 16, 7, 8, 9和U21的引脚2, 4, 8, 9

     . . .

注意,并非所有的引脚组都必须包含在PCF引脚集内。那些不在集中的,在PCF矢量执行时,会被设置为其默认状态。

矢量中的状态按照从左到右的顺序分配给pcf order is语句中指定组中的引脚;该语句中组的顺序同样很重要。

假设要应用矢量011001HHLH;从矢量中的状态,或者从上面的assign语句可以看出,例子中的前6个引脚是输入,接下来的4个是输出。状态将被分配如下:

  • U17引脚14, 18, 16, 7, 8, 9具有状态:011001

  • U21引脚2, 4, 8, 9具有状态:HHLH

该VCL测试中的每个PCF矢量都将以相同的顺序应用于相同的引脚。

可以使用多个pcf order is语句来定义相同的PCF引脚集。语句是增量式的,按照它们在测试中出现的顺序。例如:

pcf order is P_in
pcf order is P_Out

等同于:

pcf order is P_in, P_Out

PCF引脚(及其后续的矢量)不需要按特定顺序排列;然而,按照某种约定排列引脚可以提高矢量的可读性。例如,本章使用的一个约定是,首先是所有输入引脚,然后是所有双向引脚,最后是所有输出引脚。

您应注意到,PCF组中声明的引脚仍然可以在测试中被标准矢量引用。当执行标准矢量时,未被引用的PCF引脚会被设置为其默认状态。

定义多个PCF引脚集

如果VCL测试需要多个PCF引脚集,则这些集必须命名。其他语句可以通过名称引用这些集。例如,以下语句将引脚组分配给三个PCF引脚集,分别命名为Inputs、Outputs和All。其中All被声明为默认集。注意,任何一个引脚组可以属于多个集合。

示例 3-11

! 在声明部分

     . . .

  assign In to nodes "A", "B", "C", "D"
  assign Bidirs to nodes "E", "F"
  assign Out to nodes "G", "H", "I", "J"

     . . .

  inputs In
  outputs Out
  bidirectional Bidirs

     . . .
  pcf order Inputs is In, Bidirs
  pcf order Outputs is Bidirs, Out
  pcf order default All is In, Bidirs, Out
     . . .

! 在矢量执行部分

        . . .
     use pcf order Inputs
        . . .

单组PCF引脚的PCF块

PCF矢量必须位于称为PCF块的块中;这些块必须位于测试的矢量执行部分。PCF块可以是任意长度,并由以下两个语句界定:

  • pcf
  • end pcf

除了以下语句外,块中只能使用PCF矢量:

  • include
  • use pcf order
  • warning
  • !(注释)

使用PCF矢量的VCL测试可以包含一个或多个PCF块,以及普通矢量定义和执行语句。PCF块必须位于测试的矢量执行部分的数字单元内(参见unit语句)。一个单元可以包含任意数量的PCF块,并且可以根据测试的需要包含普通矢量执行语句,顺序不受限制。

PCF矢量不同于普通矢量,因为普通矢量是在测试的矢量定义部分定义的,但由矢量执行部分的语句执行。PCF矢量位于矢量执行部分,它们结合了定义和执行功能。这些矢量将在测试中遇到的地方立即执行。(请注意,PCF矢量和普通矢量仅在VCL源文件中有区别;一旦文件编译完成,就无法区分这两种矢量。)

最简单的PCF块形式是由一系列矢量组成,这些矢量由pcfend pcf语句界定。以下是一个PCF块的示例。此示例对应于一个只有一个PCF引脚集的测试,其中包含十个引脚。由于只有一个PCF引脚集,因此在块中无需引用该集。

在示例中,每行构成一个矢量:每个矢量是一系列用引号括起来的引脚状态。注意,该块中的矢量与前面示例中的矢量相同——参见双向引脚方向的改变。

示例 3-12

! 在声明部分

     . . .

  pcf order is In, Bidirs, Out

     . . .

! 在矢量执行部分

     . . .

  unit "PCF blocks"

     pcf 

        "0000 01 HHHH" 

        "0111 HL LLHL" 

        "00.. .. ..LL" 

        "1ZZ0 00 HLXX" 

     end pcf

     . . .

  end unit 

该块包含四个矢量,每个矢量有十个引脚状态。在这个例子中,前四列代表驱动器(输入);接下来的两列是双向引脚;最后四列代表输出(接收器)。

一个PCF块可以包含多字符串或单字符串矢量;但是,所有使用相同PCF引脚集的矢量必须具有相同的长度(由pcf order is语句中引脚数量决定)。在该示例中,由于只有一个PCF引脚集,因此测试中的所有PCF矢量必须具有相同的长度。

包含多个PCF引脚集的PCF块

当测试中有多组PCF引脚时,需要使用use pcf order语句将矢量与不同的引脚集关联起来。示例3-13展示了使用提前定义的三个集合(Inputs、Outputs和默认集All)的矢量(请参见定义多个PCF引脚集)。

示例 3-13

使用多个PCF集合

! 在矢量执行部分

     . . . 

   pcf 

        "0001 HH LLLL"     ! 使用默认PCF顺序 ("All")

        "0111 HH LLHH"

     use pcf order Inputs

        "1010 10"

        "1111 00"

     use pcf order All

        "0001 1H LLLL"

        "0100 L0 LHLH"

     use pcf order Outputs

        "LH LLLH"

        "LH HLLH"

   end pcf 

   pcf 

        "0101 0L LHLL"     ! 使用默认PCF顺序 ("All")

        "0111 0H LLHH"

          . . .

   end pcf 

在示例中的第一个矢量块中,默认引脚集适用于前两个矢量,因为它们之前没有use pcf order语句。每个use pcf order语句适用于其后所有矢量,直到出现另一个use pcf order语句或矢量块的结束(end pcf语句)。下一个块再次使用默认引脚集,因为没有use pcf order语句。

在一个PCF矢量块中可以有一个或多个use pcf order语句。如果块中没有use pcf order语句,则块中的所有矢量使用默认PCF引脚集。

在PCF矢量中使用定时设置(Mux系统)

如果在测试中使用定时设置,那么它们必须用于所有矢量,包括PCF矢量。定时设置将决定矢量的驱动和接收时间,就像它们对普通矢量所做的一样(参见定时设置(Mux系统))。

PCF块中的use timing set语句指定将用于其后所有矢量的定时设置,直到块的结束或指定新的定时设置为止。未被use timing set语句引导的PCF矢量集将使用默认定时设置(除非未使用定时设置)。

下一个示例展示了一个PCF块,其中前两个矢量使用默认定时设置,接下来的三个矢量使用名为Drive_receive的定时设置,最后两个矢量使用名为Read_Write的定时设置。用于PCF矢量的定时设置和普通矢量的定时设置没有区别(如果需要,两个类型的矢量可以使用相同的定时设置),因此本例中未显示定时设置本身。

示例 3-14

! 在矢量执行部分

  . . .

pcf

    ! 使用默认定时设置

      "110000LLHH"

      "111101LHHL"

    ! 第一个定时设置

  use timing set Drive_receive

      "101011LLLX"

      "001100HHHH"

      "011100XHHH"

    ! 第二个定时设置

  use timing set Read_Write

      "111101HHLL"

      "101010HLHL"

end pcf

包含PCF矢量

include语句允许将非常大的可执行测试分割成多个部分,并将这些部分保存在单独的文件中(参见包含文件)。然后在编译时将这些文件合并在一起。这些文件可以包含任意连续的VCL语句或PCF矢量,只要在将这些文件合并到一个测试中时能够保持逻辑一致即可。

include语句可以在VCL测试中的任何位置使用,以便在测试中的该位置包含存储在另一个文件中的VCL语句。所包含文件中的语句不会被合并到测试源文件中;相反,当测试被编译时,包含文件中语句的目标代码将被合并到测试的目标代码中,并存储在测试的目标文件中。所有语句,无论是测试源文件中的还是包含文件中的,都将出现在编译器生成的测试清单中(假设指定了编译器的列表选项)。

在示例3-15中,一个包含一百个PCF矢量的文件被包含在功能测试中的一个PCF块中。请注意,要包含的文件必须与当前文件位于同一目录中。

示例 3-15

将“include”语句与PCF一起使用的示例

! 在矢量执行部分

     . . .

  pcf 

     ! 矢量# 232 

     "010101011111XXXXXHH" 

     ! 矢量# 233 到 332 

     include "centi_pattern" 

     ! 矢量# 333 

     "111000111001LLHHHHL" 

  end pcf 

     . . .

当您将PCF模式放置在包含文件中时,可以在任何位置中断模式集,任何PCF块中的地方都可以,只要不拆分一个单独的矢量即可。

PCF矢量与CRC(压缩块)

与普通矢量不同,PCF矢量无法使用compress关键字压缩单个矢量。因此,如果您想要压缩PCF矢量,必须将包含它们的PCF块放置在压缩块内。压缩语句(compressend compress)不能在PCF块内使用。只有需要压缩的PCF块才需要放在压缩块中。

有关更多信息,请参阅压缩块。

重复PCF块

在VCL测试中,您可以有任意数量的PCF块,并且可以多次执行单个块。实现这一点的一种方法是将块放入一个循环中。然而,循环和其他程序结构不能在PCF块内部使用。例如,下面的块将被执行45次:

! 在矢量执行部分

     . . .

  repeat 45 times 

     pcf 

        "101111101XXXXXXXX"

        "000110000XXXXXXXX" 

     end pcf 

  end repeat 

     . . .

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值