DFT笔记15

2.6 SCAN DESIGN RULES(scan设计规则)

一些典型的scan设计规则如下表:

*标记"avoid"表示在shift和capture整个操作过程中都要避免

*标记"avoid during shift"表示在只在shift操作过程中避免

一些重要的规则在下面小分节细讲。

2.6.1 Tristate Buses

Bus contention:总线争用的定义,两个总线驱动不同的逻辑值进入tristate bus,这会损坏芯片。

目前测试生成时可以在normal operation和capture operation情况避免总线争用,但是在shift operation时没办法保证,所以为了避免这个情况,要对tristate bus做一些修正保证只有一个驱动控制总线,举例子如下图,a图所示有3个总线驱动D1、D2、D3(可能会争用):

修正后的电路如下图b,SE = 1为shift mode时,EN1 = 1(使能D1),EN2和EN3 = 0(禁止D2和D3)(一次只允许一个驱动):

还有一个注意点,总线不能是floating的状态,因为这样它的状态是不确定的,在检测故障的时候就会带来困难,所以总线要设置上拉或下拉或者加上bus keeper(如图b),这样bus就不会floating。

2.6.2 Bidirectional I/O Ports

Bidirectional I/O ports:双向的I/O端口用来提升数据传输带宽。

在capture operation时,双向I/O会被指定成输入或者输出,不会有冲突;但是在shift operation时,会发生冲突,例子见下图:

图a,scan cell控制I/O的方向,shift operation时scan cell的值会变,所以图中的三态buffer可能处于active状态,这时候如果BO和I/O(测试机控制值)不一致,就会发生冲突。

图b经过修正,SE = 1时,为shift operation,BO为inactive,测试机驱动I/O(测试向量从测试机通过I/O传到芯片内部),这样就不会发生冲突。

在capture operation时,SE = 0,三态buffer像图a一样,都由scan cell控制,所以I/O可能是输入也可能是输出,可以灵活控制测试机。

2.6.3 Gated Clocks

Clock gating:时钟门控,通过去掉存储单元没必要的开关行为降低功耗,设计中被广泛使用。

例子如下图:

图a中,时钟要先控制EN,然后变成CEN,然后才变成GCK去控制DFF(存储单元的时钟不能直接受控于primary inputs),但是我们想让shift mode下时钟能直接控制到存储单元。

所以有了修正后的b图,在shift operation时门控时钟不作用。是用了一个或门,然后借助TM或者SE迫使CEN是1,然后控制到DFF:

  1. 如果用TM,那么TM = 1,那么就是整个scan测试过程开启过程中CEN都是1,缺点是门控时钟电路中的故障无法被检测到,造成故障覆盖率损失
  2. 如果用SE,那么SE =1,那么就是shift operation过程中CEN是1,门控时钟能被测试,故障覆盖率更高,缺点是测试生成可能更复杂

2.6.4 Derived Clocks(派生时钟)

派生时钟指的就是内部的存储单元或者时钟生成器产生的内部时钟信号。典型的有锁相环phase-locked loop (PLL)、分频器frequency divider、脉冲发生器pulse generator

因为派生时钟不是直接受控于primary inputs,所以为了测试派生时钟控制的逻辑的话,这些时钟信号在测试时需要被bypass。

例子如下图:

图a派生时钟ICK控制DFF1和DFF2。图b,CK是直接受控于primary inputs,测试时TM = 1,此时CK控制DFF1和DFF2。

2.6.5 Combinational Feedback Loops(组合逻辑反馈环)

组合逻辑的feedback loop中反相器是奇数还是偶数决定了是否会引入时序行为或者震荡。测试时没办法控制和决定环内的数据,所以引起测试生成变复杂或者故障覆盖率下降(这种组合逻辑环其实在设计的时候就是不建议的,彻底改掉它就要改RTL代码),但是例如已经不能改了,那么下图a的例子就可以修正:

当TM = 1时,图b的修改就可以打断这个环。

相关推荐
百里香酚兰19 小时前
【python学习笔记】pyttsx3库疑似只播报一次语音
笔记·python·学习
chnyi6_ya21 小时前
论文阅读笔记:VideoWeaver — 面向智能体长视频生成的技能评估与进化
论文阅读·笔记·音视频
J_yyy21 小时前
基于Reactor的文件管理服务开发笔记
c++·笔记·reactor·多线程编程·muduo
浩瀚地学1 天前
【Java基础复习】IO流(四)
java·开发语言·经验分享·笔记·学习
疯狂打码的少年1 天前
【操作系统】板块总结 + 下期预告(软件工程)
笔记·软件工程
咸甜适中1 天前
rust语言学习笔记——Tokio库(异步编程)
笔记·学习·rust·tokio
YUS云生1 天前
Python学习笔记·第29天:Git进阶——分支操作与合并冲突
笔记·python·学习
xiaoyuchidayuma1 天前
已知 ud、uq 求解三相相电压并计算调制比
笔记·学习
B8017913Y1 天前
上课记笔记写不完不会整理?2026学习笔记生成使用场景该怎么选
人工智能·笔记·学习
_muffinman1 天前
梁山派学习笔记1
笔记·学习