專利名稱:集成電路下層硬件映射方法、時(shí)空?qǐng)D生成方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計(jì)領(lǐng)域,尤其是一種集成電路下層硬件映射方法、時(shí)空?qǐng)D 生成方法及裝置。
背景技術(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í)空?qǐng)D生成方法及裝置,使得根據(jù)本方法得到的電路在面積 方面加強(qiáng)了版圖的規(guī)整性;在功耗方面,實(shí)現(xiàn)了低功耗設(shè)計(jì)的優(yōu)化設(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生成集成電路下層硬件邏 輯描述?;谏鲜龅姆椒ǎ景l(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í)空?qǐng)D生成方法,包括步驟將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)相關(guān)性展開(kāi);根據(jù)展開(kāi)后的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù)先建立的算子單元庫(kù)中取出對(duì)應(yīng)功 能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。進(jìn)一步地,所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流為順序相關(guān)數(shù)據(jù)流結(jié)構(gòu),則將所述順序 相關(guān)數(shù)據(jù)流采用流水線的方式展開(kāi),并轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。進(jìn)一步地,所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流中存在反饋,且所述數(shù)據(jù)流內(nèi)部數(shù)據(jù)之 間不存在數(shù)據(jù)相關(guān)性,則將所述內(nèi)部數(shù)據(jù)不存在數(shù)據(jù)相關(guān)性的各數(shù)據(jù)流采用局部流水線的 方式展開(kāi),并轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。進(jìn)一步地,所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流之間不存在數(shù)據(jù)相關(guān)性,則將所述數(shù)據(jù) 流采用并行方式展開(kāi),并轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。時(shí)空?qǐng)D生成裝置,其特征在于包括算子單元庫(kù),用于存儲(chǔ)能夠?qū)崿F(xiàn)運(yùn)算功能的算子單元;展開(kāi)單元,用于將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)相關(guān)性展開(kāi);算子時(shí)空?qǐng)D生成模塊,用于根據(jù)展開(kāi)后的各節(jié)點(diǎn)所進(jìn)行的功能處理從算子單元庫(kù) 中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖中的各功能模塊轉(zhuǎn)換成由算子單元 組成的算子時(shí)空?qǐng)D。進(jìn)一步地,還包括用于判斷數(shù)據(jù)流相關(guān)性類型的判斷單元,所述展開(kāi)單元根據(jù)數(shù)據(jù)流相關(guān)性類型進(jìn)行相應(yīng)的展開(kāi)工作。進(jìn)一步地,當(dāng)所述判斷單元判斷所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流為順序相關(guān)數(shù)據(jù)流 結(jié)構(gòu)時(shí),所述展開(kāi)單元將所述順序相關(guān)數(shù)據(jù)流采用流水線的方式展開(kāi);當(dāng)所述判斷單元判 斷所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流中存在反饋時(shí),則所述展開(kāi)單元判斷存在反饋的數(shù)據(jù)流內(nèi) 部的數(shù)據(jù)之間是否存在數(shù)據(jù)相關(guān)性,如果所述數(shù)據(jù)流內(nèi)部的數(shù)據(jù)之間不存在數(shù)據(jù)相關(guān)性, 則所述展開(kāi)單元將所述內(nèi)部數(shù)據(jù)不存在數(shù)據(jù)相關(guān)性的各數(shù)據(jù)流采用局部流水線的方式展 開(kāi);當(dāng)所述判斷單元判斷數(shù)據(jù)控制流圖中的數(shù)據(jù)流之間不存在數(shù)據(jù)相關(guān)性時(shí),則所述展開(kāi) 單元將所述數(shù)據(jù)流采用并行方式展開(kāi)。進(jìn)一步地,所述算子時(shí)空?qǐng)D生成模塊先將函數(shù)的數(shù)據(jù)控制流圖轉(zhuǎn)換為算子時(shí)空 圖,然后將所述函數(shù)調(diào)用的子函數(shù)的數(shù)據(jù)控制流圖轉(zhuǎn)換為算子時(shí)空?qǐng)D。本發(fā)明的有益效果是通過(guò)對(duì)原C程序或MATLAB程序的分析,識(shí)別出映射的執(zhí)行 對(duì)象和參數(shù)對(duì)象;并將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象重新映射成為數(shù)據(jù)控制流圖,該數(shù)據(jù) 控制流圖可以表示集成電路的算法;然后根據(jù)數(shù)據(jù)相關(guān)性將數(shù)據(jù)控制流圖展開(kāi),并將展開(kāi) 后的節(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ò)生成基于算子的時(shí)空?qǐng)D,由于算子可以構(gòu)成算子功能塊,進(jìn)而構(gòu)成 算子功能群落,使得根據(jù)本方法得到的電路在面積方面,可以加強(qiáng)版圖的規(guī)整性;在功耗方 面,控制算子可以配置算子的運(yùn)算模式和時(shí)鐘頻率,進(jìn)行優(yōu)化的低功耗設(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)示意圖;圖7為本發(fā)明的下層硬件映射流程圖;圖8為本發(fā)明數(shù)據(jù)控制流圖生成方法的一種實(shí)施例中對(duì)函數(shù)X264_me_SearCh和 piXel_Sad_16X16進(jìn)行分析的流程圖;圖9為根據(jù)圖8中分析步驟得到的結(jié)果生成數(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ā)明的順序相關(guān)數(shù)據(jù)流展開(kāi)的一種實(shí)施例的結(jié)構(gòu)圖;圖18為本發(fā)明的存在反饋數(shù)據(jù)流,由算子展開(kāi)為局部流水線結(jié)構(gòu)示意圖;圖19為本發(fā)明的并行數(shù)據(jù)流展開(kāi)的一種實(shí)施例的結(jié)構(gòu)圖;圖20為本實(shí)施例的函數(shù)x264_me_search的LO和Ll邏輯生成的算子時(shí)空?qǐng)D;圖21a和圖21b分別函數(shù)x264_me_Search的邏輯L3的第一部分和第二部分生成 的算子時(shí)空?qǐng)D;圖22為本實(shí)施例的函數(shù)X264_me_SearCh的邏輯L5生成的算子時(shí)空?qǐng)D;圖23a和圖23b分別為本實(shí)施例的函數(shù)x264_me_search和函pixel_sad_16X 16 的算子時(shí)空?qǐng)D;圖M為本發(fā)明的時(shí)空?qǐng)D生成裝置的一種實(shí)施例的結(jié)構(gòu)框圖;圖25為圖M的時(shí)空?qǐng)D生成模塊的一種實(shí)施例的結(jié)構(gòu)框圖;圖^a和圖^b分別為本實(shí)施例的函數(shù)X264_me_search和函數(shù)pixel_ sad_16X16的時(shí)序約束示意圖;圖27為本實(shí)施例的函數(shù)pixel_sad_16X16聚類壓縮后的時(shí)空?qǐng)D;圖28所示為固化定制的一種實(shí)施方式原理圖;圖四為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)單元的粒度,因此本 發(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)的寫入 和/或讀出方式,還可以配置存儲(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ù)定 的功能??刂扑阕覥U的形式包括計(jì)數(shù)器、狀態(tài)機(jī)和微指令三種。其中微指令結(jié)構(gòu)包含譯碼 器、程序計(jì)數(shù)器、指令存儲(chǔ)器和流水線控制模塊等。控制算子CU通過(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ǔ)言等。再將編寫的計(jì)算機(jī)語(yǔ)言程序輸 入到本發(fā)明的映射系統(tǒng)中,該映射系統(tǒng)根據(jù)編寫程序所用計(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í),則該數(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é)果。不同的9函數(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,用于將數(shù)據(jù)控制流圖中的各節(jié)點(diǎn)根據(jù)數(shù)據(jù)流相關(guān)性展開(kāi),并根據(jù)展 開(kāi)后的各節(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ō)明i—pixelIntIN//PIXEL_ffxHImIntIN//lambda motionp_frefuint8_t*IN//參考幀
權(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í)空?qǐng)D生成方法,其特征在于包括 將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)流相關(guān)性展開(kāi);根據(jù)展開(kāi)后的各節(jié)點(diǎn)所進(jìn)行的功能處理從預(yù)先建立的算子單元庫(kù)中取出對(duì)應(yīng)功能的 至少一個(gè)算子單元,將數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。
4.如權(quán)利要求3所述的方法,其特征在于,所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流為順序相關(guān) 數(shù)據(jù)流結(jié)構(gòu),則將所述順序相關(guān)數(shù)據(jù)流采用流水線的方式展開(kāi),并轉(zhuǎn)換成由算子單元組成 的算子時(shí)空?qǐng)D。
5.如權(quán)利要求3所述的方法,其特征在于,所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流存在反饋,且 所述數(shù)據(jù)流內(nèi)部數(shù)據(jù)之間不存在數(shù)據(jù)相關(guān)性,則將所述內(nèi)部數(shù)據(jù)不存在數(shù)據(jù)相關(guān)性的各數(shù) 據(jù)流采用局部流水線的方式展開(kāi),并轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。
6.如權(quán)利要求3所述的方法,其特征在于,所述數(shù)據(jù)控制流圖中的數(shù)據(jù)流之間不存在 數(shù)據(jù)相關(guān)性,則將所述數(shù)據(jù)流采用并行方式展開(kāi),并轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。
7.時(shí)空?qǐng)D生成裝置,其特征在于包括算子單元庫(kù),用于存儲(chǔ)能夠?qū)崿F(xiàn)運(yùn)算功能的算子單元;展開(kāi)單元,用于將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)流相關(guān)性展開(kāi);算子時(shí)空?qǐng)D生成模塊,用于根據(jù)展開(kāi)后的各節(jié)點(diǎn)所進(jìn)行的功能處理從算子單元庫(kù)中取 出對(duì)應(yīng)功能的至少一個(gè)算子單元,將數(shù)據(jù)控制流圖中的各功能模塊轉(zhuǎn)換成由算子單元組成 的算子時(shí)空?qǐng)D。
8.如權(quán)利要求7所述的裝置,其特征在于,還包括用于判斷數(shù)據(jù)流相關(guān)性類型的判斷 單元,所述展開(kāi)單元根據(jù)數(shù)據(jù)流相關(guān)性類型進(jìn)行相應(yīng)的展開(kāi)操作。
9.如權(quán)利要求8所述的裝置,其特征在于,當(dāng)判斷單元判斷數(shù)據(jù)控制流圖中的數(shù)據(jù)流 為順序相關(guān)數(shù)據(jù)流結(jié)構(gòu)時(shí),所述展開(kāi)單元將所述順序相關(guān)數(shù)據(jù)流采用流水線的方式展開(kāi); 當(dāng)所述判斷單元判斷數(shù)據(jù)控制流圖中的數(shù)據(jù)流中存在反饋時(shí),所述展開(kāi)單元判斷存在反饋 的各數(shù)據(jù)流內(nèi)部的數(shù)據(jù)之間是否存在數(shù)據(jù)相關(guān)性,如果所述各數(shù)據(jù)流內(nèi)部的數(shù)據(jù)之間不存 在數(shù)據(jù)相關(guān)性,則所述展開(kāi)單元用于將所述內(nèi)部數(shù)據(jù)不存在數(shù)據(jù)相關(guān)性的各數(shù)據(jù)流采用局 部流水線的方式展開(kāi);當(dāng)所述判斷單元判斷數(shù)據(jù)控制流圖中的數(shù)據(jù)流之間不存在數(shù)據(jù)相關(guān) 性時(shí),所述展開(kāi)單元將所述數(shù)據(jù)流采用并行方式展開(kāi)。
10.如權(quán)利要求7-9中任一項(xiàng)所述的裝置,其特征在于,所述算子時(shí)空?qǐng)D生成模塊先將 上層函數(shù)的數(shù)據(jù)流控制圖轉(zhuǎn)換為算子時(shí)空?qǐng)D,然后將下層函數(shù)調(diào)用的子函數(shù)的數(shù)據(jù)流控制 圖轉(zhuǎn)換為算子時(shí)空?qǐng)D。
全文摘要
本發(fā)明公開(kāi)了一種集成電路下層硬件映射方法及裝置,通過(guò)對(duì)描述集成電路算方法的計(jì)算機(jī)語(yǔ)言程序進(jìn)行分析,并將其映射為數(shù)據(jù)控制流圖,再轉(zhuǎn)換為算子時(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í)空?qǐng)D生成方法及裝置通過(guò)根據(jù)數(shù)據(jù)控制流中數(shù)據(jù)流的數(shù)據(jù)相關(guān)性將其展開(kāi),并調(diào)用算子將數(shù)據(jù)控制流圖轉(zhuǎn)換為算子時(shí)空?qǐng)D,根據(jù)本方法得到的電路,不僅版圖規(guī)整性加強(qiáng),并且能夠?qū)崿F(xiàn)低功耗的優(yōu)化設(shè)計(jì)。
文檔編號(hào)G06F17/50GK102054107SQ20101061983
公開(kāi)日2011年5月11日 申請(qǐng)日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者周生明, 孫亞春, 安輝耀, 張興, 王新安, 王騰, 胡子一, 謝崢, 趙秋奇, 馬芝 申請(qǐng)人:北京大學(xué)深圳研究生院