日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DFTug - Architecture Your Test Design

發(fā)布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DFTug - Architecture Your Test Design 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 如何指定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。
通常我會這樣來指定:

dc_shell> set_dft_signal -view existing_dft -type ScanClock -timing [list 45 55] -port {clk1 clk2} dc_shell>set_scan_configuration -chain_count 2

但是僅僅這樣指定是實(shí)現(xiàn)不了需求的。如下圖所示。

你需要mix clock edge within a single chain

dc_shell> set_dft_signal -view existing_dft -type ScanClock -timing [list 45 55] -port {clk1 clk2} dc_shell> set_scan_configuration -chain_count 2 dc_shell> set_scan_configuration -clock_mixing mix_edges


如上圖所示,通常我們會采用第二種方法,第二種方法雖然在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, 如上圖左圖所示:

dc_shell > set_scan_configuration -preserve_multibit_segment true

使用的該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。

set_scan_replacement -nonscan DFF1 -multiplexed_flip_flop SDFF1R

Many-Pins-to-Few-Pins Scan Cell Replacement Scenario

如下圖所示,因?yàn)槲业腸lear和reset是unconnect的,所以在進(jìn)行scan replace的時候,可能會砍掉這兩個pin,而選用不帶有這兩個pin的cell,從而有可能導(dǎo)致邏輯錯誤。因此,也可以手動的指定。

set_scan_replacement -nonscan DFF1 -multiplexed_flip_flop SDFF1R

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,你需要

set_scan_configurartion -replace false

如果,你讀取的是ddc文件,則不必指定,因?yàn)閠ool能識別到你之前的scan-replacement result。
在我們的腳本中,使用了上述cmd,默認(rèn)該cmd是true。

總結(jié)

以上是生活随笔為你收集整理的DFTug - Architecture Your Test Design的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。