專利名稱:虛擬平臺(tái)及其相關(guān)模擬方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種虛擬平臺(tái)及其相關(guān)方法,尤其是涉及一種用來模擬一系統(tǒng)芯片的
虛擬平臺(tái)及其相關(guān)模擬方法。
背景技術(shù):
隨著半導(dǎo)體技術(shù)的發(fā)展,業(yè)界都致力于將系統(tǒng)電路整合在一個(gè)芯片中,因此,系統(tǒng) 芯片(system-on-chip, S0C)已成為發(fā)展的主要潮流。 在設(shè)計(jì)系統(tǒng)芯片時(shí),已知技術(shù)通常會(huì)先建立一虛擬平臺(tái)(virtualplatform),以 軟件的方式先模擬設(shè)計(jì)系統(tǒng)芯片。若設(shè)計(jì)有錯(cuò)誤,就可事先發(fā)覺,這樣可以增加設(shè)計(jì)效率。 虛擬平臺(tái)有很多不同的設(shè)計(jì),例如某些虛擬平臺(tái)提供圖形化用戶接口 (graphical user interface, GUI),讓用戶通過拖曳(drag & drop)的方式來操作。然而,就目前技術(shù)來說, 許多虛擬平臺(tái)在新增元件的功能上較為復(fù)雜,或者當(dāng)新增加元件后,需要把整個(gè)系統(tǒng)再重 新編輯、重新連接一次,如此一來,將造成用戶的不便與設(shè)計(jì)時(shí)間的增加。
發(fā)明內(nèi)容
因此,本發(fā)明的主要目的即在于提供一種可配置(configurable)與可擴(kuò)充 (extendable)的虛擬平臺(tái)。 本發(fā)明披露一種虛擬平臺(tái),用來模擬一系統(tǒng)芯片,其包含有一元件模塊、一設(shè)定模 塊及一頂層模塊。該元件模塊用以儲(chǔ)存多個(gè)元件模型及該多個(gè)元件模型的一信息。該設(shè)定 模塊用以根據(jù)該系統(tǒng)芯片所需的該元件模型,產(chǎn)生一設(shè)定結(jié)果。該頂層模塊,耦接至該元件 模塊與該設(shè)定模塊,用以根據(jù)該設(shè)定結(jié)果,由該元件模塊中讀取對應(yīng)的元件模型的該信息, 以模擬該系統(tǒng)芯片。 本發(fā)明還披露一種用來模擬一系統(tǒng)芯片的方法,包含有建立多個(gè)元件模型及該多 個(gè)元件模型的一信息;根據(jù)該系統(tǒng)芯片所需的該元件模型,產(chǎn)生一設(shè)定結(jié)果;以及根據(jù)該 設(shè)定結(jié)果,由該多個(gè)元件模型中,讀取對應(yīng)的該元件模型的該信息,以模擬該系統(tǒng)芯片。
圖1為本發(fā)明實(shí)施例的一虛擬平臺(tái)的示意圖。 圖2為本發(fā)明實(shí)施例的一系統(tǒng)芯片的示意圖。 圖3為以C++的類別來建制元件模型的示意圖。 圖4為用來模擬一系統(tǒng)芯片的方法的流程的示意圖。 附圖符號說明 10 虛擬平臺(tái) 100 元件模塊 102 設(shè)定模塊 104 頂層模塊
20系統(tǒng)芯片200處理器202直接存儲(chǔ)器存取器204中斷控制器206計(jì)時(shí)器208存儲(chǔ)器210通用異步收發(fā)傳輸器212總線30基類32主類別34從類別36處理器的類別38直接存儲(chǔ)器存取器的類別42中斷控制器的類別44存儲(chǔ)器的類別46通用異步收發(fā)傳輸器的類別40流程400、402、404、406、步驟408、41Q
具體實(shí)施例方式
請參考圖1,圖1為本發(fā)明實(shí)施例的一虛擬平臺(tái)10的示意圖。虛擬平臺(tái)10是以0++ 或System C之類的語言寫成,包含有一元件模塊100、一設(shè)定模塊102及一頂層模塊104。 依據(jù)本發(fā)明的一實(shí)施例,虛擬平臺(tái)IO可用來模擬如圖2所示的一系統(tǒng)芯片20。元件模塊 100包含多個(gè)元件模型及多個(gè)元件模型的信息,例如元件模型的名稱及相關(guān)連結(jié)方式。設(shè)定 模塊102用以根據(jù)系統(tǒng)芯片20所需的元件模型,產(chǎn)生一設(shè)定結(jié)果。頂層模塊104用以根據(jù) 設(shè)定模塊102所產(chǎn)生的設(shè)定結(jié)果,由元件模塊100中讀取對應(yīng)的元件模型的信息,以模擬出 系統(tǒng)芯片20所需的元件模型的實(shí)例(instance),并進(jìn)行相關(guān)連結(jié)。 因此,用戶可根據(jù)系統(tǒng)芯片20所需的元件模型,在設(shè)定模塊102進(jìn)行適當(dāng)?shù)脑O(shè) 定,然后,頂層模塊104可根據(jù)設(shè)定模塊102的設(shè)定,模擬出系統(tǒng)芯片20。以圖2所示 的系統(tǒng)芯片20來說,其結(jié)構(gòu)包含有一處理器200、一直接存儲(chǔ)器存取器(direct memory access, DMA) 202、一中斷控制器204、一計(jì)時(shí)器206、一存儲(chǔ)器208、一通用異步收發(fā)傳輸器 (UniversalAsynchronous Receiver/Transmitter,UART) 210及一總線212。為了能夠模擬 系統(tǒng)芯片20,在虛擬平臺(tái)10的元件模塊100中,相對應(yīng)地會(huì)建制有系統(tǒng)芯片20的這些元件 的元件模型,以供頂層模塊104模擬系統(tǒng)芯片20時(shí)使用。 請參考圖3,圖3為以C++的類別(class)來建制元件模型的示意圖。在元件模塊 100中,元件模型以0++的類別(class)來建制。首先定義一個(gè)基類(base class)30,所有 的元件模型的類別都由基類30衍生出去,基類30先衍生出一個(gè)主類別(master base)32及 一個(gè)從類別(slave base)34。在本實(shí)施例中,主類別32包含了對應(yīng)于系統(tǒng)芯片20的處理 器200與直接存儲(chǔ)器存取器202的元件模型(36及38),從類別34包含了對應(yīng)于系統(tǒng)芯片20的中斷控制器204、計(jì)時(shí)器206、存儲(chǔ)器208、通用異步收發(fā)傳輸器210的元件模型(42、
44及46)。另外,由于直接存儲(chǔ)器存取器202既屬于主類別32元件也屬于從類別34元件,
因此,直接存儲(chǔ)器存取器的類別38同時(shí)由主類別32與從類別34衍生出。通過此方式,以
C++的類別來建制元件模型,可以方便管理元件模型。 接著,對本發(fā)明建制元件模型的方法做較詳細(xì)的說明。 以C++來建制基類30可如下所示 class platform—base { virtual void connect (m即—module—t&modules) = 0;
virtual void set—common—flag() = 0 ;
...... virtual platform—base () {} } 其中,connect ()函數(shù)用來定義元件模型的相關(guān)連結(jié)方式,例如與其它元件模型的
連結(jié)。而前述由基類30衍生的主類別32則可如下表示 class platform—master—base :public virtual platform—base { ...... } 由于元件模塊是可擴(kuò)充的,假設(shè)現(xiàn)在要新增一個(gè)計(jì)時(shí)器206的元件模型,則可以 timer, h的文件來定義 class timer :public platform—slave—base { public : timer (const string module_name, const string config_file); void connect (m即—module—t&modules); ......other timer specific functions...... } 其中,在建構(gòu)函數(shù)timer ()中,除了指定了產(chǎn)生這個(gè)元件模型的實(shí)例時(shí)的一個(gè)名
字module_name夕卜,還指定了這個(gè)元件模型的配置文件的名字conf ig_f ile。而connect () 函數(shù)則界定了元件模型的相關(guān)連結(jié)方式,可再以另一文件timer, c卯來定義 void timer::connect(map_module_t&modules) { ......the connection procedure...... } 這樣一來,一個(gè)新增的計(jì)時(shí)器206的元件模型就建制完成了。新增的元件模型
會(huì)被編譯成一動(dòng)態(tài)數(shù)據(jù)庫文件而儲(chǔ)存于一特定目錄下,當(dāng)開始運(yùn)作時(shí),頂層模塊104會(huì) 讀取儲(chǔ)存于該特定目錄下的動(dòng)態(tài)數(shù)據(jù)庫文件,以得到新增的元件模型,并通過動(dòng)態(tài)加載(dynamic loading)的方式以產(chǎn)生新增的元件模型的實(shí)例。在本發(fā)明中,動(dòng)態(tài)加載通過一擴(kuò) 充(maker)函數(shù)來完成,在timer, c卯文件中定義此擴(kuò)充函數(shù) static platform—base氺maker—timer(const char氺name,conststring config—file)
{ return new timer(name, config_file); } 然而,有些操作系統(tǒng)并不支持0++,因此,需要另外以(:語言告知頂層模塊104這個(gè) 擴(kuò)充函數(shù)的存在,可在timer, c卯文件中定義如下
extern "C"
{ void register—makers 0 { module—makers[ "Timer"] = maker_timer ; }
} 由上可知,當(dāng)要新增一個(gè)元件模型時(shí),只要把這個(gè)元件模型編譯成一動(dòng)態(tài)數(shù)據(jù)庫 文件并儲(chǔ)存于一特定目錄下,頂層模塊104運(yùn)作時(shí)就會(huì)讀取儲(chǔ)存于該特定目錄下的動(dòng)態(tài)數(shù) 據(jù)庫文件,以得到新增的元件模型,并通過動(dòng)態(tài)加載的方式以產(chǎn)生新增的元件模型的實(shí)例。 如此一來,本發(fā)明便可依不同的需求在元件模塊100中擴(kuò)充元件模型,然后再去修改設(shè)定 模塊102中的設(shè)定,以產(chǎn)生不同的虛擬平臺(tái)10。 當(dāng)要增加前述的計(jì)時(shí)器206的元件模型時(shí),可先修改設(shè)定模塊102中的頂層設(shè)定
文件(global configure file):#define INSTANCE "Timer: :Timer_0,, 其中Timer表示元件模型的型別,如在函數(shù)104中定義。TimerJ)表示元件模型的 實(shí)例名稱。
計(jì)時(shí)器206在總線212中的掛接,通過總線的設(shè)定文件
#define MODULE NAME
#define BUS_SLAVE_2 qualified name
#define SLAVE—BASE address
#define SLAVE TOP
"SharedBus
Timer 0'
0xlD012300
0xlD0123AF
/Fully
'physical base
#define M0DULE_END 其中,TimerJ)即表示要新增的計(jì)時(shí)器206的元件模型的實(shí)例,而它是掛接在 "SharedBus"的2號slave端口 ,同時(shí)這個(gè)實(shí)例的地址映射信息也定義在這邊。另外,新增 的計(jì)時(shí)器206的元件模型TimerJ)也有自己的配置文件
6/read delay bus cycle.
/write delay bus cycle. 'to which module to
/IRQ number #define M0DULE_NAME 〃 TimerJ)' #define 11MER_READ_DELAY 2 / (multiple system clock) #define TMER—WRI TE—DELAY 3 / #define INT_DESTINATION "MIPSJ)" // connect interrupt port #define IRQ—NUM 3 / #define M0DULE_END 其中,在這里定義了 TimerJ)讀取register的delay是2個(gè)cycle,它的 interrupt應(yīng)該連接到名為"MIPS_0"的模塊。 因此,在本發(fā)明中,當(dāng)用戶要建立一個(gè)新的虛擬平臺(tái)10時(shí),只需在設(shè)定模塊102作 新的相關(guān)設(shè)定(可配置),則頂層模塊104就可產(chǎn)生所需要的虛擬平臺(tái)10。如果新的虛擬 平臺(tái)10中需要新的元件模型,則只需要如前述的新增元件模型的方式,在元件模塊100中 產(chǎn)生新的元件模型(可擴(kuò)充),再在設(shè)定模塊102中作新的相關(guān)設(shè)定,則頂層模塊104就可 產(chǎn)生所需要的虛擬平臺(tái)10。換言之,本發(fā)明通過設(shè)定模塊102與元件模塊100的結(jié)合來達(dá) 到可配置(configurable)與可擴(kuò)充(extendable)的技術(shù)功效。 進(jìn)一步地,請參考圖4,圖4為用來模擬一系統(tǒng)芯片20的方法的流程40的示意圖。 流程40包含以下步驟
步驟400:開始。 步驟402 :建立多個(gè)元件模型及該多個(gè)元件模型的信息。 步驟404:根據(jù)系統(tǒng)芯片20所需的元件模型,產(chǎn)生一設(shè)定結(jié)果。 步驟406 :根據(jù)該設(shè)定結(jié)果,讀取對應(yīng)的元件模型的信息,以模擬出系統(tǒng)芯片20所
需的元件模型的實(shí)例,并進(jìn)行相關(guān)連結(jié)。 步驟408 :模擬(Simulation)。 步驟410:結(jié)束。 由于流程40的詳細(xì)操作方式已披露于前述的虛擬平臺(tái)10的說明,故在此不再贅 述。 綜上所述,在本發(fā)明中,當(dāng)用戶要建立一個(gè)新的虛擬平臺(tái)時(shí),只需在設(shè)定模塊作新 的相關(guān)設(shè)定,則頂層模塊就可產(chǎn)生所需要的虛擬平臺(tái);如果新的虛擬平臺(tái)中需要新的元件 模型,則只需要如前述的新增元件模型的方式,在元件模塊中產(chǎn)生新的元件模型,再在設(shè)定 模塊中作新的相關(guān)設(shè)定,則頂層模塊就可產(chǎn)生所需要的虛擬平臺(tái)。通過此方式來模擬一個(gè) 新的虛擬平臺(tái),可達(dá)到可配置(configurable)與可擴(kuò)充(extendable)的技術(shù)功效。故確 實(shí)能達(dá)到本發(fā)明的目的。 以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明權(quán)利要求所做的均等變化與修 飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
一種虛擬平臺(tái),用來模擬一系統(tǒng)芯片,包含一元件模塊,用以儲(chǔ)存多個(gè)元件模型及該多個(gè)元件模型的一信息;一設(shè)定模塊,用以根據(jù)該系統(tǒng)芯片所需的該元件模型,產(chǎn)生一設(shè)定結(jié)果;以及一頂層模塊,耦接至該元件模塊與該設(shè)定模塊,用以根據(jù)該設(shè)定結(jié)果,由該元件模塊中讀取對應(yīng)的元件模型的該信息,以模擬該系統(tǒng)芯片。
2. 如權(quán)利要求1所述的虛擬平臺(tái),其中該多個(gè)元件模型的該信息包含該多個(gè)元件模型 的一名稱及一連結(jié)方式。
3. 如權(quán)利要求2所述的虛擬平臺(tái),其中該多個(gè)元件模型以C++的類別來建制。
4. 如權(quán)利要求2所述的虛擬平臺(tái),其中該元件模塊為一可擴(kuò)充模塊,其一新增元件模 型被編譯成一動(dòng)態(tài)數(shù)據(jù)庫文件并儲(chǔ)存于一特定目錄下。
5. 如權(quán)利要求4所述的虛擬平臺(tái),其中,模擬該系統(tǒng)芯片時(shí),該頂層模塊讀取儲(chǔ)存該特 定目錄下的該動(dòng)態(tài)數(shù)據(jù)庫文件,以得到該新增元件模型,并通過一動(dòng)態(tài)加載的方式以產(chǎn)生 該新增元件模型的一實(shí)例。
6. 如權(quán)利要求5所述的虛擬平臺(tái),其中該頂層模塊通過一擴(kuò)充函數(shù)以產(chǎn)生該新增元件 模型的該實(shí)例。
7. 如權(quán)利要求1所述的虛擬平臺(tái),其中該元件模型為一處理器。
8. 如權(quán)利要求1所述的虛擬平臺(tái),其中該元件模型為一計(jì)時(shí)器。
9. 一種模擬系統(tǒng)芯片的方法,包含 建立多個(gè)元件模型及該多個(gè)元件模型的一信息; 根據(jù)該系統(tǒng)芯片所需的該元件模型,產(chǎn)生一設(shè)定結(jié)果;以及根據(jù)該設(shè)定結(jié)果,由該多個(gè)元件模型中,讀取對應(yīng)的該元件模型的該信息,以模擬該系 統(tǒng)芯片。
10. 如權(quán)利要求9所述的方法,其中該多個(gè)元件模型的該信息包含該多個(gè)元件模型的 一名稱及一連結(jié)方式。
11. 如權(quán)利要求10所述的方法,其中該多個(gè)元件模型以C++的類別來建制。
12. 如權(quán)利要求IO所述的方法,其中該多個(gè)元件模型可被擴(kuò)充,且一新增元件模型被 編譯成一動(dòng)態(tài)數(shù)據(jù)庫文件并儲(chǔ)存于一特定目錄下。
13. 如權(quán)利要求12所述的方法,其中,模擬該系統(tǒng)芯片時(shí),是讀取儲(chǔ)存于該特定目錄下 的該動(dòng)態(tài)數(shù)據(jù)庫文件,以得到該新增元件模型,并通過一動(dòng)態(tài)加載的方式以產(chǎn)生該新增元 件模型的一實(shí)例。
14. 如權(quán)利要求13所述的方法,其中通過動(dòng)態(tài)加載的方式以產(chǎn)生該新增元件模型的該 實(shí)例是通過一擴(kuò)充函數(shù)以產(chǎn)生該新增元件模型的該實(shí)例。
15. 如權(quán)利要求14所述的方法,其中通過動(dòng)態(tài)加載的方式以產(chǎn)生該新增元件模型的該 實(shí)例是通過一擴(kuò)充函數(shù)以產(chǎn)生該新增元件模型的該實(shí)例。
16. 如權(quán)利要求9所述的方法,其中該元件模型為一處理器。
17. 如權(quán)利要求9所述的方法,其中該元件模型為一計(jì)時(shí)器。
全文摘要
本發(fā)明關(guān)于虛擬平臺(tái)及其相關(guān)模擬方法。其中該虛擬平臺(tái)用來模擬一系統(tǒng)芯片,其包含有一元件模塊、一設(shè)定(configure)模塊及一頂層模塊。該元件模塊用以儲(chǔ)存多個(gè)元件模型及該多個(gè)元件模型的一信息。該設(shè)定模塊用以根據(jù)該系統(tǒng)芯片所需的該元件模型,產(chǎn)生一設(shè)定結(jié)果。該頂層模塊,耦接至該元件模塊與該設(shè)定模塊,用以根據(jù)該設(shè)定結(jié)果,由該元件模塊中讀取對應(yīng)的元件模型的該信息,以模擬該系統(tǒng)芯片。
文檔編號G06F9/455GK101763281SQ20081018528
公開日2010年6月30日 申請日期2008年12月24日 優(yōu)先權(quán)日2008年12月24日
發(fā)明者卜勇華 申請人:瑞昱半導(dǎo)體股份有限公司