攝影師:Tima Miroshnichenko: https://www.pexels.com/zh-tw/photo/6755091/

IP-XACT 物件介紹:Generator Chain(產生器鏈)

參考 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 文件很難以納入工具中。

讓我知道你在想什麼!