热度 2| |||
DFT引出了Scan technique
首先DFT的目的是利用辅助性设计对芯片的physical defects进行检测,方法是通过patterns来对physical defects对应的 fault model进行求解。而在复杂的电路中很难根据输入输出的关系来推断电路中的defects 位置。插入扫描链可以更好地观测和控制电路中的各个时序节点,从而通过扫描链更快速方便地实现对电路中的defects 进行检测(可以理解为将一个大的时序电路化简为很多个小的组合电路来求解)。
Scan technique的原理及过程
1.标准单元替换
针对这个设计,DFF+ /DFF- 分别代表上升沿触发和下降沿触发的D触发器,如果在插扫描链的过程中要将他们连成一条链,该怎么办?会是如下的哪种状况呢?
正沿在前 负沿在后
负沿在前 正沿在后
根据DFT compiler 的结果应该是 负沿在前 正沿在后,可以进行以下分析:
假如我们想将 0101 从SI移入SO,两种情况会出现什么情况:
正沿在前 负沿在后
这种方案最终导致SF+2 和SF-1的值始终不变,所以不行,
负沿在前 正沿在后
这种方案比较合理。
2. 多时钟域原理如上图所示,而时钟之间的关系大致可以分为以下两种:
①
分析方法和上面正沿负沿一样,就不再画图了。
实验环境1:该环境就是用来学习的。
工具:synopsys DC 2016.03,集成DFT compiler
对AES-128加密电路进行了扫描链插入,网表由dc综合生成。工艺库smic180
对应的源文件和工程,tcl命令,软件之类的需要可私。
环境2:用于FPGA上使用(我用来故障攻击的),网表由synopsys synplify pro 转化。
扫描链由自己用python写的脚本插入,包括向量的生成。
后面会开源对应的控制电路和脚本。