最近應該可以專心在這一塊,記錄一下避免忘記。
01. netlist simulation 時,除非 cell 有 power port,不然不要誤用帶 power port 的 Verilog,因為需要有電,buf 的 output 才不會 x,不確定是特殊 cell 還是通例,也許之後可以看有無 define 可以設定。
02. simulation 時,如果吐出一堆 ASSERT,比如說 IEEE package,xrun 可以在 dump Tcl 檔案裡面加上 assertion -off -vhdl -all 便可以關掉 ASSERT,simulation 速度也會加快。
03. top simulation 時,如果 file_list 檔案過多時,可能只是更改幾個檔案,比如將 memory 檔案從 fast_func 改成正常版本,有可能會發生 unresolved object,此時砍掉編譯暫存檔整個重來即可。
上面不確定是 xrun 參數有問題還是怎樣?也有可能跟之前 liborder 等問題類似?
2026/09/25 更新
現在都是使用 force 來 gen clock,因為我是全部打開開關,故在某個 clock 打開後,會印出一堆錯誤訊息增加測試時間,(正常在此階段不能使用 force,但客戶更改測試架構,故請我先用此方法驗證)。
雖然我已寫成 testarg 可以傳參數決定何時開啟關閉,但我的 script 可以一次跑全部 pattern 或依使用者輸入決定測試哪支 pattern,為了這個問題,我要將 script 大幅改寫才能動態改變開關。
不是做不到,但不值得在這裡投入過多心力,故我改將 pattern 一樣用類似 testarg 傳進我的 force Verilog 中,然後利用字串比對決定是否要開啟該 clock,沒想到就這樣引入臭蟲。
剛在測試這個星期第一次有機會跑的 pattern,沒想到 clock 不符預期,感覺就是我的 pattern 名稱有錯誤,因為懶得查 display 參數就直接印出,故得到一個很大的數字,原本以為這是 16 進位數字,於是便請 AI 直接幫我解析,沒想到 AI 居然還知道我講的是錯的?真是太意外了。
當初沒有想到 pattern 名稱會有哪麼多字,只宣告 256 bit,難怪會不符預期。
2026/09/27 更新
不常寫 Verilog 有時會反應不過來,今天在計算記憶體修復資訊,直接問 AI 比較快。
所以當我注入錯誤是 bit 5 時,我的 TCD 如下:
PinMap {
SpareElement {
RepairEnable : repair_en ;
FuseMap[0] : repair_info[0];
FuseMap[1] : repair_info[1];
FuseMap[2] : repair_info[2];
FuseMap[3] : repair_info[3];
FuseMap[4] : repair_info[4];
}
}
FuseMap[4:0] {
ShiftedIO(Q[5]) : 5'b00101;
}
回到上面的 SpareElement,對應到那一段 bisr chain 就會是 001011,
也就是 bit0, bit1, bit3。
2026/10/09 更新
真是受不了某家的 memory,每次一跑模擬就會吐出一堆 ERR,之所以會有這些 ERR,都是因為出現在已經不在 BIST 測試階段的訊號 unknown 導致,每次看了就是心累,還得多檢查第一個發生點是否發生在 BIST 之後。
雖然他有 define 可以關掉,但應該有另一個 define 決定你是為了 MBIST 還是 Function 做測試,這樣 Verilog Model 也好判斷。
2026/10/10 更新
翻了一下客戶工作站 Simvision 的文件,沒看到有什麼可以快速得到 instance 的方法。
雖然我可以用 Tessent 打開 netlist 下 command 得到我要的記憶體列表,但是兩邊 EDA 工具顯示的方式不同,再加上客戶使用 escaped identifier 的命名方式亦或是 generate 語法的鍋?
導致我無法無腦的將 Tessen 的斜線替換成點!
目前只有折衷的方式,先從 log 挑出錯誤行數中的字串,再用 sed 切出我要的 instance name,再補上我要的訊號名稱,再丟進我的 Tcl 檔案產生一個 add.tcl,最後在 Simvision 的 console 視窗 source 該檔案,我才能在 waveform 視窗看到我要觀察的訊號。
另外,之前在 Design Windows 直接打關鍵字搜尋貌似都不成功?但最近似乎又沒問題了?
馬的,需要花錢的 EDA 工具,比 GTKWave 還難用是怎樣?