1. 程式人生 > >Virtuoso 中 display.drf、techfile.tf、tech.db 之間的關係,以及 Packet 在它們之間的作用

Virtuoso 中 display.drf、techfile.tf、tech.db 之間的關係,以及 Packet 在它們之間的作用

[https://www.cnblogs.com/yeungchie/](https://www.cnblogs.com/yeungchie/ "https://www.cnblogs.com/yeungchie/") ### 一般工藝庫下的“技術檔案”有 tech.db 和 techfile.tf , Packet 是 display.drf 中的“顏色包” 1. 其中 tech.db 稱為 Reference Technology Libraries (參考技術庫) 2. tech.db 和 techfile.tf 一起稱為 Local Technology Library (本地技術庫) 3. techfile.tf 內為自然語言,可以用vim等工具直接編輯,tech.db 經過編譯,直接開啟顯示為亂碼。 4. 函式 `tcLoadTechFile` 並不會修改上述任意一個檔案,只會寫入虛擬記憶體,需要手動save到上述任一個庫才能寫入 tech.db 。 5. Virtuoso 啟動時自動載入的不是 techfile.tf ,而是 tech.db 。 6. display.drf 中含有一個個的 Packet,理解為顏色包 ,techfile 含有 Layer 與 Packet 的對應關係。因此 Packet 像是一個“紐帶”,把 display.drf 中的顏色資訊跟 techfile 中的 Layer 聯絡起來。 ### 新增自定義的 Packet ,和修改與 Layer 之間的對應關係 例項問題:海力士 110nm 工藝下(hl110lpf),metal 層與之對應的 TXT 層為相同的 PacketName ,所以在預設的配置下不容易發現 metal 與 TXT 混淆使用的誤操作。(這個問題會導致驗證環節難以定位錯誤) **解決方法** 1. copy 一份 display.drf 檔案,增加新的 PacketName。 ![](https://img2020.cnblogs.com/blog/2012426/202007/2012426-20200730194326278-703041817.png) 2. copy 一份 techfile.tf 檔案(因為 tech.db 無法直接編輯,所以只能對 techfile.tf 操作),修改這幾層 TXT 與新增的 PacketName 對應起來。 ![](https://img2020.cnblogs.com/blog/2012426/202007/2012426-20200730194442898-1215756826.png) 3. 原則上 PDK 自身的檔案不建議修改,普通使用者也沒有許可權去修改,因此可以使用下面的方法寫入虛擬記憶體來使用。 ``` let((lib tech) lib = ddGetObj("hl110lpf") ;獲取 pdk 庫 id tech = techGetTechFile(lib) ;獲取 pdk techfile id tcLoadTechFile(tech "./techfile.tf") ;load techfile 檔案 drLoadDrf("./display.drf") ;load display 檔案 ) ``` 4. 上一步的操作必須遵循先載入 techfile.tf,再載入 display.drf 的順序,否則 display 無法找到對應關