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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

文章目錄

  • Scan synthesis practice

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

Scan synthesis practice

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

如何理解串scan時候的不同沿觸發的寄存器

腳本:

#configure library set search_path "$search_path ./netlist ./lib" 在原來的search_path的基礎上做一個補充 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 設置頂層文件 link 做一個鏈接 #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 現在做分析 preview_dft 先根據分析結果,給出preview的報告 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


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

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

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

現在在腳本里面更改

set_scan_configuration -clock_mixing mix_edges

如下圖所示,當重新運行腳本之后,Scan path變為了1條,chain length變為了4


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


如上圖所示,關鍵一點,在一個cycle內,數據會被捕獲兩次,從而導致兩個正沿在前負沿在后的兩個寄存器的值保持了相同,被綁定。導致經過這個跨沿的后續reg均錯誤得到值。
總結:越晚capture的cell越放在前面去,這樣保證他不能立即capture到前面cell最新的那個值

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

如下圖所示,現在將這四個cell串起來,假設第二個和第三個reg之間的路徑比較長,就會導致嚴重的skew的問題。

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

如何解決這個問題?

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


在做DFT時候,經常用到的signal總結如下
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
這個cell能不能串到scan chain上面去的標準是什么?
scan chain是不是能夠正確的shift in shift out 是這個方法的基礎,也就是說如果我把這個cell串到scan chain上面去,那他的shift in shift out是否會有問題。

如上圖所示,后面兩個cell的時鐘受到了一個與門的控制,并且受到了Q的輸出的影響,因為工具把前面三個cell串起來后,在shift 階段,Q的值是變化的,從而導致經過與門后面的時鐘是變化的,所以,如果將后面兩個串起來的話,后面兩個cell就沒法正確的shift了。
而我們想做的是一個full scan,那么在不影響function的情況下如何解決這個問題。上面設計屬于為了節約功耗low power而設計的一種門控。

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

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


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

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

值得思考的問題:
1、除了MUX-D scan cells,再列出兩種scan cell并簡述
2、Measure PO的動作可以發生在capture之后嗎?為什么
3、詳細分析為什么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相關的問題,默認是disable的,所以這里需要enbale
第二條命令是auto fix的配置,告訴他fix clock相關的問題,這樣的話,工具就會fix clock相關的問題。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。