基于模式的SoC設(shè)計(jì)方法研究
SoC(system on chip) 是微電子技術(shù)發(fā)展的一個(gè)新的里程碑,SoC不再是一種功能單一的單元電路,而是將信號(hào)采集、處理和輸出等完整的系統(tǒng)集成在一起,成為一個(gè)有專用目的的電子系統(tǒng)單片。其設(shè)計(jì)思想也有別于IC,在一個(gè)或若干個(gè)單片上完成整個(gè)系統(tǒng)的功能。
SoC開(kāi)發(fā)和設(shè)計(jì)存在一些問(wèn)題,如描述語(yǔ)言不統(tǒng)一、抽象層次低、仿真速度慢、可重用性差、設(shè)計(jì)性能無(wú)法保障、RTL級(jí)發(fā)現(xiàn)的問(wèn)題需要重新進(jìn)行整個(gè)的設(shè)計(jì)流程才能解決,因此SoC的建模與設(shè)計(jì)的方法成為當(dāng)前刻不容緩的課題。上述種種問(wèn)題與曾經(jīng)困惑軟件業(yè)的“軟件危機(jī)”的表現(xiàn)非常類似,為了解決軟件危機(jī),人們提出了軟件工程。因此,本文的思路是將軟件工程中應(yīng)用最為廣泛的
因此,本文提出基于模式的SoC設(shè)計(jì)方法PBSOC ,如圖1所示,強(qiáng)調(diào)高層次的系統(tǒng)建模,更有利于設(shè)計(jì)的復(fù)用. 在需求分析階段,根據(jù)規(guī)格說(shuō)明,使用SystemC進(jìn)行軟硬件協(xié)同設(shè)計(jì)。SystemC是由Open SystemC Initiative (OSCI) 提出和維護(hù)的開(kāi)放源代碼的基于C++統(tǒng)一軟硬件建模平臺(tái). 軟硬件模塊都用C++ 描述,對(duì)不同軟硬件劃分方案的評(píng)估和權(quán)衡可以方便地進(jìn)行。
PBSOC使用形式化方法和面向?qū)ο蟮腜etri網(wǎng)對(duì)系統(tǒng)的行為和結(jié)構(gòu)建模,不涉及任何結(jié)構(gòu)和時(shí)間的細(xì)節(jié),并通過(guò)實(shí)時(shí)UML進(jìn)行可視化的描述. 它不僅具備傳統(tǒng)面向?qū)ο蠓椒ㄋ哂械娘L(fēng)格,而且具有Petri網(wǎng)直觀模擬系統(tǒng)動(dòng)態(tài)行為的優(yōu)點(diǎn),從而能夠更加簡(jiǎn)潔、清楚地描述系統(tǒng)的靜態(tài)結(jié)構(gòu)和組成元素之間的層次關(guān)系。將Petri網(wǎng)思想引入面向?qū)ο蠼.?dāng)中,可將系統(tǒng)看作是一些相互作用的對(duì)象組成的集合。集合中的每個(gè)對(duì)象都具有自己的屬性和任務(wù),它們根據(jù)收到的消息、句柄等來(lái)完成相應(yīng)的任務(wù),從而實(shí)現(xiàn)系統(tǒng)的整體功能.在系統(tǒng)級(jí)建立面向?qū)ο蟮脑O(shè)計(jì)模式庫(kù)和IP復(fù)用庫(kù),OO庫(kù)即面向?qū)ο髷?shù)據(jù)庫(kù),主要存放的是各種SoC設(shè)計(jì)模式(pattern) ,在SoC系統(tǒng)框架設(shè)計(jì)、IP設(shè)計(jì)以及IP通信設(shè)計(jì)中都可以使用模式。IP庫(kù)中存放的可以是普通的IP核,即其他廠商設(shè)計(jì)的成熟的IP;也可以是用面向?qū)ο蟮姆椒ㄔO(shè)計(jì)的一些IP 核,即IP 的設(shè)計(jì)過(guò)程也遵從于PBSOC。
圖1 PBSOC 設(shè)計(jì)框架
SOC設(shè)計(jì)的設(shè)計(jì)模式
設(shè)計(jì)模式
模式是解決某一類問(wèn)題的方法論,它把解決某類問(wèn)題的方法總結(jié)歸納到理論高度。雖然模式起源于建筑,但其思想也同樣適用于面向?qū)ο笤O(shè)計(jì)模式。指導(dǎo)模式設(shè)計(jì)有3個(gè)重要概念,即重用( reuse) 、接口與實(shí)現(xiàn)分離和低耦合(loose couple)。重用是系統(tǒng)的設(shè)計(jì)目標(biāo),主要通過(guò)繼承(inheritance) 和對(duì)象復(fù)合(composition) 實(shí)現(xiàn). 接口與實(shí)現(xiàn)分離指接口保持不變,用分離帶來(lái)靈活性,主要表現(xiàn)形式為多態(tài)性(polymorphism)。低耦合可以降低復(fù)雜性。
現(xiàn)存的硬件設(shè)計(jì)模式和重用方法主要是處理RTL(寄存器傳輸級(jí)) 設(shè)計(jì)和編碼的。這種在設(shè)計(jì)過(guò)程中積累的經(jīng)驗(yàn)在設(shè)計(jì)重用時(shí)是非常重要和有用的,然而并沒(méi)有涉及系統(tǒng)級(jí)設(shè)計(jì)的問(wèn)題。因此在系統(tǒng)級(jí)應(yīng)用面向?qū)ο蟮姆椒梢钥朔@些鴻溝,使用設(shè)計(jì)模式還可以更快速和直觀地捕捉設(shè)計(jì)的內(nèi)容,提高設(shè)計(jì)的可理解性,將抽象的級(jí)別上升到系統(tǒng)級(jí),能夠處理更復(fù)雜的硬件設(shè)計(jì)。
SoC設(shè)計(jì)模式
SoC的設(shè)計(jì)模式與軟件的設(shè)計(jì)模式的不同,主要在于軟件和硬件的設(shè)計(jì)差別。SoC的設(shè)計(jì)不僅包括軟件,還有硬件以及軟硬件的協(xié)同設(shè)計(jì),因此,它涉及物理約束、實(shí)時(shí)性和并發(fā)等關(guān)鍵問(wèn)題。所以要將軟件的模式進(jìn)行改造,并使用軟硬件通用的描述語(yǔ)言進(jìn)行描述。
軟件設(shè)計(jì)模式中運(yùn)用得比較多的面向?qū)ο蠓椒ㄊ抢^承,它同樣適用于SoC的設(shè)計(jì)模式當(dāng)中,但必須考慮SoC系統(tǒng)中的物理約束。一些軟件設(shè)計(jì)模式,主要是創(chuàng)建型模式,能夠動(dòng)態(tài)地生成系統(tǒng)的對(duì)象,而SoC系統(tǒng)中硬件部分結(jié)構(gòu)是靜態(tài)的,因此,它們不適合于SoC硬件部分設(shè)計(jì)模式,但是對(duì)于SoC系統(tǒng)中的軟件模塊還是可以適用的,例如原型模式和命令模式等。
大部分的結(jié)構(gòu)型模式只需要稍做修改就可以應(yīng)用到SoC設(shè)計(jì)中,主要是實(shí)現(xiàn)方式的問(wèn)題,即用軟硬件通用的語(yǔ)言來(lái)重新描述它。而行為型的模式,需要加入實(shí)時(shí)系統(tǒng)中一些約束。對(duì)于典型軟件模式改造的前提和目標(biāo)是設(shè)計(jì)的可重用性,主要是SoC系統(tǒng)級(jí)設(shè)計(jì)的可重用。在SoC中FSM(有限狀態(tài)機(jī)) 是最常用的一種行為表達(dá)方式,因此狀態(tài)轉(zhuǎn)換的頻率是非常多的.如下面的狀態(tài)模式,通過(guò)改造,可以用于描述硬件設(shè)計(jì)。
新的SoC設(shè)計(jì)模式的提出是PBSOC 最終的目標(biāo)。它主要針對(duì)的就是高層次SoC設(shè)計(jì)中最常用的一些設(shè)計(jì)方法,以及構(gòu)筑SoC系統(tǒng)的基本組件和基本結(jié)構(gòu)
(1) 狀態(tài)模式(state pattern)
狀態(tài)模式的意圖是使一個(gè)對(duì)象在內(nèi)部狀態(tài)改變時(shí)可以改變自己的行為,從客戶看來(lái),好像對(duì)象改變了它的類。即不同的狀態(tài),不同的行為;或者說(shuō),每個(gè)狀態(tài)有著相應(yīng)的行為.考慮SoC片上總線協(xié)議, 片上總線總是有3 個(gè)狀態(tài): 閑( IDL E) 、忙(BUSY) 和關(guān)閉(CLOSE) . 而各個(gè)狀態(tài)的處理過(guò)程不一樣. 如圖2 所示,BusProtocol 類維護(hù)一個(gè)表示總線當(dāng)前狀態(tài)的狀態(tài)對(duì)象(一個(gè)BusState 子類的實(shí)例) . BusProtocol 類將所有與狀態(tài)相關(guān)的請(qǐng)求委托給這個(gè)狀態(tài)對(duì)象. BusProtocol 使用它的BusState 子類實(shí)例來(lái)執(zhí)行特定于連接狀態(tài)的操作. 一旦總線狀態(tài)改變, BusProtocol 對(duì)象就會(huì)改變它所使用的狀態(tài)對(duì)象. 例如,當(dāng)片上總線從閑置狀態(tài)轉(zhuǎn)為忙狀態(tài)時(shí),BusProtocol 會(huì)用一個(gè)BusBusy 的實(shí)例來(lái)代替原來(lái)的BusIdle 的實(shí)例。
圖2 狀態(tài)模式的系統(tǒng)結(jié)構(gòu)
State 模式不指定哪一個(gè)參與者定義狀態(tài)轉(zhuǎn)換準(zhǔn)則. 如果該準(zhǔn)則是固定的, 那么它們可在Context 中完全實(shí)現(xiàn). 然而若讓State 子類自身指定它們的后繼狀態(tài)以及何時(shí)進(jìn)行轉(zhuǎn)換, 通常更靈活、更合適. 這需要Context 增加一個(gè)接口, 讓State 對(duì)象顯式地設(shè)定Context 的當(dāng)前狀態(tài)。
首先定義類BusProtocol ,它提供了一個(gè)片上總線的基本協(xié)議通道并處理改變狀態(tài)的請(qǐng)求。BusProtocol 在state 成員變量中保持一個(gè)BusState 類的實(shí)例。類BusState 復(fù)制了BusProtocol的狀態(tài)改變接口。每一個(gè)BusState 操作都以一個(gè)BusProtocol 實(shí)例作為一個(gè)參數(shù), 從而讓BusState 可以訪問(wèn)BusProtocol 中的數(shù)據(jù)和改變總線的狀態(tài)。BusProtocol 將所有與狀態(tài)相關(guān)的請(qǐng)求委托給它的BusState 實(shí)例state。BusProtocol 還提供了一個(gè)操作用于將這個(gè)變量設(shè)為一個(gè)新的BusState。BusProtocol 的構(gòu)造器將該狀態(tài)對(duì)象初始化為BusIdle 狀態(tài)。
(2) 層適配模式
層適配模式為SoC通信建模提供分層的協(xié)議轉(zhuǎn)換,將不同架構(gòu)的網(wǎng)絡(luò)協(xié)議通過(guò)接口的匹配,實(shí)現(xiàn)各層次的數(shù)據(jù)通信,提供事務(wù)級(jí)建模各層的適配方式。系統(tǒng)建模中通信機(jī)制可以分為4 層,其中事務(wù)級(jí)建模分為3 層,即除L0 之上的3 層為事務(wù)級(jí)。其中:L3 為消息層,這一層沒(méi)有任何的時(shí)間信息,系統(tǒng)行為是事件驅(qū)動(dòng)的,并建立點(diǎn)到點(diǎn)的通信. L2 為事務(wù)層,這一層的系統(tǒng)模型帶有時(shí)間信息,但并不是時(shí)鐘精確周期,系統(tǒng)是時(shí)間驅(qū)動(dòng)執(zhí)行的。
事務(wù)層將理想的結(jié)構(gòu)映射到需要考慮資源分配和設(shè)計(jì)約束的結(jié)構(gòu)中,完成SoC體系結(jié)構(gòu)的分析和建模,并開(kāi)始軟件的開(kāi)發(fā)。L1為傳輸層,它在RTL層之上,系統(tǒng)由精確到周期的行為組成,但比RTL 級(jí)的仿真速度要快。傳輸層建模一般對(duì)應(yīng)一定的總線協(xié)議,將精確到周期的協(xié)議映射到給定的硬件接口和總線結(jié)構(gòu)上,隱藏了接口的管腳,將事務(wù)直接映射到總線周期。層適配模式將通過(guò)適配完成各層次的模型轉(zhuǎn)換。如圖3 所示,TL1 Master Adapter通過(guò)適配TL1通道和TL2 通道,使TL1 Master 和TL2 Slave 通信。
圖3 層適配模式結(jié)構(gòu)
(3) 包裝器模式
包裝器模式的目的是通過(guò)調(diào)整接口和IP 組件的行為來(lái)適應(yīng)特定的應(yīng)用環(huán)境,它屬于結(jié)構(gòu)型模式.在SoC設(shè)計(jì)中,功能組裝正在逐漸代替功能設(shè)計(jì),而成為主流的設(shè)計(jì)方法。因此,各個(gè)IP模塊的互連,以及與片上總線的通信成為研究的重點(diǎn)。IP的本質(zhì)特征是可重用性,通常必然滿足以下基本特征:通用性好,正確性有保證,可移植性好。因?yàn)樵S多IP在設(shè)計(jì)之初都是針對(duì)特定的應(yīng)用,而很少考慮到要與外來(lái)電路搭配使用。IP的定義沒(méi)有一個(gè)通用的接口標(biāo)準(zhǔn),因?yàn)樾酒瑢?shí)現(xiàn)的功能千差萬(wàn)別,性能方面的要求也由于應(yīng)用領(lǐng)域的差異而不同,即使同樣功能的IP模塊在速度、面積、功耗、對(duì)外接口等方面也表現(xiàn)各異包裝器模式的系統(tǒng)結(jié)構(gòu)如圖4 所示。
圖4 包裝器模式的系統(tǒng)結(jié)構(gòu)
通過(guò)包裝器模式的封裝,能適配各種IP 接口。即使用包裝器模式來(lái)調(diào)整組件接口以適應(yīng)于環(huán)境要求。包裝器模式的匹配程度,對(duì)IP Component 的接口與其他的接口進(jìn)行匹配的工作量各個(gè)WrapperModel 可能不一樣。從簡(jiǎn)單的接口轉(zhuǎn)換(例如改變操作名) 到支持完全不同的操作集合,WrapperModel 的工作量取決于Component 接口與需要轉(zhuǎn)
結(jié)束語(yǔ)
在SoC設(shè)計(jì)中,可重用性是應(yīng)該考慮的一個(gè)很重要的因素. 除了IP復(fù)用,設(shè)計(jì)的可重用也是非常重用的。在討論將現(xiàn)有軟件設(shè)計(jì)模式應(yīng)用到SoC設(shè)計(jì)當(dāng)中后,提出了SoC設(shè)計(jì)模式,主要針對(duì)高層次的SoC設(shè)計(jì)中的最常用的一些設(shè)計(jì)方法,以及構(gòu)筑SoC系統(tǒng)的基本組件和基本結(jié)構(gòu)。除了上述的3 種模式,還提出的一系列的SoC設(shè)計(jì)模式中,總線模式屬于體系結(jié)構(gòu)的模式,包裝器模式和層適配模式屬于結(jié)構(gòu)型模式,總線協(xié)議模式、管道模式和FSM模式屬于行為型模式。下一步的工作是深入研究系統(tǒng)級(jí)設(shè)計(jì)方法,以及基于UML的軟件設(shè)計(jì)模式描述如何自動(dòng)地轉(zhuǎn)換為元(meta) 程序。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論