目前業界已普遍接受設計重複使用(Design Reuse)的觀念,結果導致愈來愈多人捨棄區塊層次(block-level),而採用系統層次(System-level)的設計方式。其實,為了提高系統單晶片(SoC)的生產效能,許多研發團隊都企圖尋求適合系統單晶片平台式設計的解決方案。因為這些有著不同應用目的的平台式參考設計,會比傳統的系統單晶片設計具有更大的優勢。其原因就在於前者能夠讓工程師重複使用晶片中大部分的元件,而非少部分的線路。
一個可重複使用的系統單晶片平台,可以藉由重複使用的系統架構、元件,以及驗證模組,來縮短百萬閘級系統單晶片的上市時間。如此一來,自然大幅提升設計重複使用的效果,使其成為較佳的系統設計方案。換言之,只要能夠善用設計重複使用的觀念,我們便可以把設計的重心,由區塊層次的建構模擬,轉移到系統層次的整合驗證。
平台式設計即刻意模組化設計
雖然,一個可重複使用的系統單晶片平台最好能適合於某種特殊的應用,但是本身卻也是一個包含部份或全部組件的參考設計。因此,具備如此特性的平台,應該是以建立架構為導向,而非以落實應用為導向。一般而言,一個系統單晶片平台,至少包括一個以上的微處理器、數位信號處理器、嵌入式記憶體,以及一些原本就設計好的矽智財元件(IP)。對一個平台式的設計而言,通常只會看到少量為特殊應用所客製化的邏輯線路。
匯流排的連結線路可以說是平台式設計中的要件,其重要性甚至超過處理器。因為所有的硬體區塊和那些未來可能使用到的擴充元件,都必須被建構成彼此能夠互相溝通。從另一個角度來看,一個平台式的設計,就是一個刻意模組化的設計。唯有如此,任何可組態化的硬體區塊才可以相互置換,達到快速完成一系列類似但獨特的系統單晶片產品。
根據既有的經驗,如果想從可重複使用的系統單晶片平台獲得最大效益的話,最原始的參考設計還是得支援一個針對某種特殊應用的架構。大致而言,至少要有3到10個的系列產品才能回收。而真正的損益平衡點則端賴於所加諸在系統單晶片平台上的應用內容,以及自動化的程度而定。並非所有的產品都值得如此的投資。但是那些需要許多有類似功能而不同版本的產品,卻絕對可以從中獲得莫大的好處。其實從無線通訊、網路,以及消費性電子產品,隨處都可以找到許多適合平台式設計的範例。
重複使用VS.修改創新
理論上,一個典型的系統單晶片平台式的設計,75﹪以上的內容應當來自於重複使用所產生的結果。其中包含了系統架構,匯流排的連結線路,以及功能驗證的模組。為了達到應用效能和晶片大小的最佳化目標,通常還必須準備好記憶體、微處理器和數位信號處理器的硬核心(hard core)。有了這些前置作業,我們才可以決定該採用何種製程技術來製造系統單晶片。
針對客戶應用端所產生標準功能的線路,以及元件週邊的硬體,通常是以軟核心(soft core)的形式出現。在建構一個平台式設計的初期,這些軟核心都必須修改,以便於透過共同的匯流排介面相互溝通。這項投資可以確保那些重覆使用的元件能夠輕易地被整合到系統。
系統單晶片30﹪或更少的部分,則是由一些創新的邏輯線路,或是之前已驗證過的硬體,或是從他處取得的元件所組成。這些電路自然也必須修改,以便於連接到系統,並且符合平台所主導之匯流排的標準。
善用設計標準以達到最大生產效能
一個能重覆使用之系統單晶片平台最大的優點,就在於系統架構所顯現出來的獨特價值。在所有設計重覆使用的實例中,我們可以發現,能重覆使用的元件與系統單晶片的需求密不可分。然而,這些需求卻往往會隨著設計團隊的能力、經驗,以及突發狀況而大幅改變。其實,所謂一個區塊能夠重覆使用,意義是在於該區塊在任何設計方式和工具流程的情況下,都必須正常工作。對於大多數的元件而言,這實在是一項不切實際的目標。因為任何設計團隊如果選擇這條路的話,便意味著得投入大量的時間。
系統單晶片基本架構的設計門檻,相對來講,卻沒有那麼高,因為這些可重覆使用的基礎元件均已修改成符合某些特定標準的參考設計。善用這些設計的標準,匯流排連結器的規範、驗證模組,以及工具流程,便能充分調整平台式環境,以達到最大的設計生產效能。
標準
許多設計標準的目的,都是在落實重覆使用的觀念。舉例來說,對於平台式設計中的軟核心而言,所謂的標準,就是定義一些RTL同步設計的準則。不僅如此,有些標準還規定軟核心及硬核心的輸出格式。當然,這些標準應該以一般性的資料格式為主,而非特定工具所接受或產生的專有格式。如此一來,平台式設計才不至於在遇到工具被取代時,陷入無用武之地的窘境。
同時,對那些可重覆使用元件所定義有關文件的標準,其重要性也不容忽視。值得注意的是這些標準的內容與細節,往往會隨著每個公司和不同的系統單晶片平台而有所變化。其實,符合某些共同的規範,對一個可重覆使用的元件而言,本來就是一件天經地義的事。
雙匯流排架構的完善規劃
如何選擇平台式設計中的匯流排架構,可說是所有必要標準中最重要的一項。只要略為修改可重覆使用的區塊,即可順利地連接上匯流排線路,以便達到縮短系統單晶片整合的時間。
在絕大多數的情況下,搭配週邊組件最好的選擇是低速的匯流排,因為較低效能的匯流排可以減輕軟核心在合成(Synthesis)時,在時序限制(Timing constraints)上的負擔。一般而言,這些與低速匯流排搭配的周邊組件,並不會有效能上的問題;只要在這些組件的匯流排介面加上些許簡單的邏輯線路,那麼便很容易修改成滿足匯流排標準的要求。不過要注意的是,利用外加邏輯來修改可重覆使用元件的動作,比較適合一些現存的元件碼(code)。如果是那些由其他廠商所發展的元件,或是那些連設計人員都不熟悉的舊線路,則需要特別謹慎小心。
一個較高效能的匯流排通常適用於中央處理器(CPU)與記憶體之間的連結,如果能讓中央處理器匯流排與其他週邊元件分離的話,就可以在選擇微處理器上保有最大的彈性。對於一些的確需要較高效能匯流排的周邊元件,可以考慮加入一組可組態化的先進先出控制器(FIFO)和直接記憶體存取器(DMA)。中央處理器匯流排則在平台中扮演連接記憶體和直接記憶體存取器的角色。至於系統中何時該用哪一種匯流排,則有賴於中央處理器的選擇。
藉由雙匯流排的架構,較低效能的周邊元件即可完全與中央處理器的選擇無關,這種模組化設計的最大好處,便是容許在不同應用的情況下,可任意置換組件。只要能夠略為修改所有的元件,連接到所指定的匯流排就不是一件難事。當然,透過同樣的匯流排,這些元件還可以很容易地和其他組件整合在一起。
定義完善的標準和匯流排架構,其實縮小了設計重覆使用所衍生問題的範圍。由於這項策略,我們可以延伸可重覆使用系統單晶片平台的價值。簡言之,便是在整體的設計環境中,創造出一個智慧型的自動化流程。一個可以完全組態化而又可重覆使用的系統單晶片平台,至少要有一個可當作參考設計的平台,並且還要有一套能支援那些可以連接到平台的元件所需的基本硬體架構。除此以外,還要
有一個元件庫(library),包含了一些週邊元件和標準功能的軟核心,以及一些微處理器和高效能元件的硬核心。
SoC設計之整合與驗證
一個單一建構電路的流程可以簡化可重覆使用設計所需的資料傳遞過程。其實在各個元件的整合,以及不同系統單晶片系列產品的發展之間,最好能保持設計流程的一致性。如此才可以使系統單晶片設計的整合及驗證更加容易自動化。
分割與克服(Divide and Conquer)
一般而言,系統單晶片設計流程中最花時間的部分是驗證的階段。因此,藉由設計重覆使用的策略來提高生產力,在這個階段的效果也最為顯著。設計團隊通常會利用一種「分割與克服」的技巧來完成平台式設計的驗證目標。首先,所有在系統中的元件,都必須在組合前能夠正常工作,有些平台環境甚至涵括了自動化的篩選程序,來確保系統單晶片中的所有元件都滿足整合及驗證的必要條件,然後才開始進行系統層次的功能驗證。
一個系統單晶片設計所需的系統測試,應當包括許多毫秒(milliseconds)等級的模擬,以及數千行的測試程式(stimulus)。如果可能的話,還應當能夠執行微處理器的啟動程式(boot code),以及觸發那些真正會在產品完成後所使用的軟體驅動器。硬體與軟體協同驗證(co-verification)的方式可以加速這類型的模擬。除了創造模仿應用程式的整合測試環境之外,這種方法還可以讓我們較容易對軟體驅動器進行除錯的工作。
採用平台式的設計時,所有重覆使用的元件和大部分的軟體都必須先經過驗證。利用自動化的命令執行檔(scripts),針對被測試的元件選擇不同的驗證模組,我們便可以讓現存的基本測試程式在不受平台環境的影響下執行;如此一來,設計人員才能把時間花在不同系統單晶片系列產品所衍生出來的額外測試,以及一些與新功能相關的極端情況(corner case)測試。藉由重覆使用的驗證模組,嵌入式軟體以及硬體元件,即便是最複雜的系統單晶片設計,平台式的設計均可大幅縮短其設計時程。
結論
成功的系統單晶片設計應當包含一個設計環境,以及容許交換各種可重覆使用的現存元件或增加新線路的基本架構。如此的架構與平台式設計中匯流排的價值是無庸置疑的,因為可以突顯高階系統設計自動化的優點。隨著設計重覆使用的觀念逐漸被廣泛接受,可重覆使用的系統單晶片平台將會驅使設計團隊下定決心,從系統元件的創造建構,邁向系統功能的整合驗證。
(作者為Mentor Graphics AE Consultant )