2025年7月2日 星期三

xmhelp

DC 有 man 可以查詢錯誤,NCVerilog 則是 xmhelp 指令。

比如我在 simulation 的過程中,出現一個 *W,BIGIDX 的錯誤訊息,原本的 log 可以知道是哪個檔案,但如果我們想多了解一點,可以用下面指令來查詢。

xmhelp xmelab BIGIDX

另外,xrun or ncverilog 都是一個統包的指令,其實他會分別作編譯,elaborate 以及跑模擬。

這其實會分別對應到另外 3 支程式。

第一支程式是 xmvlog,接著是 xmelab,最後則是 xmsim。

對應到 iverilog 便是 iverilog + vvp。

另外,NCVerilog 是舊版本名稱,現在應該是 Xcelium。

2025年7月1日 星期二

沒事多讀規格書

原本我以為 timescale 是可以細到針對個別 Verilog 設定XD

昨天在 2005 規格書好像沒有看到?可能是跟我邊分心連到工作站做事有關,不過卻意外多知道一個函數 $printtimescale( ),可以印出目前檔案的 timescale 設定。

今天突然想到,自己寫個 Testbench 來驗證不就好了!

於是我對 Verilog 又多懂了一點點…

今日重點

01. $printtimescale 可以印出目前 timescale。
02. 看起來所有檔案只能用同一個,後面會覆蓋前面(待確認?)。


2025/07/02 更新

下午因為硬碟空間不足,苦等原本測試未果,無法繼續下一個測試。

乾脆跟 Google AI 對談,順便切磋一下彼此對 EDA 軟體心得,後來順口問了一句有關 `timescale 的想法,居然發現 AI 給的例子完美證明了 `timescale 是可以對個別 module 做設定。

我本來的例子由於是 include,因此會原地展開,才會有我後者取代前者的結論。

下面是 AI 給的例子,因為是個別編譯,故分別保留各自的 `timescale。


雖然我昨天又看了一次規格書,實在看不出這樣的結論?

不過,我跟 AI 都一致認為這樣容易產生 bug,最好的方式還是有一個統一的 include 檔案,大家才能都用同樣的設定。