本系列介绍的是Tessent的EDT( Embedded Deterministic Testing)技术。
参考为EDT tessent的 TestCompress 文档。
本系列是对ug的个人理解和知识要点笔记,并非完全翻译。

引言

EDT作为一种测试技术,在Tessent TestKompress 工具中使用,注意EDT不是工具,而是一种测试手段。
EDT形成的internal scan chain 对于tester来讲,就好像看到的是external chain一样。
如下图所示,对于tester的view来看,似乎就是两条scan channels,而实际上确实很多的Internal scan chain构成。
另外,从下面的图片中我们可以看到关于Tessent的官方说法
内部的称为Internal Scan chains ,外部的chain 称为scan channels
在这里插入图片描述

在这里插入图片描述
EDT影响的仅仅是scan channel inputs和outputs ,而不会对functional path造成影响。
Each compressed test pattern has a small number of additional shift cycles, so the total number of shifts per pattern would be slightly more than the number of scan cells in eath chain。
在这里插入图片描述
上面是比较关键的部分, additional shift cycles 指的是intialization cycles ,包括有masking bits, low-power bits, user-defined pipeline bits.
在这里插入图片描述
如果不考虑masking and 和 low power技术
如果一个设计中有16条scan channels ,1250条 scan cell per chain, 50bit 的decompressor(50条sub chain)
50/16 =3.1(ration) 向上取整数,也就是等于4
也就是说每一支compressed pattern 需要四个intialization cycles,
因此tester 看到的16条scan chain每一支pattern需要1254个shift cycle。

TestKompress Compression Logic

TestKompress 会生成三部分硬件电路:

  • Decompressor :通常由Linead Feedback Shift Machine(LFSM)和phase shifter 组成
  • Compactor(也就是Compressor):通常由一些gatting logic 和 spatial compactors组成
  • Bypass Module(Optional):通常由mux,LOCKUP cell组成,也就是我们所说的internal chain,直接链接外部的scan channel。
  • EDT controller 这部分ug里面并没说,但实际上电路是有的。
    通常Test Kompress会生成上面的三部分电路,并且用wrapper包裹起来,放在一个叫EDT的instance里面。

在这里插入图片描述
如上图所示,我们可以看到Core,也就是subchain被单独的放在一个core中,因为这些subchain是通过DFTC完成的insertion。而EDT放在Core 外面,被一个叫EDT的Wrapper包裹起来。这种EDT locate 在core 外面的Flow,我们称之为External Flow。原因就是因为EDT我们是通过Tessent shell 来完成的,而我们读入的subchain的netlist 是通过外部读入的。

在这里插入图片描述
如上图所示,就是将EDT到core里面去。

关于DRC Rules
TestKompress 执行的DRC和与ATPG执行的一样,并且TestKompress 还专门有针对EDT技术的一些DRC。

关于internal Control module:
在很多case下,会使用一些internal controllers 来控制EDT信号,比如edt_bypass 信号
edt_update信号,scan_en,以及disable edt_clock信号 in function mode。
而这些internal controller的控制通常会采用JTAG或者是TDR(ijtag)寄存器来控制。

关于EDT logic:
通常包含了组合logic以及FF,所有的FF,除了lockup cell都是positive edge-triggered 并且被专门的clock(并非scan clock) drive,并且within EDT logic ,也不会有clock gating,所以也不会与system clock有interface。
EDT clock必须要要有一个专门的时钟,虽然你可以share function的非时钟端口,但是你不可以share RAM的控制pin,以及别的clock(scan clock)。

在这里插入图片描述
原因如上图所示,总之EDT clock 必须要为dedicated clcok。(但这并非是不可解决的,其实是可以复用的,具体做法,专门会有文章来讨论)
因为EDT时钟和scan cell并非同一个,所以LOCKUP会自动insert 到EDT logic和scan chain之间,Tool会insert Lockup cell作为EDT logic的一部分,并且不会动到design core。

EDT技术同样支持和internal chain一样的fault model. 以及 determinaistic pattern types:
(combinational , RSM sequential , clock-sequential , multiple loads)

EDT技术是通过减少每一支pattern的数据,而不是说减少pattern的生成,因此会有一些additional test patterns 以及additional shift cycles 来降低了整体的压缩效果。

因此如果压缩技术,你使用得不恰当的话,反而不能减少测试数据,还不如直接走bypass mode ,可能效率更高,test time更短。
所以使用压缩技术的目的是什么?就是为了test time

  • 高压缩会带来更低的coverage
  • 高压缩会带来EDT动态匹配能力的减弱,从而增加pattern count,降低整个压缩能力(test time)。
  • Routing Congestion

EDT Flow

EDT Flow主要分为了两部分:

  • EDT IP Creation
    创建EDT IP logic 并且写出TCD 文件 (context: dft -edt)
  • EDT Pattern Generation (pattern -scan)

EDT 文件在这里插入图片描述
在这里插入图片描述
想一想你给EDT配置了什么,是不是配置了subchain input 和subchain output
在这里插入图片描述
在这里插入图片描述

如上文描述,你的EDT IP可以有多种配置,比如bypass 配置等等,那么你的TCD文件与之对应了多个EDT IP dofile 的usage,在pattern 的生成过程中,你需要去指明你的EDT IP 的配置参数 在指定的ATPG mode下。

EDT IP generation

EDT gen 的参考脚本
在这里插入图片描述

EDT syn

EDT syn脚本 ug暂未提供参考

EDT IP pattern genneration

当我们将EDT与subchain.v 的netlist合起来之后,我们就可以产生对应的pattern

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注意:
set_system_mode analysis
该命令是进行DRC check

另外上面有吃EDT的tcd文件,然后设置parameter,然后又立即write tcd出来,吃进去的tcd和write出来的tcd真的一样吗?
有待实际验证

ATPG

对于uncompressed ATPG, 在打ATPG的时候,直接使用patterns -scan即可。
对于compressed ATPG, 首先要使用dft -edt 来创建EDT logic,然后在patterns -scan 的context下来生成compressed test patterns

熟悉工具

batch mode

Tessent shell的 Batch Mode 是通过dofile文件来完成的,也就是说你可以不必一句一句的写cmd,或者说你的cmd里面有循环等。你可以通过使用dofile文件来一次执行。
如果你有dofile文件,你可以启动工具的时候,就可以直接执行。
在这里插入图片描述

如果执行撞到了错误,是退出,还是继续执行,还是保持,你可以通过
set_dofile_abort 设置
在这里插入图片描述

执行系统命令

如果你要执行linux的cmd,你可以通过system
比如你想要执行linux的命令
类似与Tetramax里面的sh
比如你要通过EDA 的shell打开文件脚本,

system gvim fault.list

(完结)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐