一.OCC緣由
何為全速測試(at speed test):在工藝節點在130nm以下的時候,很多情形下的物理缺陷都是由於延時來引起的。
因此在對這種類型的chip做dft的時候,需要建立一個新的故障模型,業內稱之為延時故障模型(time delay model)。
解決的方法就是全速測試,所謂的全速測試就是讓芯片工作在自己高倍時鍾頻率上,這個頻率往往是要高過ATE的時鍾的。
這樣對掃描模型的建立就提出了新的要求。即至少要保證芯片的latch clock和capture clock為芯片內部的高倍時鍾。
synopsys對此種問題的解決方法就是OCC(on chip clocking)。
OCC/OPCG的基本原理是在 scan shift 模式下, 選通慢速的ATE 時鍾,load 或 unload 掃描鏈; 在 capture 模式下,對 free-running PLL clock 過濾篩選出 lauch 和 capture clock 進行at-speed 測試 。
在做SCAN的時候,由於ATE時鍾速度和芯片port的傳輸速度的限制,導致ATE無法向片傳輸高速時鍾。
但是,芯片內部需要 進行At Speed 測試的時候,用到和system mode一致的時鍾頻率進行測試。此時,需要由芯片內部自己產生測試時鍾。
二. 典型OCC電路結構
這個是典型的OCC(On Chip Clock)電路。主要有兩部分組成,一個是occ controller,另外一個是clock chain。
其中occ controller的核心電路如下圖所示。其中A0接func_clk,A1接pllbypass,B0接occ_clk。
clock chain的電路原理圖如下所示。
OCC電路插入方式主要有兩種方式,目前大部分應該還是采用第一種方式,如在綜合dft階段工具自動插入的方式。
1. DFT Compiler自動插入。
2. 手動編寫OCC 的verilog 電路,在dft_insert階段。
三.OCC電路的時鍾樹綜合
針對design中這種常見的時鍾樹結構,應該如何長時鍾樹呢?稍微有點實際工作經驗並認真分析過時鍾樹結構的工程師,都應該能夠做好這部分的時鍾樹。如果你認為讓工具自己來,能夠做好這部分tree的話,我是絕對不相信的。
細心的朋友會發現,我其實已經把時鍾結構圖都給出了,並且圖上還特定標注了一個數值“1”。有了這個圖之后,你的腦子里馬上就應該要有個各路時鍾的走向。時鍾從哪里來,它將要去哪里。
如果不稍加引導工具來做tree,本案例工具長出來的tree一定會把occ那路時鍾和function clk做balance。而本來occ那路時鍾其實可以做的比較短。occ那路時鍾被拖長之后就會有一系列的問題,比如繞線問題,比如clock chain中reg到occ controller中reg的hold timing問題。
那么,看到這里你們是否已經知道如何來長OCC電路這部分的clock tree呢?今天小編暫時不公布答案,讓大家先自己獨立思考。
1.獲取圖中 “1” output的所有load,這部分包含正常的reg和clk chain中的reg
2.將這兩組reg歸類到不同的組,disconnect這些net,並插入guide buffer,注意是clock buffer
3.在guide buffer后create 兩路clock
4.分別對這兩路時鍾做時鍾樹綜合
Tips:
1.盡量把時鍾分得比較干凈,能各自長tree的盡量各自長自己的。
2.盡量用“分段長tree的思想“。
3.可以對clock做eco。