pretty code

2024年3月30日 星期六

2024 week 13 新玩意

01. VIM 果然好用,以後不需要買第三套 UltraEdit 了

果然學習新東西需要配合環境!

新部門需要在工作站上工作,只能使用 VIM,也趁此機會在本機安裝了 gvim,終於可以好好學習了。

qa   開始錄製巨集到 register a,再按一次 q 結束。
使用 @a 使用巨集,使用 @@ 使用上一次使用的巨集。

:tabe + filename 開啟檔案到另一個分頁,gt 依序切換分頁。
vim -p file1 file2 將檔案分別開啟到分頁上。

:new 水平分割視窗
:vnew 垂直分割視窗

ctrl + w + w 切換視窗

02. Makefile 重複 target

Target1 : dependence2

Target1 : dependence1
        xxxx

執行順序是 dependence1,dependence2,xxxx。

第一個 Target1 只能有相依性選項,該 Target 下不能再執行其他指令。

03. OpenROAD-flow-scripts hierarchy synthesis

當設定 SYNTH_HIERARCHICAL = 1 時,其 Makefile 就是走 02 的寫法,故其實會做兩次 synthesis。

第一次是 synth_hier_report.tcl,第二次是 synth.tcl,除了最前面會設定 hierarchy module(檔案 mark_hier_stop_modules.tcl 在 flow/objects 裡面,跟 abc.constr 同層)。

我目前 trace 的結論是第一次的結果並不會傳遞給第二次,至少從 tcl script 看不出來。

這就是一個很奇怪的點?除非 yosys 結果是分享到記憶體空間,不然我看不到傳遞的地方。

另外,當 abc command 帶 -nocleanup 時,abc-temp-dir 不會被刪除,且資料夾位置會從 /tmp/yosys-abc-xxxxxxx 變成 flow/_tmp_yosys-abc-xxxxxx,裡面會有相關檔案。

design - config.mk 中的 LATCH_MAP_FILE 不設時,當合成的 netlist 有 LATCH,就會以 general 的 $_DLATCH_N_ or $_DLATCH_P_ 代替,並非像 document 說的可以不用設。

constraint 檔案要照文件格式,指令用小寫,不然 period 會無法 parsing 成功。

2024/04/01 更新

終於搞懂 hierarchy 的流程了!

第一次做 yosys 是為了得到第一次 general synthesis 的結果,目的是知道各別 module 的面積,配合 Makefile 裡面的 MAX_UNGROUP_SIZE 變數,當各別 module 面積小於 MAX_UNGROUP_SIZE 時,此 module 會不做 hierarchy synthesis,改做 flatten synthesis,好處是可以得到更好的最佳化結果(相對 synthesis 時間會比較久)。

但因為 MAX_UNGROUP_SIZE 預設值為 0,故其實沒有必要做第一次 synthesis,取而代之是要想辦法得到真實的 module name,因為在設定 "setattr -mod -set hierarchy 1"  時,是使用 yosys 過一手後的 module name。

要得到 module name 也很簡單,hierarchy -check -top top_module 後,使用 stat 或 ls 就可得到。

沒有留言: