90年代国际上出现的SOC概念,以系统为中心、基于ip模块多层次、高度复用的设计思想受到普遍重视和广泛应用 [1,2]。SOC的高集成度和复杂度使得SOC测试面临挑战,传统的基于整个电路的测试方法不再适用。对于IP模块和SOC而言,在电路设计向可复用这一目标发展的同时,测试中的复用也变得愈加重要,成为解决SOC测试的关键 [3],也成为目前该领域研究的焦点。本文在分析SOC与SOB(system on board)本质区别的基础上,阐明复用对于SOC测试的重要性,对现有主要几类基于复用思想的SOC测试进行分析。
① 测试总线。ARM公司发布的32位AMBA(advanced microcontroller bus architecture)总线结构,通过解决每个IP模块的测试访问问题来最终完成整个SOC的测试,但其兼容性、测试费用及测试时间上有其局限性 [9]。Duel Technologies公司也作了类似的工作,提出了“测试总线”,连接每个IP模块,虽然优化了测试所占用的芯片面积,但无法同时将多个IP模块连到总线上进行测试。
② 端口访问。Intel公司提出将每个IP模块的接口端通过多路选择器接到芯片的引脚上直接进行访问[10]。但当IP模块增加时,对多路选择器的控制就会过于复杂,且该方法对IP的端口数有明确的限制。
③ 模块的透明模型。文献[11]提出一种基于IP模块透明模型的方法,它要求每个IP模块都有一种工作模式——透明模式。当对SOC中某一个IP模块进行测试时,其它模块均处于透明模式,从而为该模块提供测试访问通路。这种方案较前两种方案减少了硬件开销,但对IP模块的设计有特殊要求,且数据传输通道多位串行会导致测试时间过长。
① 宏测试。从设计出发,在自IP模块向系统集成的过程中不断将模块的测试信息进行扩展,直至芯片级。其中较为典型的是Philips公司将解决IC测试的Macro Test技术用于SOC测试[13]。其基本思路是将每个IP模块的测试信息以测试协议描述,结合整个系统的设计,识别合适的访问路径扩展到芯片级,再通过芯片级的测试协议调度每个模块的测试顺序,最终通过单独测试每个IP的方法来完成SOC测试。该方法对SOC中的IP模块及其测试信息有严格的规定。
② 层次复用。文献[13]提出了一种层次法,基本思路是针对系统进行分析,提取系统中与待测IP 模块的约束关系,使模块在约束下直接产生测试集,进而解决整个芯片系统的测试问题。该方法每次只考虑一个模块,先对每个模块产生功能约束,将约束和该模块一起综合,形成一个从芯片级可以访问的对应电路,再用商业软件对模块内部的故障生成测试。但当该技术应用到集成度很高的SOC时,模块本身测试的生成变得非常困难。如果SOC中的模块是多层次复用的,需要进一步分解成子模块,约束条件的提取变得十分繁复。为解决这个问题,文献[14]提出一种新的层次地提取可重复使用的约束方法,并在提取约束时利用综合工具剔除冗余的逻辑部分,提高了测试生成效率,使其更有效。
③ 功能复用。SOC的功能日益强大,其中许多都含有内嵌处理器和存储器。文献[16],[17]提出,在SOC内部通过内嵌处理器模块和存储器模块实现对其他IP模块的测试。具体就是首先将各IP模块的测试数据压缩并存入存储器模块,再由内嵌处理器利用这些数据,对IP模块进行测试并收集响应进行测试分析。这种方法充分利用了SOC内部资源和已有的各IP模块测试信息,可以实现芯片内部的高速测试。但测试数据处理和测试控制的复杂度都会随的SOC设计复杂度的加大而增加。