OCC的架構(gòu)功能介紹以及插入
在130nm及以下的工藝中,即使一個(gè)很小的Delay Fault也會(huì)影響芯片正常工作的頻率,導(dǎo)致芯片的時(shí)序不能滿(mǎn)足設(shè)計(jì)要求。因此Delay Fault成為影響芯片質(zhì)量的主要因素之一。
At-speed test已被證明是用來(lái)測(cè)試Delay Fault的有效方法,at-speed test就是讓芯片在內(nèi)部高速時(shí)鐘上測(cè)試,但是該測(cè)試方法在fast capture mode下需要兩個(gè)時(shí)鐘脈沖,第一個(gè)時(shí)鐘需要使得前一個(gè)scan flip-flop的值進(jìn)行翻轉(zhuǎn)來(lái)激活故障,第二個(gè)時(shí)鐘需要使得前一個(gè)scan flip-flop的翻轉(zhuǎn)值傳播到后一個(gè)scan flip-flop,從而實(shí)現(xiàn)故障傳播。這兩個(gè)時(shí)鐘來(lái)自于function clock,因此需要通過(guò)I/O ?pad提供這些at-speed clock脈沖,但是I/O ?pad可以支持的最大頻率存在限制,OCC電路應(yīng)運(yùn)而生。

什么是OCC
片上時(shí)鐘控制器(On-chip Clock Controllers ,OCC),也稱(chēng)為掃描時(shí)鐘控制器(Scan Clock Controllers,SCC)。OCC 是插在SoC上的邏輯電路。在ATE(自動(dòng)測(cè)試設(shè)備)上對(duì)芯片做ATPG測(cè)試時(shí),OCC用于控制內(nèi)部scan flip-flop時(shí)鐘。
OCC電路可以實(shí)現(xiàn)ate clock和function clock之間的切換,并且控制在什么時(shí)刻跳轉(zhuǎn)。所以standard的OCC在設(shè)計(jì)時(shí)需要擁有三個(gè)主要功能:clock selection, clock chopping control and clock gating。


OCC的架構(gòu)及功能
-OCC的基本邏輯
下圖顯示了one-single clock OCC的概念操作,未顯示電路實(shí)現(xiàn)細(xì)節(jié),本文目的是演示它是如何工作的。
當(dāng)OCC處于function mode時(shí),test mode = 0,此時(shí)pll _clk選通,OCC會(huì)向內(nèi)部 design輸入function clock,此時(shí)可以將OCC電路視為transparent。

當(dāng)OCC處于shift mode時(shí),我們?cè)赼te clock的控制下將測(cè)試向量load進(jìn)internal scan chain和clock chain內(nèi),所以test mode = 1,scan_en = 1,此時(shí)ate _clk選通,完成shift操作。

?Synopsys的OCC 1.0?沒(méi)有真正的slow capture mode,需要做stuck-at 測(cè)試時(shí),可以直接從ATE機(jī)臺(tái)提供OCC bypass mode capture clock。通過(guò)外部ATE機(jī)臺(tái)對(duì)ate clock的pulse進(jìn)行適當(dāng)?shù)目刂凭涂梢赃M(jìn)行stuck-at測(cè)試,不需要clock chain的控制。此時(shí)test mode = 1,pll_bypass = 1。

當(dāng)OCC處于fast capture mode時(shí),期望在capture階段生成兩個(gè)function clock脈沖。所以test mode = 1,scan_en = 0,pll_bypass = 0,此時(shí)pll _clk選通,并且PLL ?cycle counter 和clock chain的輸出經(jīng)過(guò)ICG共同決定gating幾個(gè)時(shí)鐘脈沖,完成at-speed測(cè)試。

Fast capture mode的波形圖如下圖所示,下面我們來(lái)簡(jiǎn)單地分析一下。

當(dāng)我們進(jìn)行capture操作時(shí),scan enable信號(hào)要從1變?yōu)?,為了保證得到的是穩(wěn)定的0信號(hào),我們需要先經(jīng)過(guò)sync cell的3個(gè)synchronization cycles。
通過(guò)先前shift過(guò)程中l(wèi)oad在clock chain里的test pattern(0110)以及PLL cycle counter的共同控制,在第2、3個(gè)cycle給出兩個(gè)pulse,即launch和capture。
最后scan enable信號(hào)從0變?yōu)?,完成capture的操作,進(jìn)入shift過(guò)程。
需要注意的是,對(duì)于Synopsys的OCC,Scan_en = 1后,ate clock在第二個(gè)pulse才出現(xiàn) ,此過(guò)程被稱(chēng)為pre_shift 。
-OCC的位置
OCC電路是一個(gè)IP,所以我們需要打斷Design的一些節(jié)點(diǎn),將其插入。
如果external clock port直接驅(qū)動(dòng)scan flip-flop, 測(cè)試機(jī)可以直接在clock port上加激勵(lì)控制輸入clock的頻率和時(shí)間,ATPG可以產(chǎn)出這樣的pattern。然而大部分design中flip-flop都是由倍頻分頻處理過(guò)的PLL clock驅(qū)動(dòng), 沒(méi)法從外部去直接控制,所以需要OCC控制頻率和什么時(shí)間出pulse。
所以,OCC應(yīng)插在PLL clock的output之后或是不能直接被primary input控制的clock處。

OCC電路的插入需要遵守一些規(guī)則:
??External clock可以不用OCC?
? Internal clock必須插OCC?
? OCC 插在PLL或者divider out clock后
? Internal clock和external clock可以混合插入OCC
以多個(gè)插入DFT的OCC為例,可以看到下圖一是一個(gè)錯(cuò)誤插入方法,原因是驅(qū)動(dòng)divider的clock已經(jīng)被OCC執(zhí)行過(guò)chopping的動(dòng)作,不再是free-runing的clock,這樣就無(wú)法得到期待的clock。
下圖二為OCC的正確插入方法,驅(qū)動(dòng)divider的clock也是來(lái)自于PLL的free-running的clock。

