引言
基于平臺的設計PBD ( Platform-Based Design,簡稱PBD)方法是最近幾年提出的SoC系統設計新方法,它延伸并發展了IP重用的設計理念,強調系統重用。其基本思想是為應用領域定義通用的設計模板,在此設計模板中涵蓋了IP庫、接口互連、軟/硬件系統結構等設計信息。系統建模是基于平臺的SoC系統設計中需要解決的首要問題。電子產品設計領域常見的、基本的系統模型有離散事件模]、有限狀態機模型、數據流/控制流模型、通信進程模型與Petri網模型。這些模型各有特色,但它們用作基于平臺的SoC系統模型存在一些缺點:
( 1) 只能描述功能,不能描述性能;
( 2) 粒度過細且不可變;
( 3)有的模型不支持系統原型代碼生成,因此難以進行快速的系統仿真驗證以及系統設計空間探索。
本文提出約束任務流圖CTG ( Constrained Taskflow Graph,簡稱CTG)模型作為SoC系統模型,提出了基于平臺的CTG SoC 系統建模方法, 實現了SoC系統建模環境CPSME (CTG PBD SoCModeling Environment,簡稱CPSME) 。CTG模型采用任務逐步細化求精的思想實現層次描述能力以及任務粒度的可變性,并且定義子任務執行控制機描述任務并行、分支與循環控制等。CTG模型為任務定義了運行時間(速度) 、功耗、面積、成本等屬性,用以描述任務的性能約束。CTG模型將任務映射到實現算法,以描述任務功能。完成CTG模型中所有任務向算法的映射后,得到的算法流可快速生成系統原型代碼,用于系統仿真驗證。提出的基于平臺的CTG SoC系統建模方法支持CTG模型庫管理以及CTG模型重用與定制,兼顧了系統模型的重用性與靈活性。
基于平臺的設計方法
在SoC系統軟硬件協同設計領域,平臺是關于虛擬組件(Virtual Component,又稱為虛部件)與體系結構框架的庫。在平臺中包含一些可集成的并且預先驗證的軟件IP與硬件IP塊、模型、EDA工具與軟件工具、庫以及通過體系結構探索 /集成/驗證來支持快速產品開發的方法學。基于平臺的設計方法是一種面向集成、強調系統級重用的SoC設計方法,可顯著降低SoC系統開發風險、代價與上市時間。
圖1給出了我們基于層次平臺的SoC系統設計方法Hi-PBD (Hierarchical PBD,簡稱Hi-PBD) ,它將SoC系統設計分為系統模型層、虛部件層和實部件層,達到系統設計中功能與結構分離、計算與通訊分離的目的。該方法通過設計規劃與虛實綜合完成三個設計層次之間的兩次映射。Hi-PBD方法不僅重用三個層次的設計模板,而且重用設計層次間兩次映射的結果,提高了重用效率。此外,Hi-PBD方法支持在三個層次修改相應設計模板以增強設計靈活性,采用性能約束傳播機制確保最終設計目標滿足性能要求。特別是SoC虛部件層的采用,使虛部件層作為SoC系統模型與實部件RTL描述之間的橋梁,可有效降低從SoC系統模型直接映射到實部件RTL描述的難度。
圖1 基于層次平臺的SoC系統設計方法
約束任務流圖模型
定義
(1) 任務:任務是為達到某一特定目標而指定的動作序列,此動作序列獲取輸入信息,引發任務內部某些狀態的變化,并產生輸出信息。任務可以被劃分到硬件或軟件上實現。可描述為:Task = { InputSeq, ActionSeq, OutputSeq }
(2) 約束:這是一個包括時間、空間、功耗、面積、成本等代價的多元組。必須在所指定的代價范圍內實現任務,并以約束信息作為選擇任務軟硬件實現方式的依據。可描述為:Constraint = { TimeConstr, SpaceConstr, PowerConstr,AreaConstr, PriceConstr.}
(3) 約束任務流圖:約束任務流圖CTG (Constrained Taskflow Graph,簡稱CTG)描述了任務間的層次關系與執行關系。約束任務流圖中的每個任務都有約束限制,作為SoC系統設計規劃、軟硬件劃分、高層綜合與軟硬件協同仿真等過程中要求任務必須滿足的實現約束。可描述為: CTG = { TaskTree, CommunSet, SubtaskFSMSet, ConstraintSet} 。
用CTG模型描述SoC系統任務
任務封裝
分別定義屬性視圖、約束視圖、算法視圖、細化視圖與子任務執行控制機視圖,將所有與任務相關的設計信息封裝在一起。
任務細化
任務細化的思想就是對大而復雜的設計任務進行逐步拆分,將難以在單個部件上完成的任務劃分為較小的子任務,以有效降低任務實現難度。任務細化 可控制任務的粒度。在組織方式上,采用任務樹描述任務的細化過程。
子任務執行控制機
子任務執行控制機用來描述屬于相同父任務的子任務之間的控制執行關系,從而方便地表達包括并發、分支轉移、循環(反饋)等在內的多種任務調度方案。子任務執行控制機可描述為:TaskFSM = { SubtaskSet,InitialTask,ConditionSet,TaskTransitionRuleSet} SubtaskSet描述了子任務執行控制機中的所有任務,InitialTask是第一個被執行的任務, ConditionSet是所有控制轉移條件的集合, TaskTransitionRuleSet描述了從一個子任務轉移到另一個子任務的轉移規則。TaskTransitionRuleSet可描述為: TaskTransitionRuleSet: SubtaskSet ×ConditionSet → subtaskSet 。
基于平臺的CTG SoC系統原型生成
我們用算法描述任務的功能(行為) ,并將一個應用領域中的所有算法組織成領域算法庫。允許一個算法存在多種不同的實現,不同的 算法實現在性能上不同。例如,有的算法實現方案具有較快的運行速度,有的算法實現方案具有更低的存儲空間需求。
在生成SoC系統原型代碼之前,先將CTG任務流映射為算法流,映射過程如圖2所示。映射得到算法流之后,經過對算法流的裝配、定義全局變量等過程,可生成所需的SoC系統原型代碼。
圖2 任務流到算法流的映射
基于平臺的CTG SoC系統建模與重用
圖3顯示了我們基于平臺的CTG SoC系統建模與重用方法,主要分為CTG模型庫管理與CTG模型重用。
圖3 基于平臺的CTG SoC系統建模與重用
在CTG模型庫中包含了不同SoC應用領域的、經過驗證的基本CTG模型,這些模型在功能與性能約束上反映了相關領域的基本應用需求。除了包括基本的數據庫管理功能外, CTG模型庫管理還表現在建立CTG領域模型( ①)以及后來進行的CTG模型庫優化( ⑤) 。
在 SoC系統建模時,首先從CTG模型庫選取基本的CTG領域模型模板( ②) ;然后,根據SoC系統的特定功能、性能需求對所選CTG模板進行定制( ③) ,得到面向特定SoC應用需求的CTG模型。定制操作包括添加、刪除與修改任務的功能行為或性能約束,與完全重新建立SoC系統模型相比,其工作量要小得多。并且, CTG模型庫中的模型已經過較充分的驗證,因此僅僅需要對所得CTG模型中發生變化的部分進行驗證即可。可見,基于平臺的CTG SoC系統建模與重用除了確保CTG模型的整體重用,還通過定制操作保證系統建模的靈活性。 如果在后來的應用中發現所定制的CTG模型具有優良的應用效果,可以通過CTG模型庫優化( ⑤)將新的模型加入CTG庫中,以利于以后重用。
需要指出的是, CTG模型庫中的各CTG模型不僅僅是前面定義的CTG模型本身,還包括了與此模型相關的、經過驗證的SoC系統性能約束分配、系統模型仿真驗證等系統建模方法, CTG模型的重用也包括對這些系統建模方法的重用。
基于平臺的CTG SoC系統建模環境及應用
SoC系統建模環境的結構與功能
圖4是本文基于平臺的CTG SoC 系統建模環境(CPSME)結構圖,分為CTG模型庫管理與CTG模型重用兩個部分。
圖4 CPSME結構圖
CTG模型庫管理部分除提供基本的數據庫管理功能外( ⑦) ,主要是提供了根據SoC應用領域的需求創建新CTG模型的支持( ①②③④⑤⑥) 。
在我們基于平臺的CTG SoC系統建模過程中,進行SoC系統建模主要是進行CTG模型的重用:首先,依據SoC系統需求分析( ⑧)結果,從CTG模型庫中選擇CTG模型模板( ⑨) ;然后,對所選CTG模型模板進行定制( ⑩) ,以滿足特定應用的功能與性能需求。
在CTG模型模板的定制中,除了對系統功能行為的定制,還支持對任務性能約束的定制。功能行為的定制主要通過任務的添加、刪除、編輯等實現。性能約束的定制在任務的基礎上進行,可以對已有的性能約束信息進行修改,實現SoC系統性能約束隨設計過程逐步傳播。
當CTG模型庫中沒有所需的SoC領域CTG模型時,就需要利用CTG模型庫管理部分的功能模塊為該領域創建基本的SoC CTG模型,并加入CTG模型庫中以供使用。
應用實驗
在CPSME下,我們分別對MP3播放器以及MPEG2播放器SoC進行系統建模。實驗表明,應用本文建模方法通常只要對所選的CTG模型模板進行10% ~25%的修改 。而且,由于所選的CTG模型模板已經得到了充分的性能分配、功能驗證等,使所得SoC系統模型在質量上更有保證。
結束語
基于平臺的CTG SoC系統建模方法通過建立CTG模型庫支持CTG模型的重用,通過提供模型定制操作支持對CTG模型模板的修改以滿足特定的SoC系統功能與性能需求,從而使得在確保CTG模型整體重用的同時保持具體應用的靈活性。CTG模型庫的建立與完備是基于平臺的CTGSoC系統建模的關鍵。