專利名稱::SystemC系統(tǒng)級(jí)綜合方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及集成電路領(lǐng)域,尤其涉及一種從IEEEP1666標(biāo)準(zhǔn)SystemC語(yǔ)言非定時(shí)模型獲得等價(jià)異構(gòu)多核片上系統(tǒng)所需寄存器傳輸級(jí)代碼及其軟件代碼的電子系統(tǒng)級(jí)綜合方法。
背景技術(shù):
:片上系統(tǒng)是一個(gè)具備特定功能、服務(wù)于特定市場(chǎng)的軟件和硅集成電路的混合體,比如無(wú)線局域網(wǎng)基帶芯片、便攜式多媒體芯片、DVD播放機(jī)解碼芯片等。片上系統(tǒng)產(chǎn)品的成功關(guān)鍵在于在恰當(dāng)?shù)臅r(shí)間窗口提供令目標(biāo)用戶滿意的性能和價(jià)格。在集成電路設(shè)計(jì)的各個(gè)階段中,一個(gè)重要的環(huán)節(jié)稱為綜合。綜合是在給定數(shù)字系統(tǒng)行為描述以及要求滿足的約束條件下,找出一個(gè)滿足約束條件的算法最佳結(jié)構(gòu)以實(shí)現(xiàn)該數(shù)字系統(tǒng)行為。所述行為是指數(shù)字系統(tǒng)及其部件與外部環(huán)境的相互聯(lián)系和作用。1985年P(guān)hilMoorby發(fā)明了Verilog語(yǔ)言,1987年VHDL成為IEEE標(biāo)準(zhǔn)?;谶@兩種硬件描述語(yǔ)言來(lái)數(shù)字集成電路系統(tǒng)行為,使得組合邏輯能夠和時(shí)序邏輯分開(kāi)并單獨(dú)優(yōu)化,進(jìn)而出現(xiàn)了邏輯綜合工具,如Synopsys公司的DesignCompiler。邏輯綜合也被稱作寄存器傳輸級(jí)(RegisterTransferLevel,RTL)綜合,是將數(shù)字系統(tǒng)的寄存器傳輸級(jí)描述優(yōu)化并翻譯為門(mén)級(jí)描述。寄存器傳輸級(jí)綜合是目前使用最廣泛的綜合技術(shù)。比寄存器傳輸級(jí)更高級(jí)的綜合技術(shù)稱作高層次綜合技術(shù)。其最成熟的形式是使用為大家所廣泛熟知的C語(yǔ)言進(jìn)行數(shù)字集成電路系統(tǒng)行為建模,進(jìn)而將C語(yǔ)言模型綜合為RTL代碼。由于該高層次綜合通常只能綜合出純粹的單時(shí)鐘域RTL代碼,且通常只用于算法模塊的綜合,因此高層次綜合也常稱作算法綜合。算法綜合技術(shù)近年來(lái)發(fā)展迅速,像ImpulseC、CatapultC和AutoESL等已經(jīng)是成熟的高層次綜合工具。在2006年,SystemC語(yǔ)言成為IEEEP1666標(biāo)準(zhǔn),成為繼VHDL、Verilog之后硬件描述語(yǔ)言的新發(fā)展。近年來(lái),SystemC被越來(lái)越多的用于設(shè)計(jì)驗(yàn)證、構(gòu)建虛擬原型和建模軟硬件混合電子系統(tǒng)。SystemC定義了專門(mén)的行為建模語(yǔ)法,其中一些語(yǔ)法如SC_CTHREAD,是專門(mén)針對(duì)隱式有限狀態(tài)機(jī)建模的,特別適合行為綜合,因此,SystemC行為綜合已經(jīng)成為針對(duì)SystemC的綜合技術(shù)中最早成熟的技術(shù)。已有技術(shù),無(wú)論是基于SyStemC/C++/C的算法綜合,還是SystemC行為綜合,都不支持SystemC中的SC_THREAD、SC_EVENT、SC_FIF0等進(jìn)程和進(jìn)程間通信、同步等語(yǔ)法,且綜合結(jié)果只是一個(gè)完成特定功能的知識(shí)產(chǎn)權(quán)核(IntellectualProperty,IP)的RTL代碼。隨著集成電路集成密度按照摩爾定律發(fā)展,單個(gè)芯片內(nèi)可容納的電路規(guī)模越來(lái)越大,這就要求集成電路綜合技術(shù)能夠支持更多的語(yǔ)法,如SystemC中的SC_THREAD、SC_EVENT、SC_FIFO等,從而讓復(fù)雜集成電路設(shè)計(jì)的自動(dòng)化程度進(jìn)一步提高;然而目前尚未出現(xiàn)過(guò)能夠支持上述語(yǔ)法功能的相關(guān)技術(shù)。
發(fā)明內(nèi)容為解決上述問(wèn)題,本發(fā)明提出了一種SystemC系統(tǒng)級(jí)綜合方法,以待綜合SystemC非定時(shí)模型代碼作為輸入,找出一個(gè)異構(gòu)多核片上系統(tǒng)結(jié)構(gòu),并生成實(shí)現(xiàn)所述異構(gòu)多核片上系統(tǒng)硬件所需的寄存器傳輸級(jí)代碼和能運(yùn)行其上的軟件代碼,從而有效提高復(fù)雜集成電路的設(shè)計(jì)自動(dòng)化程度。該方法還可以包括以下幾方面的具體步驟PartA所述的SystemC系統(tǒng)級(jí)綜合方法的待綜合SystemC非定時(shí)模型代碼,包含SystemC靜態(tài)和動(dòng)態(tài)進(jìn)程相關(guān)語(yǔ)法和以下SystemC專有單元語(yǔ)法SC_FIF0、SC_EVENT、SC_EVENT_QUEUE、SC_MUTEX、SC_SEMAPH0RE。PartB所述的SystemC系統(tǒng)級(jí)綜合方法找出的異構(gòu)多核片上系統(tǒng)的結(jié)構(gòu),由以下部分構(gòu)成31)待綜合SystemC非定時(shí)模型代碼中使用的通信接口的行為模塊對(duì)應(yīng)的通信接口模塊;32)待綜合SystemC非定時(shí)模型代碼中需運(yùn)算加速函數(shù)對(duì)應(yīng)的運(yùn)算加速模塊;33)待綜合SystemC非定時(shí)模型代碼中的SystemC進(jìn)程所對(duì)應(yīng)的處理單元模塊;34)互聯(lián)所述處理單元、所述通信接口模塊、所述運(yùn)算加速模塊的片上網(wǎng)絡(luò);35)待綜合SystemC非定時(shí)模型代碼中SystemC專有單元對(duì)應(yīng)的寄存器傳輸級(jí)模塊、所述SystemC專有單元對(duì)應(yīng)的寄存器傳輸級(jí)模塊之間的連接及其與處理器單元之間的連接;PartC所述的SystemC系統(tǒng)級(jí)綜合方法找出一個(gè)異構(gòu)多核片上系統(tǒng)結(jié)構(gòu)并生成所述異構(gòu)多核片上系統(tǒng)的寄存器傳輸級(jí)代碼的方法,包括以下步驟步驟51)對(duì)待綜合SystemC非定時(shí)模型代碼進(jìn)行詞法和語(yǔ)法分析,得到所述待綜合SystemC非定時(shí)模型代碼中的靜態(tài)進(jìn)程、動(dòng)態(tài)進(jìn)程、SystemC專有單元、進(jìn)程本地和共享數(shù)據(jù)、通信接口、需加速算法函數(shù)信息;步驟5依據(jù)所述詞法和語(yǔ)法分析給出的需運(yùn)算加速函數(shù)信息,通過(guò)算法綜合,將需運(yùn)算加速函數(shù)綜合為具有片上網(wǎng)絡(luò)接口的運(yùn)算加速模塊,并輸出所述運(yùn)算加速模塊的RTL代碼;步驟5依據(jù)所述詞法和語(yǔ)法分析給出的通信接口信息,從提前準(zhǔn)備好的通信接口模塊RTL庫(kù)中拷貝相應(yīng)通信接口模塊的RTL代碼輸出;步驟54)依據(jù)所述詞法和語(yǔ)法分析給出的SystemC專有單元,從提前準(zhǔn)備好的SystemC專有單元RTL庫(kù)中拷貝相應(yīng)模塊的RTL代碼輸出;步驟5依據(jù)所述詞法和語(yǔ)法分析給出的進(jìn)程共享數(shù)據(jù)信息,如果用戶指定為使用片上存儲(chǔ)器實(shí)現(xiàn),從提前準(zhǔn)備好的存儲(chǔ)器單元RTL庫(kù)中拷貝存儲(chǔ)器模塊的RTL代碼,將存儲(chǔ)器模塊的RTL代碼的尺寸參數(shù)配置為共享數(shù)據(jù)尺寸,并輸出;步驟56)從提前準(zhǔn)備好的處理器核RTL庫(kù)中拷貝處理器核的RTL代碼輸出;步驟57)為每一個(gè)所述SystemC靜態(tài)進(jìn)程分配一個(gè)處理單元,形成第一處理單元集合PES及所述SystemC靜態(tài)進(jìn)程與PES的元素的映射關(guān)系;根據(jù)動(dòng)態(tài)進(jìn)程映射算法,確定所述SystemC動(dòng)態(tài)進(jìn)程與用戶指定個(gè)數(shù)的第二處理單元集合PED的元素的映射關(guān)系;步驟58)依賴所述SystemC靜態(tài)和動(dòng)態(tài)進(jìn)程與處理單元之間的映射關(guān)系,得到每一個(gè)處理單元PE訪問(wèn)的SystemC專有單元和本地?cái)?shù)據(jù)的集合L(PE);步驟59)對(duì)于每一個(gè)處理單元PE,依賴集合L(PE),生成和例化所述本地?cái)?shù)據(jù)的存儲(chǔ)器;按照處理器核指令和數(shù)據(jù)總線接口所支持的片上總線類型,生成處理單元本地總線,將所述本地?cái)?shù)據(jù)的存儲(chǔ)器與處理器核通過(guò)本地總線連接,并形成到L(PE)中的SystemC專有單元和片上網(wǎng)絡(luò)的接口,從而得到處理單元PE的頂層RTL代碼并輸出;步驟510)生成異構(gòu)多核片上系統(tǒng)頂層模塊的RTL代碼;PartD所述的生成異構(gòu)多核片上系統(tǒng)的頂層模塊的RTL代碼的方法,包括以下步驟步驟61)所有的處理單元、用戶指定的存儲(chǔ)所述進(jìn)程共享數(shù)據(jù)的片上存儲(chǔ)器、通信接口模塊和算法加速模塊構(gòu)成IP集合。步驟6依賴所述IP集合、SystemC靜態(tài)和動(dòng)態(tài)進(jìn)程與處理單元之間的映射關(guān)系以及進(jìn)程、通信接口、進(jìn)程共享數(shù)據(jù)、運(yùn)算加速函數(shù)間的通信關(guān)系,得到有向圖TG(IP,T),其中Tij為IPi和IPj之間的通信關(guān)系。步驟63)給定TG(IP,T)和用戶所指定的特定IP在片上網(wǎng)絡(luò)中的位置約束為C(PE),進(jìn)行片上網(wǎng)絡(luò)IP映射,得到所有IP在片上網(wǎng)絡(luò)中的位置以及目標(biāo)片上網(wǎng)絡(luò)架構(gòu)信息;步驟64)依賴所述IP在片上網(wǎng)絡(luò)中的位置以及目標(biāo)片上網(wǎng)絡(luò)架構(gòu)信息、來(lái)自通信接口模塊RTL庫(kù)的通信模塊接口信息,例化所述IP集合中所有的IP,將所有IP使用片上網(wǎng)絡(luò)進(jìn)行連接;例化和連接SystemC專有單元;對(duì)于任一所述PE,將其與L(PE)中所有SystemC專用單元相連接,從而得到頂層模塊RTL代碼,并輸出。PartE所述的進(jìn)程、通信接口、進(jìn)程共享數(shù)據(jù)、運(yùn)算加速函數(shù)間的通信關(guān)系的獲得方法,包括以下步驟步驟71)在待綜合SystemC非定時(shí)模型代碼中為每一個(gè)進(jìn)程、通信接口、進(jìn)程共享數(shù)據(jù)、運(yùn)算加速函數(shù)設(shè)定一個(gè)唯一標(biāo)識(shí);步驟72)進(jìn)程、通信接口、運(yùn)算加速函數(shù)相互訪問(wèn)和訪問(wèn)進(jìn)程共享數(shù)據(jù)時(shí),訪問(wèn)者將自身標(biāo)識(shí)告知被訪問(wèn)者;步驟7進(jìn)程、通信接口、運(yùn)算加速函數(shù)相互訪問(wèn)和訪問(wèn)進(jìn)程共享數(shù)據(jù)時(shí),被訪問(wèn)者根據(jù)訪問(wèn)者和自身標(biāo)識(shí)記錄被訪問(wèn)者和被訪問(wèn)者之間的通信關(guān)系;所述的進(jìn)程、通信接口、進(jìn)程共享數(shù)據(jù)、運(yùn)算加速模塊三者間的通信關(guān)系,至少包括訪問(wèn)者和被訪問(wèn)者識(shí)別、單次訪問(wèn)發(fā)生數(shù)據(jù)量和總通信量;PartF所述的給定TG(IP,T)和用戶所指定的特定IP在片上網(wǎng)絡(luò)中的位置約束為C(PE),進(jìn)行片上網(wǎng)絡(luò)IP映射的方法,包括以下步驟步驟91)初始化位置已經(jīng)由用戶指定的IP的位置及bw_table,bw_table[i]是片上網(wǎng)絡(luò)層i對(duì)應(yīng)的帶寬存儲(chǔ)表,記錄片上網(wǎng)絡(luò)層i的每一條鏈路已占用的帶寬。步驟92)不考慮片上網(wǎng)絡(luò)的鏈路帶寬約束,循環(huán)選擇未映射IPn中與已映射IP總通信量最大的IP,放置到片上網(wǎng)絡(luò)中一個(gè)的空白位置,使得(鏈路數(shù)乘以每一鏈路因IPn新增占用率)最小,直到所有IP映射完成;更新bW_table;初始化i=0,Q為空;步驟93)如果bw_table[i]不存在帶寬超限鏈路,跳到步驟95),否則跳到步驟94);步驟94)取出bw_table[i]中的超出帶寬限制最大的鏈路,找到使該鏈路不超限的流量最大的Tmn,加入到集合Q,在當(dāng)前片上網(wǎng)絡(luò)層刪除Τ,更新bw_table[i],跳轉(zhuǎn)到步驟93);步驟95)若Q為空,跳轉(zhuǎn)到步驟96);否則i增加1,添加一層片上網(wǎng)絡(luò),根據(jù)Q初始化bw_table[i],清空Q,跳轉(zhuǎn)到步驟93);步驟96)對(duì)于所有位于相同位置的不同層片上網(wǎng)絡(luò)鏈路,在合并后鏈路總帶寬不超限的前提下,按照合并后鏈路數(shù)最少原則進(jìn)行合并;算法結(jié)束。PartG所述的生成能運(yùn)行于異構(gòu)多核片上系統(tǒng)的軟件代碼的方法,包括以下步驟步驟101)將SystemC待綜合非定時(shí)模型代碼中每一個(gè)SystemC靜態(tài)進(jìn)程和動(dòng)態(tài)進(jìn)程所對(duì)應(yīng)的函數(shù)翻譯為一個(gè)獨(dú)立的可編譯主函數(shù);步驟10為SystemC待綜合非定時(shí)模型代碼中的進(jìn)程本地?cái)?shù)據(jù)、進(jìn)程間共享數(shù)據(jù)分配存儲(chǔ)空間,將對(duì)它們的操作翻譯為對(duì)該存儲(chǔ)空間的操作;步驟103)將SystemC待綜合非定時(shí)模型代碼中對(duì)SystemC專有模塊、通信接口模塊的操作翻譯為對(duì)相應(yīng)寄存器傳輸級(jí)模塊的寄存器操作;步驟104)將SystemC待綜合非定時(shí)模型代碼中需運(yùn)算加速函數(shù)的代碼塊翻譯為對(duì)相應(yīng)的運(yùn)算加速模塊的寄存器的操作;步驟10將SystemC待綜合非定時(shí)模型代碼中其他代碼進(jìn)行一般翻譯和拷貝。本發(fā)明的SystemC系統(tǒng)級(jí)綜合技術(shù)的獨(dú)特之處為綜合生成的異構(gòu)多核片上系統(tǒng)中,使用多核做復(fù)雜控制而不是高性能計(jì)算,從而避免了多核的馮諾依曼瓶頸;使用算法綜合得到專門(mén)的運(yùn)算加速模塊進(jìn)行運(yùn)算加速;使用手工或者RTL綜合技術(shù)得到高速通信接口,讓整個(gè)片上系統(tǒng)與外界進(jìn)行順暢通信;待綜合SystemC設(shè)計(jì)中的軟件部分被翻譯為可在所生成的片上系統(tǒng)上運(yùn)行的軟件代碼。以上PartA-G部分的特征均可自由組合并入
發(fā)明內(nèi)容第一段的技術(shù)方案中已形成優(yōu)選的技術(shù)方案,上述特征的并入能夠使得優(yōu)選技術(shù)方案更加便于實(shí)現(xiàn),可靠性更強(qiáng)。圖1是一般高層次綜合輸出的寄存器傳輸級(jí)結(jié)構(gòu)示意圖。圖2是SystemC行為綜合支持的SystemC語(yǔ)法元素示意圖。圖3是根據(jù)本發(fā)明的SystemC系統(tǒng)級(jí)綜合支持的SystemC語(yǔ)法元素示意圖。圖4是根據(jù)本發(fā)明的綜合方法得到的多核片上系統(tǒng)的架構(gòu)示意圖。圖5是根據(jù)本發(fā)明的SystemC系統(tǒng)級(jí)綜合方法的綜合過(guò)程示意圖。圖6是根據(jù)本發(fā)明的無(wú)線節(jié)點(diǎn)示例的處理單元3的組成框圖。圖7是根據(jù)本發(fā)明的無(wú)線節(jié)點(diǎn)示例的知識(shí)產(chǎn)權(quán)核之間的通信關(guān)系圖。圖8是根據(jù)本發(fā)明的無(wú)線節(jié)點(diǎn)示例的單層片上網(wǎng)絡(luò)知識(shí)產(chǎn)權(quán)核的映射結(jié)果圖。圖9是根據(jù)本發(fā)明的無(wú)線節(jié)點(diǎn)示例的二層片上網(wǎng)絡(luò)知識(shí)產(chǎn)權(quán)核的映射結(jié)果圖。圖10是根據(jù)本發(fā)明的無(wú)線節(jié)點(diǎn)示例的最終片上系統(tǒng)示意框圖。具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖及具體實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。圖1是一般高層次綜合輸出的寄存器傳輸級(jí)結(jié)構(gòu)示意圖。通常,高層次綜合是算法級(jí)的行為描述到寄存器傳輸級(jí)結(jié)構(gòu)描述的綜合,它在算法和寄存器傳輸級(jí)(RegisterTransferLevel,或RTL)描述之間架起一座橋梁,因此,高層次綜合也稱作算法綜合。如圖1所示,通常高層次綜合所得到的寄存器傳輸級(jí)結(jié)構(gòu)包括一個(gè)數(shù)據(jù)路徑A2和一個(gè)基于狀態(tài)機(jī)的控制器Al。數(shù)據(jù)路徑是由寄存器、功能單元、多路器和總線等模塊構(gòu)成的互連網(wǎng)絡(luò),用于實(shí)現(xiàn)從輸入A3到輸出A4的數(shù)據(jù)傳輸與運(yùn)算。控制器Al的作用是控制輸入A3到輸出A4的數(shù)據(jù)傳輸和運(yùn)算過(guò)程。支持高層次綜合的工具有ImpulseC、CatapultC等。圖2是SystemC行為綜合支持的SystemC語(yǔ)法元素示意圖。如圖2所示,在SystemC行為綜合中,可綜合的SystemC模塊Bl可以包括多個(gè)SC_CTHREAD進(jìn)程B2,多個(gè)SC_METH0D進(jìn)程B3,可以包括多個(gè)子模塊B4,子模塊之間、子模塊與父模塊之間可以通過(guò)信號(hào)或者通道相連,可以包括任何能夠被綜合的C++元素構(gòu)成的數(shù)據(jù)成員B6和成員函數(shù)B5。SystemC行為綜合的結(jié)果是RTL代碼??梢钥闯?,SystemC行為綜合所支持的SystemC語(yǔ)法抽象級(jí)別實(shí)際上只是略高于RTL,明顯低于算法綜合。支持SystemC行為綜合的工具有Csynthesizer等。圖3是本發(fā)明的SystemC系統(tǒng)級(jí)綜合支持的SystemC語(yǔ)法元素示意圖。如圖3所示,在SystemC系統(tǒng)級(jí)綜合中,可綜合的SystemC模塊Cl包括SC_THREAD進(jìn)程C2,SystemC敏感表C3,SC_SPAWN進(jìn)程C4,包括SC_FIF0、SC_EVENT、SC_EVENT_QUEUE、SC_MUTEX、SC_SEMAPHORE的基本通道C7,需要進(jìn)行運(yùn)算加速函數(shù)C6,通信接口模塊C5,一般成員函數(shù)C8和數(shù)據(jù)成員C9?;趫D3所示SystemC語(yǔ)法,用戶可以完成本發(fā)明的系統(tǒng)級(jí)綜合技術(shù)支持的SystemC非定時(shí)模型。應(yīng)該理解,本發(fā)明所支持的SystemC語(yǔ)法元素,并不必須同時(shí)出現(xiàn)在一個(gè)SystemC待綜合非定時(shí)模型代碼中。本文所說(shuō)的SystemC待綜合非定時(shí)模型,是指使用SystemC描述的只包含本發(fā)明的SystemC系統(tǒng)級(jí)綜合支持的SystemC語(yǔ)法元素的SystemC代碼。下面結(jié)合一個(gè)無(wú)線網(wǎng)絡(luò)節(jié)點(diǎn)的片上系統(tǒng)的實(shí)施例,詳細(xì)講述本發(fā)明的SystemC系統(tǒng)級(jí)綜合過(guò)程。無(wú)線網(wǎng)絡(luò)節(jié)點(diǎn)的硬件設(shè)備通常包括無(wú)線收發(fā)器、調(diào)試通信接口如串口(UniversalAsynchronousReceiver&Transmitter,UART)、存儲(chǔ)器接口。在應(yīng)用上,一般包括接收進(jìn)程、發(fā)送進(jìn)程、路由進(jìn)程、協(xié)議管理進(jìn)程,其待綜合SystemC非定時(shí)模型的準(zhǔn)代碼為classhardware:publicsc_module//硬件部分,描述片時(shí)系統(tǒng)外設(shè)構(gòu)成{Public:sc_in<bool>ext_interrupt-J/φτ0080]sram_if氺sramO;0081]uart_if*uartO;0082]…0083]hardware(sc_module_namename」sc_moduIe(name」0084]{0085]sramO=newsram_if(“sramO,,);0086]uartO=newuart_if(“uartO,,);0087]}0088]};0089]classsoftware:publichardware"軟件模塊,也是頂層模塊0090]{0091]public:0092]voidmain()0093]{0094]0095]0096]0097]0098]0099]0100]0101]0102]0103]0104]0105]0106]};0107]void0108]{0109]intmyID=Global.uid("create_master,,);0110]mu_err_cnt_>lock();0111]err_cnt_op(myID,READ,data);0112]err_cnt_op(myID,WRITE,++data);0113]mu_err_cnt_>unlock();0114]…0115]};0116]voidcreate_slave()//創(chuàng)建從設(shè)備進(jìn)程0117]{0118]intmyID=Global.uid("create_slave,,);intmyID=Global.uid(“main,,);//獲得進(jìn)程IDcintdata=0;mu_err_cnt_>lock();err_cnt_op(myID,INIT,data);mu_err_cnt_>unlock();FORKsc_spawn(create_master,...),sc_spawn(create_slave,...)JOIN;sc_spawn(create_hybrid,...);create_master()//創(chuàng)建主設(shè)備進(jìn)程…};voidcreateJiybridO//創(chuàng)建主設(shè)備+從設(shè)備混合進(jìn)程{intmyID=Global.uid(“create—hybrid,,);mu_err_cnt_>lock();err_cnt_op(myID,READ,data);err_cnt_op(myID,WRITE,++data);mu_err_cnt_>unlock();…};voidroute()//路由進(jìn)程{intmyID=Global.uid("route");intmyAddr;…myAddr=rt_input_fifo->read();…};voidtx()//發(fā)送進(jìn)程{intdata[1024];intmyID=Global.uid(“tx”);…Network_coding(myID,data,1024*sizeof(int));…};H網(wǎng)絡(luò)編碼函數(shù),待硬件加速voidNetwork_coding(intid,int*pdata,intsize){intmyID=Global.uid(“Network—coding”);Gloal.log(id,myID,size);...//實(shí)際網(wǎng)絡(luò)編碼}voidrx()//接收進(jìn)程{intmyID=Global.uid(“rx”);intmyAddr;waitQ;權(quán)利要求1.一種SystemC系統(tǒng)級(jí)綜合方法,其特征在于,該方法包括以下步驟以待綜合SystemC非定時(shí)模型代碼為輸入,找出一個(gè)異構(gòu)多核片上系統(tǒng),生成所述異構(gòu)多核片上系統(tǒng)的寄存器傳輸級(jí)代碼和能運(yùn)行在多核片上系統(tǒng)上的軟件代碼。2.如權(quán)利要求1所述的SystemC系統(tǒng)級(jí)綜合方法,其特征在于,所述的待綜合SystemC非定時(shí)模型代碼,包含SystemC靜態(tài)和動(dòng)態(tài)進(jìn)程相關(guān)語(yǔ)法和以下SystemC專有單元語(yǔ)法SC_FIF0、SC_EVENT、SC_EVENT_QUEUE、SC_MUTEX、SC_SEMAPH0RE。3.如權(quán)利要求1-2述的SystemC系統(tǒng)級(jí)綜合方法,其特征在于,所找出的異構(gòu)多核片上系統(tǒng),由以下部分構(gòu)成3-1)待綜合SystemC非定時(shí)模型代碼中使用的通信接口的行為模塊對(duì)應(yīng)的通信接口模塊;3-2)待綜合SystemC非定時(shí)模型代碼中需運(yùn)算加速函數(shù)對(duì)應(yīng)的運(yùn)算加速模塊;3-3)待綜合SystemC非定時(shí)模型代碼中的SystemC進(jìn)程所對(duì)應(yīng)的處理單元模塊;3-4)互聯(lián)所述處理單元模塊、所述通信接口模塊、所述運(yùn)算加速模塊的片上網(wǎng)絡(luò);3-5)待綜合SystemC非定時(shí)模型代碼中SystemC專有單元對(duì)應(yīng)的寄存器傳輸級(jí)模塊、所述SystemC專有單元對(duì)應(yīng)的寄存器傳輸級(jí)模塊之間的連接以及所述SystemC專有單元對(duì)應(yīng)的寄存器傳輸級(jí)模塊與處理器單元之間的連接。4.如權(quán)利要求1-3述的SystemC系統(tǒng)級(jí)綜合方法,其中找出所述異構(gòu)多核片上系統(tǒng)并生成所述異構(gòu)多核片上系統(tǒng)的寄存器傳輸級(jí)代碼的步驟,包括以下步驟步驟4-1)對(duì)待綜合SystemC非定時(shí)模型代碼進(jìn)行詞法和語(yǔ)法分析,得到所述待綜合SystemC非定時(shí)模型代碼中的靜態(tài)進(jìn)程、動(dòng)態(tài)進(jìn)程、SystemC專有單元、進(jìn)程本地?cái)?shù)據(jù)、進(jìn)程間共享數(shù)據(jù)信息、通信接口信息、需加速算法函數(shù)信息;步驟4-2)依據(jù)所述詞法和語(yǔ)法分析給出的需運(yùn)算加速函數(shù)信息,通過(guò)算法綜合,將需運(yùn)算加速函數(shù)綜合為具有片上網(wǎng)絡(luò)接口的運(yùn)算加速模塊,并輸出所述運(yùn)算加速模塊的RTL代碼;步驟4-依據(jù)所述詞法和語(yǔ)法分析給出的通信接口信息,從提前準(zhǔn)備好的通信接口模塊RTL庫(kù)中拷貝相應(yīng)通信接口模塊的RTL代碼輸出;步驟4-4)依據(jù)所述詞法和語(yǔ)法分析給出的SystemC專有單元,從提前準(zhǔn)備好的SystemC專有單元RTL庫(kù)中拷貝相應(yīng)模塊的RTL代碼輸出;步驟4-依據(jù)所述詞法和語(yǔ)法分析給出的進(jìn)程間共享數(shù)據(jù)信息,如果用戶指定為使用片上存儲(chǔ)器實(shí)現(xiàn),從提前準(zhǔn)備好的存儲(chǔ)器單元RTL庫(kù)中拷貝存儲(chǔ)器模塊的RTL代碼,將存儲(chǔ)器模塊的RTL代碼的尺寸參數(shù)配置為共享數(shù)據(jù)尺寸,并輸出所述存儲(chǔ)器模塊的RTL代碼;步驟4-6)從提前準(zhǔn)備好的處理器核RTL庫(kù)中拷貝處理器核的RTL代碼輸出;步驟4-7)為每一個(gè)所述SystemC靜態(tài)進(jìn)程分配一個(gè)處理單元,形成第一處理單元集合PES及所述SystemC靜態(tài)進(jìn)程與PES的元素的映射關(guān)系;根據(jù)動(dòng)態(tài)進(jìn)程映射算法,確定所述SystemC動(dòng)態(tài)進(jìn)程與用戶指定個(gè)數(shù)的第二處理單元集合PED的元素的映射關(guān)系;步驟4-8)依賴所述SystemC靜態(tài)和動(dòng)態(tài)進(jìn)程與處理單元之間的映射關(guān)系,得到每一個(gè)處理單元PE訪問(wèn)的SystemC專有單元和所述處理單元所對(duì)應(yīng)的進(jìn)程的本地?cái)?shù)據(jù)的集合L(PE);步驟4-9)對(duì)于每一個(gè)處理單元PE,依賴集合L(PE),生成和例化所述本地?cái)?shù)據(jù)的存儲(chǔ)器;按照處理器核指令和數(shù)據(jù)總線接口所支持的片上總線類型,生成處理單元本地總線,將所述本地?cái)?shù)據(jù)的存儲(chǔ)器與處理器核通過(guò)本地總線連接,并形成到L(PE)中的SystemC專有單元和片上網(wǎng)絡(luò)的接口,從而得到處理單元PE的頂層RTL代碼并輸出;步驟4-10)生成異構(gòu)多核片上系統(tǒng)頂層模塊的RTL代碼。5.如權(quán)利要求4所述SystemC系統(tǒng)級(jí)綜合方法,其中生成異構(gòu)多核片上系統(tǒng)的頂層模塊的RTL代碼的步驟,包括以下步驟步驟5-1)所有的處理單元、用戶指定的存儲(chǔ)所述進(jìn)程共享數(shù)據(jù)的片上存儲(chǔ)器、通信接口模塊和算法加速模塊構(gòu)成IP集合。步驟5-依賴所述IP集合、SystemC靜態(tài)和動(dòng)態(tài)進(jìn)程與處理單元之間的映射關(guān)系以及進(jìn)程、通信接口、進(jìn)程共享數(shù)據(jù)、運(yùn)算加速函數(shù)間的通信關(guān)系,得到有向圖TG(IP,T),其中Tij為IPi和IPj之間的通信關(guān)系。步驟5-3)給定TG(IP,T)和用戶所指定的特定IP在片上網(wǎng)絡(luò)中的位置約束為C(PE),進(jìn)行片上網(wǎng)絡(luò)IP映射,得到所有IP在片上網(wǎng)絡(luò)中的位置以及目標(biāo)片上網(wǎng)絡(luò)架構(gòu)信息;步驟5-4)依賴所述IP在片上網(wǎng)絡(luò)中的位置以及目標(biāo)片上網(wǎng)絡(luò)架構(gòu)信息、來(lái)自通信接口模塊RTL庫(kù)的通信模塊接口信息,例化所述IP集合中所有的IP,將所有IP使用片上網(wǎng)絡(luò)進(jìn)行連接;例化和連接SystemC專有單元;對(duì)于任一所述PE,將其與L(PE)中所有SystemC專用單元相連接,從而得到頂層模塊RTL代碼。6.如權(quán)利要求4-5所述SystemC系統(tǒng)級(jí)綜合方法,其中靜態(tài)和動(dòng)態(tài)進(jìn)程、通信接口、進(jìn)程間共享數(shù)據(jù)、運(yùn)算加速函數(shù)間的通信關(guān)系的獲得步驟,其特征在于,包括以下步驟步驟6-1)在待綜合SystemC非定時(shí)模型代碼中為每一個(gè)靜態(tài)和動(dòng)態(tài)進(jìn)程、通信接口、進(jìn)程間共享數(shù)據(jù)、運(yùn)算加速函數(shù)設(shè)定一個(gè)唯一標(biāo)識(shí);步驟6-靜態(tài)和動(dòng)態(tài)進(jìn)程、通信接口、運(yùn)算加速函數(shù)相互訪問(wèn)和訪問(wèn)進(jìn)程間共享數(shù)據(jù)時(shí),訪問(wèn)者將自身標(biāo)識(shí)告知被訪問(wèn)者;步驟6-靜態(tài)和動(dòng)態(tài)進(jìn)程、通信接口、運(yùn)算加速函數(shù)相互訪問(wèn)和訪問(wèn)進(jìn)程間共享數(shù)據(jù)時(shí),被訪問(wèn)者根據(jù)訪問(wèn)者和自身標(biāo)識(shí)記錄被訪問(wèn)者和被訪問(wèn)者之間的通信關(guān)系。7.如權(quán)利要求4-6所述所述SystemC系統(tǒng)級(jí)綜合方法,其中靜態(tài)和動(dòng)態(tài)進(jìn)程、通信接口、進(jìn)程間共享數(shù)據(jù)、運(yùn)算加速模塊三者間的通信關(guān)系,至少包括訪問(wèn)者和被訪問(wèn)者識(shí)別、單次訪問(wèn)發(fā)生數(shù)據(jù)量和總通信量。8.如權(quán)利要求5-7所述SystemC系統(tǒng)級(jí)綜合方法,其中給定TG(IP,T)和用戶所指定的特定IP在片上網(wǎng)絡(luò)中的位置約束為C(PE),進(jìn)行片上網(wǎng)絡(luò)IP映射的步驟,其特征在于該片上網(wǎng)絡(luò)IP映射步驟包括以下步驟步驟8-1)初始化位置已經(jīng)由用戶指定的IP的位置及bW_table,bW_table[i]是片上網(wǎng)絡(luò)層i對(duì)應(yīng)的帶寬存儲(chǔ)表,記錄片上網(wǎng)絡(luò)層i的每一條鏈路已占用的帶寬;步驟8-2)不考慮片上網(wǎng)絡(luò)的鏈路帶寬約束,循環(huán)選擇未映射IPn中與已映射IP總通信量最大的IP,放置到片上網(wǎng)絡(luò)中一個(gè)的空白位置,使得所有鏈路新增占用率之和最小,直到所有IP映射完成;更新bw_tableW];初始化i=0,Q為空;步驟8-3)如果bw_table[i]不存在帶寬超限鏈路,跳到步驟95),否則跳到步驟94);步驟8-4)取出bw_table[i]中的超出帶寬限制最大的鏈路,找到使該鏈路不超限的流量最大的Τ,加入到集合Q,在當(dāng)前片上網(wǎng)絡(luò)層刪除Tnm,更新bw_table[i],跳轉(zhuǎn)到步驟93);步驟8-5)若Q為空,跳轉(zhuǎn)到步驟96);否則i增加1,添加一層片上網(wǎng)絡(luò),根據(jù)Q初始化bw_table[i],清空Q,跳轉(zhuǎn)到步驟93);步驟8-6)對(duì)于所有位于相同位置的不同層片上網(wǎng)絡(luò)鏈路,在合并后鏈路總帶寬不超限的前提下,按照合并后鏈路數(shù)最少原則進(jìn)行合并;算法結(jié)束。9.如權(quán)利要求1-8所述SystemC系統(tǒng)級(jí)綜合方法,其中生成能運(yùn)行于異構(gòu)多核片上系統(tǒng)的軟件代碼的方法,包括以下步驟步驟9-1)將SystemC待綜合非定時(shí)模型代碼中每一個(gè)SystemC靜態(tài)進(jìn)程和動(dòng)態(tài)進(jìn)程所對(duì)應(yīng)的函數(shù)翻譯為一個(gè)獨(dú)立的可編譯主函數(shù);步驟9-為SystemC待綜合非定時(shí)模型代碼中的進(jìn)程本地?cái)?shù)據(jù)、進(jìn)程間共享數(shù)據(jù)分配存儲(chǔ)空間,將對(duì)它們的操作翻譯為對(duì)該存儲(chǔ)空間的操作;步驟9-3)將SystemC待綜合非定時(shí)模型代碼中對(duì)SystemC專有模塊、通信接口模塊的操作翻譯為對(duì)相應(yīng)寄存器傳輸級(jí)模塊的寄存器操作;步驟9-4)將SystemC待綜合非定時(shí)模型代碼中需運(yùn)算加速函數(shù)的代碼塊翻譯為對(duì)相應(yīng)的運(yùn)算加速模塊的寄存器的操作;步驟9-5)將SystemC待綜合非定時(shí)模型代碼中其他代碼進(jìn)行一般翻譯和拷貝。全文摘要一種SystemC系統(tǒng)級(jí)綜合方法,以待綜合SystemC非定時(shí)模型代碼作為輸入,找出一個(gè)異構(gòu)多核片上系統(tǒng)結(jié)構(gòu),并生成實(shí)現(xiàn)所述異構(gòu)多核片上系統(tǒng)硬件所需的寄存器傳輸級(jí)代碼和能運(yùn)行其上的軟件代碼。所述待綜合SystemC非定時(shí)模型支持的SystemC語(yǔ)法,至少包括SystemC靜態(tài)和動(dòng)態(tài)進(jìn)程語(yǔ)法建模相關(guān)語(yǔ)法、SystemC專有單元語(yǔ)法。所述SystemC系統(tǒng)級(jí)綜合方法找出的異構(gòu)多核片上系統(tǒng)的結(jié)構(gòu),由通信接口模塊、運(yùn)算加速模塊、處理單元模塊、SystemC專有單元模塊及上述模塊之間的片上網(wǎng)絡(luò)互聯(lián)和隨機(jī)互聯(lián)。所述的生成能軟件代碼的方法,針對(duì)每一個(gè)處理單元,將待綜合SystemC非定時(shí)模型的相應(yīng)進(jìn)程的代碼,翻譯為在所述處理單元上運(yùn)行的軟件代碼。本發(fā)明的系統(tǒng)級(jí)綜合方法,較已有方法相比,有效的提高了集成電路的設(shè)計(jì)效率。文檔編號(hào)G06F17/50GK102136012SQ201010000998公開(kāi)日2011年7月27日申請(qǐng)日期2010年1月22日優(yōu)先權(quán)日2010年1月22日發(fā)明者馮志華,陳曦申請(qǐng)人:陳曦