//源自微信公众号 “数字芯片实验室”
可测试性(DFT)用来确保设计最终是可以测试的。DFT在增加故障覆盖率(fault coverage)的同时也增加了面积。
影响设计可测试性的主要因素是什么?
1、设计中存在三态总线
2、由一个触发器的输出驱动另一个触发器的复位
3、设计中存在生成时钟
4、设计中存在门控时钟
5、设计中存在锁存器
芯片上片上三态总线对可测试性有什么影响,该如何处理它?
通常,芯片内不应存在三态总线,因为它们消耗更多的功耗。如果芯片上存在三态总线,应注意避免总线竞争,即同一时间在总线上驱动不同的值。总线冲突会消耗更多的功耗,进而导致芯片损坏。 在扫描测试阶段避免总线竞争的途径是控制三态缓冲器的使能,即与扫描使能信号进行“与”运算。
在正常工作模式,scan_en_n信号为逻辑“1”,允许控制信号通过。
在测试模式下,scan_en_n信号为逻辑“0”假定这些使能的控制输入来自触发器的输出。 如下图所示:
![1857c40377b81df4499b8f95a010a154.png](https://i-blog.csdnimg.cn/blog_migrate/04a26f892c9c3d8f4a299dbec348e37d.jpeg)
这些缓冲器的Verilog示例代码如下所示:
assign wire1 = (control_in1 & ~scan_en_n) ? in1 : 1’bz ;
assign wire1 = (control_in2 & ~scan_en_n) ? in2 : 1’bz ;
芯片中的一些触发器的复位由其他触发器驱动对可测试性有什么影响,该如何处理它?
通常,触发器的异步置位或复位来自模块和设计的输入引脚。有时候,不可避免地由一个触发器的输出驱动另一个触发器的异步置位/复位。在这种情况下,在扫描测试期间,如果驱动触发器获得一个测试向量,使其复位另一个触发器,则会发生功能错误。 为防止这种情况,复位信号应该和test_mode测试模式信号异或。如下图所示:
![f981ef9d441462ec790ea950bff821a0.png](https://i-blog.csdnimg.cn/blog_migrate/c9b4361a109f7d79a05ae14f9440660a.jpeg)
在正常工作模式, test_mode为1'b0。但是,在测试期间,test_mode信号为1'b1,从而使异步复位失效。
芯片中存在生成时钟对可测试性有什么影响,该如何处理它?
生成时钟由时钟分频器通过触发器或芯片中的PLL产生。
在这种情况下,需要在时钟路径中添加多路复用器,使用test_mode作为控制信号,多路复用器的输入是常规时钟和生成时钟。
![dcee58631e5e15fa853030041afc1ffb.png](https://i-blog.csdnimg.cn/blog_migrate/ebdb493ececbfe41e134079e24e6f870.jpeg)
芯片中有门控时钟对可测试性有什么影响,该如何处理它?
在某些设计中,门控时钟是不可避免的,它可以用来降低功耗。 因为时钟现在通过组合逻辑,从而无法扫描测试。
解决方法如下:
![d7c2b4a748da17446448f79026bda40e.png](https://i-blog.csdnimg.cn/blog_migrate/eb14cc6d8214bf4f7f18b3fee25f0ab4.jpeg)
![74e55821b27e0d8a9d314b635ad0f903.png](https://i-blog.csdnimg.cn/blog_migrate/5c4d26c9dc5bc2a695fc659945d8eee9.jpeg)
组合反馈逻辑对可测试性有什么影响,该如何处理它?
在任何设计的任何阶段都应该避免存在组合逻辑反馈。我们应该使用lint和综合工具定期地检查。组合逻辑反馈电路的存在会导致设计中不可预测的逻辑行为。 由于组合逻辑环的行为依赖于延迟,我们无法使用任何ATPG算法进行测试。 因此,在逻辑上应该避免组合逻辑环。
锁存器对可测试性有什么影响,该如何处理它?
为了使锁存器具有可控性,需要使能和测试模式信号进行异或。如下图
所示:
![6e3a8a6d4871a86f9e2ff68bcc3652ae.png](https://i-blog.csdnimg.cn/blog_migrate/a7878e98961d648a7f31a8034dfb2051.jpeg)