日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

DFT实训教程笔记2(bibili版本)- Scan synthesis practice

發(fā)布時(shí)間:2025/4/5 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DFT实训教程笔记2(bibili版本)- Scan synthesis practice 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • Scan synthesis practice

本博文是博主記錄DFT實(shí)訓(xùn)教程的筆記版本,此筆記并沒有對所有的知識進(jìn)行記錄,僅僅以自身的認(rèn)知水平,來記錄了一些部分筆記并加上了自己的理解。

Scan synthesis practice

How to design scan clock structure?
假設(shè)一塊chip里面有好幾十個(gè)clock domain,如果每一個(gè)clock domain都用一個(gè)scan clock雖然會非常清晰,但是IO數(shù)目肯定不夠用。
clock group:
1、no crosstalk
2、less crosstalk
3、functional clock frequency

如何理解串scan時(shí)候的不同沿觸發(fā)的寄存器

腳本:

#configure library set search_path "$search_path ./netlist ./lib" 在原來的search_path的基礎(chǔ)上做一個(gè)補(bǔ)充 set target_library {./lib/typical.db} 該命令主要是在邏輯綜合中用,為了腳本的一致性,也放在這里。 set link_library {* ./lib/typical.db} 需要去找這里library的定義 #read and link the design read_verilog -netlist ./netlist/top.v 讀取netlist文件 current_design top 設(shè)置頂層文件 link 做一個(gè)鏈接 #configure_DFT set_scan_configure -chain_count 1 配置一條chain set_dft_signal -type ScanClock -port clk -view existing_dft -timing {45 55} #preview and inset DFT create_test_protocol dft_drc 現(xiàn)在做分析 preview_dft 先根據(jù)分析結(jié)果,給出preview的報(bào)告 insert_dft 真正去做DFT scanchain dft_drc 再做一遍DFT drc #write out design information report_scan_path -view existing_dft -chain all write -formate verilog -hierarchy -output netlist/top_scan.v write_test_protocol -output generated/scan.spf exit


如上圖所示,對于那些已經(jīng)存在的,已經(jīng)鏈接好的,可以拿來直接使用的port,就可以用existing_dft命令,所以腳本里面對于clk是用的exsiting,如果是對SE的話,就必須用spec了。
對于還沒有串,沒有鏈接的port,就必須用spec端口來指定。比如SE端口,就需要用spec來指定為ScanEnable。
現(xiàn)在讀入netlist文件,該文件是如上圖所示的兩個(gè)負(fù)沿觸發(fā)的reg和兩個(gè)正沿觸發(fā)的reg,并且我們設(shè)置了1條chain,如下圖所示,報(bào)告除了violation

如下圖所示,雖然我們指定了chain count=1但是tool還是做成了兩條chain,其中一條chain包含了2條cell,另一個(gè)chain也包含了兩條cell

查看已經(jīng)串好的scan的netlist,驗(yàn)證確實(shí)是兩條chain,也就是工具默認(rèn)情況下,是不允許這種雙沿的串在一起。現(xiàn)在需要更改工具這中默認(rèn)的行為。
查看set_scan_configuration 這條命令的文檔。
后面有一個(gè)參數(shù)是-clock_mix no_mix | mix_edges | mix_clocks | mix_clocks_not_edges
也就是說-clock_mix有四個(gè)變量選項(xiàng):
1、no_mix代表的是任何情況下都不能去混合時(shí)鐘
2、mix_edges代表同一個(gè)clock domain 不同clock edge可以去混合串不同edge的reg
3、mix_clocks代表不同clock domain,不同edge都可以放在一條scan chain上面。
4、mix_clocks_not_edges代表不同的clock domain可以混合,但是,不同的edges不可以混合。

現(xiàn)在在腳本里面更改

set_scan_configuration -clock_mixing mix_edges

如下圖所示,當(dāng)重新運(yùn)行腳本之后,Scan path變?yōu)榱?條,chain length變?yōu)榱?


退出dc的gui使用gui_stop
通過檢查scan insetion后的netlist后發(fā)現(xiàn),工具將負(fù)沿在前面,正沿在后面。為什么需要這樣串chain?


如上圖所示,關(guān)鍵一點(diǎn),在一個(gè)cycle內(nèi),數(shù)據(jù)會被捕獲兩次,從而導(dǎo)致兩個(gè)正沿在前負(fù)沿在后的兩個(gè)寄存器的值保持了相同,被綁定。導(dǎo)致經(jīng)過這個(gè)跨沿的后續(xù)reg均錯(cuò)誤得到值。
總結(jié):越晚capture的cell越放在前面去,這樣保證他不能立即capture到前面cell最新的那個(gè)值

如上圖所示,對于一個(gè)design來說我們可能有多個(gè)clk_domain,雖然每個(gè)clk_domain分別鏈接一個(gè)clk最清晰,但是我們很可能沒有這么多個(gè)clk port。

如下圖所示,現(xiàn)在將這四個(gè)cell串起來,假設(shè)第二個(gè)和第三個(gè)reg之間的路徑比較長,就會導(dǎo)致嚴(yán)重的skew的問題。

如下圖所示,可以分為下面兩種情況,對于第二種情況,如果skew過大后,就可能導(dǎo)致抓取的是最新的值,而不是前一個(gè)cycle的值。從而形成了兩個(gè)寄存器之間的數(shù)據(jù)一直是綁定的。

如何解決這個(gè)問題?

如上圖所示,為了解決這個(gè)問題,需要在時(shí)鐘域之間加上一個(gè)lockup latch,這個(gè)lockup latch電平觸發(fā),與前面一個(gè)reg的觸發(fā)沿取相反值。
當(dāng)加了一個(gè)反的lockup latch之后,相當(dāng)于將數(shù)據(jù)延遲了半個(gè)cycle,延遲到了下降沿的位置,只要skew不超過半個(gè)cycle,就可以保證clk2不會抓到最新的那個(gè)值。
如下圖所示,因?yàn)榧觽€(gè)反向的lockup latch可以將數(shù)據(jù)延遲半個(gè)時(shí)鐘周期。從而相當(dāng)于把clk2的捕獲沿在前面,clk1的捕獲沿在后面。當(dāng)使用不同的clk domain時(shí)候,如果將scan串起來,工具會自動(dòng)加上lockup latch。


在做DFT時(shí)候,經(jīng)常用到的signal總結(jié)如下
Scan clock:
Reset/Set is also treated as a clock
Scanenable:it is 1 in shift, when capture it is 0
Scan mode/Test mode: always 1 in the whole test mode
Scan input/Scan output

Scan Design Rules-clock
這個(gè)cell能不能串到scan chain上面去的標(biāo)準(zhǔn)是什么?
scan chain是不是能夠正確的shift in shift out 是這個(gè)方法的基礎(chǔ),也就是說如果我把這個(gè)cell串到scan chain上面去,那他的shift in shift out是否會有問題。

如上圖所示,后面兩個(gè)cell的時(shí)鐘受到了一個(gè)與門的控制,并且受到了Q的輸出的影響,因?yàn)楣ぞ甙亚懊嫒齻€(gè)cell串起來后,在shift 階段,Q的值是變化的,從而導(dǎo)致經(jīng)過與門后面的時(shí)鐘是變化的,所以,如果將后面兩個(gè)串起來的話,后面兩個(gè)cell就沒法正確的shift了。
而我們想做的是一個(gè)full scan,那么在不影響function的情況下如何解決這個(gè)問題。上面設(shè)計(jì)屬于為了節(jié)約功耗low power而設(shè)計(jì)的一種門控。

如上圖所示,通過增加一個(gè)mux而解決了clk可控的問題。
在predft階段主要是針對clock和set/reset的問題。

同樣如上圖所示,由于reset被cell/Q控制,從而在shift階段,你沒法控制這個(gè)cell的值,所以沒法串到chain上面去,解決的方法,要么是用autofix,要么反饋給Designer修改設(shè)計(jì)。


clock gating cell的設(shè)計(jì)
clock gating cell的目的就是為了省power,在這些邏輯不工作的時(shí)候,我可以通過clock gating cell 來省power,如果用與門來控制就會產(chǎn)生glitch。通常有兩種設(shè)計(jì):這個(gè)在綜合的時(shí)候可以在綜合的時(shí)候交個(gè)工具替換,添加:

如上圖a所示,輸入的時(shí)鐘是010,如上圖b所示,輸入的時(shí)鐘是101。

值得思考的問題:
1、除了MUX-D scan cells,再列出兩種scan cell并簡述
2、Measure PO的動(dòng)作可以發(fā)生在capture之后嗎?為什么
3、詳細(xì)分析為什么lockup latch能解決clock skew的問題?
4、create a test case with reset scan violation and then fix them with EDA tool Autofix feature。

簡單介紹如何使用autofix
通過在腳本中增加新的腳本command:

set_dft_configuration -fix_clock enable set_autofix_configuration -type clock

第一條命令是希望工具能fix clock相關(guān)的問題,默認(rèn)是disable的,所以這里需要enbale
第二條命令是auto fix的配置,告訴他fix clock相關(guān)的問題,這樣的話,工具就會fix clock相關(guān)的問題。

總結(jié)

以上是生活随笔為你收集整理的DFT实训教程笔记2(bibili版本)- Scan synthesis practice的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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