pretty code

顯示具有 Global 標籤的文章。 顯示所有文章
顯示具有 Global 標籤的文章。 顯示所有文章

2025年5月28日 星期三

global + ctags + Verilog

global 預設只能讀懂 5 種程式語言,如果需要 parse Verilog,我們需要 ctags。

在 Linux 可以安裝 universal-ctags,Windows 上也有對應版本可裝,不過 Windows 需要額外準備 gtags.conf。

執行 gtags 時只要加上 --gtagslabel new-ctags 即可,這樣針對 Verilog 檔案便會呼叫 ctags 來 parsing。

目前看起來不管是 gtagshtags -snaglobal 都可以正常執行。

當輸入是 netlist 時,由於 design 集中在一個檔案中,這會導致 htags 產生的單一檔案 html 過大,我公司電腦自己已經加到 16G 記憶體,但還是因為使用記憶體過多導致 chrome 會讀不完整個檔案一直在轉圈圈,不過使用 global 查詢都正常。

改用 ORFS 的 ibex 來當例子測試看看。


目前有一個想法,想要在 global 的基礎上動些手腳,將選示行號的地方改成 module name,這樣對 trace signal 比較有幫助。

所以流程大概是這樣。

01. 呼叫我的程式,傳入 netlist。
02. 執行 gtags 得到 3 個資料庫檔案。
03. 將 netlist 的每一行建立 map 對應,據實測即使 netlist 有 3000 萬行,大概也是 10 ~ 20 秒就可以建立完畢,也就是用空間換取時間的做法。
04. 程式進入 while loop,監聽剪貼簿或是 socket。
05. 收到 Vim 傳來的 signal 便呼叫 global 查詢。
06. 將圖片的查詢結果中的行號改成 module 並顯示改過的結果。

另外,今天有查詢了一下資料,目前看來 DVT Eclipse IDE 也許是一個可以試試的工具,不過需要掏出魔法小卡而且似乎是訂閱制?

2022年4月22日 星期五

GNU Global 一些數據參考

很久以前在做 Windows Mobile 手機時,trace code 都是使用 Global,後來比較沒機會接觸到這樣龐大的 code base,故都是用我的 UltraEdit 搞定。

最近有同事問我 trace linux kernel 的事,拿 5.17.3 版本試了一下,留下記錄當做參考。

兩種使用方式

01. VSCode + Global

可以參考這裡

02. 直接使用 Global 並產生 HTML 檔案

gtags 執行速度很快,大概不到 10 分鐘就建好 tag 資料庫。
htags - sna 總共花了約 4 小時又 43 分才建好所有 HTML。

另外,HTML 整包資料夾的大小約為 12.1G,硬碟大小則是 17.3G,裡面共產生 2,047,758 支檔案及 8 個資料夾。

我們也可以直接用指令查詢 tag 資料庫,只要記住兩個指令就好。還有下指令時不需要在 tag 檔案那層,隨便一層都可以。

global XXX  直接找 XXX 定義的地方。
global -r XXX 則是找 XXX 被使用的地方。

加上 -x 則是取得詳細的資料。


記得在使用 Global 前,要先 build 過 kernel 幾分鐘,好讓相關的 CONFIG_XXX 自動生成,其位置是在 CodeRoot/include/generated/autoconf.h