边界扫描测试原理 12 -- BSDL 6 INTEST 描述
边界扫描测试原理 12 – BSDL 6 INTEST 描述
文章目录
- 边界扫描测试原理 12 -- BSDL 6 INTEST 描述
- INTEST 描述
- 用户扩展BSDL
INTEST 描述
BSDL 描述的这一部分旨在描述:
-
当选择 INTEST 指令时,如何将测试模式应用于组件(组件时钟脉冲的来源以及测试逻辑必须保持在 Run-Test/Idle 控制器状态的时间,以允许执行每个应用的测试)。
-
在选择 INTEST 指令时组件的外部行为。
请注意,这里并未指定测试模式本身,假设通过其他方法提供。对于 INTEST,持续时间不是整个测试的持续时间(如 RUNBIST 中的情况),而是应用单个向量所需的时间。通过边界扫描寄存器应用每个向量时,IEEE 允许设备执行一个可能需要几个时钟周期才能完成的单步操作。除此之外, 的解释与 RUNBIST_EXECUTION 中相同。
INTEST 描述使用以下格式:
示例 2-35
INTEST 描述语法
<intest description> ::=attribute INTEST_EXECUTION of <组件名称>: entity is "<intest 执行序列>";<intest 执行序列> ::= <wait spec> , <pin spec>
示例 2-36
INTEST 描述示例 #1
attribute INTEST_EXECUTION of IC1: entity is"Wait_Duration (1.0e-3)," &"Observing HIGHZ At_Pins";
在示例 2-36 中, 中的
示例 2-37
INTEST 描述示例 #2
attribute INTEST_EXECUTION of IC3: entity is"Wait_Duration (CLK 100, SYSK 200)," &"Observing BOUNDARY At_Pins";
在示例 2-37 中, 被解释为 CLK 和 SYSCK 分别接收 100 和 200 个时钟周期所需的时间。此外,注意引脚的状态由边界扫描寄存器中保存的数据控制。
Wait_Duration 语句中指定的端口必须:
-
具有 TAP_SCAN_CLOCK 属性,或者
-
在 BOUNDARY_REGISTER 属性的 元素中具有 值 CLOCK。
如果 语句出现在 BSDL 描述中,INTEST 必须是 的 中某个 元素的值。
给定的 值不能在 元素中多次出现。
INSTRUCTION_OPCODE 表中的 INTEST 的存在并不要求在 BSDL 描述中指定 。
用户扩展BSDL
可选的BSDL扩展提供了一种在不失去与BSDL主流定义兼容性的情况下,满足专有需求的途径。VHDL标准包STD_1149_1_2001定义了一个VHDL子类型BSDL_EXTENSION,它允许用户将外部属性定义为BSDL扩展。这些扩展将被BSDL解析器忽略。 BSDL扩展必须出现在实体描述的最后部分,紧挨着(可选的)DESIGN_WARNING之前。这样,它们可以引用之前定义的任何数据项。
用户扩展使用以下格式:
示例 2-38
用户扩展语法
<BSDL 扩展> ::= <BSDL 扩展项> { <BSDL 扩展项> }<BSDL 扩展项> ::= <扩展声明> | <扩展定义><扩展声明> ::= attribute <扩展名称> : BSDL_EXTENSION;<扩展定义> ::= attribute <扩展名称> of <组件名称> :entity is <扩展参数字符串>;<扩展名称> ::= <实体定义名称> | <VHDL包定义名称><实体定义名称> ::= <VHDL 标识符><扩展参数字符串> ::= <字符串>
<扩展定义>必须出现在相应的<扩展声明>之后。<扩展声明>可以出现在描述本身或用户提供的VHDL包中。如果描述中存在多个BSDL扩展,则可以以任何方式混合使用,只要属性的定义在定义该属性之前。允许在用户提供的VHDL包中定义BSDL扩展,从而实现扩展的全局定义。
示例2-39首先给出一个用户提供的VHDL包,其中包含一个将由实体示例引用的BSDL扩展。
示例 2-39
用户扩展示例 #1
Package Global_extension is -- BSDL扩展包-- 仅定义扩展,不定义边界单元
use STD_1149_1_2001.all;-- 延迟常量声明将在这里attribute First_extension : BSDL_EXTENSION; -- 在此声明BSDL扩展attribute Second_extension : BSDL_EXTENSION;attribute Third_extension : BSDL_EXTENSION;end Global_extension;package body Global_extension is -- 延迟常量定义将在这里end Global_extension;
示例2-40显示了一个使用全局扩展以及在实体中定义的本地扩展的实体。
示例 2-40
用户扩展示例 #2
entity example isgeneric (PHYSICAL_PIN_MAP : string := "DW_PACKAGE");port (CLK:in bit; Q:out bit_vector(1 to 8); D:in bit_vector(1 to 8);GND, VCC:linkage bit; OC_NEG:in bit; TDO:out bit; TMS, TDI, TCK:in bit);use STD_1149_1_2001.all;use Global_extension.all; -- 获取Global扩展的定义..许多已删除的行...attribute Local_extension1 : BSDL_extension; -- 声明本地属性名称attribute Local_extension2 : BSDL_extension -- 声明本地属性名称-- 现在,定义包Global_Extension中声明的一些专有扩展attribute First_extension of example:entity is -- 定义属性" String of data " &" in proprietary form. " ;attribute Second_extension of example:entity is " More data, etc. ";attribute Local_extension1 of example:entity is "Finally defined ";-- 本地定义-- 可选设计警告仍位于这里 --end example;
并非在前述示例中定义了所有声明的扩展(如Third_extension)。
出现在<扩展定义>中<扩展名称>元素值中的任何<VHDL标识符>必须作为<扩展名称>元素的值出现在早于给定<扩展定义>的BSDL描述或给定VHDL包中的<扩展声明>中。如果<扩展声明>出现在VHDL包中,则BSDL描述中相应<扩展定义>的出现必须被视为在给定<扩展声明>之后出现。
在为<扩展名称>元素创建名称时,请注意确保名称在其他组织中也在创建扩展的情况下具有唯一性。
