DRC介紹
在進(jìn)行DFT Logic的設(shè)計和插入之前,DFT工程師會先使用EDA工具對原Design執(zhí)行DRC(Design Rule Checking),即設(shè)計規(guī)則檢查。隨著芯片的復(fù)雜度升高,執(zhí)行DRC可以顯著提高Design的可測性,同時也檢查Design的合理性。
DRC案例
1
在Function模式下,由三態(tài)門嚴(yán)格控制,在同一總線上,同一時刻只允許一個設(shè)備向總線輸出。如圖1所示,三個寄存器的輸入是DI,由Functional Enable Logic控制,在同一時刻Driver D1、D2、D3只有一個被使能,可以向總線輸出數(shù)據(jù)。
但在測試模式下,Scan Shift期間三個寄存器SSF1、SSF2、SSF3連成一條Scan Chain,輸入由DI切換為SI,它們的值會根據(jù)測試pattern不停地變,無法保證3個Drivers在同一時刻只有一個驅(qū)動總線,這樣就可能會引起總線競爭的問題。
圖1
為了避免這個問題,我們加入如圖2所示的電路,當(dāng)SE為1時,即Scan Shift期間,只有EN1為1,此時D1生效,D2和D3不生效。另外給總線加入Bus Keeper,使總線在3個Drivers均為高阻抗時保持總線上值不變。
圖2
但這樣的設(shè)計依舊存在一個問題:在Scan Capture期間如何避免總線競爭問題?實際上這里的解決辦法有好幾種,筆者僅提供其中一種思路:在Capture期間SE的值為0,但TE(Test Enable ,圖中未畫出)依舊為1,我們可以利用TE信號來設(shè)計邏輯使得在SE為0時依然最多只有一個Driver被使能。
2
芯片上存在一些雙向IO Pin,如圖3所示,由寄存器的輸出Q來控制IO方向,當(dāng)Q=1時是Output Pin,當(dāng)Q=0時是Input Pin。但在Scan Shift期間,該寄存器的值會由于測試pattern而不停地變,從而導(dǎo)致I/O方向不斷發(fā)生改變。
圖3
我們給原電路加入如圖4所示的邏輯,當(dāng)處于Scan Shift期間,SE的值為1,無論寄存器的值是0還是1,與門的輸出均為0,這樣就保證了在Scan Shift期間該IO PIN一直是Input Pin。當(dāng)然也可以換成或門的邏輯,使該IO Pin在Shift期間一直是Output Pin。
圖4
3
如圖5所示,這是一個非常簡單的時鐘門控電路,當(dāng)enable為1時,gated clock與clock保持一致,當(dāng)enable為0時,gated clock保持為1,即clock斷開狀態(tài)。但這樣的設(shè)計無法很好地解決hazard,具體如圖6波形圖所示。
圖5
圖6
Designer為了解決這一問題,會采取如圖7所示的設(shè)計:插入一個負(fù)沿觸發(fā)的觸發(fā)器,在時鐘下降沿對enable信號進(jìn)行采樣,當(dāng)enable為1時,將時鐘打開,當(dāng)enable為0時,將時鐘關(guān)閉。這樣就大大降低了hazard風(fēng)險,波形圖見圖8。
然而這樣做在測試中會引發(fā)另一個問題,那就是在Scan Shift期間該觸發(fā)器的值會不斷發(fā)生變化,我們也就無法控制時鐘開關(guān)了。
圖7
圖8
假設(shè)原始的Design電路如圖9所示,我們加入圖10所示的邏輯 ,當(dāng)SE為1時,Clock始終保持打開的狀態(tài),這樣就保證了Scan Shift期間Clock門控電路始終打開。
圖9
圖10
總結(jié)
本文所示案例在Function方面均屬合理的設(shè)計,但并不利于測試,這也是引入DRC的重要意義。目前市面上不同的EDA工具對于Design Rule有著不同的規(guī)則體系,但本質(zhì)是一樣的,都是為了在插入DFT以及產(chǎn)ATPG Pattern之前消除潛在的風(fēng)險并改善設(shè)計。
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120377 -
EDA工具
+關(guān)注
關(guān)注
4文章
267瀏覽量
31794 -
DRC
+關(guān)注
關(guān)注
2文章
149瀏覽量
36183 -
時鐘電路
+關(guān)注
關(guān)注
10文章
236瀏覽量
50725 -
DFT設(shè)計
+關(guān)注
關(guān)注
0文章
10瀏覽量
8882
發(fā)布評論請先 登錄
相關(guān)推薦
評論