DFT实训教程笔记2(bibili版本)- Scan synthesis practice
文章目錄
- 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ā)的寄存器
腳本:
如上圖所示,對于那些已經(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:
第一條命令是希望工具能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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DFT实训教程笔记1(bibili版本)
- 下一篇: DC workshop指导篇1- Se