XJTAG:可测试性设计指南(二)
来源: | 作者:风标电子工程师 | 发布时间: 2025-01-22 | 9 次浏览 | 🔊 点击朗读正文 ❚❚ | 分享到:

旁路任选安装的 1149.x 兼容器件

电路板上可选安装的 JTAG 器件,务必确保存在一个通常为 0Ω 电阻的链路。当该设备未安装时,此链路能维持 TAP 数据链的完整性。若不这么做,扫描链中数据路径一旦断裂,会阻碍链中其他任何器件的测试。要是某个器件存在未被安装的可能性,不妨考虑将其置于单独的扫描链上。



在 1149.x 链中包括可选的附加板

使用子板时,借助子板的接口把子板上的器件接入 1149.x 链。若子板为可选配件,在未安装子板的情况下,需运用电路板检测逻辑绕过子板上的 TAP 数据路径,具体可参考相关图示。



如果 ASIC 的设计或定制包括 1149.x 兼容

要是设计中包含 ASIC 或其他自定义设计的硅片,应考虑让自定义设备具备 1149.x 兼容性,否则可能面临不可测试的问题。


从 1149.x 链访问可编程器件

对于系统编程所需的设备,比如闪存或 EEPROM,要保证可编程器件的所有必要引脚能通过 JTAG 器件访问。基于边界扫描的在系统编程时长,与扫描链的长度以及 TCK 频率相关。想要实现最短的边界扫描编程时间,就需要尽可能提高 TCK 时钟频率,同时缩短扫描链。最好能确保 JTAG 器件的所有必需节点都可访问,XJTAG 会自动优化编程流程,将无需特定扫描的 JTAG 器件设为 CLAMP 模式,使每个器件的数据扫描链缩短至仅一位。另外,建议避免采用地址锁存配置,因其会增加每个字节 / 字写入时的扫描次数,显著延长编程时间。



JTAG 器件环绕逻辑集群

利用 JTAG 器件环绕非 JTAG 逻辑器件集群,这样便能控制集群的所有输入,并监测集群的所有输出。尽量保证集群内有足够的访问节点,以便充分测试集群的运行状况。如有必要,可添加额外的 JTAG 连接来获取所需的集群节点。或者,将逻辑系统整合到支持边界扫描的可编程逻辑器件中,或许是更好的选择。



提供编程信号的直接访问

想要进一步优化编程时间,可以直接控制编程信号,例如写使能信号,或者掌控整个协议,像 SPI 和 IIC。把相关信号连接到电路板接口,这样就能通过 JTAG 控制器的备用 I/O 引脚进行控制,而无需借助边界扫描。这有助于缩短编程时间,因为那些频繁变化的信号,通常需要两次完整扫描才能切换,如今直接控制则不受链长和频率的影响。不过,要使用该功能,必须能够禁用这些网络上的任何边界扫描驱动。


通过接口扩展 1149.x 测试

若能将额外的可访问 1149.x 信号连接到外部接口,测试覆盖率会大幅提升。如果连接到外部 1149.x 可控的 I/O,比如 XJIO 板,直接连接到单个 1149.x 引脚的信号网的接口引脚测试,就能扩展到包括开路测试。不过,这种测试方式仅适用于标准数字信号。对于以太网和 RS485 等信号,无法进行此类测试时,应设计 I/O 端口采用回环方式。



考虑将多板作为一个单元测试

当一个单一面板由多个电路板组成时,可以考虑将电源和 TAP 信号路由至面板上的所有电路板,这样就能在分离电路板之前,同步测试所有部分。



测试模拟电路

尽管 1149.1 和 1149.6 并未明确针对模拟电路测试的功能,但通过精心设计,仍可开展许多测试。比如,利用 1149.x 兼容输出将比较器或放大器的输入状态固定,再借助这些设备已知的输出为 JTAG 器件提供输入。低成本的 DAC 和 ADC 可作为补充控制手段,通过边界扫描链上 ADC 和 DAC 器件数字侧的连接,监测模拟集群。借助少量合适的附加电路,就能执行大量模拟测试。


不要依赖于可编程上拉电阻

尽量避免使用一些处理器和 FPGA 的 I/O 焊盘中提供的可编程上拉功能,应采用外部逻辑进行操作。如果 IIC 总线上拉只能依靠可编程上拉实现,那么连接到 IIC 总线的任何设备可能无法通过边界扫描进行测试。若无法避免这种情况,可将 IIC 总线引脚设置在外部连接器上,以便在测试时添加外部上拉。


考虑使用边界扫描器件的功能

每个电路总会存在部分区域无法运用标准的 1149.x 技术进行测试,而其他部分可能需要正常速度测试。在这些情况下,可以往 JTAG 链上的器件装入程序,以此测试电路板的功能。像 CPLD 和 FPGA 这类可配置器件,可通过运行 SVF 或 STAPL 文件进行编程。对于处理器,则可借助 XJTAG 的编程语言 XJEase 的灵活性来加载配置。


使用非 1149.x 器件的测试功能

部分非 1149.x 器件具备专用的测试功能,可用于提高测试覆盖率。例如 NAND 树或生成测试模式等功能,能与无法使用边界扫描测试的器件所连接的信号以及器件功能进行交互。它们可通过控制边界扫描接口,如 SPI、IIC 和 MDIO,写入寄存器调用程序来实现。


交互测试

有些测试需要测试操作员的协助才能完成。例如,视觉设备可由操作员观察其功能并输入结果进行测试;开关可通过 JTAG 器件监控状态,由操作员进行操作驱动。其他设备,如步进电机控制器和扬声器系统,也能以类似方式进行测试。


编写非易失性存储器

XJTAG 可用于对多种器件进行编程,像串行和并行接口的 NOR 和 NAND 闪存。在测试程序中,这对于加载应用程序图像、存储配置选项、序列号、以太网 MAC 地址等非常实用。


快速闪存编程

通过边界扫描电路对闪存器件编程速度较慢,因为每次 JTAG 扫描仅能让每个信号切换一次,且每次扫描可能长达几千位。解决这一问题的方法之一是使用辅助 FPGA 或辅助处理器的编程例程。这些例程首先为 FPGA 或处理器加载控制闪存编程的引擎,然后利用 JTAG 端口将数据传送到编程引擎。


FPGA 辅助编程可借助 XJTAG XJFlash 技术实现,如此一来,闪存器件编程速度能接近理论最大值。若设计中的闪存设备未连接到 FPGA,但 FPGA 有备用引脚,将这些额外引脚连接到闪存设备,就能灵活运用 XJFlash 技术。


处理器辅助编程虽然比 XJFlash 慢,但速度仍明显快于使用边界扫描。许多处理器的调试接口采用 JTAG 作为通信协议,这类处理器可通过 JTAG 配置,利用其闪存控制器将图像编程到闪存中。