DFTug - Getting Started(上篇)
引言
本篇將從DFTug的第六章Getting Started進行介紹從而熟悉DFT的基本流程。本篇博客是對DFTug的一個總結概括,所以總結出來的命令是希望背下來的。
Setting Up Your Design Environment
首先,下面的幾個SNPS的系統(tǒng)參數(shù)變量需要你在環(huán)境中定義。
link_library: 用于resolve 你的cell。
target_library:一般來說與link_library是相同的,除非你想translatng a design between technologies。
symbol_library: cell的圖形
search_path:搜索的路徑列表
hdlin_enable_rtldrc_info: Reports file names and line numbers associated with each violation during test design ruled checking. This makes it easier fr you to later edit the source code and fix violations.
For example:
# configuration logic libraries set_app_var target_library {my_library.db} set_app_var link_library {* my_library.db} set_app_var hdlin_enable_rtldrc_info true上面例子中,其實應該不熟悉的只有hdlin_enable_rtldrc_info了,查看syn3手冊,解釋如下:
官方的意思,我個人理解的應該是:開啟了這個后,當我們使用dft_drc的時候,如果有violation,會定位到HDL code的行號,該選項默認是關閉的,所以官方的建議是打開。
Read In Your Design
接下來就是讀入你的設計,
讀取設計有三個命令:read_ddc, read_verilog, read_vhdl(verilog是我在項目中見過最多的)
dc_shell> read_verilog {my_design.v my_block.v}
dc_shell> current_design my_design
dc_shell> link
dc_shell> read_sdc top_constraints.sdc
Setting Scan Style
SNPS提供了下面四種style,其中第一種mux FF是最常用的一種,后面三種,待有機會,我會再來理解。
如下cmd是默認mux style。
Configuring te Test Cycle Timing
設置下面的測試時間變量需要詢問半導體廠商,默認為下面的設置值:
dc_shell> set_app_var test_default_delay 0 dc_shell> set_app_var test_default_bidir_delay 0 dc_shell> set_app_var test_default_strobe 40 dc_shell> set_app_var test_default_period 100Define the DFT Signals
設置DFT signals 的view有兩種,一種是-view existing_dft .。另外一種是,-view spec。二者的區(qū)別,初學者可能并不能真正理解,existing_dft是不會在dft_insert階段做make connection的動作(比如時鐘信號、復位信號),而-view spec是會做make connection的動作(比如 scan_enbale信號),這是二者的本質區(qū)別。
dc_shell> set_dft_signal -view existing_dft -type ScanClock dc_shell> set_dft_signal -view existing_dft -type Reset -active_state 0dc_shell> set_dft_signal -view spec -type ScanEnable -port scan_enbale_port -active_state 1即使,你是用已經(jīng)存在的ports作為Scan_in和Scan_out仍然要使用-view spec的認知,因為在chain上內部是還沒有連接的。這里我把-view翻譯為“認知”。
dc_shell> set_dft_sgnal -view spec -type ScanDataIn -port DAT_IN[7] dc_shell> set_dft_signal -view spec -type ScanDataOut -port DAT_OUT[7] dc_shell> set_dft_signal -view spec -type ScanDataIn -port TEST_SI dc_shell> set_dft_signal -view spec -type ScanDataOut -port TEST_SO dc_shell> set_dft_signal -view spec -type ScanEnable -port TEST_SEConfiguring Scan Insertion
為了配置scan insertion,你可以指定test ports,define test modes, adn identify and mark any cells taht you do not want to have scaned.
dc_shell> set_scan_configuration -chain_count 4接下來,你需要創(chuàng)建測試協(xié)議,即使你是讀入了一個test_protocol,你也需要再create一下。
dc_shell> create_test_protocol然后run pre-DFT test DRC
dc_shell> dft_drcPreview Scan Insertion
dc_shell> preview_dftPerforming Post-DFT Optimization
默認情況下,在wire load mode中,insert_dft會自動的執(zhí)行基本的門級優(yōu)化,但建議是關掉他,某視頻里面說他做優(yōu)化做的并不好。
dc_shell> set_dft_insertion_configuration -synthesis_optimization none但是在topographical mode下,inser_dft是不會執(zhí)行post-DFT optimization的。
Inserting the DFT Logic
dc_shell> insert_dftAnalyzing Your Post-DFT Design
dc_shell> dft_drc該過程稱之為post_DFT DRC ,DFTC會檢查設計測試的潛在問題。這個檢查機制會比pre-DFT更加復雜。they check for the correct operation of the scan chain.
dc_shell> write -formate ddc -hierarchy -output my_design.ddc dc_shell> write_test_protocol -output my_design_final.spf但是有一些錯誤是不支持DRC的,因此只能在TMAX中來報錯出來。
Reporting
接下來就是查看report,查看report是一向非常重要的技能。
dc_shell> report_scan_path -view existing_dft -chain all dc_shell> report_scan_path -view existing_dft -cell all#DFT Configuration Report
dc_shell> report_dft_configuration
#Scan Configuration Report
dc_shell> report_scan_configuration
#DFT Signal Report
dc_shell> report_dft_signal -view existing_dft
dc_shell>report_dft_signal -view spec
#Report on a user-specified scan path
dc_shell> report_scan_path -view spec -chain all
#autofix configuration report
dc_shell> report_autofix_configuration
本節(jié)腳本匯總,加強記憶
set_app_var target_library { xx.db} set_app_var link_library {xx.db} set_app_var hdlin_enable_rtldrc_info trueset_app_var test_default_delay 0 set_app_var test_default_bidir_delay 0 set_app_var test_default_strobe 40 set_app_var test_default_period 100set_dft_signal -view existing_dft -type ScanClock set_dft_signal -view existing_dft -type Reset -active_state 0 set_dft_signal -view spec -type ScanDataIn -port DAT_IN[7] set_dft_signal -view spec -type ScanDataOut -port DAT_OUT[7]set_scan_configuration -style multiplexed_flip_flop set_scan_configuration -chain_count 4 set_dft_insertion_configuration -synthesis_optimization none set_dft_configuration -clock_mix mix_clocks set_dft_configuration -clock_mix mix_edges create_test_protocoldft_drcpreview_dftinsert_dftdft_drcwrite -formate ddc -hierarchy -output my_design.ddc write -formate verilog -hierarchy -output my_design.v write_test_protocol -output my_design_final.spf report_scan_path -view existing_dft -chain all report_scan_path -view exisiting_dft -cell allreport_dft_configuration report_scan_configuration report_dft_signal -view existing_dft report_dft_signal -view spec report_scan_path -view spec -chain all report_autofix_configuration如何查看報告
preview_dft -show后面有幾個比較好用的選項,需要背下來。
preview_dft -show scan_clocks
參考
DFTug 第六章 p103-p121
可以結合axr的第一個lab記錄進行對比鞏固。
https://blog.csdn.net/ciscomonkey/article/details/110942075
https://blog.csdn.net/ciscomonkey/article/details/112221279
總結
以上是生活随笔為你收集整理的DFTug - Getting Started(上篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何理解ScanDef的概念
- 下一篇: DFTug - Getting Star