專題題目 Failure Candidate Identification for SiliconFailure Candidate Identification for Silicon Debug
組員 陳柏遠 年齡 21 李劭鵬 年齡 21 陳雋為 年齡 21
學弟妹加油!? 因為這次聽說有學弟妹也要聽,怕學弟妹 不知道我們在做什麼內容或聽不太懂,所 以題目就從頭盡量詳細介紹!也請教授們 多多包涵. 還有記得拿便當來吃.
題目大致介紹 在架構相同的情況下在 simulation values 與 observed values 發現了差 異, 這可能是其中的 WIRE 或 INPUT 有 問題, 而我們必須找出問題所在.
題目說明 (不要問我介紹跟說明哪裡不一樣,我也不知 道 … ) 簡單來說這個題目是要我們比較主辦單 位給我們的 obs 檔跟 sim 檔給的數值, obs 檔給的是正確的結果, sim 檔中則是有包 含著錯誤的點,然後用方法去判斷由 testcase 檔所形成類似以下的邏輯閘圖中, 哪一個地方的數值出錯
舉例 obs 檔 O1=0 O2=0 I 代表 INPUT W 代表 WIRE O 代表 OUTPUT sim 檔 I 1=1 I 2=0 I 3=1 I 4=1 I 5=0 W1=0 W2=0 W3=1 W4=1 O1=1 O2 = 0 很明顯的 O1 不一樣 所以我們要找出是 不是前面哪裡的數值有問題
所以 … ? 所以我們這次專題的目標就是要把比 賽主辦單位所給的 CASE 檔想辦法比對出 SIM 檔跟 OBS 檔中 OUTPUT 不同的地方然 後找找出前面的 WIRE 或是 INPUT 哪裡有 錯,並算出有錯誤的數量也就是算出 final candidates. 此外主辦單位還要我們計算出我們專題用 到的 what if analysis 的數量
什麼是 what If analysis 剛剛一直說要比較 obs 檔跟 sim 檔的結果並且 找出錯誤的地方,那我們要怎麼找呢?答案 就是 what if analysis. 簡單來說 what if analysis 就是 0 變成 1 , 1 變 成 0 ,也就是 0 跟 1 的互換,由於整個邏輯閘 給的數值是用 0 跟 1 組成的,那我們只要把原 來某個地方給的 1 變成 0 ,這樣可能就會影響 到後面 output 的結果,用這種 0 跟 1 互換的方 式來找出哪裡是錯誤的地方.
這個題目需要注意的地方 使用 what if 分析的數量越少越好(這關 係到演算法跟跑點的方法) 整個程式跑完的時間(假如有很多點可能 要跑很久) 程式方面記憶體的配置(因為點真的可能 有很多,沒寫好點來個幾十萬就爆了)
程式流程
‧ 取得參數並讀入檔案內容,並記錄訊號的值 。 ‧ 取得 I W O G 四種元件各別總數,定義指向訊號陣列 的指標與其大小。 ‧從 design.v 得知有幾個 input output wire 訊號 ‧配置記憶体空間 配置所有訊號、邏輯閘的資料結構並把邏輯閘的輸 出入訊號連接起來
‧ 指派每個 gate 的 Level 參數,愈接近 input 訊號的閘 level 愈低, 訊號從最低 level 的閘開始傳遞到高的閘,等最後傳到最高的閘 之後就會傳到輸出端 指派每個 gate 的 Level 參數,愈接近 input 訊號的 閘 level 愈低,訊號從最低 level 的閘開始傳遞到高 的閘,等最後傳到最高的閘之後就會傳到輸出端
‧ 把所有的元件另外再依 Level 大小用 Array 組織起來,先把同 level 的閘用鏈結串列組織起來,再把不同 level 的鏈結串列第一個元素 用 Array 組識起。利用 pGateLevelArray 依 Level 大小順序逛完所有 GATE
‧ 依輸入訊號更新所有訊號值,包含各元件的輸出訊號,計算模 擬的結果,應該要跟檔案的內容一樣 ‧ 判斷那些該做 what-if analysis ,不需要分析的話,則 RunAnalysis 欄位設為 false
我們的程式架構
減少使用 WHAT IF 的方法 Static:Static approach 比對 obs 和 sim 兩 個輸出的 output, 先找有同樣 output 的, 照 順序找出相對的 wire 跟 input, 因為輸出值 相同, 可以判斷 wire 是對的, 我們就不用去 找這些 wire 因為是對的, 把他們的 finish 設 成 true Dynamic:Dynamic approach 是經過 Static approach 分析動作之後 wire 前面的 點就不用再判斷了, 可以減少 what-if 判斷 的次數
經由主辦單位提供的四個測試檔作測試, 以下表格為測試資料: 實做的結果 Case1Case2Case3Case4 final candidates what-if analysis Cpu time 1sec 16sec Memory Usage 904kb