DFTug - Architecture Your Test Design
文章目錄
- 如何指定Scan Chain Length
- 使用set_scan_path來訂制scan chain
- Multiple Clock Domains
- 關(guān)于Multibit Components 的scan chain
- Few-Pins-to-Many-Pins Scan Cell Replacement Situation
- Many-Pins-to-Few-Pins Scan Cell Replacement Scenario
- Scan Stitching Only Scan-Replaced Cells
如下圖所示,分清楚三個概念:
- scan link
- scan element
- scan segment
注意下面的latch,也是scan link的一部分,而scan segment包含了scan element。
如何指定Scan Chain Length
set_scan_configuration -max_length 7
假設(shè)有29個FF,那么將會被分配為6,6,6,6 和5。工具會盡量的讓scan chain符合balance的預(yù)期。
tips: -max_length與**-chain_count**可能會產(chǎn)生沖突,此時將會以-max_length優(yōu)先。盡量不要二者一起使用。
另外我們可以用**-exact_length**指定準(zhǔn)確的scan chain的長度。
假如說,你有420個FF,你現(xiàn)在使用-exact_length 80,此時,將會是5條chain 80個FF,一條chain有20個FF。將不考慮chain balance的問題。
值得注意的是,-exact_length的用法只能夠用在standard scan中,不能用于scan compression的架構(gòu)下。
另外注意-exact_length不能與-max_length或者-chain_count一起混合使用。
所以,綜上所述,我個人建議,可以直接分為三類進(jìn)行選擇,最好不要混合使用:
- - max_length(考慮balance,優(yōu)先級最高)
- - chain_count(考慮balance)
- - exact_length(不考慮balance,不可以用于compression架構(gòu),不能與前面混合使用)
如何查看配置完畢的chain length信息:
report_scan_configuration
如何考量scan chain count?
1、需要詢問測試廠商,能支持多少條scan chain通道。
2、為了防止timing相關(guān)的問題,最好是一個clock domain一條chain(DFTC 默認(rèn)行為),DFTC是以一個時鐘邊沿作為一個clock domain,只有Multiplexed flip-fop這種scam stye,才會因?yàn)閏lock domain而影響scan chain的數(shù)目,如果你選擇其他的scan style,只會有一條scan chain的產(chǎn)生。
3、測試時間的考量,因?yàn)闇y試時間取決于你最長的那條chain,因此,你需要增加chain來減少測試時間。
使用set_scan_path來訂制scan chain
通常來說scan chain,會由chain count or chain length來設(shè)置,但是使用set_scan_path之后,可以針對那一條chain來單獨(dú)訂制更多的個性化需求。
1、單獨(dú)某一條chain 的exact scan chain length
set_scan_path C1 -exact_length 40
2、指定某一條chain連到專門的scan_in/out 口。
Multiple Clock Domains
假如說,現(xiàn)在有三個clock damain,但是我想實(shí)現(xiàn)兩條scan chain的balance。
通常我會這樣來指定:
但是僅僅這樣指定是實(shí)現(xiàn)不了需求的。如下圖所示。
你需要mix clock edge within a single chain
如上圖所示,通常我們會采用第二種方法,第二種方法雖然在balance上面能夠做的更好一些了,但是如果一個clk帶有的FF很多,一個clk帶有的FF很少,即使mix_edges 也會導(dǎo)致balance的問題,雖然還有第三種mix_clocks的方法,但是我司并沒有采用。
關(guān)于Multibit Components 的scan chain
首先需要知道的是什么是Multibit Compponents?
綜合工具會把多個register捆綁成一組,于是稱呼這一組寄存器為"multibit components"。后端布局布線的工程師,稱為“banks"
采用multibit cell來代替single bit cell有什么好處?
下圖是采用2bit的multibit代替兩個單bit的cell
在RTL級別,用create_multibit的cmd指定
在后端工程師的flow里面,稱之為placement-aware register banking flow,可以將相鄰的單bit cell放到一個register bank下面,然后用一個multibit register cell替換這個bank。
如下圖所示,對于有QN的cell,map后出來的multibit cell也是有QN的。
如何將multibit 映射為scan cell
如下圖所示,有兩種結(jié)構(gòu):
1、multibit scan cell with parallel scan bit
output not chained with next register bit,separate data input for each scan bit.
2、multibit scan cell with internal serial scan chain
output chained with next register bit, one scan data input for whole multibit register.
默認(rèn)情況下,insert_dft的時候,會把multibit component里面的cell作為離散的時序信號,DFTC會進(jìn)行重新打亂順序來串,或者是分開,或者用于平衡別的scan chain。
那如果使用下面的cmd后,將會作為scan segment, 如上圖左圖所示:
使用的該cmd之后,就不會把multibit里面的bit單獨(dú)來看待處理。
可以使用下面的選項(xiàng)show出,如果要串的multibit后的相關(guān)信息:
preview_dft -show { segments }
Few-Pins-to-Many-Pins Scan Cell Replacement Situation
如果你發(fā)現(xiàn),在Scan replacement的過程中,發(fā)現(xiàn)有Few-Pin到Many-Pin這種情況,如下圖所示,在scan_replacement的過程中,多出了CLR置位和RST復(fù)位這兩個pin。當(dāng)然增加的pin是會被tie值為inactive的狀態(tài)。
當(dāng)然你在log中也會得到warning相關(guān)的信息。
如果要修正這個warning,你可以手動指定這個nonscancell,到指定的scancell。
Many-Pins-to-Few-Pins Scan Cell Replacement Scenario
如下圖所示,因?yàn)槲业腸lear和reset是unconnect的,所以在進(jìn)行scan replace的時候,可能會砍掉這兩個pin,而選用不帶有這兩個pin的cell,從而有可能導(dǎo)致邏輯錯誤。因此,也可以手動的指定。
Scan Stitching Only Scan-Replaced Cells
默認(rèn)情況下,inser_dft會針對沒有進(jìn)行scan_replacement的cell,在具備掃描屬性,在沒有違背DRC的情況下,自動執(zhí)行scan_replacement。
當(dāng)我們拿到一個已經(jīng)scan_replaced的design,如果你不想要insert_dft的時候,執(zhí)行scan_replacement,你需要
如果,你讀取的是ddc文件,則不必指定,因?yàn)閠ool能識別到你之前的scan-replacement result。
在我們的腳本中,使用了上述cmd,默認(rèn)該cmd是true。
總結(jié)
以上是生活随笔為你收集整理的DFTug - Architecture Your Test Design的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DFTug Test_point
- 下一篇: TMAXug ATPG Design F