碩士生活 School

[碩士] IC設計步驟之二-測試

邏輯合成完了以後,我們開始進入了測試階段。

這部份對我來說比較困難,因為對於鉅細靡遺檢視的態度來說,自己這部份的特質其實非常缺乏。XD 從性向測驗與智力測驗都看得出來,我比較不屬於這塊料。Orz|||| 但是這卻是IC設計裡面非常重要的一環,畢竟,誰想要買到容易壞的東西啊!

(05) Desigh for Test DFT 

[網路上的定義]
所謂DFT,是在IC設計中預先將一些與測試設備相對應的參數或是電路植入晶片佈局中,藉此提高IC的測試覆蓋率,如此一來不但能將複雜IC的測試難度與成本大幅降低,也能提高測試的品質、確保IC的“健康”。

[準備檔案]
Netlist檔 – Netlist檔通常合完都會儲存.v檔 or .vg檔
.synopsys_dc.setup  – 這不是Netlist檔,是用來setup “db” or “sdb”給design compiler的”檔案”

[環境設定]
source /usr/cad/synopsys/CIC/synthesis.csh

[DFT Compiler]
dv &
dc_shell

[建議使用Command model]
read_verilog MIPS_syn.v 或者是接著前面邏輯合成的步驟接著往下做。

link
check_design
report_constraint -all_violators 確認看看是否有violation

[violation的處理方式有以下幾種]
#修改RTL的Design,盡量釐清組合邏輯電路與循序邏輯電路的界線。
   也可以選擇把電路切成multi-cycle或pipeline的模式。
#增加clock period
#修改較難達成的timing constraints,例如input delay、latency或transtition。

[記錄原始設計的檔案]
report_area > MIPS.area_rpt
report_timing > MIPS.timing_rpt
report_power > MIPS.power_rpt

[Select scan style]
支援以下幾種Scan style…
multiplexed_flip_flop
clocked_scan
lssd
aux_clock_lssd
combinational
non

我們使用
set test_default_scan_style multiplexed_flip_flop

[Set ATE configuration and create test protocol]
test clock的timing基於以下變數…
test_default_period
test_default_delay
test_default_strobe
test_default_strobe_width

我們可用…
set test_default_delay 0
set test_default_bidir_delay 0
set test_default_strobe 40
set test_default_period 100

需要創造一個test protocol給non-scan的設計,則是
create_test_protocol -infer_asynch -infer_clock

另外,你也可以自己去定義這些訊號的clock
set_dft_signal -view existing_dft -type ScanClock -port clk -timing [list 45 55]
set_dft_signal -view existing_dft -type reset -port reset -active_state 0
create_test_protocol

[Pre-scan Check] 插入SCAN之前
report_constraint -all_violators
dft_drc

這裡可以觀察一下,總共會有多少的SCAN CELLS,還有多少的RULE VIOLATION。

[Scan specification] 這個步驟是要告訴DFT你要幾個SCAN Chain。
set_scan_configuration -chain_count 1 (這邊指一個)

[Scan preview]可以看見SCAN Chain的數量與名字
preview_dft

[Scan chain sythesis] 合成
insert_dft

我這步合成超級久的,希望不會有問題!Q_____Q
他會在一邊合成的過程中,一邊最佳化減少你的Violation。

[Post-scan check]
report_constraint -all_violators
dft_drc

[Reports] 最後當然要記錄一下實驗的結果
report_area > MIPS_dft.area_rpt
report_timing > MIPS_dft.timing_rpt
report_power > MIPS_dft.power_rpt

看看report的結果,可以關心幾個數據…
The area overhead of scan? %
The timing overhead of scan?%

[Write out files]
write_test_protocol -output MIPS_dft.spf 這個檔案在ATPG時會用到。
write -hierarchy -format verilog -output MIPS_dft.vg
write -hierarchy -format ddc -output MIPS_dft.ddc
write_sdf -version 2.1 -context verilog MIPS_dft.sdf

做完這步可以藉由VG檔得知幾個訊息…
在dft之前DFF的Type是什麼?
在dft之後DFF的Type是什麼?
哪些pin是由dft所增加的?
scan output pin在哪?

另外,如果你想要讓DFT去創造Dedicate scan out pin,
使用下列command在加入scan chain之前,
set_scan_configuration -create_dedicated_scan_out_ports true

目前這個LAB沒有使用,dft讓funtion output pin共用scan output pin,所以沒有dedicated scan output pin,如果需要則在使用前面的指令。。

(06) Automatic Test Pattern Generation ATPG
ATPG是一種系統工具,產生資料給製造出來後的電路作測試使用。
這樣講起來非常的生疏,我剛學習看很久都吃不進去,無法有感受。

最近樂透上看15億,有些人為了想要提高樂透的中獎機率,會寫一些小程式或買一個搖彩機去跑跑看會跑出甚麼數字。因此,我們知道那些跑出來的數字是我們自己產生的,用來推估可能的數據,而不是台彩真正開出來的號碼。當然,ATPG不會這麼的不準,在設計產生工具時有其規則可循,就像我們做搖彩機會設計成49球選6一樣。

(07) Static Timing Analysis STA 靜態時序分析
套用特定的時序模型(Timing Model),針對特定電路分析是否違反設計者給的時序限制(Timing Constraint)。
以分析的方式區分,可分為Path-Based和Block-Based兩種。

我很沒時間觀念。= =||| 這個,沒有時脈概念在硬體設計上真的很慘,這是我應該要突破的地方。
不同的是,這裡探討的是Require time與Arrival time的關係,胡言亂語的解釋一通就是…

兔子要去找貓咪玩,結果兔子去到貓咪家門時,貓咪已經出門了。 (Miss)
兔子要去找貓咪玩,結果兔子去貓咪家時,貓咪還在家。(Hit)
兔子到貓咪家的時間 = data arrival time
貓咪離開家的時間 = data required time
貓咪離開家的時間(7:00) – 兔子到貓咪家的時間(06:00) = Slack為正,遇見。
貓咪離開家的時間(7:00) – 兔子到貓咪家的時間(08:00) = Slack為負,錯過。

(08) Encounter
 (1/3)Circuit Placement & Power Planning
 (2/3)Clock Tree Synthesis and Routing
 (3/3)Power Analysis

(09) Design Rule Check DRC 
設計規則檢查,要符合製程的設計規則,為讓晶片製作過程的合裡變動不致影響製作的結果,電路設計者所設計的電路步局必須滿足晶圓廠所提供的布局規範。

(10) Layout Versus Schematic LVS
電路設計及布局設計為不同階段的獨立設計過程,必須確保佈局設計及原電路的一致性。Calibre LVS的階層式處理技術,除了能夠解決了SOC設計當中內嵌式內存膨脹導致晶片驗證上的挑戰外,其電路規則檢查(ERC)功能,更可以提供給使用者快速發線及偵錯如電源短路之類的Layout設計者所常發生的棘手問題。

(11) Design Verification

(12) FPGA

About the author

蕾咪

蕾咪,來自台東,卻不定期旅居歐洲的工程師女孩,身兼作家、部落客、創業家等多重身份。畢業於台大電子所,曾在義大利商與美商擔任研發工程師;走訪世界後,發現對台灣有段割捨不了的愛,讓我們一起努力成為想要的自己吧!:) 合作邀稿請聯繫:[email protected]

5 Comments

  • 更正!!
    是用來setup "db" or "sdb"給design compiler的"檔案"
    不好意思@@
    版主回覆:(02/14/2012 06:26:08 AM)
    OK~謝啦謝啦!!!!>W< 立刻補充進去,希望還沒有誤導太多人XDrz~
    那時候邊做專題邊寫的筆記,後來忙論文,沒有再仔細的勘誤過,感謝你的指點!^^

  • 你這篇文章對我來說很受用 ^^
    不過有小小的地方要修正一下
    [準備檔案]
    Netlist檔 – Netlist檔通常合完都會儲存.v檔 or .vg檔(具小弟所知道的@@)
    .synopsys_dc.setup 這不是Netlist檔, 是用來setup "db" or "sdb"給design compiler的library
    版主回覆:(12/07/2011 06:40:31 PM)
    太好了!>W< 感謝你的指正~~~~
    我等等更新到文章中囉!感恩~~~

  • 妳的資料已經幫我很多了
    謝謝妳唷!!^^
    版主回覆:(11/26/2011 01:23:55 AM)
    呵呵~有幫上忙就好!^^
    如果你是修課的學弟(妹),祝福你這學期順利通過囉!XD

  • 妳好~
    請問妳在下dft_drc這個指令後有出現violation的經驗嗎
    請問妳都怎麼解決呢?
    是否要回頭修改verilog呢?
    謝謝妳!!
    版主回覆:(11/20/2011 06:14:35 AM)
    我有點忘了,已經一年多了~Orz|||
    我印象中violation應該有方法解決。
    最後解決不了逼不得已才會改到Verilog。
    當時好像沒在這段遇到問題,所以沒什麼印象,拍謝~

  • 寫的超詳細的
    讓我受用不少
    謝謝你的文章!!
    版主回覆:(01/28/2011 01:21:20 PM)
    很高興對你有幫助^^
    因為我是怕自己忘記,所以想說可以記錄下來,方便複習。
    能夠順便幫助到你讓我很開心。^^

Leave a Comment