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