在130nm及以下的工藝中,即使一個很小的Delay Fault也會影響芯片正常工作的頻率,導致芯片的時序不能滿足設計要求。因此Delay Fault成為影響芯片質量的主要因素之一。 At-speed test已被證明是用來測試Delay Fault的有效方法,at-speed test就是讓芯片在內部高速時鐘上測試,但是該測試方法在fast capture mode下需要兩個時鐘脈沖,第一個時鐘需要使得前一個scan flip-flop的值進行翻轉來激活故障,第二個時鐘需要使得前一個scan flip-flop的翻轉值傳播到后一個scan flip-flop,從而實現故障傳播。這兩個時鐘來自于function clock,因此需要通過I/O pad提供這些at-speed clock脈沖,但是I/O pad可以支持的最大頻率存在限制,OCC電路應運而生。 01 什么是OCC 片上時鐘控制器(On-chip Clock Controllers ,OCC),也稱為掃描時鐘控制器(Scan Clock Controllers,SCC)。OCC 是插在SoC上的邏輯電路。在ATE(自動測試設備)上對芯片做ATPG測試時,OCC用于控制內部scan flip-flop時鐘。 OCC電路可以實現ate clock和function clock之間的切換,并且控制在什么時刻跳轉。所以standard的OCC在設計時需要擁有三個主要功能:clock selection, clock chopping control and clock gating。 ![]() OCC的主要功能介紹 02 OCC的架構及功能 這里我們會介紹一下Synopsys的OCC 1.0 ,Synopsys的OCC定義了多個輸入輸出端口: ![]() clock chain的輸入輸出未在下圖畫出 -OCC的基本邏輯 下圖顯示了one-single clock OCC的概念操作,未顯示電路實現細節,本文目的是演示它是如何工作的。 當OCC處于function mode時,test mode = 0,此時pll _clk選通,OCC會向內部 design輸入function clock,此時可以將OCC電路視為transparent。 ![]() 當OCC處于shift mode時,我們在ate clock的控制下將測試向量load進internal scan chain和clock chain內,所以test mode = 1,scan_en = 1,此時ate _clk選通,完成shift操作。 ![]() Synopsys的OCC 1.0 沒有真正的slow capture mode,需要做stuck-at 測試時,可以直接從ATE機臺提供OCC bypass mode capture clock。通過外部ATE機臺對ate clock的pulse進行適當的控制就可以進行stuck-at測試,不需要clock chain的控制。此時test mode = 1,pll_bypass = 1。 ![]() 當OCC處于fast capture mode時,期望在capture階段生成兩個function clock脈沖。所以test mode = 1,scan_en = 0,pll_bypass = 0,此時pll _clk選通,并且PLL cycle counter 和clock chain的輸出經過ICG共同決定gating幾個時鐘脈沖,完成at-speed測試。 ![]() Fast capture mode的波形圖如下圖所示,下面我們來簡單地分析一下。 ![]() Fast capture mode波形圖 當我們進行capture操作時,scan enable信號要從1變為0,為了保證得到的是穩定的0信號,我們需要先經過sync cell的3個synchronization cycles。 通過先前shift過程中load在clock chain里的test pattern(0110)以及PLL cycle counter的共同控制,在第2、3個cycle給出兩個pulse,即launch和capture。 最后scan enable信號從0變為1,完成capture的操作,進入shift過程。 需要注意的是,對于Synopsys的OCC,Scan_en = 1后,ate clock在第二個pulse才出現 ,此過程被稱為pre_shift 。 -OCC的位置 OCC電路是一個IP,所以我們需要打斷Design的一些節點,將其插入。 如果external clock port直接驅動scan flip-flop, 測試機可以直接在clock port上加激勵控制輸入clock的頻率和時間,ATPG可以產出這樣的pattern。然而大部分design中flip-flop都是由倍頻分頻處理過的PLL clock驅動, 沒法從外部去直接控制,所以需要OCC控制頻率和什么時間出pulse。 所以,OCC應插在PLL clock的output之后或是不能直接被primary input控制的clock處。 ![]() OCC 位置的簡單示例 OCC電路的插入需要遵守一些規則: · External clock可以不用OCC · Internal clock必須插OCC · OCC 插在PLL或者divider out clock后 · Internal clock和external clock可以混合插入OCC 以多個插入DFT的OCC為例,可以看到下圖一是一個錯誤插入方法,原因是驅動divider的clock已經被OCC執行過chopping的動作,不再是free-runing的clock,這樣就無法得到期待的clock。 下圖二為OCC的正確插入方法,驅動divider的clock也是來自于PLL的free-running的clock。 ![]() 圖一 ![]() 圖二 END \ Silicon Elite |
|