參考 IEEE 1685-2022 IP-XACT standard 第 10 章。
簡介與核心目的
Generator chain 描述設計流程的生成器鏈。生成器鏈是生成器(generators)的分組和排序的定義,它是一個有序的、命名的任務序列。每個命名任務可以是一個單獨的生成器,也可以是另一個生成器鏈。這種將生成器分組並排序在生成器鏈描述中,以及在其他鏈描述中包含鏈描述的方式,對於提供基於腳本的 SoC 流程創建相當重要。
Generator chain 目的是讓 EDA 工具能夠按預定順序執行一系列複雜的設計任務。其中包含幾項描述:
- 流程執行:設計環境(DE)負責理解生成器鏈描述中指定的語義並執行該鏈。
- 生成器類型:生成器是可執行物件(例如腳本或二進位程式),可以整合在設計環境內部,或者作為外部可執行檔提供(例如由 IP 供應商提供),並由系統設計工具適時啟動。
- TGI:外部生成器(通常稱為 TGI 生成器)可以利用 TGI 存取其 IP-XACT 元數據描述,從而在獨立於 設計環境的方式下查詢或配置設計描述。
關鍵屬性
以下是 abstraction definition 文件中的關鍵元素與屬性整理:
!!請注意以上僅列出常用屬性,不包含所有欄位,詳細資訊請參閱官方標準文件!!
| 元素名稱 | 說明與作用 |
|---|---|
| generatorChainSelector | 定義選擇標準,用於選擇一個或多個其他生成器鏈,或者直接引用另一個生成器鏈描述以納入當前鏈中。 |
| componentGeneratorSelector | 定義選擇標準,用於選擇一個或多個元件生成器。選擇是基於分配給該生成器的群組名稱。 |
| generator | 明確地定義一個可執行的生成器,該元素與定義在 Component 或 Abstractor 中的生成器具有相似的結構。 |
| chainGroup | 一個無限制的名稱列表,指定該鏈所屬的群組,這些群組名稱可被 generatorChainSelector 引用。 |
| hidden | 一個可選的布林屬性(預設為 false),當設定為 true 時,指示該生成器鏈不應在設計環境(DE)中提供給使用者直接呼叫,通常是因為它是另一個鏈的一部分。 |
任務執行順序(phase)
生成器鏈的執行順序由 <phase> 元素定義:
- 順序確定:
phase元素決定了生成器的運行序列。 - 運行規則:生成器按順序運行,從零開始。
- 優先級:如果兩個生成器具有相同的
phase號碼,則它們的運行順序被視為不重要,並且可以按任何順序運行。 - 未指定順序:如果沒有給定
phase號碼,該生成器將被視為在最後階段,並在所有具有phase號碼的生成器之後按任意順序運行。phase元素的值必須是一個正數。
與 Design Configuration 的關係
雖然生成器鏈定義了執行順序,但實際的配置值可以儲存在 Design Configuration 文件中:
- 配置資訊:Design Configuration 描述可以包含
generatorChainConfiguration元素。 - 參數值:這個元素用於記錄生成器鏈中參數的配置值,從而有助於自動化生成器鏈的執行。
後記
我在設計 EDA tool 的過程中,以我負責的面向很難接觸到 Generator Chain 這個文件所要傳遞的東西,但又隱約覺得某些部份很眼熟。後來我發現,跟軟體流程自動化應該可以對比吧?
若我們將其他文件這樣看:IP-XACT 其他文件是待組裝的設計資料,而所謂 generator 是單一的工具或是 script,像是 gen code、檔案匯出、模型轉換等等負責單一工作,那麼 generator chain 本身就可以看成是自動化所需要的藍圖,以達成自動化排程的目的。
簡單來說,Generator Chain 文件就是把一個個獨立的自動化小工具,按照特定的邏輯與順序「串」在一起的劇本,讓原本複雜且需要人工介入的晶片設計流程,變成按一個鍵就能依序完成的自動化生產線。
所以跟軟體工程大概有幾分相似嘛,只不過我負責的部份偏向前段的 SoC 架構設計,後段就比較沒有我的事情了,難怪一直覺得 Generator Chain 文件很難以納入工具中。



