pretty code

2024年9月17日 星期二

四天的努力終於有了點成果

從上星期三開始,使用一套之前沒用過的 EDA Tool 來驗證以前部門弟兄的 design,如果只是要讓他跑起來不是什麼難事,拿先前其他部門的設定修改一下即可。

但我的問題是要修掉 EDA 報出 Nonequivalent 的地方,感覺 EDA 好像告訴了你什麼,但是好像也沒個屁用,想要比照文件儲存 checkpoint 方便之後 debug 不用重跑,但文件就是沒講到如何在載入 checkpoint 後,重回 GUI 的方法,有稍微在 Command Reference 那份文件瀏覽一下指令,但那個貌似進入 GUI 的指令(open gui)居然是在已進入 GUI mode 的情況下使用?

今天早上終於在循序閱讀文件的別地方看到進入 GUI mode 的指令(set gui on),也看到 EDA Status Code 的地方,終於知道 make Error 24 是如何來的,原來是 status flag bit3 和 bit4 為 1 的緣故(16 + 8 = 24)。

快中午時,試著詢問部門非常有經驗很厲害的一位資深同事,嚴格來說應該是我的直屬主管,最近組織架構多了這層級後,我以後有人罩了XD

雖然前輩也沒用過這套軟體,但在跟他聊了快 10 分鐘的過程中,還是學到了不少東西。

下午不知道為什麼突然心血來潮去看之前 DC 的 log,確定了這 4 個暫存器確實在 DC 合成的過程中被優化,也用我之前寫的 split_rtl 小工具從 netlist 中複製出這 4 個暫存器的 module code,也確定確實被優化了。

但不知為什麼這套 EDA 卻只報出其中一個 2_2 register 無法 mapping?難怪網路上有看到某人提到,如果要用這套 Formality Tool,最好 Synthesis Tool 也用同一家的比較好 debug 問題,畢竟同一家的工具彼此間資訊比較容易互通有無。

最後又多加了第 5 個暫存器的 Constraint 後,終於解決 Nonequivalent 的問題,剩下的就是 Unmapped 裡面的 Extra 和 Unreachable 到底需不需要解決?我個人稍微閱讀文件的結論是不用。

對一個新手來說,這樣還算可以吧?放假回去後要來整理這幾天資料寫文件了。

2024/09/21 更新

在寫文件的過程中才發現,EDA Tool 只有報一個 register 是因為被 group 了,但當初以為統計表上的一個就是一個,故沒有特別去看單獨報表。

這告訴我們一件事,別人的專案也許用到的指令並不齊全,但只要他們有放的指令,一定有它們的目的,不管怎樣還是要看一眼才對。

2024/09/24 更新

這篇文章應該是我看過介紹 LEC 最好的簡介文章了。

為了不浪費這三個月買的授權,這兩天嘗試使用 Hier Comparision,但還是覺得有點怪怪的,感覺結果不符預期,重點是還跑得比 Flat Comparison 慢。

不管如何,還是更新了之前寫的文章,目前頁數已經來到 3 字頭XD

2024/09/26 更新

把 Hier Comparision 章節又看了一遍,把知道的參數都試了一輪,還是有 Non-equivalent 的問題。

再一次看了文章後,覺得最扯的是有一個 Add noblack box 指令,要下這個指令的前提是你必須已經知道要比較的子模組裡面的個別模組有因為優化被提出到個別模組外,也因為如此,兩個模組比較一定會不同,故必須使用這個指令讓個別模組不要成為 blackbox,這樣子模組在比較時,下面的所有模組會被攤平一起視為整體來比較,這樣才能得到一樣的答案。


問題是如果我對整個 design 都了然於心,我還需要 EDA 工具做啥?

感覺又是一個雞生蛋蛋生雞的問題?

2024/09/27 更新

看起來如果 DC 有下 -no_boundary_optimation 參數,應該就不會有上述情況發生?

沒有留言: