專利名稱:集成電路下層硬件映射方法、數(shù)據(jù)控制流生成方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計(jì)領(lǐng)域,尤其是一種集成電路下層硬件映射方法、數(shù)據(jù)控 制流生成方法及裝置。
背景技術(shù):
在集成電路領(lǐng)域,通常集成電路的設(shè)計(jì)速度滯后于集成電路制造工藝的發(fā)展速 度。尤其是集成電路的制造工藝進(jìn)入納米級(jí)以后,集成電路的設(shè)計(jì)速度已遠(yuǎn)遠(yuǎn)落后于集成 電路制造工藝的發(fā)展速度。因此,對(duì)于集成電路設(shè)計(jì)領(lǐng)域來(lái)說(shuō),提高設(shè)計(jì)速度是當(dāng)前最為迫 切的問(wèn)題之一。如圖1所示,現(xiàn)有技術(shù)中,集成電路的設(shè)計(jì)通常包括兩部分第一部分是從 基于C語(yǔ)言或MATLAB語(yǔ)言的算法描述到RTL級(jí)的描述;第二部分是從RTL級(jí)描述到標(biāo)準(zhǔn)單 元ASIC結(jié)構(gòu)或門陣列現(xiàn)(或其它S-ASIC結(jié)構(gòu))或FPGA結(jié)構(gòu)的實(shí)現(xiàn)過(guò)程。其中第二部分 的實(shí)現(xiàn)目前已有比較成熟的工具支持,其實(shí)現(xiàn)過(guò)程基本滿足高效、快捷等要求。因此,提高 設(shè)計(jì)速度的關(guān)鍵點(diǎn)落在了第一部分的實(shí)現(xiàn)上,也就是從C語(yǔ)言或MATLAB語(yǔ)言等的算法描述 到RTL級(jí)的描述上,可以將這稱之為集成電路下層硬件的映射方法或者高層次綜合或者結(jié) 構(gòu)級(jí)綜合。但由于第一部分的實(shí)現(xiàn)主要是由技術(shù)人員根據(jù)自身對(duì)C語(yǔ)言或MATLAB語(yǔ)言的理 解,人為地將其轉(zhuǎn)換為RTL級(jí)的描述。也就是說(shuō),第一部分的實(shí)現(xiàn)受到技術(shù)人員自身的經(jīng)驗(yàn) 和知識(shí)水平的影響,對(duì)于不同的技術(shù)人員來(lái)說(shuō),實(shí)現(xiàn)的時(shí)間存在較大的差異。對(duì)于第一部分 的實(shí)現(xiàn)方式,國(guó)外的一些公司已經(jīng)展開(kāi)了相應(yīng)的研究并推了一些實(shí)現(xiàn)工具,比如Mentor的 Catapult C、AutoESL 的 AutoPilot、Fore Design System 的 Cynthesizer、UC San Diego 的SPARK等。
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術(shù)問(wèn)題是,提供一種集成電路下層硬件映射方法和裝置, 能夠提高集成電路的設(shè)計(jì)速度。本發(fā)明還提供了一種數(shù)據(jù)控制流生成方法及裝置,包含數(shù)據(jù)相關(guān)性、數(shù)據(jù)可并行 性和相應(yīng)控制信息的分析,能夠輔助硬件電路設(shè)計(jì)人員進(jìn)行電路設(shè)計(jì)。為解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案如下—種集成電路下層硬件映射方法,包括步驟程序分析步驟,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,并從中識(shí)別出被 映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成步驟,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電 路算法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成步驟,用于根據(jù)數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù) 先建立的算子單元庫(kù)中獲取對(duì)應(yīng)功能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子 單元組成的算子時(shí)空時(shí)序約束步驟,用于根據(jù)用戶規(guī)格要求和目標(biāo)集成電路工藝的要求確定出總時(shí) 序約束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約 束;時(shí)空?qǐng)D壓縮步驟,用于根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,使得 總體算法執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟,用于根據(jù)聚類壓縮后的算子時(shí)空?qǐng)D生成集成電路下層硬件邏 輯描述。基于上述的方法,本發(fā)明還提供一種集成電路下層硬件映射裝置,包括程序分析模塊,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言,并從中識(shí)別出被映射 的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成模塊,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電 路算法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成模塊,用于根據(jù)數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù) 先建立的算子單元庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子 單元組成的算子時(shí)空?qǐng)D;時(shí)序約束模塊,用于根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí) 序約束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約 束;時(shí)空?qǐng)D壓縮模塊,用于根據(jù)時(shí)間標(biāo)注對(duì)時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使之總 體算法執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射模塊,根據(jù)聚類壓縮后的時(shí)空?qǐng)D生成集成電路下層硬件邏輯描述。本發(fā)明還提供一種數(shù)據(jù)控制流生成方法,包括步驟程序分析步驟,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該種計(jì)算機(jī) 語(yǔ)言的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象,所述執(zhí)行對(duì)象 包括運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)、中間數(shù)據(jù)中的至少 一種;數(shù)據(jù)控制流圖生成步驟,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電 路算法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn)。進(jìn)一步地,在所述數(shù)據(jù)控制流圖生成步驟中,將所述運(yùn)算表指令映射為處理框圖, 將所述控制指令映射為用于標(biāo)識(shí)狀態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制信號(hào)的控制流,將所述參 數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。其中,所述程序分析步驟包括根據(jù)該種計(jì)算機(jī)語(yǔ)言的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程 序中查找出函數(shù),對(duì)所述函數(shù)的輸入輸出和函數(shù)內(nèi)的運(yùn)算進(jìn)行解析,識(shí)別出執(zhí)行對(duì)象和參 數(shù)對(duì)象,在解析過(guò)程中,如果當(dāng)前被解析的函數(shù)為包含下層函數(shù)的上層函數(shù),則繼續(xù)對(duì)下層 函數(shù)進(jìn)行解析。進(jìn)一步地,所述控制指令為循環(huán)語(yǔ)句中的循環(huán)指令,所述循環(huán)語(yǔ)句包括靜態(tài)循環(huán) 語(yǔ)句和動(dòng)態(tài)循環(huán)語(yǔ)句,則所述數(shù)據(jù)控制流圖生成步驟包括當(dāng)循環(huán)語(yǔ)句為靜態(tài)循環(huán)語(yǔ)句時(shí),根據(jù)循環(huán)次數(shù)將循環(huán)體展開(kāi),在循環(huán)體展開(kāi)后帶 入?yún)?shù)對(duì)象得到新的運(yùn)算表達(dá)式,將運(yùn)算表達(dá)式中的運(yùn)算指令映射為處理框圖,將運(yùn)算表達(dá)式中的參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn);當(dāng)循環(huán)語(yǔ)句為可變?yōu)殪o態(tài)循環(huán)語(yǔ)句的動(dòng)態(tài)循環(huán)語(yǔ)句時(shí),根據(jù)調(diào)用的不同場(chǎng)合變動(dòng) 態(tài)循環(huán)語(yǔ)句為靜態(tài)循環(huán)語(yǔ)句,將其展開(kāi)得到新的運(yùn)算表達(dá)式,將運(yùn)算表達(dá)式中的循環(huán)指令 映射為處理框圖,將運(yùn)算表達(dá)式中的參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn);當(dāng)循環(huán)語(yǔ)句為單層動(dòng)態(tài)循環(huán)語(yǔ)句時(shí),將循環(huán)語(yǔ)句的內(nèi)容映射為處理框圖,將循環(huán) 指令映射為狀態(tài)機(jī);當(dāng)循環(huán)語(yǔ)句為多層動(dòng)態(tài)循環(huán)語(yǔ)句時(shí),分別將外層循環(huán)語(yǔ)句和內(nèi)層循環(huán)語(yǔ)句的內(nèi)容 映射為第一處理框圖和第二處理框圖,將外層循環(huán)指令映射為第一狀態(tài)機(jī),將內(nèi)層循環(huán)指 令映射為第二狀態(tài)機(jī),并且所述第二處理框圖和第二狀態(tài)機(jī)映射在所述第一處理框圖內(nèi); 或分別將外層循環(huán)語(yǔ)句和內(nèi)層循環(huán)語(yǔ)句的內(nèi)容映射為第一處理框圖和第二處理框圖,將循 環(huán)指令映射為狀態(tài)機(jī),并且所述第二處理框圖映射在所述第一處理框圖內(nèi),且所述狀態(tài)機(jī) 的狀態(tài)數(shù)等于所述循環(huán)的循環(huán)次數(shù)加一。進(jìn)一步地,所述控制指令為分支控制語(yǔ)句中的控制指令,所述數(shù)據(jù)控制流圖生成 步驟包括將所述分支控制指令映射為多路選擇器,分支控制語(yǔ)句的內(nèi)容映射為多路選擇 器的輸入端處理框圖,分支控制語(yǔ)句的控制條件映射為多路選擇器的控制端處理框圖。進(jìn)一步地,所述分支控制語(yǔ)句為嵌套分支控制語(yǔ)句,則將上層分支控制指令映射 為第一多路選擇器,所述上層分支控制語(yǔ)句的內(nèi)容映射為所述第一多路選擇器的輸入端 處理框圖,所述上層分支控制語(yǔ)句的控制條件映射為所述第一多路選擇器的控制端處理框 圖;將下層分支控制指令映射為第二多路選擇器,所述下層分支控制語(yǔ)句的內(nèi)容映射為所 述第二多路選擇器的輸入端處理框圖,所述下層分支控制語(yǔ)句的控制條件映射為所述第二 多路選擇器的控制端處理框圖,并且所述第一多路選擇器的輸出作為所述第二多路選擇器 的輸入?;谏鲜龅姆椒?,本發(fā)明還提供一種數(shù)據(jù)控制流生成裝置,包括程序分析模塊,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該種計(jì)算機(jī) 語(yǔ)言的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象,所述執(zhí)行對(duì)象 包括運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)、中間數(shù)據(jù)中的至少 一種;數(shù)據(jù)控制流圖生成模塊,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電 路算法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn)。進(jìn)一步地,所述數(shù)據(jù)控制流圖生成模塊包括執(zhí)行對(duì)象映射模塊,用于將所述執(zhí) 行對(duì)象中的運(yùn)算指令映射為處理框圖,并用于將所述執(zhí)行對(duì)象中的控制指令映射為標(biāo)識(shí)狀 態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制信號(hào)的控制流;參數(shù)對(duì)象映射模塊,用于將參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。本發(fā)明的有益效果是通過(guò)對(duì)原C程序或MATLAB程序的分析,識(shí)別出映射的執(zhí)行 對(duì)象和參數(shù)對(duì)象;并將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成為數(shù)據(jù)控制流圖,該數(shù)據(jù)控制 流圖可以表示集成電路的算法;然后將數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)用算子來(lái)替代,生成算子 時(shí)空?qǐng)D;生成的算子時(shí)空?qǐng)D經(jīng)過(guò)聚類壓縮,使壓縮后的時(shí)空?qǐng)D的總體執(zhí)行時(shí)間最接近于總 時(shí)序約束;將壓縮后的時(shí)空?qǐng)D生成集成電路的下層硬件電路。從而創(chuàng)造了一種從計(jì)算機(jī)語(yǔ) 言到集成電路下層硬件電路的映射工具,標(biāo)準(zhǔn)化地實(shí)現(xiàn)了集成電路從C或MATLAB等語(yǔ)言生成下層硬件的過(guò)程,實(shí)現(xiàn)起來(lái)方便快捷。本發(fā)明還通過(guò)對(duì)計(jì)算機(jī)語(yǔ)言程序進(jìn)行分析得到其相應(yīng)的數(shù)據(jù)相關(guān)性、數(shù)據(jù)可并行 性和相應(yīng)控制信息等,從而根據(jù)這些信息生成相應(yīng)的數(shù)據(jù)控制流圖,并且其中控制表達(dá)式 轉(zhuǎn)換方法是所有語(yǔ)言表達(dá)式轉(zhuǎn)換的核心,其轉(zhuǎn)換效率直接影響生成算法數(shù)據(jù)控制流圖的數(shù) 據(jù)量。本發(fā)明方法提前將并行性因素、硬件結(jié)構(gòu)例如狀態(tài)機(jī)、多路選擇器等考慮在內(nèi),可以 更大程度上幫助硬件工程師進(jìn)行硬件設(shè)計(jì)。
圖1為現(xiàn)有技術(shù)中的集成電路設(shè)計(jì)方法流程圖;圖2為ADDS算子結(jié)構(gòu)示意圖;圖3為ADDS算子功能圖;圖4為存儲(chǔ)類算子的通用結(jié)構(gòu)示意圖;圖5為路徑類算子的通用結(jié)構(gòu)示意圖;圖6為控制類算子的通用結(jié)構(gòu)示意圖;圖7a和圖7b分別為本發(fā)明的下層硬件映射流程圖和集成電路下層硬件映射裝置 的一種實(shí)施例的結(jié)構(gòu)框圖;圖8為本發(fā)明數(shù)據(jù)控制流圖生成方法的一種實(shí)施例中對(duì)函數(shù)X264_me_SearCh進(jìn) 行分析的流程圖;圖9為圖8函數(shù)X264_me_search和pixel_sad_16X 16生成數(shù)據(jù)控制流圖的流程 圖;圖10為本發(fā)明的一種實(shí)施例中的單層動(dòng)態(tài)循環(huán)語(yǔ)句的映射結(jié)構(gòu)圖;圖11為本發(fā)明的一種實(shí)施例中的多層動(dòng)態(tài)循環(huán)語(yǔ)句的一種映射結(jié)構(gòu)圖;圖12為本發(fā)明的方法的一種實(shí)施例中的多層動(dòng)態(tài)循環(huán)語(yǔ)句的另一映射結(jié)構(gòu)13為本發(fā)明的一種實(shí)施例中的分支控制語(yǔ)句映射的結(jié)構(gòu)圖;圖14為本發(fā)明的一種實(shí)施例中的嵌套分支控制語(yǔ)句映射的結(jié)構(gòu)圖;圖15為本實(shí)施例的函數(shù)X264_me_searCh的數(shù)據(jù)控制流圖;圖16為本實(shí)施例的函數(shù)pixel_sad_16X16的數(shù)據(jù)控制流圖;圖17為本發(fā)明的數(shù)據(jù)控制流圖生成裝置的一種實(shí)施例的結(jié)構(gòu)框圖;圖18為圖17的數(shù)據(jù)控制流生成模塊的一種實(shí)施例的結(jié)構(gòu)框圖;圖19為本發(fā)明的順序相關(guān)數(shù)據(jù)流展開(kāi)的一種實(shí)施例的結(jié)構(gòu)圖;圖20為本發(fā)明的存在反饋數(shù)據(jù)流,由算子展開(kāi)為局部流水線結(jié)構(gòu)示意圖;圖21為本發(fā)明的并行數(shù)據(jù)流展開(kāi)的一種實(shí)施例的結(jié)構(gòu)圖;圖22為本實(shí)施例的函數(shù)x264_me_searCh的LO和Ll邏輯生成的算子時(shí)空?qǐng)D;圖23a和圖2 分別函數(shù)x264_me_Search的邏輯L3的第一部分和第二部分生成 的算子時(shí)空?qǐng)D;圖M為本實(shí)施例的函數(shù)X264_me_search的邏輯L5生成的算子時(shí)空?qǐng)D;圖25a和圖25b分別為本實(shí)施例的函數(shù)x264_me_search和函pixel_sad_16X 16 的算子時(shí)空?qǐng)D;圖^a和圖^b分別為本實(shí)施例的函數(shù)X264_me_search和函數(shù)pixel_sad_16X16的時(shí)序約束示意圖;圖27為本實(shí)施例的函數(shù)pixel_sad_16X16聚類壓縮后的時(shí)空?qǐng)D;圖28所示為固化定制的一種實(shí)施方式原理圖;圖29為X264_me_search聚類壓縮后的比較圖。
具體實(shí)施例方式下面通過(guò)具體實(shí)施方式
結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明?;仡櫦呻娐吩O(shè)計(jì)方法學(xué)的發(fā)展歷程,可以看到當(dāng)集成電路制造工藝進(jìn)入Ium 的時(shí)代,出現(xiàn)了以門陣列為基本單元的設(shè)計(jì)方法;當(dāng)集成電路制造工藝進(jìn)入0. 5um的時(shí)代, 出現(xiàn)了以標(biāo)準(zhǔn)單元為基本單元的設(shè)計(jì)方法;當(dāng)集成電路制造工藝進(jìn)入0. ISum的時(shí)代,出現(xiàn) 了以IP核為基本單元的設(shè)計(jì)方法。由此可以看出一方面集成電路的設(shè)計(jì)方法學(xué)隨著集成 電路制造工藝的發(fā)展而發(fā)展,另一方面集成電路設(shè)計(jì)方法學(xué)中使用的基本單元(門、標(biāo)準(zhǔn) 單元、IP核)的單元粒度不斷增大。同時(shí),每次新的基本單元的出現(xiàn),都標(biāo)志著集成電路設(shè) 計(jì)方法革命性的進(jìn)步。因此,可以合理預(yù)見(jiàn)的是,隨著近十年來(lái)集成電路制造工藝的飛速進(jìn) 步,尤其是集成電路制造工藝進(jìn)入納米級(jí)后,更大粒度的基本單元將出現(xiàn)并開(kāi)啟集成電路 設(shè)計(jì)的新局面,以適應(yīng)集成電路制造工藝的飛速發(fā)展。算子作為集成電路組成部件中的基本單元,其粒度大于標(biāo)準(zhǔn)單元的粒度,有利于 描述集成電路算法的計(jì)算機(jī)程序語(yǔ)言向下層硬件映射,因此本發(fā)明采用基于算子的集成電 路設(shè)計(jì)方法,使得加速了集成電路的設(shè)計(jì)速度,以適應(yīng)集成電路制造工藝的進(jìn)步。本發(fā)明中,常用的算子有五類,分別是運(yùn)算類算子、存儲(chǔ)類算子、路徑類算子、控制 類算子和時(shí)鐘類算子。1、運(yùn)算類算子。運(yùn)算算子(AU)是用于實(shí)現(xiàn)邏輯運(yùn)算或算術(shù)運(yùn)算或邏輯與算術(shù)混合運(yùn)算的基本單 元。它包括算術(shù)邏輯運(yùn)算單元和運(yùn)算配置寄存器,運(yùn)算配置寄存器用于接收和存儲(chǔ)運(yùn)算配 置指令,不同的運(yùn)算配置指令對(duì)應(yīng)不同的算術(shù)邏輯操作,也就是說(shuō),通過(guò)運(yùn)算配置指令可以 使同一個(gè)運(yùn)算算子實(shí)現(xiàn)多種不同的功能。下面,以ADDS算子為例對(duì)運(yùn)算算子進(jìn)行說(shuō)明。圖2為ADDS算子的結(jié)構(gòu)示意圖,它包括用于實(shí)現(xiàn)加減操作的ADD單元和用于實(shí)現(xiàn) 移位操作的《/》單元,通過(guò)設(shè)置控制位X的參數(shù)值,可以使ADDS算子實(shí)現(xiàn)多種不同的功能, 比如,圖3的表格示出了一種實(shí)施方式中不同控制位X值與不同操作的對(duì)應(yīng)關(guān)系。像ADDS 這種可以通過(guò)控制位X實(shí)現(xiàn)多種不同功能的算子稱為可重構(gòu)算子,可重構(gòu)算子由于豐富的 應(yīng)用功能可以用在不同的場(chǎng)景中,減少了算子單元庫(kù)中儲(chǔ)存的算子數(shù)。并且可重構(gòu)算子在 其執(zhí)行過(guò)程中還可以通過(guò)改變控制位的方式實(shí)現(xiàn)動(dòng)態(tài)的重構(gòu)。2、存儲(chǔ)類算子。如圖4所示為存儲(chǔ)類算子(MU)的基本結(jié)構(gòu)示意圖(圖中CU表示控制算子)。存 儲(chǔ)算子包括存儲(chǔ)配置寄存器(MU configuration register)和存儲(chǔ)單元,存儲(chǔ)單元包括地 址產(chǎn)生單元、數(shù)據(jù)存儲(chǔ)器、數(shù)據(jù)產(chǎn)生單元和數(shù)據(jù)輸出控制單元。存儲(chǔ)配置寄存器可以通過(guò)數(shù) 據(jù)輸出控制單元配置存儲(chǔ)算子(MU)的存儲(chǔ)體(各種存儲(chǔ)介質(zhì)寄存器、RAM等MEM)的寫(xiě)入 和/或讀出方式,還可以配置存儲(chǔ)器對(duì)應(yīng)的地址產(chǎn)生單元的工作方式。根據(jù)地址產(chǎn)生單元 生成的地址直接將輸入數(shù)據(jù)存儲(chǔ)到預(yù)定位置,并將需要的數(shù)據(jù)從存放位置輸出。
3、路徑類算子。如圖5所示,為路徑類算子(LU)的通用結(jié)構(gòu)示意圖。路徑類算子LU包括路由配 置寄存器(LU configuration register)和組成路由選擇單元的交換開(kāi)關(guān)和數(shù)據(jù)寄存器 (REG),其中,路由配置寄存器受到控制算子CU的控制,在控制算子CU的控制作用下控制交 換開(kāi)關(guān)按照期望的方式實(shí)現(xiàn)不同運(yùn)算算子AU之間的連接。數(shù)據(jù)寄存器用于暫存運(yùn)算類算 子LU和存儲(chǔ)類算子MU的輸入輸出數(shù)據(jù)。4、控制類算子。如圖6所示,為控制類算子(CU)的通用結(jié)構(gòu)示意圖??刂祁愃阕拥淖饔弥饕菍?配置信息傳送到相應(yīng)的配置寄存器,配置運(yùn)算算子AU、存儲(chǔ)算子MU和路徑算子LU實(shí)現(xiàn)預(yù)定 的功能。控制算子CU的形式包括計(jì)數(shù)器、狀態(tài)機(jī)和微指令三種。其中微指令結(jié)構(gòu)包含譯碼 器、程序計(jì)數(shù)器、指令存儲(chǔ)器和流水線控制模塊等??刂扑阕覥U通過(guò)執(zhí)行簡(jiǎn)單的配置指令 向各功能單元發(fā)送配置信息,由于⑶支持的指令很少,因此指令寄存器容量小,譯碼器非 常簡(jiǎn)單。5、時(shí)鐘類算子。時(shí)鐘算子用于運(yùn)算類算子、存儲(chǔ)類算子、路徑類算子和控制類算子的時(shí)鐘控制信 號(hào),時(shí)鐘信號(hào)包括控制時(shí)鐘起停和控制時(shí)鐘頻率的信號(hào),時(shí)鐘信號(hào)可以按照期望的方式配置。以上五類算子是實(shí)現(xiàn)以下實(shí)施方式的基礎(chǔ),可以理解的是,上述對(duì)根據(jù)功能將用 于集成電路設(shè)計(jì)中的算子分為五大類并非唯一的劃分方式,還可以根據(jù)實(shí)際情況有針對(duì)性 進(jìn)行更寬范圍或更細(xì)范圍的劃分。在本發(fā)明的一種實(shí)施例中,提供了一種從計(jì)算機(jī)語(yǔ)言到集成電路下層硬件電路的 映射系統(tǒng),如圖7a所示為該系統(tǒng)的集成電路下層硬件映射方法,包括以下步驟步驟Si,對(duì)程序進(jìn)行分析,即讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該計(jì) 算機(jī)語(yǔ)言的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象。專用集成 電路,用于實(shí)現(xiàn)特定的協(xié)議或者功能,而這些功能和協(xié)議通常首先用計(jì)算機(jī)語(yǔ)言程序進(jìn)行 描述,其中的計(jì)算機(jī)語(yǔ)言通常采用C語(yǔ)言或MATLAB語(yǔ)言等。再將編寫(xiě)的計(jì)算機(jī)語(yǔ)言程序輸 入到本發(fā)明的映射系統(tǒng)中,該映射系統(tǒng)根據(jù)編寫(xiě)程序所用計(jì)算機(jī)語(yǔ)言的規(guī)則從所述計(jì)算機(jī) 語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象。本實(shí)施方式中該執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指令,該參數(shù)對(duì)象包括輸入數(shù) 據(jù)、輸出數(shù)據(jù)、中間數(shù)據(jù)中的至少一種。本實(shí)施例中的運(yùn)算指令包括加、減、乘和移位等運(yùn)笪弁。步驟S2,生成數(shù)據(jù)控制流圖,將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電 路算法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn)。將所述運(yùn)算指令映射為處理框圖,將所述控制指令 映射為用于標(biāo)識(shí)狀態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制信號(hào)的控制流,將所述輸入數(shù)據(jù)、輸出數(shù)據(jù) 和中間數(shù)據(jù)映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。步驟S3,算子時(shí)空?qǐng)D生成步驟,用于根據(jù)數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)所進(jìn)行的處理 功能從預(yù)先建立的算子單元庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖轉(zhuǎn)換 成由算子單元組成的算子時(shí)空?qǐng)D。先將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)流相關(guān)性展開(kāi),然后將展 開(kāi)后的各節(jié)點(diǎn)轉(zhuǎn)換成可完成該節(jié)點(diǎn)功能的算子單元。用一個(gè)或多個(gè)算子單元的組合取代數(shù)據(jù)控制流圖中的各節(jié)點(diǎn),一個(gè)或多個(gè)算子單元的組合可完成與各節(jié)點(diǎn)相同的功能。對(duì)于如 何將數(shù)據(jù)控制流圖展開(kāi),包括但不限于以下幾種方式如果數(shù)據(jù)控制流圖中的數(shù)據(jù)流為順 序相關(guān)數(shù)據(jù)流結(jié)構(gòu),則將順序相關(guān)數(shù)據(jù)流采用流水線的方式展開(kāi);如果數(shù)據(jù)控制流圖中的 數(shù)據(jù)流中存在反饋,即該數(shù)據(jù)流是一個(gè)循環(huán),則該數(shù)據(jù)流存在數(shù)據(jù)相關(guān)性,因此該數(shù)據(jù)流不 能轉(zhuǎn)化為流水結(jié)構(gòu);但如果該數(shù)據(jù)流內(nèi)部數(shù)據(jù)之間不存在數(shù)據(jù)相關(guān)性時(shí),則將所述內(nèi)部數(shù) 據(jù)不存在數(shù)據(jù)相關(guān)性的各數(shù)據(jù)流采用局部流水線的方式展開(kāi);如果數(shù)據(jù)控制流圖中的數(shù)據(jù) 流之間不存在數(shù)據(jù)相關(guān)性,則將該數(shù)據(jù)流采用并行方式展開(kāi),并轉(zhuǎn)換成由算子單元組成的 算子時(shí)空?qǐng)D。步驟S4,時(shí)序約束步驟,用于根據(jù)用戶規(guī)格要求和目標(biāo)集成電路工藝的要求確定 出總時(shí)序約束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間。另一方面,從算子單元庫(kù)中可以 提取算子時(shí)序信息,對(duì)算子時(shí)空?qǐng)D做時(shí)序標(biāo)注,形成時(shí)序約束的對(duì)象。從而根據(jù)數(shù)據(jù)流特性 可以將時(shí)序約束具體到算子時(shí)空?qǐng)D的每個(gè)層級(jí),實(shí)現(xiàn)對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約 束。由于算子可以構(gòu)成不同算子功能塊,進(jìn)而構(gòu)成不同的算子功能群落,則每個(gè)算子功能群 落為一個(gè)算子層級(jí)。如果所述數(shù)據(jù)流結(jié)構(gòu)為并行數(shù)據(jù)流,則將總時(shí)序約束平分給到對(duì)應(yīng)的時(shí)空?qǐng)D中的 每個(gè)算子層級(jí),并將每個(gè)算子層級(jí)的時(shí)序約束平分到該算子層級(jí)中的每一個(gè)算子單元。將 數(shù)據(jù)控制流中串行各節(jié)點(diǎn)所對(duì)應(yīng)的各算子層級(jí)總的算子的基本時(shí)序單位作為總體時(shí)序約 束,按照各算子層級(jí)中最長(zhǎng)運(yùn)算路徑所映射的運(yùn)算算子的時(shí)序占各個(gè)算子層級(jí)中最長(zhǎng)運(yùn)算 路徑所映射的算子單元對(duì)應(yīng)的時(shí)序總和的比例來(lái)分配各算子層級(jí)的時(shí)序。步驟S5,時(shí)空?qǐng)D壓縮步驟,用于根據(jù)時(shí)間標(biāo)注對(duì)時(shí)空?qǐng)D進(jìn)行空間上(即硬件資源 上或面積上)的聚類壓縮,并使之總體算法執(zhí)行時(shí)間最接近于總時(shí)序約束。在一種實(shí)施例中,對(duì)時(shí)空?qǐng)D進(jìn)行壓縮包括以下步驟在算子時(shí)空?qǐng)D中查找出屬性 相同的運(yùn)算類算子和/或存儲(chǔ)屬性相同的存儲(chǔ)類算子;然后根據(jù)時(shí)間標(biāo)注對(duì)運(yùn)算屬性相同 的運(yùn)算類算子在空間上進(jìn)行合并壓縮和/或?qū)⒋鎯?chǔ)屬性相同的存儲(chǔ)類算子在空間上進(jìn)行 合并壓縮;然后引入控制類算子,對(duì)壓縮后的運(yùn)算類算子和/或存儲(chǔ)類運(yùn)算算子生成相應(yīng) 配置指令,實(shí)現(xiàn)運(yùn)算類算子和/或存儲(chǔ)類算子的復(fù)用。聚類壓縮步驟和生成可重構(gòu)算子功能塊的步驟,都會(huì)產(chǎn)生不只一種結(jié)果。不同的 函數(shù)調(diào)用同一子函數(shù),由于約束時(shí)間不同,所產(chǎn)生的聚類結(jié)果也不同。因此需要根據(jù)時(shí)間、 面積、功耗等參數(shù)進(jìn)行優(yōu)化,按性能(執(zhí)行時(shí)間)排出順序,恰好滿足時(shí)間約束的聚類結(jié)果 表示其硬件實(shí)現(xiàn)代價(jià)最小,因此選擇總體算法執(zhí)行時(shí)間最接近于完成集成電路算法所需要 的總時(shí)序約束的時(shí)空?qǐng)D作為聚類壓縮的優(yōu)化結(jié)果。步驟S6,下層硬件映射步驟,根據(jù)聚類壓縮后的時(shí)空?qǐng)D生成集成電路下層硬件邏 輯描述。基于上述的集成電路下層硬件映射方法,本發(fā)明還公開(kāi)了一種集成電路下層硬件 映射裝置,請(qǐng)參考圖7b,本實(shí)施例的集成電路下層硬件映射裝置包括程序分析模塊1,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該計(jì)算機(jī)語(yǔ) 言的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生 成模塊2,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電路算法的數(shù)據(jù)控制流圖; 算子時(shí)空?qǐng)D生成模塊3,用于根據(jù)數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)所進(jìn)行的處理功能從預(yù)先建立的算子單元庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,從而將數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單 元組成的算子時(shí)空?qǐng)D;時(shí)序約束模塊4,用于根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要 求確定出總時(shí)序約束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層 級(jí)進(jìn)行時(shí)序約束;時(shí)空?qǐng)D壓縮模塊5,用于根據(jù)時(shí)間標(biāo)注對(duì)時(shí)空?qǐng)D時(shí)進(jìn)行空間上的聚類壓 縮,并使之總體算法執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射模塊6,根據(jù)聚類壓縮后 的時(shí)空?qǐng)D生成集成電路下層硬件電路。下面結(jié)合具體實(shí)施例對(duì)本發(fā)明的集成電路下層硬件映射方法和裝置進(jìn)行說(shuō)明。H. 264是國(guó)際電聯(lián)(ITU-T)和國(guó)際標(biāo)準(zhǔn)化組織(ISO)共同組建的聯(lián)合視頻組 (JVT)共同制定的數(shù)字視頻編碼標(biāo)準(zhǔn)。本實(shí)施例中以H. 264標(biāo)準(zhǔn)的C語(yǔ)言描述的X264_me_ search函數(shù)為例,對(duì)本發(fā)明的方法進(jìn)行更為詳細(xì)的說(shuō)明。如圖8所示,為對(duì)函數(shù)X264_me_search進(jìn)行分析包括步驟S11、讀取計(jì)算機(jī)語(yǔ)言程序,并在該計(jì)算機(jī)語(yǔ)言程序中查找函數(shù)。在本實(shí)施例中,首 先讀取程序,并進(jìn)行語(yǔ)法和詞法分析,得到函數(shù)X264_me_search。S12、對(duì)該函數(shù)進(jìn)行解析,得到該函數(shù)的函數(shù)調(diào)用關(guān)系以及參數(shù)對(duì)象,該參數(shù)對(duì)象 包括該函數(shù)的輸入數(shù)據(jù)、輸出數(shù)據(jù)、輸入常量,以及該上層函數(shù)的中間數(shù)據(jù),并對(duì)該函數(shù)的 各參數(shù)對(duì)象進(jìn)行相應(yīng)的數(shù)據(jù)相關(guān)性、共享存儲(chǔ)、分布存儲(chǔ)等信息的標(biāo)注。在本實(shí)施例中,對(duì) 函數(shù)X264_me_search進(jìn)行分析得到其輸入變量、輸出變量、輸入常量和輸出常量如表1所 示表1 信號(hào)名稱數(shù)據(jù)類型方向說(shuō)明ipixelIntIN//PIXEL—WxH續(xù)表1 ImIntIN//lambda motionpfrefuint8 t*IN//參考幀pfencumt8 t*IN//編碼幀i strideIntIN//圖像的寬度i—mv—rangeIntIN//運(yùn)動(dòng)矢量的最大 范圍mvp[2]IntIN//預(yù)測(cè)運(yùn)動(dòng)矢量costIntOUT//satd + Im * nbitsmv[2]IntOUT//運(yùn)動(dòng)矢量在本實(shí)施例中,對(duì)該函數(shù)X264_me_SearCh內(nèi)部分析得到其內(nèi)部變量和常量,如表 2所示表2:
權(quán)利要求
1.集成電路下層硬件映射方法,其特征在于包括程序分析步驟,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該計(jì)算機(jī)語(yǔ)言的 規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成步驟,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電路算 法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成步驟,用于根據(jù)數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù)先建 立的算子單元庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元 組成的算子時(shí)空?qǐng)D;時(shí)序約束步驟,用于根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序約 束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;時(shí)空?qǐng)D壓縮步驟,用于根據(jù)時(shí)間標(biāo)注對(duì)時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使之總體算 法執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟,根據(jù)聚類壓縮后的時(shí)空?qǐng)D生成集成電路下層硬件邏輯描述。
2.集成電路下層硬件映射裝置,其特征在于包括程序分析模塊,用于讀取用于描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該計(jì)算機(jī)語(yǔ) 言的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成模塊,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電路算 法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成模塊,用于根據(jù)數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù)先建 立的算子單元庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元 組成的算子時(shí)空?qǐng)D;時(shí)序約束模塊,用于根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序約 束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;時(shí)空?qǐng)D壓縮模塊,用于根據(jù)時(shí)間標(biāo)注對(duì)時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使之總體算 法執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射模塊,根據(jù)聚類壓縮后的時(shí)空?qǐng)D生成集成電路下層硬件邏輯描述。
3.數(shù)據(jù)控制流生成方法,其特征在于包括程序分析步驟,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該種計(jì)算機(jī)語(yǔ)言 的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象,所述執(zhí)行對(duì)象包括 運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一 種;數(shù)據(jù)控制流圖生成步驟,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電路算 法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn)。
4.如權(quán)利要求3所述的方法,其特征在于,在所述數(shù)據(jù)控制流圖生成步驟中,將所述運(yùn) 算指令映射為處理框圖,將所述控制指令映射為用于標(biāo)識(shí)狀態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制 信號(hào)的控制流,將所述參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。
5.如權(quán)利要求3或4所述的方法,其特征在于,所述程序分析步驟包括根據(jù)該種計(jì)算 機(jī)語(yǔ)言的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中查找出函數(shù),對(duì)所述函數(shù)的輸入輸出和函數(shù)內(nèi)的運(yùn) 算進(jìn)行解析,識(shí)別出執(zhí)行對(duì)象和參數(shù)對(duì)象,在解析過(guò)程中,如果當(dāng)前被解析的函數(shù)為包含下層函數(shù)的上層函數(shù),則繼續(xù)對(duì)下層函數(shù)進(jìn)行解析。
6.如權(quán)利要求5所述的方法,其特征在于,所述控制指令為循環(huán)語(yǔ)句中的循環(huán)指令,所 述循環(huán)語(yǔ)句包括靜態(tài)循環(huán)語(yǔ)句和動(dòng)態(tài)循環(huán)語(yǔ)句,所述數(shù)據(jù)控制流圖生成步驟包括當(dāng)循環(huán)語(yǔ)句為靜態(tài)循環(huán)語(yǔ)句時(shí),根據(jù)循環(huán)次數(shù)將循環(huán)體展開(kāi),在循環(huán)體展開(kāi)后帶入?yún)?數(shù)對(duì)象得到新的運(yùn)算表達(dá)式,將所述運(yùn)算表達(dá)式中的運(yùn)算指令映射為處理框圖,將所述運(yùn) 算表達(dá)式中的參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn);當(dāng)循環(huán)語(yǔ)句為可變?yōu)殪o態(tài)循環(huán)語(yǔ)句的動(dòng)態(tài)循環(huán)語(yǔ)句時(shí),根據(jù)調(diào)用的不同場(chǎng)合變動(dòng)態(tài)循 環(huán)語(yǔ)句為靜態(tài)循環(huán)語(yǔ)句,并將其展開(kāi)得到新的運(yùn)算表達(dá)式,將所述運(yùn)算表達(dá)式中的運(yùn)算指 令映射為處理框圖,將所述運(yùn)算表達(dá)式中的參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn);當(dāng)循環(huán)語(yǔ)句為單層動(dòng)態(tài)循環(huán)語(yǔ)句時(shí),將循環(huán)語(yǔ)句的內(nèi)容映射為處理框圖,將循環(huán)指令 映射為狀態(tài)機(jī);當(dāng)循環(huán)語(yǔ)句為多層動(dòng)態(tài)循環(huán)語(yǔ)句時(shí),分別將外層循環(huán)語(yǔ)句和內(nèi)層循環(huán)語(yǔ)句的內(nèi)容映射 為第一處理框圖和第二處理框圖,將外層循環(huán)指令映射為第一狀態(tài)機(jī),將內(nèi)層循環(huán)指令映 射為第二狀態(tài)機(jī),并且所述第二處理框圖和第二狀態(tài)機(jī)映射在所述第一處理框圖內(nèi);或分 別將外層循環(huán)語(yǔ)句和內(nèi)層循環(huán)語(yǔ)句的內(nèi)容映射為第一處理框圖和第二處理框圖,將循環(huán)指 令映射為狀態(tài)機(jī),并且所述第二處理框圖映射在所述第一處理框圖內(nèi),并且所述狀態(tài)機(jī)的 狀態(tài)數(shù)等于所述循環(huán)的循環(huán)次數(shù)加一。
7.如權(quán)利要求5所述的方法,其特征在于,所述控制指令為分支控制語(yǔ)句中的控制指 令,所述數(shù)據(jù)控制流圖生成步驟包括將所述分支控制指令映射為多路選擇器,分支控制語(yǔ)句的內(nèi)容映射為多路選擇器的輸 入端處理框圖,將分支控制語(yǔ)句的控制條件映射為所述多路選擇器的控制端處理框圖。
8.如權(quán)利要求7所述的方法,其特征在于,所述分支控制語(yǔ)句為嵌套分支控制語(yǔ)句,則 將上層分支控制指令映射為第一多路選擇器,所述上層分支控制語(yǔ)句的內(nèi)容映射為所述第 一多路選擇器的輸入端處理框圖,所述上層分支控制語(yǔ)句的控制條件映射為所述第一多路 選擇器的控制端處理框圖;將下層分支控制指令映射為第二多路選擇器,所述下層分支控 制語(yǔ)句的內(nèi)容所述第二多路選擇器的輸入端處理框圖,所述下層分支控制語(yǔ)句的控制條件 映射為所述第二多路選擇器的控制端處理框圖,并且所述第一多路選擇器的輸出作為所述 第二多路選擇器的輸入。
9.數(shù)據(jù)控制流生成裝置,其特征在于包括程序分析模塊,用于讀取描述集成電路算法的計(jì)算機(jī)語(yǔ)言程序,根據(jù)該種計(jì)算機(jī)語(yǔ)言 的規(guī)則從所述計(jì)算機(jī)語(yǔ)言程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象,所述執(zhí)行對(duì)象包括 運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一 種;數(shù)據(jù)控制流圖生成模塊,用于將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電路算 法的數(shù)據(jù)控制流圖中的相應(yīng)節(jié)點(diǎn)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)控制流圖生成模塊包括執(zhí)行對(duì)象映射模塊,用于將所述執(zhí)行對(duì)象中運(yùn)算指令映射為處理框圖,并用于將所述 執(zhí)行對(duì)象中的控制指令映射為標(biāo)識(shí)狀態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制信號(hào)的控制流;參數(shù)對(duì)象映射模塊,用于將參數(shù)對(duì)象映射為數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。
全文摘要
本發(fā)明公開(kāi)了一種集成電路下層硬件映射方法及裝置,通過(guò)對(duì)描述集成電路算方法的計(jì)算機(jī)語(yǔ)言程序進(jìn)行分析,并將其映射為描述集成電路算法的數(shù)據(jù)控制流圖,再轉(zhuǎn)換為相應(yīng)的算子時(shí)空?qǐng)D,并對(duì)數(shù)據(jù)控制流圖進(jìn)行時(shí)序約束,從而根據(jù)時(shí)序標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行聚類壓縮,再生成集成電路下層硬件電路邏輯描述,從而創(chuàng)造了一種從計(jì)算機(jī)語(yǔ)言到集成電路下層硬件電路邏輯描述的映射工具,標(biāo)準(zhǔn)化地實(shí)現(xiàn)了集成電路從C或MATLAB等語(yǔ)言生成下層硬件的過(guò)程,實(shí)現(xiàn)起來(lái)方便快捷。本發(fā)明公開(kāi)的數(shù)據(jù)控制流生成方法及裝置通過(guò)對(duì)計(jì)算機(jī)語(yǔ)言程序分析得到其相應(yīng)的數(shù)據(jù)相關(guān)性、數(shù)據(jù)可并行性和相應(yīng)控制信息等,從而生成相應(yīng)的數(shù)據(jù)控制流圖,幫助硬件工程師進(jìn)行硬件設(shè)計(jì)。
文檔編號(hào)G06F17/50GK102054109SQ20101062244
公開(kāi)日2011年5月11日 申請(qǐng)日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者周生明, 孫亞春, 安輝耀, 張興, 王新安, 王騰, 胡子一, 謝崢, 趙秋奇, 馬芝 申請(qǐng)人:北京大學(xué)深圳研究生院