pretty code

2025年5月30日 星期五

又上天龍


Vim script 細節雖然大概都知道了,手上也有謎版 PDF 以及英文電子書了,難得再次來到天龍國的天瓏書局,不買真的說不過去,於是我又多砍了幾棵樹了XD

通識課這本我其實只想看其中的兩頁,不過嗎,書本不嫌少,知識不嫌多,還是需要一些東東來傍身?

絕世武功動輒都要練個好幾十年,但是現代人欠缺的就是時間呀XD

2025/06/01 更新

原來上面中間那一本已經有第 2 版的英文電子書了,剛試閱了一下,出版社還很貼心的附上連結,只要傳給他購買證明,出版社便會寄給你免費的 PDF 電子書,那還等什麼XD

於是我的 Vim 藏書加上這本,已經來到 6 本之多!剛好 3 本電子書 + 3 本紙本書XD


2025/06/04 更新

原來外國人也會嘴砲,到現在都還沒收到 PDF 電子書,感覺不好XD

2025年5月29日 星期四

Download UNC files to WSL2 folder

今天遇到一件怪事,差點以為是客戶給的東西裡面的東西,搞了半天居然是因為標題所描述。

當我們把 UNC files 複製到 Windows WSL2 folder ( \\wsl2.localhost ) 時,不知為什麼會產生 xxx:Zone.Identifier 的檔案。 

還好我突然福至心靈的去檢查原始資料,不然就糗大了XD


2025/05/31 更新

即使從 \\wsl2.localhost 裡面複製到 \\wsl2.localhost 其他位置,一樣會產生這個檔案。

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 也許是一個可以試試的工具,不過需要掏出魔法小卡而且似乎是訂閱制?

2025年5月27日 星期二

Vim vtags

雖然經過這一年的洗禮,我已經習慣了 Vim,也把自己購買放在公司專用的 UltraEdit 移除了。

即便上星期寫了一個 trace variable 並顯示位於哪個 module 的 Vim function,想要好好在 netlist 中 trace variable 還是很痛苦,沒有 EDA 可用就是這麼辛苦XD

今天看到一個 vtags 的小玩意,想說是不是能幫助我看一些東西?沒想到這個東西不能在 Windows 上執行,還好我有 WSL2 環境,果然在 Linux 就可以順利執行。

可惜,手上的 netlist 過於龐大,vtags 會讓 Vim 當機,故我也沒看到他的廬山真面目!

回家試了一下,左邊是 <Space> + v,右下是在 module 那行執行 mt 的結果,看起來似乎跟我的 netlist_treeview 差不多意思,看的都是 hierarchy 的結果,並非我想的訊號追蹤?


還有像 ORFS 裡面的 jpeg_encoder 因為 yosys 綜合後,會用到很多 escaped identifier,故 vtags 也無法支援。


難道,我又要自己寫 tool 了嗎?這可是一件大工程呀!

另一個可以嘗試的方向是 GNU global,看起來只要找到 plugin,就可以處理 verilog 的專案?

2025/05/27 再次更新

原來是我耍笨,看起來可以用來追蹤訊號,詳此處

拿它來改出我要的工具?

2025年5月25日 星期日

Tne Entity

終於在昨天看了 MI8,雖然我從 MI5 才開始進電影院看,但鼎鼎大名的 MI 以及阿湯哥誰人不曉?看到阿湯哥的名字就知道是可以進電影院看電影的指標XD

我最喜歡的幾個片段中,一個是女總統嘴上說把阿湯哥關起來,但事實上卻是放任阿湯哥去拯救世界,看到門外的直升機,不誇張的說我都哭了,那種被人信任的感覺,也不枉阿湯哥多年來出生入死卻還不能擁有跟一般人一樣正常的生活。

另一段就是女總統幕僚詢問是否要跟兒子通電話,那時我才明白她決定犧牲兒子所在的城市,先不管別國人民,她如果不這樣做是要如何跟美國人民交代?這才是我心目中理想領導人的樣子。

原本被網路上的文章標題誤導,害我以為阿湯哥這集要領便當!當卡特拔出隨身碟後,我都想到下一幕可能是因為阿湯哥降落傘被燒了導致摔死,眾人去無名碑前緬懷阿湯哥的鏡頭,看到白傘的一幕,我差點都傻眼了,網路上還真會亂扯,果然是農場標題殺人,這也是我覺得目前網路最糟糕的一件事,充斥一堆垃圾資料!

前幾天才買了美國隊長4,也算是我對自己的一個交代,既然集齊了美國隊長 1 ~ 4,是不是應該趁此機會也把 MI 1 ~ 8 集齊呢?

2025/05/27 更新

就在星期日傍晚一口氣買齊了 1 ~ 6,之前就買了 7,現在就等 8 出來了XD

2025年5月22日 星期四

今年我看過的騷操作

今天在試跑一個 IP 的 testbench,第一次看到這樣的騷操作XD

首先,在預設 c shell 的環境下,呼叫一個 c shell 語法的 script 來設定相關變數,接著再跑一個有指定 shell 的 bash script 來跑 testbench。

由於我不是在工作站,故我不能在預設的 bash shell 下另外用 tcsh xxxx script 的方式來設定變數,除非我把呼叫 bash script 的 command 寫在 c shell script。

我個人是這樣覺得啦,既然 EDA 跑在 bash shell 不會有問題,事實上御三家的一些 gen 出來的 tool 也是用 bash 語法寫的,這樣大家都統一使用 bash script 不就好了,何必把問題搞到那樣複雜?

即便是號稱一天上班就用了 5 種程式語言來工作的我,還是很討厭一直在 context switch,人生呀,輕輕鬆鬆簡單過不好嗎XD

2025年5月18日 星期日

又到了一年一度清潔冷氣的日子

前一陣子感冒,拖到今天才有空清潔冷氣,下星期老婆應該就可以爽爽吹了XD

去年因為被排線兩邊卡榫誤導,一直無法順利退出排線,只能一手扶住外框,一手伸進出風口擦拭,今年不理兩邊卡榫,硬用暴力演算法解題,終於順利退出排線?

整個外框拆除後,整體清潔容易多了,一台去年才換的冷氣,看起來跟新的一樣,鼓風輪稍微用紙巾接觸的結果也沒有明顯髒污,而另外一台 2021 年疫情時換的冷氣,保麗龍就有明顯的發霉,因為去年有擦過,故知道是去年怎麼擦都擦不掉的汙垢,目前也只能就我能清潔的清潔,不管怎樣,一定是比只能從外面擦拭乾淨。

去年換掉的那台窗型變頻舊冷氣,只過了 7 年就因為底盤卡住髒汙而滴水,考慮了一下整台換新比較快搞定,不然去年夏天就沒有冷氣可吹了,這樣看來,窗型變頻冷氣大概也是要 5 年就找人清潔較好,不然就會因為底盤卡住髒污而滴水。

日立變頻只有雙吹才是日本製壓縮機,台製明顯的聲音大聲多了,變頻的好處就是稍微安靜,但即使是日立也不用覺得會多安靜,不過我也只有窗型能夠選擇,不論是書房還是臥室,大概就是選擇 3 萬多的機型即可,再上去就會因為太大而裝不下,其實我可以選擇型號 28 的,選大一號的好處就是哪邊冷氣出了狀況,還可以用另一台將氣流導到另一個房間,至少撐過炎熱的夏天是沒問題的,根據去年實測的結果XD

房間:RA-36 NR(3.69 KW)
書房:RA-36 HV1(3.69 KW)

順便拍個圖記錄一下,外框拆除要看此篇記錄