ATPG 基础

Q1. 什么是 sequential depth 向量 ?它是如何提高覆盖率的?

  • 使用FastScan,配置set_pattern_type -sequential Off | Depth控制是否产生sequential向量。
  • 设置为0或者off,工具只生成non-sequential向量。
  • 设置为1,工具生成最大depth为1的basic sequential向量。
  • depth大于或等于1,工具才会产生clock sequential patterns。depth最大可设置值为255,典型设置值为2到6。depth设置会影响memory使用和向量数目。一般而言,每增加depth数目,对覆盖率的收益越小,向量体积增加越多,memory资源使用越多。
  • sequential向量一般用于partial scan designs中,non-scan的element因为不受scan shift控制,其值可以通过多个sequential clock方式向non-scan寄存器中载入想要的值。

Q2. 有哪些手段可以减少pattern counter而不会降低测试覆盖率?

  • 各短chains的长度最好balance一致,且长度适中。
  • 增加IO chanel资源,这样在保证压缩率的情况下,scan短chains的长度就会减少,shift cycle数目减少。

Q3. 寄存器的复位端是否可以测试到,如何测试?

  • 把复位信号定义为时钟
  • 假设复位信号低有效,scan in “1”到flop中,shift过程保持reset信号为“high”
  • 此时scan chain上flops的Q值为“1”
  • 拉低scan enable,触发reset信号(拉低)(因为我们把它定义为时钟)
  • flops被复位为“0”
  • 然后strobe “0”,scan out需要观测的值
  • 如果output处移出“0”,则意味着flops的reset pin没有stuck at “1”。否则意味着flops的reset pin stuck at “1”。

      注意:测试模式下所有的flops应该是异步复位的。所有flops的reset pins必须是可控的在top(Chip) level,换言之,必须使用单独的IO控制复位信号。

        如果设计中包含大量的同步复位flops?

Q4. 既然transition-delay和path-delay都是为了覆盖transition faults,为什么我们同时需要这两种?

        transition-delay是关注于particular node上的slow-to-rise和slow-to-fall的故障;而path-delay是关注于particular path上的slow-to-rise和slow-to-fall的故障。

        transition-delay是一些制造缺陷在那个node上(more resistive node);而path-delay是一些制造缺陷分布于这条path(more resistive path)。

        假设一条path上有10个nodes,并且每个node上transition delay足够小,都不足以引起 timing违例在transition atpg测试时,但是path-delay中这些在每个node上的delay累加起来,就可能会导致不满足timing。因此就需要path-delay向量来覆盖这种情况。比如这条path每个node上slow-to-rise或者slow-to-fall,或者两者都有,而tool在建模每个node上slow-to-rise或slow-to-fall的时候只会考虑这个点的触发0->1或者1->0的转变,在downstream的observational flop上能否识别到该fault,而这个过程中,中间虽然也经过了组合逻辑,但是这些组合逻辑未必是经过了gate的slow edge(rising or falling),而path delay就会把所有的经过这些gate的沿变化遍历组合出向量。

        transition-delay类似于stuck-at atpg,只不过它是为了检测slow-to-rise和slow-to-fall nodes,而不是stuck-at-0和stuck-at-1 nodes。在一个node上的slow-to-rise故障意味着在这个node上从0到1 的 transition 不能产生正确的值在最大运行速度时。transition delay fault目标在于 single point 缺陷。

        path-delay 故障模型对于测试和刻画关键时序路径比较有用。path-delay故障测试于critical path at-speed来检测这些路径是否太慢了因为制造缺陷或者variation。

        如果transition测试我们可以做到100%,那我们就不必再去做path delay测试。

Q5. 什么是IDDQ测试?为什么需要做?

        IDDQ测试可以检测CMOS电路的某些电路故障类型,而这些故障很难或者不可能通过其他方法来检测。

        IDDQ测试使用标准功能测试向量(电路实际工作运行用例)或者scan测试向量 (因为scan测试的覆盖率最高),提供一种额外的检测手段来筛除有缺陷器件保证器件品质。

        IDDQ测试指的是基于测量电路稳定状态的电源电流的测试方法。iddq是quiescent idd的缩写。大多数IC芯片使用互补金属氧化物半导体技术制造,在静态条件下,所有开关晶体管是关闭状态,CMOS电路静态电流几乎为0,静态特征值跟工艺强相关,工艺越先进尺寸越小,漏电流越大。一般而言,CMOS电路没有缺陷时,静态电流较小,但是假如电路有栅氧化层短路或者两条金属线之间短路时,就会形成一条从power-supply(Vdd)到ground(Gnd)的通路,随后就会形成较大的电流。然后通过测试器件监控到电流如果比没有故障时电流大很多,则就能筛选出有故障的芯片。理想的静态电流大小,可以通过PrimeTime工具或者后端仿真工具得到。

Q6. physical design 阶段 scan chains re-ordering需要考虑哪些点?

        clock domain timing constraints

        user specified scan segment positions

        minimizing clock domain traversals

Q7. 如何提高向量覆盖率

        1. 调整压缩率,降低压缩率,常见的压缩率控制在150左右,chain长控制在350左右

        2. 分析覆盖率报告,基于uncontrollable和unobservable覆盖率损失插入测试点

        3. 分析覆盖率报告,解决 primary端口约束和Tie value引起的覆盖率损失

        4. 生成sequentia向量

        5. 执行多次create_pattern

        6. analog module的输出端在scan模式下固定值或插入测试点

Q8. 如何降低向量体积

        1. balance chain长,尽可能每条chain长度一致,降低chain的长度,增加channel数

        2. 适当插入测试点,因为有时候工具会出一些专门的向量覆盖一些较难覆盖的点,增加测试点之后,简单化工具优化难度,更加容易推出pattern,进而可以适当减少向量数目。

        3. 适当的low power限制,因为限制功耗阈值,工具不能只考虑faults覆盖,还要考虑工号,因此工具需要出更多的向量来保证覆盖率

Q9. 双EDT结构

        wrapper chain和internal chain分别使用EDT进行压缩。wrapper chain可以在本module中压缩,同时把短chain出port上拉,在subsys层和subsys的wrapper chains一起压缩。同一个module中双EDT结构不能share channels,除非wrapper chains既单独压缩,同时又和internal chains一起进行压缩,否则无法进行intest mode测试。wrapper chains edt主要用于extest模式。

        一般hierarchy设计,基于几个subsystem上插入wrapper chains,并单独进行edt压缩,extest模式下开启这几个子系统的edt测试subsystem之间的互连faults。子系统内designs组合为一个group一起出向量,同时开启wrapper edt和各designs internal edt。

Q10. pattern retarget flow设计如何解决modules之间同步接口transition测试

        一般而言,如果要每个module都要做pattern retarget,就要求module A的时钟都要插入occ,而外部module B 中与之同步交互的高频时钟也要插入occ。在对module A 出向量时基于本模块内design出向量,不能考虑于module B之间的交互path。同理在module B出向量时也无法考虑与module A交互的path,覆盖率损失。即便是基于子系统,merge faults的方式专门去出module 之间覆盖交互路径的向量也很难实现,因为同步时钟分别被插了occ。除非使用特殊的occ,所谓的master-slave结构的occ,允许实现occ之间的级联。但这样会增加occ设计的复杂度。

Q11. Maximized-Reused function registers to wrapper chains

        复用function寄存器作为wrapper chain有两种方式,两种方式各有优缺点

        simple wrapper 结构功能模式下数据流

        

        simple wrapper 结构 intest mode 测试时序波形

        input和output wrapper chain可以使用相同的shift_en信号控制,因为有intext和extest mode测试,所以需要分别的capture_en。

        

        simple wrapper 结构 intest mode shift 数据流,shift过程input 和output chain都会shift操作

        

       simple wrapper 结构 intest mode capture 数据流,output chains保持capture状态,input chains hold value,自己采样自己。因为从shift到capture动作,隔了很多各cycle,所以input方向上自己采样自己没有timing要求。这样会阻碍share function reg到内部寄存器之间的transition测试,因为值保持不变,不会产生跳变。这是这种hold mux类型结构的一个缺陷。可以适当修改cell的结构产生变化,比如hold mux换回路上插入一个反相器,这样就会高频脉冲第一拍,反向shift阶段最后一拍shift的value值。

        

          simple wrapper 结构 extest mode 测试时序波形

         

        simple wrapper 结构 extest mode shift 数据流

        

        simple wrapper 结构 extest mode capture 数据流,input wrapper chain保持capture状态,采样来自对端模块output wrapper chains发射的值,output wrapper chain hold value状态,自己采样自己,没有timing时序问题。

         

         maximized-reused wrapper 结构功能模式数据流

        

         maximized-reused wrapper 结构 intest mode 测试时序波形,input wrapper cell和output wrapper cell分别使用不同的shift_en和capture_en信号控制,intest模式测试模式下,input wrapper chain cells shift_en一直为1,保持shift行为,这是因为share function的wrapper cell不能hold其自身值,无法隔离端口上的X态。这就要求使用功能时钟频率收敛input wrapper chain上到SI端口的时序路径,来自异步的OCC时钟,天然就不会有timing检查,属于异步路径,如果是来自相同时钟则需要收敛时序。举个例子,wrapper chain上有三个连续的share function寄存器,A,B,C,其中A,B来自于CLKA,C来自于CLKB,两个时钟都插入了occ,连接关系A/Q->B/SI->B/Q->C/SI,CLKA和CLKB是否可以同时pulse,假如在内部这两个时钟域之间没有路径交互(B/Q->C/SI是否被当作有path交互?如果当作有交互,CLKA和CLKB也不会同时pulse;有些工具可以支持有交互路径的occ时钟同时pulse,工具自动mask交互路径)。如果同时pulse,就会出现亚稳态问题或者采样的值与期望值不一致问题,因为这两个时钟的相位关系以及前后位置关系完全不确定。而即便是A/Q->B/SI的路径也需要同步收敛,否则在第二拍会采样亚稳态问题,采样的值也是不确定的,但是这个不影响B寄存器到同时钟域非wrapper chain寄存器的transition测试覆盖(需要第一拍高频时钟shift相反的值产生rise-to-fall或者fall-to_rise的跳变)。

        两个建议,同时钟域下wrapped chain上寄存器高频收敛到SI时序;wrapper chain不mix clock串链,只有同时钟域的寄存器串链在一起。

        

         

        

         maximized-reused wrapper 结构 intest mode shift 数据流

        AC 模式下dedicated的wrapper chain cell到function寄存器之间,function寄存器到dedicated的wrapper chain cell的path是否需要收敛?需要收敛。假如从外部来的异步路径则不需要收敛,假如是外部来的同步path则需要收敛,因为从dedicated 寄存器到function之间的path是真正外部模块寄存器到本模块寄存器之间path的一部分,由dedicated cell产生rise-to-fall或者fall-to-rise跳变,可以覆盖这部分电路的transition faults。

        

         maximized-reused wrapper 结构 intest mode capture 数据流

        

         maximized-reused wrapper 结构 extest mode 测试时序波形

         

         maximized-reused wrapper 结构 extest mode shift 数据流

          

         simple wrapper 结构 extest mode capture 数据流 

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值