DFTug - Getting Started(下篇)
文章目錄
- 引言
- Performing Scan Extraction
- Hierarchical Scan Synthesis
- Introduction to Test Models
- Reading In and Using CTL Models at the TOP Level
- Checking Connectivity to Cores at the Top Level
- Linking Test Models to Library Cells
- 本節(jié)需要記住的腳本
引言
本篇博客是對(duì)DFTug的第六章Getting started進(jìn)行介紹。是對(duì)DFTug的一個(gè)總結(jié),并加上了一個(gè)自己的理解,并希望對(duì)一些重要的的腳本進(jìn)行背住,而不是記住一個(gè)大概,因?yàn)橹挥斜匙?#xff0c;完全寫出來(lái),才能給人感覺(jué)是非常專業(yè)的, 所以,今年目標(biāo)是希望能塑造自己的專業(yè)性。
Performing Scan Extraction
Scan extraction 僅僅支持標(biāo)準(zhǔn)的scan design,并不支持extract scan structures for compressed scan designs。
步驟:
1、read_verilog my_design_dft.v
2、current_design my_design_dft
3、定義基本的basic signal
dc_shell> set_dft_signal -view existing_dft -type ScanDataIn -port {TEST_SI1 TEST_SI2} dc_shell> set_dft_signal -view existing_dft -type ScanDataOut -port {TEST_SO1 TEST_SO2} dc_shell> set_scan_path chain1 -view existing_dft -scan_data_in TEST_SI1 -scan_data_out TEST_SO1 dc_shell> set_scan_path chain2 -view existing_dft -scan_data_in TEST_SI2 -scan_data_out TEST_SO2 dc_shell> create_test_protocol dc_shell> dft_drc dc_shell> report_scan_path -view existing_dft -chain all dc_shell> report_scan_path -view existing_dft -cell all值得注意的是,在執(zhí)行scan extraction的時(shí)候,定義你的test structure必須要以DFT existing的認(rèn)知(view)來(lái)定義。因?yàn)樗麄円呀?jīng)存在于設(shè)計(jì)中了,所有的連線已經(jīng)connect好了。
那么現(xiàn)在再來(lái)說(shuō)上述,做的這些工作有什么作用,也就是說(shuō)為什么要設(shè)置這些,才能夠?qū)崿F(xiàn)extraction,不是已經(jīng)都connect好了嗎,工具為什么不能自動(dòng)識(shí)別出來(lái)?
Scan extraction is the process of reading in an ASICII netlist that lacks test attributes。
如官方所說(shuō),Scanextraction是一個(gè)缺乏測(cè)試屬性的netlist,因此我們需要去知道tool來(lái)識(shí)別到netlist中的scan chain structure,雖然,我們不會(huì)對(duì)這個(gè)netlist進(jìn)行改動(dòng)。只要能夠正確的識(shí)別到了scan structure,你就可以write out test model and test protocol。
對(duì)于給定你的設(shè)計(jì),你如果指定不同的scan chain會(huì)導(dǎo)致不同的測(cè)試協(xié)議。
所以,tool沒(méi)法自動(dòng)去識(shí)別到你的scan structure,你必須要去指導(dǎo)tool,如果你指導(dǎo)不正確,也會(huì)導(dǎo)致錯(cuò)誤的測(cè)試協(xié)議,從而在某一時(shí)間,會(huì)輸入不正確的測(cè)試數(shù)據(jù),導(dǎo)致測(cè)試失敗。
Hierarchical Scan Synthesis
Bottom-Up Hierarchical Scan Synthesis, 簡(jiǎn)稱為HSS Flow, 與之對(duì)應(yīng)的是Top down Flow,如下圖是 Top-down 方法,這種方法,一旦有一點(diǎn)改動(dòng),將會(huì)導(dǎo)致整個(gè)chip層全部重新insertion。下圖分別是TOP-down和Bottom-UP的示意圖。
以下情況,官方建議使用HSS Flow
1、你的設(shè)計(jì)非常大
2、你想要重新定義一個(gè)block的DFT結(jié)構(gòu)。
3、你想要?jiǎng)?chuàng)建的DFT-inserted block是可以在將來(lái)復(fù)用的。
此外注意以下,官方特別提醒的術(shù)語(yǔ):DFT-inserted block稱之為core,當(dāng)前的level稱之為core level。與之對(duì)應(yīng)的是top level。(即使當(dāng)top-level,放到更上一層又變?yōu)閏ore level) 。在DFT的文獻(xiàn)中,術(shù)語(yǔ)“block” 值得是層次化的設(shè)計(jì)模塊,而術(shù)語(yǔ)“core"特指的是有CTL 模型信息的DFT-inserted blocks。
Introduction to Test Models
如下圖所示
CTL - Core Test Language
我們說(shuō)的test models通常就是指的CTL model。CTL models可以被下面三種格式讀寫:
ddc :包含了所有的信息,最全。
ctl ASCII格式的ctl語(yǔ)言,這個(gè)可以打開,不含網(wǎng)表約束物理scandef信息
ctlddc二進(jìn)制的ctl,不含網(wǎng)表約束物理scandef信息
這里我打開過(guò)ctl的文件,其實(shí)和spf的文件寫法類似。你可以看到一條chain上面連了具體的哪些cell,但是這些cell是沒(méi)有順序的。
下圖是CTL的文件部分內(nèi)容:
官方的建議是,希望用戶在完成一個(gè)block之后,就寫出所有格式的文件,以備后續(xù)使用。下面write_out出來(lái)的文件,有如下部分:
Reading In and Using CTL Models at the TOP Level
在頂層,你需要讀入CTL模型,然后讀入他的netlist,工具會(huì)自動(dòng)整合core-level的scan-structure 到top-level scan structure。
list_test_models
列出在內(nèi)存中,具有CTL test models的design。
DFTug給出了一個(gè)簡(jiǎn)單的top-level的腳本,一個(gè)是ddc格式,一個(gè)是ctl格式。后續(xù),我會(huì)再查一下lab中的腳本。
a Simple top-level scripts:
Checking Connectivity to Cores at the Top Level
在core integration flow的時(shí)候,你必須要確保進(jìn)入block的TestMode 和 Constant 信號(hào)能夠match到block上用于shift chain所需要的信號(hào),如果條件不滿足,會(huì)被堵塞到。所以,個(gè)人感覺(jué)精髓在于本小節(jié)的標(biāo)題,checking connectivity to cores at the top level.
你可以在DFT insertion之前,使用DRC來(lái)確認(rèn)這些條件是否符合,在運(yùn)行DRC之前,你需要設(shè)置以下的變量:
如下的該選項(xiàng)是默認(rèn)關(guān)閉的。一旦開啟后,DFT—DRC會(huì)自己運(yùn)行內(nèi)部仿真一個(gè)初始值,然后有一個(gè)期望值,看初始值與期望值是否匹配,從而驗(yàn)證connectivity是否正確。
一旦connectivity的mimatch被檢測(cè)到了,scan segment就不會(huì)被stitch onto the scan chains。(可以再次結(jié)合之前的bottom-up的示意圖進(jìn)行理解)
Linking Test Models to Library Cells
有一些Cell是自己內(nèi)建立(build-in)scan chains, 也就是說(shuō)在top-level的時(shí)候需要連接到這些cell的CTL model 。
這時(shí)候也可以去link到,這里不介紹,暫時(shí)沒(méi)遇到過(guò)這種情況。
如果你要
check library cells for CTL Model Information
使用
report_lib
如下,會(huì)發(fā)現(xiàn)這個(gè)cell具有ctl屬性。
此外,Getting Start部分還簡(jiǎn)單介紹了DC Explorer,這里不再另外介紹。
本節(jié)需要記住的腳本
set_scan_state scan_existing # write out core-level design information write_test_model -formate ddc -output [format "%s%s" ./out/$design _scan.ctlddc] write_test_model -formate ctl -output [format "%s%s" ./out/$design _scan.ctl] write_scan_def -output [formate "%s%s" ./out/$design _scan.def] write -hierarchy -formate ddc -output [formate "%s%s" ./out/$design _scan.ddc] write -formate verilog -hierarchy -output [formate "%s%s" ./out/$design _scan.v] list_test_models dc_shell> set_app_var test_validate_test_model_connectivity true至此,DFTug 第六章Getting start的部分,總結(jié)全部結(jié)束。
總結(jié)
以上是生活随笔為你收集整理的DFTug - Getting Started(下篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DFTug - Getting Star
- 下一篇: DFTug - Running the