顧名思義,我這支 tcl 程式主要目的是用來瀏覽 netlist 用,但 module 或是 instance 的 regex 語法不管是 RTL code or netlist 其實都是一樣,故他其實也是可以開啟 RTL code 無誤XD
目前只有一個問題,我的 instance regex 語法本來就會避開單行註解,故這部分沒有問題,不過當 instance 是在多行註解中,之前 parser 為了快速處理,連我另一支用 Python 寫的 netlist parser 處理單行的機制都沒有,故我沒辦法避開這樣的情形。
查了一下 Standard 2005,還好他不允許巢狀註解,故要快速處理就很方便了。
順便查了一下 Standard C11,同樣也是不允許巢狀註解。
剛好想到為什麼之前買的 C11 這麼便宜?原來有這樣的疑問不只我一個,我們可以在這個討論串找到解答。
簡單來說,INCITS/ISO/IEC 9899-2012 是美國內部採用的標準,所以賣得比較便宜,當初不知標準險惡,以為台幣兩千是正常的(我以為這樣已經很貴了XD),直到最近買了兩份 IEEE Standard 噴了兩萬,我才知道以前的我還是太嫩了XD
2025/02/26 更新
看似簡單的東西,沒想到也會犯下低級錯誤,還好只花了幾分鐘就想到了XD
set is_multi_comment 0
if {[string first "*/" $line] != -1} {
set is_multi_comment 0
} elseif {[string first "/*" $line] != -1} {
set is_multi_comment 1
} elseif {$is_multi_comment == 1} {
# do nothing
}
不小心把最後一個 elseif 放在第一行,故永遠不會脫離。
另外,下午也開始嘗試處理 clock tracing,果然跟我想的一樣麻煩。
不先規劃好遞迴中止條件,也沒先歸納出 clock path 的一些態樣,真的很難把程式寫好。
還好我不趕時間XD
沒有留言:
張貼留言