2.2 边界扫描寄存器描述
这是BSDL整体结构的最重要部分,它描述了边界扫描单元(BSC)的长度及每个BSC的单元号与属性。
(1)attribute BOUNDARY_LENGTH of EPM7128SL84:entity is 288;
边界扫描长度属性表示EPM7128SL84芯片共有 288个边界扫描单元。
(2)attribute BOUNDARY_REGISTER of EPM7128SL84:entity is
--num(cell, port, function, safe [ccell, disval, rstl])
"0 (BC_4, IN84, input, X)," &
"1 (BC_4, *, internal, X)," &
"2 (BC_4, *, internal, X)," &
……
"144 (BC_4, IO41, input, X)," &
"145 (BC_1, *, control, 0)," &
"146 (BC_1, IO41, output3, X, 145, 0, Z)," &
……
"279 (BC_4, IO4, input, X)," &
"280 (BC_1, *, control, 0)," &
"281 (BC_1, IO4, output3, X, 280, 0, Z)," &
……
"285 (BC_4, IN1, input, X)," &
"286 (BC_4, *, internal, X)," &
"287 (BC_4, *, internal, X)";
对边界扫描寄存器单元(BSC)属性的描述由单元号与4个或7个圆括号内的数据子段组成,这些BSC的排列顺序可以是任意的,但每个单元都必须被定义。单元号从0到287 (BOUNDARY_LENGTH-1)进行编号,0单元是最靠近TDO的单元。括号中数据子段的名称为: cell, port, function, safe [ccell, disval, rstl],后三个方括号内的可选子段只有在function子段的值为 out put3或bidir时才被定义。它们的含义如下:
● 单元子段:确定器件所使用的边界扫描单元。EPM7128SL84芯片采用的BSC类型为标准单元 BC_1与BC_4,其属性已经在VHDL组件STD_1149_1_1994中加以定义;
● 通道子段:说明与对应BSC相连的系统管脚。其名称与BSDL“logical port des cription”属性中描述的管脚逻辑名称相一致。“*”表示此BSC 为输出控制单元或内部单元;
● 功能子段:表示该BSC的主要功能。EPM7128SL84芯片BSC所涉及的功能有“input”、 “control”,“output3”和“internal”4种;
input:表示一个简单的实现输入管脚接收的 BSC;
control:表示一个进行输出使能控制,或输出驱动与双向管脚的单元方向控制的BSC;
output3:表示一个为三态输出提供数据的 BSC;
internal:表示一个用于捕获系统内部逻辑的 BSC,它不与任何系统管脚相连;
● 安全子段:当ATPG软件提供一个额外随机值时,safe子段定义了一个要装入捕获寄存器CAP 与更新寄存器UPD(如果存在的话)的值,以防止系统逻辑因为过激励信号等原因造成的错误连接。这个值可以是“0”,“1”或“X”。“X”表示“0”,“1”均可;
● 控制单元子段:说明对功能为output3或bidir的BSC进行输出使能控制的控制单元号;
● 无效值子段:为禁用对应的系统管脚,要给由ccell子段指定的控制单元赋的值;
● 无效状态子段:给出被禁用驱动器的状态。这个状态可以是高阻态(Z)、弱“1”态(weak1)或弱“0”态(weak0)[2]。
EPM7128SL84芯片的管脚与边界扫描单元如图2所示,与输入输出管脚IO41相对应的三个BSC单元号分别为144,145和146。
3 BSDL描述语言的实际应用
3.1 TAP完整性测试
指令捕获(INSTRUCTION_CAPTURE)属性提供了测试TAP完整性的一条途径。TAP完整性测试可以检测时钟TCK和模式选择TMS的输入端连接是否正确,所提供的有关信号是否正常;数据输入TDI和数据输出TDO端的连接是否正确,且输入和输出的功能是否正常;内部的指令寄存器工作是否正常;内部的边界扫描寄存器工作是否正常。TAP完整性测试是进行边界扫描其他任何测试之前建议首先进行的测试操作,以确保边界扫描链能正常工作。
TAP完整性测试的过程如图3所示。在TAP的 Shift-IR状态,指令捕获位图形已加载至指令寄存器的移位寄存器部分,直接从TDO移出数据并与各芯片的Capture位图形比较,若数据一致则TAP完整性测试通过。
3.2 芯片ID码的检测
芯片ID码是识别芯片的内建器件标识码,通过检测芯片ID码可以识别该芯片,判断芯片装配正确与否,并可进一步判断芯片的型号、生产厂家及版本号与其标识是否相符,辨别芯片的真伪。当TAP进入Test-Logic-Reset状态时,若标志寄存器存在,则被强制接入TDI与TDO之间,寄存器LSB的值为“1”,否则,旁路寄存器被接入TDI与TDO之间,寄存器的值为“0”。所以,在检测芯片标志寄存器的值时,可以由复位状态直接进入移位数据状态,输出TDO的值,并判断其第一位是否为“1”,若是,则此芯片有标准寄存器存在,可继续移出其他31位,并进行判断与显示。检测流程如图4所示。我们在对芯片EPM7128SL84进行ID标识码检测时,用逻辑分析仪采集到的TDO端的输出波形如图5所示,与BSDL描述中的ID码一致,说明器件正确。
3.3 边界扫描互连测试
我们在开发边界扫描测试软件过程中,设计制作了基于边界扫描机制的试验电路板当作诊断实验对象。其中两块EPM7128SL84芯片间的有16个互连网络,分别是两芯片的4~12管脚之间、33~41管脚之间的互连(除去7脚地线,38脚电源线)。在进行互连测试时,首先要构造一个16×16的测试矩阵,然后将此矩阵的16个列向量分别加载到芯片1的IO4~ IO12,IO33~IO41管脚(除去7脚和38脚),然后执行外部测试指令。由芯片2捕获对应管脚上的信号,形成响应向量,全部16个列向量分别加载捕获完成后,再对响应矩阵进行故障诊断 [3],如图6所示。在此测试过程中,对芯片1的IO管脚加载的向量数据必须定位到每个管脚对应的三态输出单元,即芯片1的281,278,275,269,263,260, 257,251,179,173,167,164,161,155,149,146单元;而芯片2所捕获的对应管脚上的信号,在执行采样指令之后,都被置入每个管脚对应的输入单元,即芯片2的279,276,273,267, 261,258,255,249,177,171,165,162,159,153,147,144单元。这样,从TDO输出的对应单元的数据就组成了响应矩阵,对响应矩阵按照一定的算法进行分析,便可检测出呆滞、短路、开路与桥接故障。
4 结束语
以上所述测试流程均用C++ Builder编程实现,能对基于边界扫描机制的试验电路板进行准确、可靠的测试。试验证明,在边界扫描各项测试中,对BSDL描述信息进行有效的编译提取,对测试的成功实现至关重要。但器件的BSDL描述必须严谨、确切,所以,在下一步的软件完善中,将加入BSDL 文件的数据完整性检查,以防止错误数据损坏被测对象。
本文摘自《半导体技术》