2020年7月12日 星期日

淺談EDB說明文件的問題

在"EDB(Electronic Database)簡介"一文,我簡單的介紹了EDB的概念。本文我則想從程式開發的角度來說明EDB的特性。下面這一段代碼可以生成一個.aedb目錄,當中包含了一個sample_cell的layout設計。layout當中則有"Top" 層,一個圓形,及一組名為"sample net"的net。匯入該.aedb之後,可看到設計(如圖一)。

import Ansys.Ansoft.Edb as edb
db = edb.Database.Create(r"d:\demo\sample_circle.aedb")
layer = edb.Cell.StackupLayer("TOP", edb.Cell.LayerType.SignalLayer, 1e-5, 0, "COPPER")
layerCollection = edb.Cell.LayerCollection()
layerCollection.AddStackupLayerAtElevation(layer)
cell = edb.Cell.Cell.Create(db, edb.Cell.CellType.CircuitCell, "sample_cell")
cell.GetLayout().SetLayerCollection(layerCollection)

net = edb.Cell.Net.Create(cell.GetLayout(), "sample_net")
polygon = edb.Cell.Primitive.Circle.Create(cell.GetLayout(), "TOP", net, 0, 0, .01)
db.Save()
db.Close()

(圖一) 匯入之.aedb設計

雖說這些設定用AEDT的3D layout所提供的函式庫也可以達成。但執行時,畫面須同步更新,當處理複雜結構時,效率不及EDB,這是EDB的最大好處。此外,由於EDB主要是RD人員在使用,因此EDB所能涵蓋的功能也比較新且廣,當中有些功能可能是3D layout函式庫所找不到的,這也是我們需要用到EDB的原因之一。

接下來從程式開發的角度來談談EDB。我認為採用EDB最大的障礙是說明文檔(如圖二)的問題。EDB說明文檔式到目前為止(2020R2),仍舊是以C#程式語言的框架來說明EDB函式的功能,而不是從Python的角度編寫。舉例來說,Python開發員對於Namespace這一詞可能會感到一頭霧水。其實Namespace是C#用來組織函式的架構,與Python的Package及Module觀念類似。由於EDB最初就是基於C#所開發出來的,所以說明文件自然是以C#框架為主。雖說直到近年EDB延伸到讓Python也可以使用,但是沒有提供Python版本的說明文件對想要利用EDB的人來說,開發難度依舊是極高。此外,範例過少也是一個問題,目前可以找到的幾則EDB設計範例放在目錄:C:\Program Files\AnsysEM\AnsysEM20.2\Win64\syslib\Toolkits\HFSS3DLayoutDesign\Reports

(圖二) EDB函式庫Help

從自動化程式開發的角度來說,比較適當的作法是以AEDT本身所提供的函式庫為主,EDB為輔。只有在AEDT函式效率不足或是不支援的狀況底下才尋求透過EDB來解決。至於EDB該怎麼使用,則可以請求原廠工程師協助。舉例來說,筆者最近開發的程式當中需取得ViaGroup的導電比例屬性,由於ViaGroup是一個較新的元件類別,因此這個屬性在2020R2仍舊無法從AEDT的GetPropertyValue()取得。筆者最終找到EDB當中的GetConductorPercentage()函數來完成工作,著實花了一番功夫。這個經驗也提供各位參考。釜底抽薪之計是原廠能提供Python版本的EDB說明文件,才能一勞永逸的解決這個問題。

沒有留言:

張貼留言