欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

高階合成方法和高階合成裝置的制作方法

文檔序號(hào):6444034閱讀:275來源:國知局
專利名稱:高階合成方法和高階合成裝置的制作方法
背景技術(shù)
1、發(fā)明領(lǐng)域本發(fā)明涉及用于由以行為級(behavior level)描述的電路來合成寄存器轉(zhuǎn)移級電路或門級電路的高階合成裝置和高階合成方法。
2、相關(guān)背景技術(shù)隨著近期向更大規(guī)模LSIs發(fā)展的趨勢,用高階合成來設(shè)計(jì)電路以便縮短LSI設(shè)計(jì)所需的時(shí)間。在高階合成中,寄存器轉(zhuǎn)移級或門級電路由具有高階抽象的行為性描述(如算法)的電路合成。
其中,在電路設(shè)計(jì)中,其中以寄存器轉(zhuǎn)移級來描述電路,且基于該電路描述(circuit description)而執(zhí)行邏輯合成,大單元(megacell)如存儲(chǔ)器不是邏輯合成的目標(biāo)。因此,當(dāng)大單元,如存儲(chǔ)器將被使用時(shí),電路設(shè)計(jì)人員必須在寄存器轉(zhuǎn)移級電路描述中作舉例描述(instance description)。
另一方面,在使用高階合成的電路設(shè)計(jì)中執(zhí)行行為性描述,且因此可用變量如陣列變量和結(jié)構(gòu)變量描述大單元。結(jié)果是,在執(zhí)行高階合成時(shí),可為存儲(chǔ)器元素資源(memory element resources)如存儲(chǔ)器,寄存器文件或寄存器分配變量。
在傳統(tǒng)高階合成中,用于分配變量至寄存器等的技術(shù)包括,例如,使用左緣算法,在“HIGH-LEVEL SYNTHESIS,Introduction to Chipan System Design”(Gajski,Wu,Dutt和Lin編輯,美國Kluwer AcademicPublishers 1992年出版)介紹了這種算法。根據(jù)使用左緣算法的技術(shù),首先,執(zhí)行時(shí)序安排(scheduling)以確定在行為性描述中執(zhí)行不同操作的周期,且分析變量壽命。
然后,變量按壽命的順序分類并依次分配到寄存器,以避免壽命交疊。例如,在變量是陣列變量的情形中,按照前述技術(shù)該陣列變量的各個(gè)陣列元素被逐個(gè)分配至寄存器。
而且,在傳統(tǒng)高階合成中,用于分配變量至存儲(chǔ)器的技術(shù)包括,例如,其中設(shè)計(jì)人員指定待分配的陣列變量至任意存儲(chǔ)器的技術(shù),由此,在執(zhí)行用于確定執(zhí)行操作順序的時(shí)序安排之前陣列變量預(yù)先分配至存儲(chǔ)器。例如,在JP H05(1993)-101141A中揭示的高階合成裝置中,電路設(shè)計(jì)人員使用用于存儲(chǔ)器分配的命令,以便將在行為級電路中描述的任意陣列變量分配給任意存儲(chǔ)器。
然而,在前述將陣列變量分配給存儲(chǔ)器的技術(shù)中,在陣列變量分配至存儲(chǔ)器之后執(zhí)行時(shí)序安排,因此時(shí)序安排的執(zhí)行受到基于指定了分配的存儲(chǔ)器的限制。因此,在這樣的情形中,其中陣列變量分配至存儲(chǔ)器不是最優(yōu)的,就會(huì)出現(xiàn)不能獲得最優(yōu)的時(shí)序安排結(jié)果的問題。
例如,在使用用C語言編寫的結(jié)構(gòu)變量的陣列變量的情形中,行為級電路的描述中,有引用整體的結(jié)構(gòu)變量的情形,還有引用包括在該結(jié)構(gòu)中的成員變量(member variables)的另一個(gè)情形。由于其中的引用方法(reference method)的差異,這些情形中用于轉(zhuǎn)移數(shù)據(jù)的位寬不同。
而且,根據(jù)JP H05(1993)-101141A在高階合成中,當(dāng)結(jié)構(gòu)變量被分配至存儲(chǔ)器,用于存儲(chǔ)器數(shù)據(jù)轉(zhuǎn)移的位寬對每個(gè)存儲(chǔ)器局限于一種類型。因此,對于引用整體的結(jié)構(gòu)變量和只引用成員變量的情形,難以分配具有用于數(shù)據(jù)轉(zhuǎn)移的最優(yōu)位寬的存儲(chǔ)器。
而且,對分配的存儲(chǔ)器中的數(shù)據(jù)轉(zhuǎn)移的位寬的限制使得當(dāng)引用整體的結(jié)構(gòu)變量時(shí)的存儲(chǔ)器存取頻率,和只引用成員變量時(shí)的存儲(chǔ)器存取頻率被確定。
因此,當(dāng)存儲(chǔ)器存取頻率影響時(shí)序安排結(jié)果時(shí),最優(yōu)時(shí)序安排結(jié)果將不能獲得。為了對付這樣的問題,需要高階合成來選擇成為分配目標(biāo)的存儲(chǔ)器,以便避免對時(shí)序安排結(jié)果的影響,或?yàn)榱双@得最優(yōu)頻率。

發(fā)明內(nèi)容
因此,注意到前述內(nèi)容,本發(fā)明的目的是提供高階合成方法和高階合成裝置,使得能夠根據(jù)行為級電路中所描述的操作選擇具有最優(yōu)位寬的存儲(chǔ)器,并且最優(yōu)化存儲(chǔ)器存取頻率。
為了實(shí)現(xiàn)上述目的,本發(fā)明的高階合成方法包括以下步驟(a)計(jì)算行為級電路中變量引用(referencing of the variable)的數(shù)目;(b)提取變量的位寬并選擇多個(gè)能夠以所提取的位寬進(jìn)行數(shù)據(jù)轉(zhuǎn)移的存儲(chǔ)器;(c)當(dāng)變量被分配到其中時(shí),計(jì)算步驟(b)中選擇的多個(gè)存儲(chǔ)器中的每一個(gè)存儲(chǔ)器的存取頻率之和,該計(jì)算是基于變量引用數(shù)目和的位寬執(zhí)行的;和(d)作為變量分配的目標(biāo),選擇將在步驟(c)中計(jì)算的存儲(chǔ)器存取頻率最小化的存儲(chǔ)器,通過本發(fā)明的高階合成方法,行為級電路所描述的變量被分配至存儲(chǔ)器以生成邏輯電路。
而且,為了實(shí)現(xiàn)上述目的,本發(fā)明的高階合成裝置至少包括引用數(shù)目計(jì)算單元,其計(jì)算行為級電路中變量的引用數(shù)目;位寬提取單元,其提取變量的位寬且選擇多個(gè)能夠以提取的位寬數(shù)據(jù)轉(zhuǎn)移的存儲(chǔ)器;和存儲(chǔ)器選擇單元,當(dāng)變量被分配到存儲(chǔ)器中時(shí),該存儲(chǔ)器選擇單元為每個(gè)所選的多個(gè)存儲(chǔ)器計(jì)算存儲(chǔ)器存取頻率之和,該計(jì)算是基于變量的的引用數(shù)目和位寬而進(jìn)行的,并且作為分配目標(biāo),選擇一個(gè)將計(jì)算的存儲(chǔ)器存取的頻率之和最小化的存儲(chǔ)器,該高階合成裝置分配行為級電路中所描述的變量至存儲(chǔ)器以生成邏輯電路。
而且,本發(fā)明可以是一種紀(jì)錄介質(zhì),其中紀(jì)錄了用于實(shí)施本發(fā)明上述高階合成裝置的程序。該程序可安裝于計(jì)算機(jī)并被執(zhí)行,由此,本發(fā)明的高階合成方法能被執(zhí)行。
由這些特征,根據(jù)本發(fā)明的高階合成裝置和高階合成方法,根據(jù)行為級電路中描述的操作可選擇具有最優(yōu)位寬的存儲(chǔ)器,且存儲(chǔ)器存取頻率可被最優(yōu)化。


圖1是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例1的高階合成裝置的結(jié)構(gòu);圖2是流程圖,其示出根據(jù)本發(fā)明實(shí)施例1的高階合成方法;圖3示出用在實(shí)施例1中的行為級電路和存儲(chǔ)器存取頻率,其中圖3A示出示例性行為級電路,圖3B示出行為級電路所描述的變量的引用數(shù)目和位寬,圖3C示出可選擇的存儲(chǔ)器的位寬和存儲(chǔ)器存取頻率的和;圖4示出存儲(chǔ)器存取周期表,其用于所選存儲(chǔ)器中的存儲(chǔ)器存取頻率的計(jì)算;圖5是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例2的高階合成裝置的結(jié)構(gòu);圖6是流程圖,示出根據(jù)本發(fā)明實(shí)施例2的高階合成方法;圖7示出用于實(shí)施例2的示例性的行為級電路,其中圖7A示出在變量分離之前的狀態(tài),圖7B示出變量分離之后的狀態(tài);圖8示出其中變量的分離已執(zhí)行的情形中的頻率和, 和其中變量分離沒有執(zhí)行的情形中的頻率和,其中圖8A示出變量分離已執(zhí)行的情形中變量的引用數(shù)目和位寬,圖8B示出變量分離已執(zhí)行的情形中可選存儲(chǔ)器的位寬和頻率和,圖8C示出變量分離沒執(zhí)行的情形中可選存儲(chǔ)器的位寬和頻率和;圖9是實(shí)施例2的高階合成方法的流程圖,其中執(zhí)行嘗試性時(shí)序安排;圖10是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例3的高階合成裝置的示例性的結(jié)構(gòu);
圖11示出用在實(shí)施例3中的示例性的行為級電路,其中圖11A示出在變量整合(variable integration)之前的狀態(tài),圖11B示出變量整合之后的狀態(tài);圖12示出變量整合之前和變量整合之后的情形中變量位寬和引用數(shù)目及可選存儲(chǔ)器的位寬和頻率和,其中圖12A示出變量整合沒有執(zhí)行的情形,而12B示出變量整合已經(jīng)執(zhí)行的情形;圖13示出陣列變量和陣列元素分離之后,行為級電路,變量位寬和引用數(shù)目及可選存儲(chǔ)器的位寬和頻率和,其中圖13A示出圖11A所示的行為級電路經(jīng)變量分離后的狀態(tài),圖13B示出變量分離執(zhí)行之后變量的位寬和引用數(shù)目,及可選存儲(chǔ)器的位寬和頻率之和;圖14是方框圖,其示意地示出根據(jù)本發(fā)明的實(shí)施例3的另一個(gè)示例性高階合成裝置的結(jié)構(gòu);圖15示出用在實(shí)施例3中的示例性行為級電路,其中圖15A示出變量分離和變量整合之前的狀態(tài),圖15B示出變量分離和變量整合之后的狀態(tài);圖16示出變量整合和變量分離已執(zhí)行和沒有執(zhí)行的情形中變量位寬和引用數(shù)目,并示出可選存儲(chǔ)器的位寬和頻率和,其中圖16A示出變量整合和變量分離沒有執(zhí)行的情形,而圖16B示出變量整合和變量分離已執(zhí)行的情形;圖17是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例3的高階合成裝置的另一個(gè)示例性結(jié)構(gòu);圖18示出用在實(shí)施例3中的示例性行為級電路,其中圖18A示出變量分離之前的狀態(tài),而圖18B示出變量分離之后的狀態(tài);圖19是流程圖,示出圖17中示出的高階合成裝置的操作;圖20示出變量分離已執(zhí)行的情形和變量分離沒有執(zhí)行的情形中的變量的位寬和引用數(shù)目,及可選存儲(chǔ)器的位寬和頻率和,其中圖20A示出變量分離沒有執(zhí)行的情形,而圖20B示出變量分離已執(zhí)行的情形;圖21是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例4的高階合成裝置的結(jié)構(gòu);圖22是流程圖,示出根據(jù)本發(fā)明實(shí)施例4的高階合成方法。
圖23示出用于實(shí)施例4中的行為級電路,變量的位寬,和存儲(chǔ)器存取頻率,其中圖23A示出示例性行為級電路,圖23B示出示在圖23A中的行為級電路中描述的變量的引用數(shù)目和位寬,圖23C示出每個(gè)可選存儲(chǔ)器的存儲(chǔ)器存取頻率和;圖24是實(shí)施例4的高階合成方法的流程圖,其中執(zhí)行了嘗試性時(shí)序安排;圖25是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例5的高階合成裝置的結(jié)構(gòu);圖26是流程圖,示出根據(jù)本發(fā)明實(shí)施例5的高階合成方法;圖27示出用于實(shí)施例5的行為級電路,變量的位寬和存儲(chǔ)器存取頻率,其中圖27A示出示例性行為級電路,圖27B示出圖27A中所示的行為級電路所描述的變量的引用數(shù)目和位寬,圖27C示出每個(gè)可選存儲(chǔ)器的存儲(chǔ)器存取頻率的和;圖28示出圖27A中所示的行為級電路的第三個(gè)for語句的執(zhí)行順序(exicution order),其中圖28A示出在執(zhí)行順序交換之前的狀態(tài),而圖28B示出執(zhí)行順序交換之后的狀態(tài);圖29示出圖27A中所示的行為級電路的時(shí)序安排的結(jié)果;圖30示出實(shí)施例5中所用的存儲(chǔ)器存取周期表;圖31是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例6的高階合成裝置的結(jié)構(gòu);圖32是流程圖,示出根據(jù)本發(fā)明實(shí)施例6的高階合成方法;圖33示出示例性存取方式,其中圖33A示出表示對同一存儲(chǔ)器的預(yù)定頻率或更高頻率的連續(xù)存取的存取方式,圖33B示出了表示對不在同一存取周期存取的多個(gè)存儲(chǔ)器的存取狀態(tài)的存取方式;圖34是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例7的高階合成裝置的結(jié)構(gòu);圖35是流程圖,示出根據(jù)本發(fā)明實(shí)施例7的高階合成方法;圖36示出實(shí)施例7中所用的行為級電路,變量的位寬和存儲(chǔ)器存取的頻率,其中圖36A示出示例性行為級電路,圖36B示出圖36A中所示的行為級電路中所描述的變量的引用數(shù)目和位寬,而圖36C示出每個(gè)可選存儲(chǔ)器的存儲(chǔ)器存取頻率之和;圖37示出物理存儲(chǔ)器單元列表,其中可裝配32位存儲(chǔ)器;圖38是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例8的高階合成裝置的結(jié)構(gòu);圖39是流程圖,示出根據(jù)本發(fā)明實(shí)施例8的高階合成方法。
具體實(shí)施例本發(fā)明的前述高階合成方法進(jìn)一步包括以下步驟整合(integrating)包括在行為級電路所描述的多個(gè)陣列變量或結(jié)構(gòu)變量中的變量,以生成新變量。在此,使用新變量執(zhí)行步驟(a)到(d)。
而且,本發(fā)明的前述高階合成方法可包括以下步驟分離在行為級電路中所描述的陣列變量或結(jié)構(gòu)變量以生成新的變量,該生成新的變量由多個(gè)包括在分離結(jié)果中的變量組成。在此,可以使用新變量執(zhí)行步驟(a)到(d)。
而且,本發(fā)明的前述高階合成方法可包括以下步驟聯(lián)合包括在行為級電路中所描述的多個(gè)陣列變量或結(jié)構(gòu)變量中的多個(gè)變量,以生成新的陣列變量或結(jié)構(gòu)變量,且分離新的陣列變量或結(jié)構(gòu)變量,以生成由多個(gè)包括在分離結(jié)果中的變量組成的新的變量。在此,可以使用所述新變量執(zhí)行步驟(a)到(d)。
在這些實(shí)施例中,所述多個(gè)變量可以是在行為級電路中同一區(qū)段(section)所描述的變量,或所述多個(gè)變量可以不是行為級電路中同一區(qū)段中所描述的變量。
在這樣的情形中,高階合成方法進(jìn)一步可包括以下步驟在執(zhí)行步驟(a)之前,分配行為級電路所描述的所有變量中的每一個(gè)至不同存儲(chǔ)器,并進(jìn)行行為級電路中的執(zhí)行周期的時(shí)序安排;指定(specifying)一個(gè)執(zhí)行周期,其中陣列變量或結(jié)構(gòu)變量是基于時(shí)序安排的結(jié)果存取的,判斷在執(zhí)行周期的預(yù)定頻率范圍內(nèi)存取的變量是同一區(qū)段所描述的變量,且判斷不在該頻率范圍內(nèi)存取的變量不是同一區(qū)段所描述的變量。
而且,同一區(qū)段可通過行為級電路中的重復(fù)處理定義,且該方法進(jìn)一步可包括如下步驟從多個(gè)變量中指定在同一區(qū)段中描述的變量,該多個(gè)變量包括在行為級電路中所描述的同一陣列變量或結(jié)構(gòu)變量中。
而且,前述實(shí)施例可包括如下步驟執(zhí)行關(guān)于在行為級電路中所描述的陣列變量或結(jié)構(gòu)變量的依賴性(Dependency)分析,以便計(jì)算陣列變量或結(jié)構(gòu)變量之中的任意變量之間的距離矢量,且基于該計(jì)算的距離矢量指定多個(gè)變量。
優(yōu)選,本發(fā)明的前述高階合成方法可進(jìn)一步包括如下步驟設(shè)定由行為級電路所描述的變量組成的變量組。在步驟(b),變量組的位寬和不構(gòu)成該變量組的變量的位寬可被提取,且可為每個(gè)變量組以及不組成該變量組的變量選擇多個(gè)存儲(chǔ)器。
而且,在這個(gè)實(shí)施例中,組成變量組的變量可以是行為級電路中同一區(qū)段所描述的變量,或可以是不在行為級電路中同一區(qū)段所描述的變量。
而且,在這種情形中,優(yōu)選高階合成方法進(jìn)一步包括如下步驟在執(zhí)行步驟(a),分配在行為級電路中所描述的所有變量的每一個(gè)至不同存儲(chǔ)器,并執(zhí)行在行為級電路中的執(zhí)行周期的時(shí)序安排;以及指定執(zhí)行周期,在所述中期中每個(gè)變量是基于時(shí)序安排的結(jié)果存取的,判斷在執(zhí)行周期的預(yù)定頻率范圍內(nèi)存取的變量是同一區(qū)段內(nèi)描述的變量,且判斷不在執(zhí)行周期的預(yù)定頻率范圍內(nèi)存取的變量不是同一區(qū)段內(nèi)描述的變量。
而且,在前述實(shí)施例中,為變量組選擇的多個(gè)存儲(chǔ)器中每個(gè)可有不同位寬,且可配置的變量組的數(shù)目是預(yù)先設(shè)定的。而且,多個(gè)變量組可被配置,且組成至少一個(gè)變量組的變量數(shù)目和組成另一個(gè)變量組的變量數(shù)目可以不同。
而且,優(yōu)選,前述高階合成方法包括如下步驟在執(zhí)行步驟(c)之前,分配變量至在步驟(b)中選擇的存儲(chǔ)器,并執(zhí)行在行為級電路中的執(zhí)行周期的時(shí)序安排。在步驟(c),可基于時(shí)序安排的結(jié)果判斷是否有可與存儲(chǔ)器存取并行執(zhí)行的操作處理,且如果有該操作處理,存儲(chǔ)器存取的頻率之和可被改正。
優(yōu)選,該實(shí)施例進(jìn)一步包括如下步驟提取行為級電路中所描述的重復(fù)處理,并分析包括在重復(fù)處理中的變量的依賴性(dependence);并基于依賴性的分析結(jié)果交換重復(fù)處理中的執(zhí)行順序,以便將在同一時(shí)間引用的變量在同一執(zhí)行周期執(zhí)行。
而且,優(yōu)選地,前述高階合成方法包括如下步驟在執(zhí)行步驟(c)之前,分配變量至在步驟(b)中選擇的存儲(chǔ)器中,并執(zhí)行在行為級電路中的執(zhí)行周期的時(shí)序安排;且在執(zhí)行步驟(d)之后,顯示對所選的存儲(chǔ)器的存取方式,該存取方式是從時(shí)序安排獲得的。
在該實(shí)施例中,對同一存儲(chǔ)器的預(yù)定頻率或更高頻率的連續(xù)存取可從時(shí)序安排的結(jié)果中獲取,并且示出存取的存取方式可被顯示。而且,不是在同一執(zhí)行周期中存取的多個(gè)存儲(chǔ)器可從時(shí)序安排的結(jié)果中提取,示出對提取的多個(gè)存儲(chǔ)器的存取條件的存取方式可被顯示。
而且,優(yōu)選地,本發(fā)明前述的高階合成方法包括如下步驟規(guī)定相應(yīng)于所選存儲(chǔ)器的多個(gè)存儲(chǔ)器單元,并在該多個(gè)存儲(chǔ)器單元中選擇一個(gè)滿足關(guān)于執(zhí)行周期中的延遲時(shí)間的預(yù)定條件的存儲(chǔ)器單元。在不能選擇滿足關(guān)于執(zhí)行周期中某個(gè)延遲時(shí)間的預(yù)定條件的存儲(chǔ)器單元的情況下,則步驟(d)可再次執(zhí)行。
該實(shí)施例優(yōu)選進(jìn)一步包括如下步驟分配變量至所選的存儲(chǔ)器,且執(zhí)行行為級電路中執(zhí)行周期的時(shí)序安排??苫跁r(shí)序安排結(jié)果和多個(gè)存儲(chǔ)器單元中的每個(gè)的存取時(shí)間,通過計(jì)算多個(gè)存儲(chǔ)器單元中的每個(gè)存儲(chǔ)器一個(gè)執(zhí)行周期內(nèi)的延遲時(shí)間,且通過判斷所計(jì)算的延遲時(shí)間滿足預(yù)定條件與否而執(zhí)行存儲(chǔ)器單元的選擇。
而且,前述高階合成方法可包括如下步驟在執(zhí)行步驟(d)之后,分配變量至所選的存儲(chǔ)器,且執(zhí)行布局(layout),由此,生成指定所選存儲(chǔ)器的至少一個(gè)的設(shè)定的位置和與所選存儲(chǔ)器連接的電路的設(shè)定的位置的布局信息。在此,多個(gè)存儲(chǔ)器單元中的每個(gè)存儲(chǔ)器單元的存取時(shí)間可從布局信息確定。
而且,優(yōu)選地,本發(fā)明的前述高階合成方法包括如下步驟在執(zhí)行步驟(d)之后,分配變量至所選存儲(chǔ)器,且執(zhí)行布局,由此,生成規(guī)定所選存儲(chǔ)器的至少一個(gè)設(shè)定的位置和與所選存儲(chǔ)器連接的電路的設(shè)定的位置的布局信息;基于該布局信息,確定所選存儲(chǔ)器的至少一個(gè)存取時(shí)間,布線的(routing)擁塞程度和死區(qū)面積;和在存取時(shí)間被確定的情形中,使用該存取時(shí)間執(zhí)行行為級電路中執(zhí)行周期的時(shí)序安排。
而且,優(yōu)選地,該實(shí)施例包括如下步驟在布線擁塞程度被確定的情形中,作出布線擁塞程度是否滿足預(yù)定條件的判斷。在此,如果布線的擁塞程度不滿足預(yù)定條件,則可對非所選的存儲(chǔ)器再次執(zhí)行步驟(d)。
而且,優(yōu)選地,該實(shí)施例包括如下步驟在死區(qū)面積被確定的情形中,作出死區(qū)面積是否滿足預(yù)定條件的判斷。在此,如果死區(qū)面積不滿足預(yù)定條件,則可對非所選的存儲(chǔ)器再次執(zhí)行步驟(d)。
下面參考

本發(fā)明的高階合成裝置和高階合成方法。注意本發(fā)明的高階合成方法和本發(fā)明的高階合成裝置不局限于下面的實(shí)施例。
實(shí)施例1下面參考圖1到4說明根據(jù)本發(fā)明實(shí)施例1的高階合成裝置和高階合成方法。首先,上述實(shí)施例1的高階合成裝置的結(jié)構(gòu)將參考圖1說明如下。圖1是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例1的高階合成裝置。
示于圖1的高階合成裝置10分配變量至存儲(chǔ)器以便生成邏輯電路,在行為級電路11中描述了從多個(gè)變量中被指定要分配至存儲(chǔ)器的所述變量。
如圖1所示,高階合成裝置10包括引用數(shù)目計(jì)算單元1;位寬提取單元2;存儲(chǔ)器選擇單元3;時(shí)序安排單元4;和資源(resource)分配單元5。行為級電路11是行為性描述中所表示的電路,且該電路用硬件描述語言如Verilog-HDL和編程語言如C語言描述。
引用數(shù)目計(jì)算單元1讀取行為級電路11,規(guī)定行為級電路11中描述的多個(gè)變量中所有被指定分配至存儲(chǔ)器的變量,并為每個(gè)變量計(jì)算引用數(shù)目。引用數(shù)目意味著每個(gè)變量在行為級電路11中被提到的次數(shù)。計(jì)算的引用數(shù)目被輸出到變量信息數(shù)據(jù)庫12,并被存儲(chǔ)在變量信息數(shù)據(jù)庫12中。
位寬提取單元2讀取行為級電路11并提取其引用數(shù)目已通過引用數(shù)目計(jì)算單元1計(jì)算出來的所有變量中的每一個(gè)的位寬,然后選擇能夠以提取的位寬進(jìn)行數(shù)據(jù)轉(zhuǎn)移的多個(gè)存儲(chǔ)器。位寬提取單元2產(chǎn)生所選存儲(chǔ)器的列表(可選存儲(chǔ)器列表),并將其輸出至存儲(chǔ)器信息數(shù)據(jù)庫13。可選存儲(chǔ)器列表被存儲(chǔ)在存儲(chǔ)器信息數(shù)據(jù)庫13中。
由此,可選存儲(chǔ)器列表額外地包括用于識(shí)別所選存儲(chǔ)器(可選存儲(chǔ)器)的識(shí)別信息和關(guān)于存儲(chǔ)器位寬的信息。而且,位寬提取單元2輸出用于為每個(gè)變量指定提取的位寬的信息至存儲(chǔ)器信息數(shù)據(jù)庫13。用于為每個(gè)變量指定提取的位寬的信息存儲(chǔ)在存儲(chǔ)器信息數(shù)據(jù)庫13中以便和可選存儲(chǔ)器關(guān)聯(lián)。
存儲(chǔ)器選擇單元3從可選存儲(chǔ)器中選擇具有合適位寬的存儲(chǔ)器,這成為為每個(gè)指定要分配至存儲(chǔ)器的變量的分配目標(biāo)。在實(shí)施例1中,存儲(chǔ)器選擇單元3讀取存儲(chǔ)器信息數(shù)據(jù)庫13以獲得可選擇存儲(chǔ)器列表和變量的位寬,并進(jìn)一步讀取變量信息數(shù)據(jù)庫12以獲得引用數(shù)目。
而且,在基于所獲得的信息,變量被分配至各個(gè)可選存儲(chǔ)器的情形中,存儲(chǔ)器選擇單元3計(jì)算存儲(chǔ)器存取的頻率之和,同時(shí)參考圖4所示的存儲(chǔ)器存取周期表,這將在后面介紹。而且,存儲(chǔ)器選擇單元3將各個(gè)可選存儲(chǔ)器的頻率彼此比較,并選擇一個(gè)最小化所計(jì)算的頻率之和的存儲(chǔ)器作為分配目標(biāo)。
作為結(jié)果,被分配給行為級電路11中的變量的存儲(chǔ)器,即變量的值將存儲(chǔ)于其中的存儲(chǔ)器被確定。而且,存儲(chǔ)器選擇單元3輸出具有所述變量的行為級電路至電路數(shù)據(jù)庫14,關(guān)于所述變量要被分配到的存儲(chǔ)器已被確定。
更具體地,在實(shí)施例1中,電路數(shù)據(jù)庫14存儲(chǔ)控制關(guān)系和行為級電路11中所描述的操作與變量的關(guān)系,所述關(guān)系由CDFG(控制數(shù)據(jù)流圖),AST(抽象語法樹)等表示。為了這個(gè)目的,存儲(chǔ)器選擇單元3將變量已分配至其中的存儲(chǔ)器的信息(特征)加到電路數(shù)據(jù)庫14的變量中。
注意,在實(shí)施例1中,控制關(guān)系和操作與變量的關(guān)系由CDFG表示。CDFG是由控制流和數(shù)據(jù)流(變量和操作的輸入/輸出關(guān)系)組成的圖(參見圖29)。因此,存儲(chǔ)器選擇單元3將分配了變量的存儲(chǔ)器的信息(特征)加至存儲(chǔ)在電路數(shù)據(jù)庫14中CDFG中的變量節(jié)點(diǎn)。
時(shí)序安排單元4分配所選存儲(chǔ)器并執(zhí)行時(shí)序安排。更具體地,時(shí)序安排單元4從電路數(shù)據(jù)庫14中獲取已經(jīng)確定了存儲(chǔ)器的分配的電路(CDFG),并執(zhí)行關(guān)于所取電路(CDFG)的時(shí)序安排以確定操作的執(zhí)行周期。而且,在完成時(shí)序安排之后,時(shí)序單元4將其操作的執(zhí)行周期已被確定的電路(CDFG)輸出至電路數(shù)據(jù)庫14。
資源分配單元15從電路數(shù)據(jù)庫14中獲取其中操作的執(zhí)行周期已被確定的所述電路(CDFG)。而且,基于此,資源分配單元5執(zhí)行對資源的分配,例如對每個(gè)操作的資源分配,和除存儲(chǔ)器分配的寄存器分配,并生成寄存器轉(zhuǎn)移級或門級邏輯電路。生成的邏輯電路被輸出至外部。注意,在實(shí)施例1中,時(shí)序安排單元4和資源分配單元5經(jīng)配置能執(zhí)行前述“HIGH-LEVEL SYNTHESIS,Introduction to Chipand System Design(高階合成,芯片和系統(tǒng)設(shè)計(jì)導(dǎo)論)”揭示的技術(shù)。
然后,根據(jù)實(shí)施例1的高階合成方法將參考圖2到4說明如下??赏ㄟ^操作示于圖1的根據(jù)實(shí)施例1的高階合成裝置執(zhí)行實(shí)施例1的高階合成方法。因此,下面基于高階合成裝置的操作說明高階合成方法,并在需要時(shí)參考圖1。圖2是流程圖,其示出根據(jù)本發(fā)明實(shí)施例1的高階合成方法。
如圖2所示,首先,引用數(shù)目計(jì)算單元1指定行為級電路11中所描述的變量中所有指定分配至存儲(chǔ)器的變量,并為每個(gè)變量(S1)計(jì)算引用數(shù)目。引用數(shù)目計(jì)算單元1輸出所計(jì)算的引用數(shù)目至變量信息數(shù)據(jù)庫12。
然后,位寬提取單元2提取在步驟S1已經(jīng)為其計(jì)算了引用數(shù)目的每個(gè)變量的位寬,(步驟S2)。而且,位寬提取單元2選擇多個(gè)能以提取的位寬進(jìn)行數(shù)據(jù)轉(zhuǎn)移的存儲(chǔ)器作為可選擇存儲(chǔ)器,產(chǎn)生可選擇存儲(chǔ)器列表,該列表規(guī)定可選擇存儲(chǔ)器并將其輸出至存儲(chǔ)器信息數(shù)據(jù)庫13(步驟S3)。
其后,基于在步驟S1計(jì)算的引用數(shù)目和在步驟S2提取的各個(gè)變量的位寬,當(dāng)在步驟S1規(guī)定的變量被分配至各個(gè)可選擇存儲(chǔ)器時(shí),存儲(chǔ)器選擇單元3計(jì)算存儲(chǔ)器存取頻率的和(步驟S4)。
此后,存儲(chǔ)器選擇單元3作出關(guān)于是否已為所有可選擇存儲(chǔ)器計(jì)算了存儲(chǔ)器存取頻率的和的判斷(步驟S5)。如果沒有為存儲(chǔ)在存儲(chǔ)器信息數(shù)據(jù)庫13中所有可選擇存儲(chǔ)器完成存儲(chǔ)器存取頻率的和的計(jì)算,存儲(chǔ)器選擇單元3再次執(zhí)行步驟S4。另一方面,如果為所有可選擇存儲(chǔ)器完成了存儲(chǔ)器存取頻率的和的計(jì)算,那么存儲(chǔ)器選擇單元3執(zhí)行步驟S6。
在步驟S6,存儲(chǔ)器選擇單元3將在步驟S4中計(jì)算的各個(gè)可選擇存儲(chǔ)器的存取頻率的和相互比較,并選擇最小化存儲(chǔ)器存取的頻率和的可選擇存儲(chǔ)器作為分配目標(biāo)。
而且,存儲(chǔ)器選擇單元3輸出具有所述變量的行為級電路至電路數(shù)據(jù)庫14,關(guān)于所述參數(shù)要分配的存儲(chǔ)器已被確定。以這種方式,通過執(zhí)行步驟S1至S6,可完成行為級電路11中所描述的變量至所述存儲(chǔ)器的分配。
然后,通過時(shí)序安排單元4進(jìn)行時(shí)序安排(步驟S7)和通過資源分配單元5進(jìn)行資源分配,由此生成邏輯電路(步驟S8)。生成的邏輯電路被輸出至外部。
現(xiàn)在參考圖3和圖4,圖2中的步驟S1至S6將更具體地說明如下。圖3示出用于實(shí)施例1中的行為級電路和存儲(chǔ)器存取頻率,其中圖3A示出示例性行為級電路,圖3B示出行為級電路中所描述的變量的引用數(shù)目和寬度,圖3C示出可選擇存儲(chǔ)器的位寬和存儲(chǔ)器存取頻率和。圖4示出存儲(chǔ)器存取周期表,其用于所選存儲(chǔ)器的存取頻率的計(jì)算。
在示于圖3A的例子中的行為級電路中,陣列變量a和b是指定被分配至存儲(chǔ)器的變量。由此,雖然圖3A示出兩個(gè)變量被指定分配至存儲(chǔ)器的情形,指定被分配至存儲(chǔ)器的變量的數(shù)目在本發(fā)明中不特別受到限制。
而且,在圖3A中,陣列變量a是具有aaa結(jié)構(gòu)包括成員變量m1和m2的一個(gè)陣列變量。例如,至于成員變量m1,有引用作為整體的陣列變量a的情形,也有引用單個(gè)成員變量m1的情形。以這種方式,變量具有兩類引用方法。
因此,在步驟S1,如圖3B所示,引用數(shù)目計(jì)算單元1除了指定陣列變量a和b,還指定成員變量a.m1和a.m2作為被指定分配至存儲(chǔ)器的變量。
而且,如圖3B所示,除了計(jì)算圖3A中所示的行為級電路11中的陣列變量a和b(“讀取”和“寫入”)的引用數(shù)目,引用數(shù)目計(jì)算單元1也計(jì)算各個(gè)成員變量a.m1和a.m2的引用數(shù)目。
在圖3A所示的行為級電路11中,成員變量m1和m2的數(shù)據(jù)類型被指定為char型。char型表示變量的位寬是8位。而且,陣列變量a的位寬等于包括在該結(jié)構(gòu)中的所有成員變量的位寬之和。而且,在圖3A所示的行為級電路11中,陣列變量b的數(shù)據(jù)類型被指定為int型,int型表示變量的位寬為32位。
因此,在步驟S2,如圖3B所示,位寬提取單元2提取8位作為成員變量a.m1和a.m2的位寬,提取16位作為陣列變量a的位寬,提取32位作為陣列變量b的位寬。
而且,在步驟S3,位寬提取單元2確定要分配陣列變量a的存儲(chǔ)器的位寬為8位或16位,并確定要分配陣列變量b的存儲(chǔ)器的位寬為32位。
然后,如圖3C所示,位寬提取單元2選擇具有8位位寬的存儲(chǔ)器M1和具有16位位寬的存儲(chǔ)器M2,作為陣列變量a將被分配至其中的存儲(chǔ)器,并選擇具有32位位寬的存儲(chǔ)器M3作為用于陣列變量b的可選擇存儲(chǔ)器。
而且,位寬提取單元2產(chǎn)生可選擇存儲(chǔ)器列表,其中存儲(chǔ)器M1和M3的組合是可選擇存儲(chǔ)器A,存儲(chǔ)器M2和M3的組合是可選擇存儲(chǔ)器B,并輸出可選擇存儲(chǔ)器列表。在圖3C中,“a位寬”指示出陣列變量a將被分配至其中的存儲(chǔ)器的位寬,“b位寬”指示出陣列變量b將被分配至其中的存儲(chǔ)器的位寬。
在步驟S4,存儲(chǔ)器選擇單元3引用圖4中所示的存儲(chǔ)器存取周期表以計(jì)算出關(guān)于各個(gè)可選存儲(chǔ)器的存取頻率和。如圖4所示,存儲(chǔ)器存取周期表示出分配了變量的存儲(chǔ)器的存取頻率,其中為變量位寬(以下縮寫為“BW(變量)”)和存儲(chǔ)器位寬(以下縮寫為“BW(存儲(chǔ)器)”)之間各種大小關(guān)系,并為讀取(讀取)和寫入(寫入)示出所述頻率。圖4中所示的存儲(chǔ)器存取頻率表示引用變量一次所需的存儲(chǔ)器存取周期數(shù)目。
更具體地,存儲(chǔ)器選擇單元3將各個(gè)可選擇存儲(chǔ)器的BW(變量)和BW(存儲(chǔ)器)之間的關(guān)系應(yīng)用到圖4中所示的存儲(chǔ)器存取周期表,以便計(jì)算出關(guān)于各個(gè)可選擇存儲(chǔ)器的變量的一次引用操作所需的存儲(chǔ)器存取頻率,為每次讀取和寫入執(zhí)行該計(jì)算。
而且,存儲(chǔ)器選擇單元3將這些計(jì)算的存儲(chǔ)器存取頻率乘以各個(gè)可選擇存儲(chǔ)器的引用數(shù)目以便計(jì)算出存儲(chǔ)器存取頻率和。注意,在可選擇存儲(chǔ)器包括多個(gè)存儲(chǔ)器組合的情形中,應(yīng)為每個(gè)組合的存儲(chǔ)器執(zhí)行上面的乘法,且計(jì)算出乘積的和。
例如,變量a被分配至存儲(chǔ)器M1(位寬8位)和變量b被分配至存儲(chǔ)器M3(位寬32位)的情形將在下面說明。因?yàn)樽兞縜.m1的位寬和變量a.m2的位寬都是8位,它們彼此相等,從而BW(變量)等于BW(存儲(chǔ)器)。
因此,由圖4,對于讀取和寫入,存儲(chǔ)器存取頻率都變?yōu)椤?”。從圖3B,變量a.m1的引用數(shù)目對讀取和寫入都是“10”。因此,變量a.m1的讀取和寫入都需要10個(gè)周期,這意味著總的需要20個(gè)周期。
相似地,對于變量a.m2,需要10個(gè)周期,對于變量a需要20個(gè)周期。由此,當(dāng)存儲(chǔ)器M1分配給變量a,存儲(chǔ)器存取頻率之和變成50個(gè)周期。同時(shí),當(dāng)存儲(chǔ)器M3被分配給變量b,因?yàn)榇鎯?chǔ)器的位寬是32位,所以總的需要10個(gè)周期。
在此,因?yàn)殛嚵凶兞縜分配至其中的存儲(chǔ)器M1和陣列變量b分配至其中的存儲(chǔ)器M3是獨(dú)立的存儲(chǔ)器,在圖3A中第三個(gè)“for”語句中變量a的讀取和變量b的寫入可同時(shí)執(zhí)行。因此,當(dāng)判斷步驟S5中存儲(chǔ)器的選擇時(shí),可使用存儲(chǔ)器M1的頻率和(參見圖3C)。
然后,變量a被分配至存儲(chǔ)器M2(位寬16位)和變量b被分配至存儲(chǔ)器M3(位寬32位)的情形將說明如下。由圖3B和圖4,當(dāng)存儲(chǔ)器M2被分配給變量a時(shí),所述頻率和變?yōu)?0個(gè)周期。在這個(gè)情形中,變量a的讀取和變量b的寫入也可同時(shí)執(zhí)行,所以在步驟S5中判斷存儲(chǔ)器的選擇時(shí),可使用存儲(chǔ)器M2的頻率和(參見圖3C)。
注意,在圖4中,當(dāng)存儲(chǔ)器位寬大于變量的位寬時(shí)(BW(變量)<BW(存儲(chǔ)器))寫入周期變?yōu)?個(gè)周期。這是因?yàn)橄鄳?yīng)于一次寫入位寬的數(shù)據(jù)應(yīng)先被讀取。
例如,當(dāng)具有16位位寬的存儲(chǔ)器被分配給變量a,則以變量a的單位執(zhí)行寫入操作。因此,即使當(dāng)只對成員變量a.m1執(zhí)行寫入,則也對成員變量a.m2執(zhí)行寫入。因?yàn)檫@個(gè)原因,必須在變量a的數(shù)據(jù)先被讀取之后再執(zhí)行寫入,因此讀取需要一個(gè)周期,寫入需要一個(gè)周期,即總共需要兩個(gè)周期。
在步驟S6,基于示于圖3C的結(jié)果,存儲(chǔ)器選擇單元3選擇存儲(chǔ)器M1(位寬8位)作為變量a的分配目標(biāo),選擇存儲(chǔ)器M3(位寬32位)作為變量b的分配目標(biāo)。
在此,圖3A所示的行為級電路中,當(dāng)具有8位的存儲(chǔ)器被選中時(shí),頻率和變得最小。然而,在不是單個(gè)引用成員變量a.m1和a.m2的情形中,當(dāng)具有32位位寬的存儲(chǔ)器被選中時(shí),總的頻率變得最小。
如上所述,根據(jù)實(shí)施例1,可根據(jù)行為級電路中描述的操作選擇具有最優(yōu)位寬的存儲(chǔ)器。因此,存儲(chǔ)器存取頻率可被最優(yōu)化。
例如,在具有多個(gè)變量引用方法的變量,如C語言中的結(jié)構(gòu)變量,被分配給存儲(chǔ)器的情況中,即使有多個(gè)具有不同位寬的存儲(chǔ)器可作為分配目標(biāo),能夠最小化存儲(chǔ)器存取頻率的存儲(chǔ)器被選為分配目標(biāo)。因此,不同于傳統(tǒng)高階合成裝置和高階合成方法,實(shí)施例1允許獲得最優(yōu)時(shí)序安排結(jié)果。
通過在計(jì)算機(jī)中安裝一個(gè)能實(shí)施圖2中的步驟S1到S8的程序,并執(zhí)行該程序,可以實(shí)施實(shí)施例1的高階合成裝置。在這種情形中,計(jì)算機(jī)的CPU(中央處理單元)用作引用數(shù)目計(jì)算單元;位寬提取單元;存儲(chǔ)器選擇單元;時(shí)序安排單元;和資源分配單元,以及執(zhí)行相應(yīng)的處理。
而且,在實(shí)施例1中,變量信息數(shù)據(jù)庫12,對于存儲(chǔ)器信息數(shù)據(jù)庫13和電路數(shù)據(jù)庫14,可通過將整理(making up)這些數(shù)據(jù)庫的數(shù)據(jù)文件存儲(chǔ)在計(jì)算機(jī)提供的存儲(chǔ)裝置,如硬盤中,或通過安裝一個(gè)將該數(shù)據(jù)文件存儲(chǔ)在讀取裝置中并和計(jì)算機(jī)連接的記錄介質(zhì)來使用這些數(shù)據(jù)庫。而且,可通過不同于構(gòu)成引用數(shù)目計(jì)算單元1等的計(jì)算機(jī)的計(jì)算機(jī)來實(shí)現(xiàn)這些數(shù)據(jù)庫。下面的實(shí)施例2到8中的高階合成裝置也可通過類似于實(shí)施例1的高階合成裝置的計(jì)算機(jī)而實(shí)現(xiàn)。
實(shí)施例2現(xiàn)參考圖5到9,根據(jù)本發(fā)明實(shí)施例2的高階合成裝置和高階合成方法將說明如下。首先,將參考圖5說明根據(jù)本發(fā)明的高階合成裝置的結(jié)構(gòu)。圖5是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例2的高階合成裝置的結(jié)構(gòu)。
如圖5所示,實(shí)施例2的高階合成裝置20包括變量分離單元21,這是其與圖1所示的實(shí)施例1的高階合成裝置10不同之處。實(shí)施例2的高階合成裝置20其余的結(jié)構(gòu)類似于示于圖1中實(shí)施例1的高階合成裝置10。
變量分離單元21將行為級電路11中所描述的變量分離成多個(gè)變量以生成新的變量。用這些新的變量,變量分離單元21修改行為級電路11。而且,不同于實(shí)施例1,實(shí)施例2的引用數(shù)目計(jì)算單元1和位寬提取單元2讀取被變量分離單元21修改的行為級電路22(以下稱為“修改的行為級電路”)以繼續(xù)處理。
由變量分離單元21執(zhí)行的變量分離將說明如下。在實(shí)施例2中,有兩種方法用于通過變量分離單元21分離變量,包括存取集中方法(access concentration method)和存取分布方法(access distributionmethod)。
根據(jù)存取集中方法,在同一區(qū)段中描述的包括在行為級電路11中同一陣列變量或結(jié)構(gòu)變量中的多個(gè)變量被分配至另一個(gè)陣列變量或結(jié)構(gòu)變量,而不在同一區(qū)段描述的多個(gè)變量的每一個(gè)都分配至不同的陣列變量或結(jié)構(gòu)變量。根據(jù)存取分布方法,在同一區(qū)段被描述的包括在行為級電路11中的同一陣列變量或結(jié)構(gòu)變量中的多個(gè)變量的每一個(gè)被分配至不同的陣列變量或結(jié)構(gòu)變量。
例如,當(dāng)結(jié)構(gòu)變量通過存取集中方法被分離時(shí),從而在同一區(qū)段描述的多個(gè)成員變量被分配至一個(gè)存儲(chǔ)器,不在同一區(qū)段描述的多個(gè)成員變量的每一個(gè)被分配至不同的存儲(chǔ)器,在恒定的時(shí)間段內(nèi)對多個(gè)存儲(chǔ)器的存取集中到對一個(gè)存儲(chǔ)器上,因此使得其它不操作的存儲(chǔ)器在該時(shí)間段暫停。
另一方面,當(dāng)結(jié)構(gòu)變量被存取分布方法分離時(shí),在恒定的時(shí)間段內(nèi)對不同的存儲(chǔ)器執(zhí)行存取,因此使得可以對不同存儲(chǔ)器同時(shí)存取,并降低存儲(chǔ)器存取頻率。
以這種方式,根據(jù)變量分離方法可獲得不同效果,且變量分離單元21可按照對作為最終產(chǎn)品的LSIs的要求指定分離方法。
現(xiàn)參考圖6到8,實(shí)施例2的高階合成方法將說明如下。根據(jù)實(shí)施例2的高階合成方法可通過操作圖5所示的實(shí)施例2的高階合成裝置來執(zhí)行。因此,下面將根據(jù)高階合成裝置的操作介紹高階合成方法,并在需要時(shí)參考圖5。
圖6是流程圖,其示出根據(jù)本發(fā)明實(shí)施例2的高階合成方法。圖7示出用于實(shí)施例2的示例性行為級電路,其中圖7A示出變量分離之前的狀態(tài),而圖7B示出變量分離之后的狀態(tài)。
圖8指示出在變量分離已執(zhí)行的情形和變量分離沒有執(zhí)行的情形中的頻率之和。圖8A示出變量分離已執(zhí)行的情形的變量引用數(shù)目和位寬,圖8B示出變量分離已執(zhí)行的情形的可選擇存儲(chǔ)器的位寬和頻率和。圖8C示出變量分離沒有執(zhí)行的情形的可選擇存儲(chǔ)器的位寬和頻率和。
如圖6所示,首先,被分離單元21指定多個(gè)變量中同一區(qū)段中描述的變量,所述多個(gè)變量包括在行為級電路11中描述的陣列變量或結(jié)構(gòu)變量(步驟S101)。
更具體地,在行為級電路11如圖7A所示的情形中,變量分離單元21指定包括在結(jié)構(gòu)變量aaa中的多個(gè)成員變量(a.m1,a.m2,a.m3,a.m4)中在同一區(qū)段中描述的變量。
在實(shí)施例2中,重復(fù)過程規(guī)定的區(qū)段被認(rèn)為是同一區(qū)段,且根據(jù)變量是否描述于一個(gè)for語句中來判斷該變量是否在同一區(qū)段中描述。因此,a.m1和a.m3被判斷為描述于同一區(qū)段,且a.m2和a.m4被判斷為描述于同一區(qū)段。
然后,變量分離單元21分離描述于行為級電路11中的陣列變量或結(jié)構(gòu)變量,并生成由包括在分離結(jié)果中的變量組成的新的變量(步驟S102)。而且,變量分離單元21產(chǎn)生修改的行為級電路22,其中新的變量被描述(參見圖7B)。
在實(shí)施例2中,變量分離單元21分離結(jié)構(gòu)變量并產(chǎn)生由包括在分離結(jié)果中的成員變量組成新的結(jié)構(gòu)變量。而且,變量分離單元21通過存取分布方法分離變量,所以組成新變量的各個(gè)成員變量不在同一區(qū)段中描述。
更具體地,如圖7B所示,變量分離單元21分離結(jié)構(gòu)變量aaa并產(chǎn)生由不在同一區(qū)段中描述的a.m1和a.m2組成的結(jié)構(gòu)變量aaa1,和由不在同一區(qū)段中描述的a.m3和a.m4組成的結(jié)構(gòu)變量aaa2。
然后,引用數(shù)目計(jì)算單元1讀取修改的行為級電路22。接著,引用數(shù)目計(jì)算單元1指定所有被指定分配至存儲(chǔ)器的變量,并為各個(gè)變量計(jì)算引用數(shù)目(步驟S11)。
除了讀取修改的行為級電路22,步驟S11的執(zhí)行類似于實(shí)施例1的步驟S1。而且,如圖8A中表的第二列和第三列所示,計(jì)算結(jié)構(gòu)變量aaa1的成員變量a1.m1和a1.m2的引用數(shù)目和結(jié)構(gòu)變量aaa2的成員變量a2.m3和a2.m4的引用數(shù)目,也計(jì)算陣列變量a1,a2和b的引用數(shù)目。
其后,位寬提取單元2讀取修改的行為級電路22并提取在步驟S11中已計(jì)算出其引用數(shù)目的變量的位寬(步驟S12),如圖8A的表中第四列所示。除了位寬提取單元2讀取修改的行為級電路22,步驟S12的執(zhí)行類似于實(shí)施例1的步驟S2。
而且,位寬提取單元2選擇存儲(chǔ)器作為可選擇存儲(chǔ)器,并產(chǎn)生指定可選擇存儲(chǔ)器的可選擇存儲(chǔ)器列表(步驟S13)。而且,位寬提取單元2輸出可選擇存儲(chǔ)器列表至存儲(chǔ)器信息數(shù)據(jù)庫13。
在實(shí)施例2中,位寬提取單元2選擇存儲(chǔ)器M11(8位)和存儲(chǔ)器M12(16位)作為分配陣列變量a1的存儲(chǔ)器,選擇存儲(chǔ)器M13(8位)和存儲(chǔ)器M14(16位)作為分配陣列變量a2的存儲(chǔ)器,并選擇存儲(chǔ)器M15(32位)作為分配陣列變量b的存儲(chǔ)器。
而且,位寬提取單元2產(chǎn)生并輸出可選擇存儲(chǔ)器列表以便指定存儲(chǔ)器M11,M13和M15的組合作為可選擇存儲(chǔ)器A,指定存儲(chǔ)器M11,M14和M15的組合作為可選擇存儲(chǔ)器B,指定存儲(chǔ)器M12,M13和M15的組合作為可選擇存儲(chǔ)器C,指定存儲(chǔ)器M12,M14和M15的組合作為可選擇存儲(chǔ)器D。
其后,類似于實(shí)施例1的步驟S4,存儲(chǔ)器選擇單元3訪問示于圖4中的周期表并計(jì)算圖8B中第四列所示的存儲(chǔ)器存取頻率之和(步驟S14)。
注意,還是在實(shí)施例2中,陣列變量a1被分配至其中的存儲(chǔ)器,陣列變量a2被分配至其中的存儲(chǔ)器和陣列變量b被分配至其中的存儲(chǔ)器是分離的存儲(chǔ)器。因此各個(gè)陣列變量的讀取和寫入可在圖7B中所示的“for”語句中同時(shí)執(zhí)行。因此,陣列變量的最大的頻率和被填入圖8C所示的存儲(chǔ)器存取的“總頻率”字段。
然后,類似于實(shí)施例1的步驟S5,存儲(chǔ)器選擇單元3作出關(guān)于是否已經(jīng)為所有可選擇存儲(chǔ)器計(jì)算存儲(chǔ)器存取頻率的判斷。
如果沒有為所有可選擇存儲(chǔ)器完成存儲(chǔ)器存取頻率和的計(jì)算,存儲(chǔ)器選擇單元3再次執(zhí)行步驟S14。另一個(gè)方面,如果已經(jīng)為所有可選擇存儲(chǔ)器完成存儲(chǔ)器存取頻率和的計(jì)算,那么存儲(chǔ)器選擇單元3執(zhí)行步驟S16。
在步驟S16,類似于實(shí)施例1中的步驟S6,存儲(chǔ)器選擇單元3比較可選擇存儲(chǔ)器A到D的頻率和,并選擇最小化存儲(chǔ)器存取頻率和的可選擇存儲(chǔ)器作為分配目標(biāo)。
此后,類似于實(shí)施例1,通過時(shí)序安排單元4的時(shí)序安排(步驟S17),通過資源分配單元5的資源分配等被執(zhí)行,由此,產(chǎn)生邏輯電路(步驟S18)。產(chǎn)生的邏輯電路被輸出至外部。
然后檢查步驟S101和步驟S102沒有執(zhí)行的情形,其意味著變量分離沒有執(zhí)行。在這種情形中,為陣列變量a(參見圖7A)和陣列變量b選擇可選擇存儲(chǔ)器A’和B’。這種情形中存儲(chǔ)器存取頻率示于圖8C中。
如同可從圖8B和圖8C中所看到的那樣,變量沒有分離的情形要求至少70個(gè)周期,然而,在變量分離的情形中可降低頻率至40個(gè)周期。以這種方式,根據(jù)實(shí)施例2,結(jié)構(gòu)變量可分離,且同一區(qū)段所描述的成員變量的每一個(gè)都被分配至不同的存儲(chǔ)器,因此相對實(shí)施例1頻率可進(jìn)一步降低。
雖然,如上所述,實(shí)施例2的變量分離單元21通過存取分布方法分離變量,變量也可通過存取集中方法分離,通過變量集中方法,例如變量被分離成包括a.m1和a.m3的結(jié)構(gòu)變量和包括a.m2和a.m4的結(jié)構(gòu)變量。
在這種情形中,a.m1和a.m3被分配至同一存儲(chǔ)器,a.m2和a.m4也被分配至同一存儲(chǔ)器,因此,增加了每個(gè)存儲(chǔ)器都不被使用的時(shí)間段。所以,在該時(shí)間段存儲(chǔ)器可以暫停,從而使得LSI的功率消耗降低。
雖然實(shí)施例2中的同一區(qū)段被指定為用for語句描述的區(qū)段,該同一區(qū)段不局限于此。例如,行為級電路11中或修改的行為級電路22中的基本模塊可被定義為所述同一區(qū)段。
或者,時(shí)序安排單元4可執(zhí)行與步驟S17中的時(shí)序安排不同的嘗試性時(shí)序安排,且可從該嘗試性時(shí)序安排的結(jié)果判斷為在同一周期存取的多個(gè)成員變量可被定義為在同一區(qū)段描述的變量。
下面介紹一個(gè)實(shí)施例,其中時(shí)序安排單元4執(zhí)行嘗試性時(shí)序安排。即使在用于嘗試性時(shí)序安排的實(shí)施例中,高階合成裝置具有類似于圖5中的結(jié)構(gòu)。然而,從變量分離單元21(參見圖5)和時(shí)序安排單元4(參見圖5)的操作看,該裝置不同圖5中所示的高階合成裝置。因此,執(zhí)行高階合成方法的步驟也和圖6中所示的不同。
現(xiàn)參考圖9,實(shí)施例2的執(zhí)行嘗試性時(shí)序安排的高階合成方法將介紹如下。圖9是實(shí)施例2的執(zhí)行嘗試性時(shí)序安排的高階合成方法的流程圖。下面的介紹中在需要時(shí)也會(huì)參考圖5。
如圖9所示,首先,時(shí)序安排單元4執(zhí)行嘗試性時(shí)序安排(步驟S111)。更具體地,時(shí)序安排單元4將行為級電路11中所描述的所有變量中的每一個(gè)分配至不同的存儲(chǔ)器,以執(zhí)行行為級電路11的執(zhí)行周期的時(shí)序安排。
然后,變量分離單元21指定在同一區(qū)段描述的變量(步驟S112)。更具體地,首先,基于步驟S111的嘗試性時(shí)序安排結(jié)果,變量分離單元21指定存取陣列變量或結(jié)構(gòu)變量的執(zhí)行周期。而且,變量分離單元21指定在執(zhí)行周期的預(yù)定頻率范圍內(nèi)存取的變量,由此作出這些變量是否在同一區(qū)段被描述的判斷。
例如,在執(zhí)行周期的頻率范圍被設(shè)為3的情形中,如果圖7A中所示的“a[i].m1”的執(zhí)行周期是周期1,而“a[i].m3”的執(zhí)行周期是周期3,那么存取可在頻率范圍3內(nèi)執(zhí)行。結(jié)果,變量被判斷為在同一區(qū)段被描述。
然后,基于步驟S112的結(jié)果,變量分離單元21分離變量(步驟S113)。此后,類似于圖6中的例子,執(zhí)行步驟S11到步驟S18。在該實(shí)施例中,描述于同一區(qū)段的變量可被分配至不同存儲(chǔ)器,因此和實(shí)施例1相比,頻率進(jìn)一步被降低。
實(shí)施例3現(xiàn)參考圖10至20,根據(jù)本發(fā)明實(shí)施例3的高階合成裝置和高階合成方法將說明如下。
根據(jù)實(shí)施例3的高階合成裝置和高階合成方法不僅能夠?qū)崿F(xiàn)變量分離,而且能夠?qū)崿F(xiàn)包括在同一陣列變量或結(jié)構(gòu)變量內(nèi)的多個(gè)變量(成員變量和陣列變量)的整合(integration),以生成新變量(變量整合)。而且,雖然描述于行為級電路中的結(jié)構(gòu)變量和實(shí)施例2中的成員變量是分離的,實(shí)施例3使描述于行為級電路中的陣列變量能夠和陣列元素分離。
圖10是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例3的高階合成裝置的示例性結(jié)構(gòu)。圖11示出用于實(shí)施例3中的示例性行為級電路,其中圖11A示出在變量整合之前的狀態(tài),圖11B示出變量整合之后的狀態(tài)。
如圖10所示,高階合成裝置30包括變量整合裝置31,其與示于圖5的實(shí)施例2中的高階合成裝置不同。高階合成裝置30的其余結(jié)構(gòu)與圖5中的實(shí)施例2中的高階合成裝置相似。變量整合單元31整合行為級電路11中描述的包括在多個(gè)陣列變量或結(jié)構(gòu)變量中的多個(gè)變量,以生成新的變量。更具體地,變量整合單元31整合行為級電路11中描述的包括在同一陣列變量中的多個(gè)陣列元素中某些元素以生成新的變量。
例如,在圖11A所示的行為級電路11中,陣列變量a的陣列元素a[i]和a[i+1]描述于同一for語句,因此這些成員可在同一時(shí)間存取。因此,如圖11B所示,變量整合單元31整合a[i]和a[i+1]以生成新的變量aaa。
當(dāng)通過操作圖10中高階合成裝置30執(zhí)行高階合成方法時(shí),變量整合是通過變量整合單元31而非圖6中所示的實(shí)施例2的步驟S102執(zhí)行的。在這種情形中,引用數(shù)目計(jì)算單元1和位寬提取單元2讀取經(jīng)變量整合之后的修改的行為級電路32(參見圖11B)。其它步驟的執(zhí)行與實(shí)施例2的高階合成方法相似。
圖12示出變量整合已執(zhí)行的情形和變量整合未執(zhí)行的情形中,變量的位寬和引用數(shù)目并示出可選擇存儲(chǔ)器的位寬和頻率和。圖12A示出變量整合沒有執(zhí)行的情形,圖12B示出變量整合已執(zhí)行的情形。
在變量整合單元31(參見圖10)執(zhí)行關(guān)于行為級電路11(參見圖11A)的變量整合情形中,在修改的行為級電路32(參見圖11B)中描述的陣列變量a分配給16位存儲(chǔ)器(可選擇存儲(chǔ)器A)。在這種情形中,如圖12B所示,存儲(chǔ)器存取頻率和變?yōu)?0個(gè)周期。
另一個(gè)方面,如圖12A所示,在沒有關(guān)于行為級電路11(參見圖11A)執(zhí)行變量整合,且可選擇存儲(chǔ)器A’被分配的情形中,存儲(chǔ)器存取頻率和總共變?yōu)榈?0個(gè)周期,包括10個(gè)周期的a[i]和10個(gè)周期的a[i+1]。雖然在圖12A的例子中8位存儲(chǔ)器被分配給陣列變量a,即使當(dāng)16位存儲(chǔ)器而不是8位存儲(chǔ)器被分配,存儲(chǔ)器存取頻率將為12個(gè)周期(參見圖4)。
以這種方式,類似于實(shí)施例2,和實(shí)施例1相比,實(shí)施例3也使得頻率的進(jìn)一步減少。
而且,圖10中所示的實(shí)施例3的高階合成裝置30可具有變量分離單元而非變量整合單元31,該變量分離單元能將圖11A所示的行為級電路11中描述的陣列變量a的陣列元素分離。
圖13示出陣列變量的陣列元素分離后,行為級電路,變量的位寬和引用數(shù)目及可選擇存儲(chǔ)器的位寬及頻率和,其中圖13A示出圖11A中所示的行為級電路經(jīng)變量分離后的狀態(tài),圖13B示出當(dāng)變量分離執(zhí)行后,變量的位寬和引用數(shù)目,及可選擇存儲(chǔ)器的位寬和頻率和。
如圖13所示,當(dāng)示于圖11A的陣列變量a經(jīng)過陣列元素分離以產(chǎn)生陣列變量a1和a2,每個(gè)產(chǎn)生的陣列變量的位寬為8位。而且,每個(gè)所述陣列變量可被分配至8位存儲(chǔ)器M21或M22(可選擇存儲(chǔ)器A),且這些存儲(chǔ)器可獨(dú)立存取,因此存儲(chǔ)器存取頻率和為10個(gè)周期。
可從圖13中看到,類似于變量整合的情形,這個(gè)實(shí)施例也可降低頻率,并且和實(shí)施例1相比較,可進(jìn)一步降低頻率。
下面說明根據(jù)實(shí)施例3的另一個(gè)示例性高階合成裝置和高階合成方法。圖14是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例3的高階合成裝置的結(jié)構(gòu)。圖15示出用在實(shí)施例3中的示例性行為級電路,其中圖15A示出在變量分離和變量整合之前的狀態(tài),圖15B示出在變量分離和變量整合之后的狀態(tài)。
如圖14所示,高階合成裝置33具有變量分離/整合單元34,這是與圖5所示的實(shí)施例2中的高階合成裝置20不同之處。高階合成裝置33余下的結(jié)構(gòu)和圖5所示的高階合成裝置20類似。變量分離/整合單元34首先整合包括在在行為級電路11中描述的多個(gè)陣列變量或結(jié)構(gòu)變量中的多個(gè)變量,以生成新的陣列變量或結(jié)構(gòu)變量。另外,變量分離/整合單元34分離這些新陣列變量或結(jié)構(gòu)變量,以產(chǎn)生由包括在分離結(jié)果中的多個(gè)變量組成的新變量。也就是,分離/聯(lián)合單元34使得能夠?qū)崿F(xiàn)變量分離和變量整合。
在實(shí)施例3中,變量分離/聯(lián)合單元34整合包括在二階陣列變量a中(參見圖15A)的多個(gè)陣列元素,以生成新的陣列變量(未示出),并分離這個(gè)新陣列變量以生成由包括在分離結(jié)果中的陣列元素組成(參見圖15B)的新的陣列變量a1和a2。
當(dāng)通過操作示于圖14的高階合成裝置33而執(zhí)行高階合成方法時(shí),變量整合和變量分離可通過變量分離/聯(lián)合單元34而不是示于圖6中的實(shí)施例2的步驟S102執(zhí)行。在這個(gè)情形中,引用數(shù)目計(jì)算單元1和位寬提取單元2讀取經(jīng)過變量分離和變量整合的修改的行為級電路35(參見圖15B)。其它步驟的執(zhí)行類似于實(shí)施例2的高階合成方法。
根據(jù)這樣的使得能夠?qū)崿F(xiàn)變量分離和變量整合的實(shí)施例,在示于圖15A的行為級電路的情形中,其中描述了存取這個(gè)陣列變量的順序不同的二階或更高階陣列變量和多個(gè)重復(fù)循環(huán)(repetition loops),執(zhí)行于各個(gè)重復(fù)循環(huán)的重復(fù)的處理可被略去,因此降低了頻率。
圖16示出變量整合和變量分離已執(zhí)行的情形及變量整合和變量分離未執(zhí)行的情形中,變量的位寬和引用數(shù)目,并示出可選擇存儲(chǔ)器的位寬和頻率和。圖16A示出變量整合和變量分離沒有執(zhí)行的情形,圖16B示出變量整合和變量分離已執(zhí)行的情形。
如圖16B所示,在變量分離/聯(lián)合單元34(參見圖14)執(zhí)行關(guān)于行為級電路11的變量整合和變量分離(參見圖14和圖15)情況下,描述于修改的行為級電路35的陣列變量a1和a2可分配給16位存儲(chǔ)器M31或M32(可選擇存儲(chǔ)器A)(參見圖15B)。這些存儲(chǔ)器可獨(dú)立地存取,因此,在這種情形中,存儲(chǔ)器的存取頻率和變?yōu)?00個(gè)周期。
另一個(gè)方面,如圖16A所示,在沒有對行為級電路11(參見圖11A)執(zhí)行變量分離和變量整合的情形中,陣列變量a被分配至8位存儲(chǔ)器(可選擇存儲(chǔ)器A’),因此,存儲(chǔ)器的存取頻率和變?yōu)?00個(gè)周期。雖然在圖16A的例子中,8位存儲(chǔ)器被分配給陣列變量a,即使分配16位存儲(chǔ)器而不是這個(gè)存儲(chǔ)器,存儲(chǔ)器存取頻率將是800個(gè)周期(參見圖4)。
以這種方式,類似于實(shí)施例2,與實(shí)施例1相比,該實(shí)施例使得進(jìn)一步降低頻率。
下面繼續(xù)說明另一個(gè)根據(jù)實(shí)施例3的示例性高階合成裝置和高階合成方法。圖17是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例3的高階合成裝置的結(jié)構(gòu)。圖18示出用于實(shí)施例3的示例性行為級電路,其中圖18A示出變量分離之前的狀態(tài),圖18B示出變量分離之后的狀態(tài)。
如圖17所示,高階合成裝置36包括依賴性分析單元37和變量分離單元38,這是與示于圖5中實(shí)施例2的高階合成裝置20不同之處。該高階合成裝置36的其余結(jié)構(gòu)類似于圖5所示的高階合成裝置20。
依賴性分析單元37執(zhí)行關(guān)于在行為級電路11中描述的陣列變量或結(jié)構(gòu)變量的依賴性分析,并判斷這些變量中的任意變量之間是否具有依賴性。如果有依賴性,依賴性分析單元37計(jì)算具有依賴性的變量之間的距離矢量。而且,依賴性分析單元37輸出用于指示依賴性的有無的信息和計(jì)算的距離矢量至變量依賴性信息數(shù)據(jù)庫15。
變量分離單元38從變量依賴性信息數(shù)據(jù)庫15取信息,并確認(rèn)依賴性的有無。如果有依賴性,變量分離單元38基于計(jì)算的距離矢量,指定構(gòu)成新變量的變量,并執(zhí)行變量分離。在這方面變量分離單元38和圖5所示的變量分離單元21不同。如果在變量之間沒有依賴性,通過指定在同一區(qū)段描述的變量,變量分離單元38可以和圖5所示的變量分離單元21相同的方式執(zhí)行變量分離。
更具體地,在示于圖18A的行為級電路11的情形中,依賴性分析單元37判斷在陣列元素a[i]和a[i+1]之間有依賴性。這個(gè)情形中,變量分離單元38執(zhí)行關(guān)于陣列變量a的變量分離。在此,距離矢量是1,變量分離單元38將相間隔的元素分離為如圖18B所示的彼此不同的變量。因此,產(chǎn)生新陣列變量a1和a2。
注意,按照Nakata在Asakura shoten(1999)出版的“Structure andOptimization of Compiler”中的解釋,可通過由陣列元素的指標(biāo)變量確定丟番圖(Diophantine)方程,并通過解該方程而執(zhí)行陣列元素的依賴性分析。
下面說明示于圖17中的高階合成裝置36的操作。實(shí)施例3的高階合成方法也可通過操作高階合成裝置36而執(zhí)行。圖19是流程圖,其示出圖17所示的高階合成裝置的操作。下面的說明在需要時(shí)就參考圖17。
如圖19所示,首先,依賴性分析單元37執(zhí)行關(guān)于行為級電路11中所描述的陣列變量或結(jié)構(gòu)變量的依賴性分析(步驟S121),并輸出依賴性分析的結(jié)果至變量依賴性信息數(shù)據(jù)庫15。
其后,變量分離單元38確認(rèn)依賴性的有無(步驟S122)。如果沒有依賴性,類似于圖6所示的步驟S101,變量分離單元38指定描述于同一區(qū)段的變量(步驟S124),此后,類似于圖6所示的步驟S102變量分離單元38執(zhí)行變量分離(步驟S125)。
另一個(gè)方面,如果有依賴性,基于所計(jì)算的距離矢量,變量分離單元38指定構(gòu)成新變量(陣列變量)的變量(步驟S123),并執(zhí)行變量分離(步驟S125)。在此,在步驟S125,產(chǎn)生修改的行為級電路39,在該修改的行為級電路39上變量分離單元38執(zhí)行變量分離。
此后,基于修改的行為級電路39,計(jì)算引用數(shù)目(步驟S11),且提取位寬(步驟S12)。而且,類似于圖6中的例子,執(zhí)行步驟S13到步驟S18。
圖20示出在變量分離已執(zhí)行的情形和變量分離未執(zhí)行的情形中,變量的位寬和引用數(shù)目,并示出可選擇存儲(chǔ)器的位寬和頻率和。圖20A示出變量分離未執(zhí)行的情形,而圖20B示出變量分離已執(zhí)行的情形。
如圖20B所示,在變量分離單元38(參見圖17)執(zhí)行關(guān)于行為級電路11(參見圖18A)的變量分離的情形中,可以為在修改的行為級電路39(參見圖18B)中描述的每個(gè)陣列變量a1和a2分配8位存儲(chǔ)器。在這種情形中,存儲(chǔ)器存取頻率和變?yōu)?0個(gè)周期。
另一個(gè)方面,如圖20A所示,在沒有對行為級電路11(參見圖11A)執(zhí)行變量分離的情形中,只有一個(gè)8位存儲(chǔ)器可被分配給陣列a,因此存儲(chǔ)器存取頻率和變?yōu)?0個(gè)周期。
以這種方式,類似于實(shí)施例2,與實(shí)施例1相比,該實(shí)施例也使得頻率進(jìn)一步降低。
此外,根據(jù)實(shí)施例3,陣列變量可與陣列元素分離或聯(lián)合,因此可增加用于分配存儲(chǔ)器的變化。作為結(jié)果,可獲得一種可實(shí)現(xiàn)降低頻率的用于分配存儲(chǔ)器的方法。
實(shí)施例4現(xiàn)參考圖21到23,根據(jù)本發(fā)明實(shí)施例4的高階合成裝置和高階合成方法將說明如下。首先,將參考圖21說明根據(jù)實(shí)施例4的高階合成裝置的結(jié)構(gòu)。圖21是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例4的高階合成裝置的結(jié)構(gòu)。
如圖21所示,根據(jù)實(shí)施例4的高階合成裝置包括變量組設(shè)定單元41,這是與圖1所示的實(shí)施例1的高階合成裝置10不同之處。而且,高階合成裝置40的位寬提取單元42在功能上不同于示于圖1的高階合成裝置10的位寬提取單元2。至于其余方面,高階合成裝置40類似于圖1中的高階合成裝置10配置。
變量組設(shè)定單元41設(shè)定一個(gè)或多個(gè)由描述于行為級電路11中的變量組成的變量組。為了這個(gè)目的,位寬提取單元42提取變量組的位寬和不構(gòu)成變量組的變量的位寬。而且,位寬提取單元42選擇多個(gè)存儲(chǔ)器(可選擇存儲(chǔ)器)作為變量組和不構(gòu)成變量組的變量的分配目標(biāo)。
下面介紹通過變量組設(shè)定單元41執(zhí)行的變量組的設(shè)定。在實(shí)施例4中,有兩種通過變量組設(shè)定單元41執(zhí)行的設(shè)定變量組的方法,包括集中分組方法;和分布分組方法。
根據(jù)集中分組方法,變量組是由行為級電路11中描述于同一區(qū)段的變量構(gòu)成。根據(jù)分布分組方法,變量組是由行為級電路11中不在同一區(qū)段描述的變量構(gòu)成。根據(jù)分布分組方法,多個(gè)描述于同一區(qū)段的變量每個(gè)都構(gòu)成不同變量組。
例如,在由集中分組方法設(shè)定多個(gè)組,并且每個(gè)變量組分配不同存儲(chǔ)器的情形中,在一個(gè)恒定的時(shí)間段內(nèi)對存儲(chǔ)器的存取集中于一個(gè)存儲(chǔ)器,因此使得其它不被操作存儲(chǔ)器在該時(shí)間段暫停。
另一個(gè)方面,當(dāng)通過分布分組方法設(shè)定多個(gè)組時(shí),可對不同存儲(chǔ)器同時(shí)進(jìn)行存取,因此降低存儲(chǔ)器的存取頻率。
以這種方式,根據(jù)變量分組方法獲得不同效果,且變量分組設(shè)定單元41可按照作為最終產(chǎn)品的LSIs所要求的效果指定分組方法。
而且,作為設(shè)定變量組的方法,集中分組方法包括這樣一種方法,其中在多個(gè)變量組中構(gòu)成每個(gè)變量組的變量的數(shù)目是一致的,還包括在多個(gè)變量組中構(gòu)成每個(gè)變量組的變量的數(shù)目不一致的方法。
在采用前一個(gè)設(shè)定方法的情形中,因?yàn)榇鎯?chǔ)器使用率對各個(gè)變量組一致,可使用同一尺寸的存儲(chǔ)器。因此,可獲得有利于LSI布局的優(yōu)勢。
另一個(gè)方面,在采用后一個(gè)設(shè)定方法的情形中,因?yàn)樽兞康臄?shù)目在各個(gè)變量組中不同,具有短引用周期的變量組可被設(shè)定。因此,在恒定時(shí)間段內(nèi)存取的存儲(chǔ)器的數(shù)目可被降低,所以可以使增加使存儲(chǔ)器暫停的的時(shí)間段。
而且,在實(shí)施例4中,可為變量組設(shè)定單元41允許設(shè)定的變量組數(shù)目設(shè)定上限。當(dāng)為變量組數(shù)目設(shè)定了上限時(shí),可避免要分配的存儲(chǔ)器數(shù)目增加的情形,而這種情形會(huì)增加會(huì)增加LSI的開銷面積(anarea of an overhead)。
現(xiàn)參考圖22到23,根據(jù)實(shí)施例4的高階合成方法將說明如下??赏ㄟ^操作示于圖21的根據(jù)實(shí)施例4的高階合成裝置40執(zhí)行實(shí)施例4的高階合成方法。因此,下面根據(jù)高階合成裝置的操作來說明高階合成方法,同時(shí)在需要時(shí)參考圖21。
圖22是流程圖,其示出根據(jù)本發(fā)明實(shí)施例4的高階合成方法。圖23示出用于實(shí)施例4的行為級電路,變量的位寬和存儲(chǔ)器存取頻率,其中圖23A示出示例性行為級電路,圖23B示出在圖23A所示的行為級電路中描述的變量的引用數(shù)目和位寬,圖23C示出每個(gè)可選擇存儲(chǔ)器的存取頻率和。
如圖22所示,首先,引用數(shù)目計(jì)算單元1讀取行為級電路11以便計(jì)算描述于行為級電路11的每個(gè)變量的引用數(shù)目(步驟S21)。注意,以類似于圖2中的步驟S1的方式執(zhí)行步驟S21。
更具體地,在示于圖23A的行為級電路11的情形中,計(jì)算出關(guān)于陣列變量a和b及成員變量a.m1,a.m2,a.m3,a.m4,b.n1和b.n2的引用數(shù)目。
然后,變量組設(shè)定單元41判斷在步驟S21規(guī)定的各個(gè)變量是否描述于同一區(qū)段,并基于該判斷結(jié)果,設(shè)定變量組(步驟S22)。在實(shí)施例4中,類似于實(shí)施例2,關(guān)于變量是否被描述于同一區(qū)段的判斷可根據(jù)變量是否在一個(gè)for語句被描述而做出。
在圖22的例子中,變量組設(shè)定單元41采用分布分組方法,其中沒有在同一區(qū)段中描述的變量構(gòu)成變量組。在示于圖23A的行為級電路中,陣列變量a和b沒有在同一for語句中描述。也就是,這些變量沒有描述于同一區(qū)段。因?yàn)檫@個(gè)原因,在圖22的例子中,變量組設(shè)定單元41設(shè)定由陣列變量a和b組成的組g1,如圖23B所示。
然后,位寬提取單元42提取關(guān)于變量組和不構(gòu)成變量組的變量的位寬(步驟S23),而且產(chǎn)生可選擇存儲(chǔ)器列表,其中選擇了作為可選擇存儲(chǔ)器的存儲(chǔ)器(步驟S24)。而且,位寬提取單元42輸出可選擇存儲(chǔ)器列表至存儲(chǔ)器信息數(shù)據(jù)庫13。
更具體地,位寬提取單元42,如圖23B所示,提取變量組g1以及不構(gòu)成變量組的成員變量a.m1,a.m2,a.m3,a.m4,b.n1和b.n2的位寬。
在圖23的例子中,通過從包括在變量組的變量中指定具有最大位寬的變量,并提取該指定的變量的位寬而執(zhí)行變量組的位寬。例如,在圖23A的例子中,因?yàn)殛嚵凶兞縜和b都是32位,變量組g1的位寬變?yōu)?2位。而且,即使當(dāng)n1和n2是chr型的,且陣列變量b的位寬是16位的,如果陣列變量a具有32位位寬,則變量組g1的位寬就是32位的。
在圖22的例子中,變量組和不構(gòu)成變量組的成員變量被分配至一個(gè)存儲(chǔ)器。由于這一原因,如圖23C所示,8位存儲(chǔ)器M41,16位存儲(chǔ)器M42,和32位存儲(chǔ)器M43被選擇作為可選擇存儲(chǔ)器。
注意,雖然在圖23A所示的行為級電路11中只設(shè)定一個(gè)變量組,如果多個(gè)變量組在實(shí)施例4中出現(xiàn),分別為每個(gè)變量組提取位寬。而且,當(dāng)有多個(gè)變量組時(shí),考慮到多個(gè)變量組被分配至一個(gè)存儲(chǔ)器的情形,位寬提取單元42產(chǎn)生可選擇存儲(chǔ)器列表。
然后,基于在步驟S21計(jì)算的引用數(shù)目和在步驟S23提取的位寬,存儲(chǔ)器選擇單元3計(jì)算如圖23C所示的每個(gè)可選擇存儲(chǔ)器的存取頻率之和(步驟S25)。在此,與圖2所示的步驟S4類似地執(zhí)行步驟S25。
然后,類似于示于圖2的步驟S5,存儲(chǔ)器選擇單元3判斷是否已為所有可選擇存儲(chǔ)器計(jì)算了存取頻率和(步驟S26)。
如果沒有為所有可選擇存儲(chǔ)器完成頻率和計(jì)算,存儲(chǔ)器選擇單元3再次執(zhí)行步驟S25。另一個(gè)方面,如果為所有可選擇存儲(chǔ)器完成頻率和計(jì)算,那么存儲(chǔ)器選擇單元3執(zhí)行步驟S27。
在步驟S27,類似于示于圖2中的步驟S6,存儲(chǔ)器選擇單元3比較關(guān)于各個(gè)可選擇存儲(chǔ)器的存取頻率和。在實(shí)施例4中,存儲(chǔ)器選擇單元3選擇最小化存儲(chǔ)器存取頻率和的32位存儲(chǔ)器M43作為分配的目標(biāo)。
此后,類似于圖2所示的步驟S7和S8,通過時(shí)序安排單元4執(zhí)行時(shí)序安排(步驟S28),通過資源分配單元5執(zhí)行資源分配等,由此,生成邏輯電路(步驟S29)。生成的邏輯電路被輸出到外部。
如上所述,類似于實(shí)施例1,根據(jù)行為級電路中描述的操作實(shí)施例4也使得可以選擇具有最優(yōu)位寬的存儲(chǔ)器,因此最優(yōu)化存儲(chǔ)器存取頻率。
而且,與實(shí)施例1不同,因?yàn)樵趯?shí)施例4中,作為分配至存儲(chǔ)器的目標(biāo)的多個(gè)變量被分配至一個(gè)存儲(chǔ)器,可以節(jié)省當(dāng)要用多個(gè)存儲(chǔ)器時(shí)所產(chǎn)生的開銷面積。因此,用在LSI中的存儲(chǔ)器的面積將被減小。
雖然實(shí)施例4中的同一區(qū)段被指定作為for語句所明說的區(qū)段,同一區(qū)段不局限于此。例如,類似于實(shí)施例2,行為級電路11中的基本模塊被定義為同一區(qū)段。
而且,時(shí)序安排單元4可執(zhí)行與步驟S28中的時(shí)序安排不同的嘗試性時(shí)序安排。在這種情形中,由嘗試性時(shí)序安排的結(jié)果判斷為在同一周期被存取的多個(gè)變量可被定義為在同一區(qū)段被描述。
下面說明時(shí)序安排單元4執(zhí)行嘗試性時(shí)序安排的一個(gè)實(shí)施例。即使在嘗試性時(shí)序安排實(shí)施例中,高階合成裝置具有類似于圖21中的結(jié)構(gòu)。然而,從變量組設(shè)定單元41(參見圖21)和時(shí)序安排單元4(參見圖5)的操作看,該裝置不同于圖21中所示的高階合成裝置。因此,用于執(zhí)行高階合成方法的步驟也不同于圖22中所示的方法。
現(xiàn)參考圖24,實(shí)施例4的高階合成方法將被說明如下,其中嘗試性時(shí)序安排被執(zhí)行。圖24是流程圖,其示出實(shí)施例4的執(zhí)行嘗試性時(shí)序安排的高階合成方法。下面的說明在需要時(shí)可參考圖21。
如圖24所示,首先時(shí)序安排單元4執(zhí)行類似于圖9所示的步驟S111的嘗試性時(shí)序安排(步驟S131)。更具體地,時(shí)序安排單元4將行為級電路11中描述的所有變量中的每一個(gè)分配至不同存儲(chǔ)器,以便執(zhí)行行為級電路11中執(zhí)行周期的時(shí)序安排。
然后,引用數(shù)目計(jì)算單元1執(zhí)行步驟S21(參見圖22)。而且,變量組設(shè)定單元41基于步驟S131中時(shí)序安排的結(jié)果指定描述于同一區(qū)段的變量,并設(shè)定變量組(步驟S132)。
更具體地,變量組設(shè)定單元41指定在預(yù)定的執(zhí)行周期頻率范圍內(nèi)存取的變量,因此做出變量是否在同一區(qū)段中描述的判斷。類似于圖9所示的步驟S112,執(zhí)行關(guān)于所述變量是否在同一區(qū)段的判斷。
然后,類似于圖22中的例子,步驟S23到步驟S29被執(zhí)行。在這樣的實(shí)施例中,變量組可被設(shè)定為包括沒有在同一區(qū)段中描述的變量,且多個(gè)作為目標(biāo)被分配至存儲(chǔ)器的變量可被分配至一個(gè)存儲(chǔ)器。
實(shí)施例5
現(xiàn)參考圖25到圖30,根據(jù)本發(fā)明實(shí)施例5的高階合成裝置和高階合成方法將被說明如下。首先,參考圖25說明根據(jù)實(shí)施例5的高階合成裝置。圖25是方框圖,其示意地示出本發(fā)明實(shí)施例5的高階合成裝置的結(jié)構(gòu)。
如圖25所示,根據(jù)實(shí)施例5的高階合成裝置50包括依賴性分析單元51和執(zhí)行順序交換單元53,這是與圖1所示的實(shí)施例1中高階合成裝置10不同之處。而且,從功能上看,高階合成裝置50的存儲(chǔ)器選擇單元52和時(shí)序安排單元54不同于圖1所示的高階合成裝置10的存儲(chǔ)器選擇單元3和時(shí)序安排單元4。至于其余的方面,高階合成裝置50配置得與圖1中所示的高階合成裝置10類似。
依賴性分析單元51具有不同于圖17所示的實(shí)施例3中依賴性分析單元37的功能。依賴性分析單元51提取行為級電路11中所述的重復(fù)處理,分析包括在提取的重復(fù)處理中的變量的依賴性,并輸出分析結(jié)果至變量依賴性信息數(shù)據(jù)庫55。執(zhí)行順序交換單元53根據(jù)通過依賴性分析單元51作出的依賴性分析結(jié)果,交換重復(fù)處理中的執(zhí)行順序,從而在同一時(shí)間被引用的變量可在同一執(zhí)行周期執(zhí)行。
不同于示于圖1的實(shí)施例1的時(shí)序安排單元4的時(shí)序安排單元54,在將被分配變量的存儲(chǔ)器被確定之前執(zhí)行時(shí)序安排。在實(shí)施例5中,在存儲(chǔ)器選擇單元52計(jì)算存儲(chǔ)器存取頻率之前,時(shí)序安排單元54分配變量至所選擇的作為可選擇存儲(chǔ)器的存儲(chǔ)器中,以便在行為級電路11中進(jìn)行執(zhí)行周期的時(shí)序安排。因此,可以獲得存儲(chǔ)器被存取的周期和操作被執(zhí)行的周期之間的關(guān)系。
而且,除了類似于圖1所示實(shí)施例1的存儲(chǔ)器選擇單元3的功能外,存儲(chǔ)器選擇單元52具有如下功能,也就是,基于時(shí)序安排單元54進(jìn)行的時(shí)序安排結(jié)果,存儲(chǔ)器選擇單元52做出是否存在一個(gè)可以和存儲(chǔ)器存取并行執(zhí)行的操作處理的判斷。如果有這樣的操作處理,存儲(chǔ)器選擇單元52校正計(jì)算的存儲(chǔ)器存取頻率和。
在實(shí)施例5中,存儲(chǔ)器選擇單元52由時(shí)序安排結(jié)果判斷存儲(chǔ)器存取是否是在前的讀取周期(處理),其中寫入在讀取之后,并判斷前面的讀取周期是否能與其它操作處理并行執(zhí)行。而且,作為判斷的結(jié)果,如果有前面的讀取周期,并且該前面的讀取周期可以和其它操作處理并行執(zhí)行,存儲(chǔ)器選擇單元52校正總的頻率以使存儲(chǔ)器存取的在前的讀取周期的頻率不包括在總的頻率內(nèi)。
現(xiàn)參考圖26到30,根據(jù)實(shí)施例5的高階合成方法將說明如下??赏ㄟ^操作示于圖25的根據(jù)實(shí)施例5的高階合成裝置50執(zhí)行實(shí)施例5的高階合成方法。因此,下面基于高階合成裝置的操作描述高階合成方法,同時(shí)如果需要就參考圖25。
圖26是流程圖,其示出根據(jù)本發(fā)明實(shí)施例5的高階合成方法。圖27示出用在實(shí)施例5中的行為級電路,變量的位寬和存儲(chǔ)器存取頻率,其中圖27A示出示例性行為級電路,圖27B示出圖27A所示的行為級電路中描述的變量的引用數(shù)目和位寬,圖27C示出每個(gè)可選擇存儲(chǔ)器的存取頻率和。
如圖26所示,首先,引用數(shù)目計(jì)算單元1讀取行為級電路11,以便為在行為級電路11中描述的每個(gè)變量計(jì)算引用數(shù)目(步驟S31)。注意與圖2所示的步驟S1類似地執(zhí)行步驟S31。
更具體地,在示于圖27A的行為級電路的情形中,引用數(shù)目計(jì)算單元1計(jì)算關(guān)于陣列變量a到c和成員變量a.m1,a.m2,b.m1,b.m2,c.m1和c.m2的引用數(shù)目,如圖27B所示。注意圖27B只示出陣列變量a和成員變量a.m1和a.m2的引用數(shù)目。
然后,依賴性分析單元51分析描述于行為級電路11的包括在for循環(huán)中的變量的依賴性(步驟S32)。更具體地,依賴性分析是關(guān)于包括在圖27A所示的第一個(gè)到第四個(gè)for語句的變量執(zhí)行的。而且,依賴性分析單元5 1輸出分析結(jié)果至變量依賴性信息數(shù)據(jù)庫55。
然后,執(zhí)行順序交換單元53從變量依賴性信息數(shù)據(jù)庫55讀取依賴性分析單元51分析結(jié)果,并基于該結(jié)果判斷執(zhí)行順序是否可交換,也就是,在同一時(shí)間被引用的多個(gè)變量是否被包括在所述for語句中(步驟S33)。
作為判斷結(jié)果,如果執(zhí)行順序不能交換,類似于圖2所示的實(shí)施例1中的步驟S2(參見圖27B),位寬提取單元2提取各個(gè)變量的位寬(步驟S35)。
另一方面,如果執(zhí)行順序可以交換,執(zhí)行順序交換單元53交換執(zhí)行順序(步驟S34),然后,位寬提取單元2執(zhí)行步驟S35。
在實(shí)施例5中,執(zhí)行順序交換單元53做出關(guān)于示于圖27A的行為級電路11中第三個(gè)for語句執(zhí)行順序可交換的判斷,并交換關(guān)于第三個(gè)for語句的執(zhí)行順序。下面參考圖28說明這一操作。
圖28示出示于圖27A的行為級電路中的第三個(gè)for語句的執(zhí)行順序,其中圖28A示出在執(zhí)行順序交換之前的狀態(tài),圖28B示出執(zhí)行順序交換之后的狀態(tài)。在圖28中,第三個(gè)for語句由源代碼表示。
在實(shí)施例5中,執(zhí)行順序交換單元53從圖28A所示的行為級電路提取在寫入處理之前所需的讀取處理(在前讀取處理),并交換在前讀取處理的順序,如圖28B所示。
如可從圖28A中可看到的一樣,在交換之前,陣列變量在一個(gè)for循環(huán)中存取數(shù)目是三次,且所需的頻率和變?yōu)?7個(gè)循環(huán)。相反,如可從圖28B中看到的那樣,在交換之后,陣列變量在一個(gè)for循環(huán)中存取數(shù)目是兩次,因此,可減少一次存取。此外,所需的頻率和變?yōu)?9次(循環(huán)內(nèi)18個(gè)周期,循環(huán)外一個(gè)周期),所以總的可以減少8個(gè)周期。
當(dāng)步驟S35被執(zhí)行時(shí),位寬提取單元2選擇陣列變量a,b和c將要分配至其中的存儲(chǔ)器。在實(shí)施例5中,8位存儲(chǔ)器和16位存儲(chǔ)器被選擇作為各個(gè)陣列變量的可選擇存儲(chǔ)器。注意,圖27C示出僅用于陣列變量a的可選擇存儲(chǔ)器M51(8位)和M52(16位)。
然后,時(shí)序安排單元54執(zhí)行行為級電路11中的執(zhí)行周期的時(shí)序安排(步驟S37)。在此,當(dāng)為被選做可選存儲(chǔ)器的存儲(chǔ)器分配變量時(shí),執(zhí)行所述時(shí)序安排,并為每個(gè)可選擇存儲(chǔ)器執(zhí)行時(shí)序安排。
圖29示出圖27A所示的行為級電路的時(shí)序安排結(jié)果。圖29示出當(dāng)可選擇存儲(chǔ)器是16位時(shí)時(shí)序安排的結(jié)果。而且,圖29示出圖27A所示的行為級電路中的第二個(gè)for語句和第三個(gè)for語句。
在圖29中,實(shí)線所表示的箭頭示出數(shù)據(jù)流和控制流,虛線所表示的箭頭示出在寫入(W)處理之前的讀取(R)處理(在前讀取處理),當(dāng)存儲(chǔ)器的位寬大于變量的位寬時(shí),該寫入處理是必須的。
而且,在圖29中,參考數(shù)字62a和62b表示當(dāng)存儲(chǔ)器位寬大于變量的位寬時(shí)的寫入(W)處理,61a到61c表示當(dāng)存儲(chǔ)器位寬大于變量的位寬時(shí)在前的讀取處理。三角標(biāo)記表示for循環(huán)的重復(fù)判斷。參考數(shù)字63表示“*”的操作處理,64表示“+”的操作處理,65表示讀取處理。
然后,存儲(chǔ)器選擇單元52計(jì)算每個(gè)可選擇存儲(chǔ)器的存取頻率(步驟S38)。在實(shí)施例5中,與其它實(shí)施例不同,示于圖30的存儲(chǔ)器存取周期表被用于頻率的計(jì)算。圖30示出用在實(shí)施例5中的存儲(chǔ)器存取周期表。
而且,在實(shí)施例5中,存儲(chǔ)器選擇單元52做出關(guān)于存儲(chǔ)器存取是否是在前的讀取處理的判斷,如果存儲(chǔ)器存取是在前的讀取處理,做出關(guān)于該處理是否能與其它操作處理并行執(zhí)行的判斷。然后,基于判斷結(jié)果,存儲(chǔ)器選擇單元52校正計(jì)算的頻率的計(jì)算結(jié)果。而且,在執(zhí)行順序于步驟S34中交換的情形中,存儲(chǔ)器選擇單元52校正頻率的計(jì)算結(jié)果。下面參考圖27B介紹這一過程。
圖27C中的“頻率1(第三列)”示出在不考慮步驟S37中的時(shí)序安排和步驟S34中執(zhí)行順序的交換的情況下計(jì)算得到的頻率。也就是,通過引用示于圖27B的引用數(shù)目和示于圖30的存儲(chǔ)器存取周期表,示出類似于示于圖2的實(shí)施例1中的步驟S4計(jì)算的頻率。
更具體地,在可選擇存儲(chǔ)器是M51的情形中,m1(R)+m1(W)+m2(W)+a(R)=9+10+9+(10×2)=48。在可選擇存儲(chǔ)器是M52的情形中,m1(R)+m1(W)+m2(W)+a(R)=9+(10×2)+(9×2)+10×2=57。
圖27C中的“頻率2(第四列)”示出當(dāng)存儲(chǔ)器選擇單元52由時(shí)序安排結(jié)果判斷存在在前的讀取周期,且其可與其它操作處理并行執(zhí)行時(shí)的頻率。
如圖29所示,在16位可選擇存儲(chǔ)器M52的情形中,示于圖29的操作處理“+”64和在前的讀取處理61a在同一個(gè)周期中,因此它們可彼此并行執(zhí)行。因此,計(jì)算被執(zhí)行使得對變量a.m1的在前讀取處理61a的頻率不包括在總頻率中。
更具體地,在可選擇存儲(chǔ)器是M52的情形中,m1(R)+m1(W)+m2(W)+a(R)=9+10+(9×2)+10=47。在可選擇存儲(chǔ)器是M51的情形中,不執(zhí)行在前的讀取處理,且因此頻率變成等于“頻率1(第三列)”。
圖27C中的“頻率3(第五列)”示出考慮了頻率2和步驟S34中執(zhí)行順序交換的情形的頻率。
可從圖29中所示的第三個(gè)for語句看到,作為步驟S34中執(zhí)行順序交換的結(jié)果,讀取處理65和在前的讀取處理61c在同一個(gè)周期彼此并行處理。因此,計(jì)算被執(zhí)行使得在前讀取處理61c的頻率不包括在總頻率中。這里,因?yàn)樵谇白x取處理61b在循環(huán)外執(zhí)行,在前讀取處理61b的頻率(1個(gè)周期)應(yīng)被加上。
更具體地,在可選擇存儲(chǔ)器是M52的情形,m1(R)+m1(W)+m2(W)+a(R)=9+10+(9+1)+10=39。在可選擇存儲(chǔ)器是M51的情形,在前讀取處理不執(zhí)行,因此頻率應(yīng)變成等于“頻率1(第三列)”。
然后,類似于示于圖2中的步驟S5,存儲(chǔ)器選擇單元52做出關(guān)于是否已經(jīng)為所有可選擇存儲(chǔ)器計(jì)算出存儲(chǔ)器存取頻率和的判斷(步驟S39)。
如果還沒有為所有可選擇存儲(chǔ)器計(jì)算出存儲(chǔ)器存取頻率和,存儲(chǔ)器選擇單元52再次執(zhí)行步驟S38。另一個(gè)方面,如果已經(jīng)為所有可選擇存儲(chǔ)器完成頻率和計(jì)算,那么存儲(chǔ)器選擇單元52執(zhí)行步驟S40。
在步驟S40,類似于示于圖2的步驟S6,存儲(chǔ)器選擇單元52比較各個(gè)可選擇存儲(chǔ)器的存取頻率和。在實(shí)施例5中,存儲(chǔ)器選擇單元52選擇最小化存儲(chǔ)器存取頻率和的16位的存儲(chǔ)器M52作為分配目標(biāo)。
最后,類似于示于圖2的步驟S8,執(zhí)行通過資源分配單元5等進(jìn)行的資源的分配,由此生成邏輯電路(步驟S41)。生成的邏輯電路被輸出到外部。
如上所述,在實(shí)施例5中,類似于實(shí)施例1,可根據(jù)行為級電路中描述的操作選擇具有最優(yōu)位寬的存儲(chǔ)器。因此,存儲(chǔ)器存取頻率可被最優(yōu)化。
而且,根據(jù)實(shí)施例5,依賴性分析和時(shí)序安排使得可以進(jìn)行可與存儲(chǔ)器存取并行執(zhí)行的對操作處理是否存在的分析,并且可以考慮對存儲(chǔ)器存取的部分周期被隱藏的情況。因此,和實(shí)施例1比較,可分配具有進(jìn)一步優(yōu)化位寬的存儲(chǔ)器。
實(shí)施例6現(xiàn)參考圖1到33,根據(jù)本發(fā)明實(shí)施例6的高階合成裝置和高階合成方法將說明如下。首先,將參考圖31說明根據(jù)實(shí)施例6的高階合成裝置的結(jié)構(gòu)。圖31是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例6的高階合成裝置的結(jié)構(gòu)。
如圖31所示,根據(jù)實(shí)施例6的高階合成裝置60包括存儲(chǔ)器存取分析單元44,這是與示于圖21的實(shí)施例4的高階合成裝置40不同之處。而且,從功能上看,高階合成裝置60的時(shí)序安排單元43與圖21所示的高階合成裝置40的時(shí)序安排單元4不同。至于其余的方面,高階合成裝置60配置為類似于示于圖21的實(shí)施例4的高階合成裝置40。
與時(shí)序安排單元4不同(參見圖21),時(shí)序安排單元43在位寬提取單元42產(chǎn)生可選擇存儲(chǔ)器列表之后和存儲(chǔ)器選擇單元3選擇存儲(chǔ)器之前執(zhí)行時(shí)序安排,執(zhí)行時(shí)序安排以便變量被分配至所選擇的存儲(chǔ)器(可選擇存儲(chǔ)器),并執(zhí)行行為級電路11中執(zhí)行周期的時(shí)序安排被。為每個(gè)可選擇存儲(chǔ)器執(zhí)行通過時(shí)序安排單元43進(jìn)行的時(shí)序安排。
作為這樣的時(shí)序安排結(jié)果,時(shí)序安排單元43獲得表示對存儲(chǔ)器執(zhí)行存取的周期和操作被執(zhí)行的周期之間的關(guān)系的信息,且時(shí)序安排單元43輸出該信息至存儲(chǔ)器存取分析單元44。
而且,在存儲(chǔ)器選擇單元3在可選擇存儲(chǔ)器中選擇作為分配目標(biāo)的存儲(chǔ)器之后,存儲(chǔ)器存取分析單元41使顯示設(shè)備45顯示對存儲(chǔ)器的存取方式,存取方式是從通過時(shí)序安排單元43進(jìn)行的時(shí)序安排獲得的。
在實(shí)施例6中,存儲(chǔ)器存取分析單元44提取以預(yù)定頻率或更高頻率對同一存儲(chǔ)器的連續(xù)存取出現(xiàn)的情形中的存取方式,并提取沒有在同一周期存取的多個(gè)存儲(chǔ)器出現(xiàn)的情形中的存取方式,并讓顯示裝置45顯示存取方式。
而且,輸入裝置46被連接到存儲(chǔ)器存取分析單元44,由此來自使用高階合成裝置60的用戶的指令可通過輸入裝置46輸入。
現(xiàn)參考圖32到33,根據(jù)實(shí)施例6的高階合成方法將被說明如下??赏ㄟ^操作示于圖31中的根據(jù)實(shí)施例6的高階合成裝置60執(zhí)行實(shí)施例6的高階合成方法。因此,下面根據(jù)高階合成裝置的操作描述高階合成方法,同時(shí)在需要時(shí)參考圖31。圖32是流程圖,示出根據(jù)本發(fā)明實(shí)施例6的高階合成方法。
如圖32所示,類似于示于圖22中實(shí)施例4的例子,首先,按順序執(zhí)行下面的程序計(jì)算行為級電路11中描述的各個(gè)變量的引用數(shù)目(步驟S21);設(shè)定變量組(步驟S22);提取位寬(步驟S23)和產(chǎn)生可選擇存儲(chǔ)器列表(步驟S24)。
然后,在實(shí)施例6中,與示于圖22中的實(shí)施例4的例子不同,時(shí)序安排單元43執(zhí)行時(shí)序安排(步驟S51)。更具體地,時(shí)序安排單元43分配變量至可選擇存儲(chǔ)器列表中規(guī)定的可選擇存儲(chǔ)器,并執(zhí)行行為級電路11中的執(zhí)行周期的時(shí)序安排。
然后,類似于示于圖22中實(shí)施例4的例子,存儲(chǔ)器選擇單元3計(jì)算存儲(chǔ)器存取頻率(步驟S25)。而且,存儲(chǔ)器選擇單元3做出關(guān)于是否為所有可選擇存儲(chǔ)器完成時(shí)序安排和頻率和計(jì)算的判斷(步驟S52)。
如果沒有為所有可選擇存儲(chǔ)器完成時(shí)序安排和頻率和計(jì)算,步驟S51和步驟S25被再次執(zhí)行。另一個(gè)方面,如果已經(jīng)為所有可選擇存儲(chǔ)器完成時(shí)序安排和頻率和計(jì)算,類似于示于圖22中實(shí)施例4的例子,存儲(chǔ)器選擇單元3選擇作為分配目標(biāo)的將所述頻率和最小化的存儲(chǔ)器(步驟S27)。
然后,存儲(chǔ)器分析單元44輸出存取方式的顯示數(shù)據(jù)至顯示裝置45,且該顯示裝置45顯示存取方式,該存取方式示出步驟S51中的時(shí)序安排結(jié)果(步驟S53)。在此,步驟S53中輸出的存取方式是在步驟S27中所選擇的存儲(chǔ)器被分配給所述變量的情形中的存取方式。
更具體地,存儲(chǔ)器分析單元44首先提取對同一存儲(chǔ)器和多個(gè)存儲(chǔ)器以預(yù)定頻率或更高頻率的連續(xù)存取,該多個(gè)存儲(chǔ)器不在步驟S51的時(shí)序安排結(jié)果中的同一周期存取。
結(jié)果,如果前者可以被提取,那么存儲(chǔ)器存取分析單元44使顯示器45顯示表示這些連續(xù)存取的存取方式(參見圖33A)。如果后者可被提取,那么存儲(chǔ)器存取分析單元44使顯示器裝置45顯示表示這多個(gè)存儲(chǔ)器的存取狀態(tài)的存取方式(參見圖33B)。下面參考圖33描述存取方式。
圖33示出示例性存取方式,其中圖33A示出的存取方式顯示了以預(yù)定頻率或更高頻率對同一存儲(chǔ)器的連續(xù)存取,而圖33B示出的存取方式顯示了沒有在同一周期存取的多個(gè)存儲(chǔ)器的存取狀態(tài)。
如圖33A和33B所示,存取方式具有“時(shí)序安排視圖(schedulingview)”,示出時(shí)序安排結(jié)果,而“存儲(chǔ)器存取視圖(memory accessview)”示出時(shí)序安排視圖中變量的存儲(chǔ)器映射(mapping)。在存儲(chǔ)器存取視圖中,垂直軸表示執(zhí)行周期的數(shù)目,圖中的數(shù)字示出被存取的存儲(chǔ)器的地址。圖33中M61和M62表示分配給變量a的存儲(chǔ)器。
在示于圖33A和33B的時(shí)序安排視圖中,每個(gè)執(zhí)行周期被虛線劃分,其示出例如W:a[2i]和W:a[2i+1]被安排在分開的執(zhí)行周期中。而且,圖33A和33B示出的存取方式是行為級電路中的存取方式,其中描述了將變量i增加1的重復(fù)循環(huán)。
當(dāng)示于圖33A中的存取方式在顯示裝置45顯示時(shí),用戶可明白對存儲(chǔ)器M61執(zhí)行某個(gè)頻率或更高頻率的連續(xù)存取。另一個(gè)方面,當(dāng)示于圖33B的存取方式在顯示裝置45顯示時(shí),用戶可明白存儲(chǔ)器M61和存儲(chǔ)器M62不在同一周期存取。因此,用戶可判斷從當(dāng)前對存儲(chǔ)器的分配獲得的存取方式是否符合他/她的意圖。
此后,存儲(chǔ)器存取分析單元44判斷通過輸入裝置46的表示出存取方式是用戶所期望的存取方式的輸入是否出現(xiàn)(步驟S54)。如果用戶的輸入指示出存取方式不是用戶所期望的存取方式,該過程再次從步驟S22中的變量組的設(shè)定開始。另一個(gè)方面,如果用戶的輸入指示出存取方式是用戶所期望的,則產(chǎn)生邏輯電路(步驟S55)以便完成該過程。
如上所述,根據(jù)實(shí)施例6,用戶可從顯示的存儲(chǔ)器的存取方式確認(rèn)對存儲(chǔ)器的變量分配符合他/她的意圖。因此,在不符合他/她的意圖的存取方式的情中,該過程可返回至變量組的設(shè)定,從而執(zhí)行更有效的分組(組設(shè)定)。
注意,示于圖31到33的例子描述了變量組被設(shè)定的情形。然而,實(shí)施例6不局限于這樣的例子,例如,該實(shí)施例可應(yīng)用在如實(shí)施例1到3中那樣變量被分離或整合的情形。
實(shí)施例7現(xiàn)參考圖34到37,根據(jù)本發(fā)明實(shí)施例7的高階合成裝置和高階合成方法將說明如下。首先,參考圖34說明根據(jù)實(shí)施例7的高階合成裝置的結(jié)構(gòu)。圖34是方框圖,其示意地示出根據(jù)本發(fā)明實(shí)施例7的高階合成裝置。
如圖34所示,根據(jù)實(shí)施例7的高階合成裝置70包括約束判斷單元(constraint judgment unit)72,這是與實(shí)施例1中高階合成裝置10不同之處。而且,從功能上看,提供于高階合成裝置70中的存儲(chǔ)器選擇單元71不同于提供于圖1中所示的實(shí)施例1中高階合成裝置10的存儲(chǔ)器選擇單元3。至于其余的方面,高階合成裝置70配置為類似于圖1所示的高階合成裝置10。
當(dāng)存儲(chǔ)器選擇單元71選擇將被分配變量的存儲(chǔ)器時(shí),約束判斷單元72指定多個(gè)相應(yīng)于所選擇存儲(chǔ)器的存儲(chǔ)器單元。在此,在實(shí)施例7中,約束判斷單元72根據(jù)用于LSI設(shè)計(jì)的程序庫(未示出)指定存儲(chǔ)器單元。
而且,約束判斷單元72做出關(guān)于規(guī)定的存儲(chǔ)器單元的存取時(shí)間是否滿足預(yù)定條件,即是否發(fā)生延遲誤差。作為判斷的結(jié)果,如果存在不產(chǎn)生延遲誤差的存儲(chǔ)器單元,約束判斷單元72選擇具有最短存取時(shí)間的存儲(chǔ)器單元。另一個(gè)方面,如果所有指定的存儲(chǔ)器單元產(chǎn)生延遲誤差,約束判斷單元72不選擇任何存儲(chǔ)器。
更具體地,在實(shí)施例7中,約束判斷單元72首先從用于LSI設(shè)計(jì)的程序庫中獲取指定存儲(chǔ)器單元的存取時(shí)間。然后,從通過時(shí)序安排單元4進(jìn)行的時(shí)序安排的結(jié)果中,約束判斷單元72確定指定存儲(chǔ)器單元中除了存儲(chǔ)器存取的所述操作的執(zhí)行時(shí)間,并計(jì)算一個(gè)周期中的延遲時(shí)間。例如,如果存儲(chǔ)器存取時(shí)間是4納秒,且除了存儲(chǔ)器存取的操作的執(zhí)行時(shí)間為7納秒,則延遲時(shí)間為11納秒。
而且,約束判斷單元72比較一個(gè)周期中計(jì)算的延遲時(shí)間和預(yù)定的延遲時(shí)間(以下稱為“延遲約束時(shí)間”)。例如,假定延遲約束時(shí)間被設(shè)定為10納秒。在計(jì)算的延遲時(shí)間為如上所述的11納秒的情形中,該情形產(chǎn)生的延遲誤差為1納秒(=11納秒-10納秒)。而且,由此,對存儲(chǔ)器存取時(shí)間的約束變?yōu)?納秒(=4納秒-1納秒)。
另一個(gè)方面,如果存儲(chǔ)器存取時(shí)間比上面的情形中的更短,例如,如果存儲(chǔ)器存取時(shí)間是3納秒,延遲時(shí)間變?yōu)?0納秒(=3納秒+7納秒),這在延遲約束時(shí)間內(nèi),因此該情形滿足對延遲的約束。
而且,在存儲(chǔ)器選擇單元7 1選擇存儲(chǔ)器之后,如果約束判斷單元72不選擇任何存儲(chǔ)器單元,存儲(chǔ)器選擇單元71排除所選擇的可選擇存儲(chǔ)器,并從可選擇存儲(chǔ)器中再次選擇存儲(chǔ)器。
然后,根據(jù)實(shí)施例7的高階合成方法將參考圖35到36說明如下??赏ㄟ^操作圖34所示的根據(jù)實(shí)施例7的高階合成裝置執(zhí)行實(shí)施例7的高階合成方法。因此,下面根據(jù)高階合成裝置的操作說明高階合成方法,同時(shí)在需要時(shí)參考圖34。
圖35是流程圖,其示出根據(jù)本發(fā)明實(shí)施例7的高階合成方法。圖36示出用在實(shí)施例7中的行為級電路,變量的位寬和存儲(chǔ)器存取頻率。圖36A示出示例性行為級電路,圖36B示出關(guān)于描述于示于圖36A中的行為級電路中的變量的引用數(shù)目和位寬,圖36C示出每個(gè)可選擇存儲(chǔ)器的存取頻率和。
如圖35所示,類似于示于圖2中實(shí)施例1的步驟S1和步驟S2,首先,計(jì)算描述于行為級電路11中的各個(gè)變量的引用數(shù)目(步驟S61);提取位寬(步驟S62);產(chǎn)生可選擇存儲(chǔ)器列表(步驟S63)。
結(jié)果,如圖36B所示,每個(gè)變量的引用數(shù)目和位寬被指定。而且,如圖36C所示,8位存儲(chǔ)器M71和32位存儲(chǔ)器M72被選擇作為可選擇存儲(chǔ)器。
然后,類似于示于圖2中的實(shí)施例1的步驟S4到S6,每個(gè)可選擇存儲(chǔ)器的存取頻率和被計(jì)算(步驟S64);確認(rèn)是否為每個(gè)可選擇存儲(chǔ)器完成所述計(jì)算(步驟S65);選擇將所述頻率最小化的存儲(chǔ)器(步驟S66)。
在實(shí)施例7中,如可從圖36C中看到的那樣,當(dāng)32位存儲(chǔ)器M72被選擇時(shí),頻率和最小,因此選擇存儲(chǔ)器M72。
此后,類似于示于圖2中實(shí)施例1的步驟S7,變量被分配給所選擇的存儲(chǔ)器(存儲(chǔ)器M72)以便執(zhí)行時(shí)序安排(S67)。
然后,在實(shí)施例1的情形中,生成邏輯電路以便完成該過程。然而,在實(shí)施例7中,約束判斷單元72指定相應(yīng)于所選擇的存儲(chǔ)器(存儲(chǔ)器M72)的存儲(chǔ)器單元(步驟S68)。
然后,約束判斷單元72為每個(gè)指定的存儲(chǔ)器單元計(jì)算延遲時(shí)間,并判斷是否有其計(jì)算的延遲時(shí)間在延遲約束時(shí)間之內(nèi)的存儲(chǔ)器單元(步驟S69)。
作為判斷的結(jié)果,如果有其計(jì)算的延遲時(shí)間在延遲約束時(shí)間之內(nèi)的存儲(chǔ)器單元,約束判斷單元72選擇具有最短的存儲(chǔ)器存取時(shí)間的存儲(chǔ)器單元(步驟S70)。此后,類似于實(shí)施例1中圖2的例子,生成邏輯電路(步驟S8)以便完成該過程。
另一個(gè)方面,作為判斷的結(jié)果,如果沒有其計(jì)算的延遲時(shí)間在延遲約束時(shí)間之內(nèi)的存儲(chǔ)器單元,再次執(zhí)行步驟S66。在此,在從可選擇存儲(chǔ)器列表中排除最初選擇的存儲(chǔ)器后執(zhí)行步驟S66。
在圖35的例子中,時(shí)序安排被執(zhí)行一次,然后從時(shí)序安排結(jié)果確定延遲時(shí)間,以便做出關(guān)于延遲誤差的判斷。然而,在實(shí)施例7中,而是首先為存取時(shí)間確定上限,而不是執(zhí)行時(shí)序安排,并且可根據(jù)存取時(shí)間的上限做出關(guān)于延遲誤差的判斷。
現(xiàn)參考圖37,步驟S66到S70將被更具體地說明如下。圖37示出一個(gè)物理存儲(chǔ)器單元列表,其中可安裝32位存儲(chǔ)器。圖37示出當(dāng)每個(gè)存儲(chǔ)器單元被使用時(shí)的存取時(shí)間和面積。
例如,下面說明其中延遲約束時(shí)間被設(shè)為如上所述的10納秒,除了存儲(chǔ)器存取的其它操作的執(zhí)行時(shí)間是7納秒的情形。在這個(gè)情形中,對存儲(chǔ)器存取時(shí)間的約束是3納秒。
首先,如圖37所示,存儲(chǔ)器單元“T1610”,“T1620”,“T3210”和“T3220”被指定為相應(yīng)于存儲(chǔ)器選擇單元71所選擇的存儲(chǔ)器的存儲(chǔ)器單元。
其后,做關(guān)于每個(gè)存儲(chǔ)器單元是否產(chǎn)生延遲誤差的判斷。例如,在示于圖37的存儲(chǔ)器單元“T3220”的情形中,因?yàn)榇嫒r(shí)間是4納秒,所以判斷在步驟S68中延遲誤差為1納秒。類似地,在存儲(chǔ)器單元“T1620”的情形中,延遲誤差被判斷為0.5納秒。
另一個(gè)方面,因?yàn)榇鎯?chǔ)器單元“T1610”的存取時(shí)間為2.5納秒,且存儲(chǔ)器單元“T3220”的存取時(shí)間為3.0納秒,這些存儲(chǔ)器不產(chǎn)生延遲誤差。因此,判斷出存在滿足對存取時(shí)間約束的存儲(chǔ)器單元。
然后,具有較短存儲(chǔ)時(shí)間的存儲(chǔ)器單元“T160”被選擇。雖然最終根據(jù)實(shí)施例7中的存取時(shí)間選擇存儲(chǔ)器單元,可是例如,根據(jù)存儲(chǔ)器單元的面積選擇存儲(chǔ)器單元。也就是,可選擇具有最小面積的存儲(chǔ)器單元“T3210”。
如上所述,根據(jù)實(shí)施例7,即使當(dāng)存取時(shí)間根據(jù)存儲(chǔ)器大小變化時(shí),變量可被分配至最優(yōu)存儲(chǔ)器,因?yàn)榇嫒r(shí)間可被當(dāng)作選擇存儲(chǔ)器的評價(jià)指標(biāo)。
實(shí)施例8現(xiàn)參考圖38到39,根據(jù)本發(fā)明實(shí)施例8的高階合成裝置和高階合成方法將被說明如下。首先,根據(jù)實(shí)施例8的高階合成裝置的結(jié)構(gòu)將參考圖38說明。圖38是方框圖,示意地示出根據(jù)本發(fā)明實(shí)施例8的高階合成裝置的結(jié)構(gòu)。
如圖38所示,根據(jù)實(shí)施例8的高階合成裝置80包括布局單元84,這是與示于圖34的實(shí)施例7的高階合成裝置不同之處。而且,從功能的角度看,高階合成裝置80中的存儲(chǔ)器選擇單元81,約束判斷單元82和時(shí)序安排單元83,與示于圖34的高階合成裝置的70的存儲(chǔ)器選擇單元3,約束判斷單元72和時(shí)序安排單元4不同。至于其余的方面,高階合成裝置80配置為類似于示于圖34的高階合成裝置70。
布局單元84分配變量至由存儲(chǔ)器選擇單元81選擇的存儲(chǔ)器,且執(zhí)行布局以便生成布局信息。布局信息指定所選擇的存儲(chǔ)器和連接至這些存儲(chǔ)器上的電路的設(shè)定位置。布局信息被輸出至布局信息數(shù)據(jù)庫86。
在實(shí)施例8中,通過根據(jù)由資源分配單元5生成的邏輯電路的布局設(shè)計(jì),布局單元84進(jìn)行布局信息的產(chǎn)生。也就是,在實(shí)施例8中,資源分配單元5為通過布局單元84進(jìn)行的布局設(shè)計(jì)生成邏輯電路。生成的邏輯電路被輸出至電路連接信息數(shù)據(jù)庫85,且布局單元84按需要訪問電路連接信息數(shù)據(jù)庫85。
而且,根據(jù)布局信息布局單元84確定所選擇存儲(chǔ)器的存取時(shí)間,布線(routing)的擁擠程度和死空間面積,這些也和布局信息一起被輸出至布局信息數(shù)據(jù)庫86。
類似于示于圖34的實(shí)施例7中的約束判斷單元72,約束判斷單元82可指定相應(yīng)于所選擇的存儲(chǔ)器的存儲(chǔ)器單元,而且計(jì)算每個(gè)存儲(chǔ)器單元的延遲時(shí)間,并做出關(guān)于該延遲時(shí)間是否在延遲約束時(shí)間內(nèi)的判斷。
除了這些功能,實(shí)施例8中的約束判斷單元82具有做出關(guān)于布線擁擠程度和死空間面積中是否至少有一個(gè)滿足預(yù)定條件(以下稱為“布局約束”)判斷的功能。
而且,除了類似于示于圖34中實(shí)施例7的存儲(chǔ)器選擇單元71的那些功能,存儲(chǔ)器選擇單元81具有下面的功能也就是,如果約束判斷單元82判斷布線的擁擠程度和死空間面積中至少一個(gè)不滿足布局約束,存儲(chǔ)器選擇單元81再次選擇一個(gè)存儲(chǔ)器作為可選擇存儲(chǔ)器,該存儲(chǔ)器不同于最初所選擇的存儲(chǔ)器。
然后,根據(jù)實(shí)施例8的高階合成方法將參考圖39說明如下。實(shí)施例8的高階合成方法可通過操作根據(jù)示于圖38的實(shí)施例8的高階合成裝置而執(zhí)行。因此,下面根據(jù)高階合成裝置的操作描述高階合成方法,同時(shí)如果需要就參考圖38。圖39是流程圖,其示出根據(jù)本發(fā)明實(shí)施例8的高階合成方法。
如圖38所示,類似于示于圖35中實(shí)施例7的步驟S61到S66,首先執(zhí)行下面的步驟計(jì)算引用數(shù)目(步驟S71);提取位寬(步驟S72);產(chǎn)生可選擇存儲(chǔ)器列表(步驟S73);計(jì)算存儲(chǔ)器存儲(chǔ)頻率和(步驟S74);確認(rèn)是否為所有可選擇存儲(chǔ)器完成該計(jì)算(步驟S75),和選擇將頻率最小化的存儲(chǔ)器(步驟S76)。
在實(shí)施例8中,在作為目標(biāo)的行為級電路11如圖36A所示的情形中,類似于實(shí)施例7選擇示于圖36C的存儲(chǔ)器M72。
然后,與實(shí)施例7不同,實(shí)施例8中的布局單元84分配行為級電路11中描述的變量至所選擇的存儲(chǔ)器,以便執(zhí)行布局(步驟S77)。由此,產(chǎn)生布局信息(步驟S77)。從步驟S77,可獲得所選擇存儲(chǔ)器的存取時(shí)間,布線的擁擠程度和死空間面積。
雖然沒有在圖39中示出,時(shí)序安排單元83和資源分配單元5執(zhí)行時(shí)序安排和資源分配(邏輯電路的合成),以執(zhí)行布局。根據(jù)從這些步驟獲得的邏輯電路,布局被執(zhí)行。
然后,約束判斷單元82做出關(guān)于在步驟S77獲得的布線擁擠程度和死空間面積是否滿足所述布局約束的判斷(步驟78)。
更具體地,約束判斷單元82做出關(guān)于在步驟S77獲得的布線擁擠程度是否在預(yù)定的布線擁擠程度的范圍內(nèi)的判斷,或關(guān)于在步驟S77獲得的死空間面積是否在預(yù)定的死空間面積的范圍內(nèi)的判斷。注意,雖然對實(shí)施例8中的布線擁擠程度和死空間面積都做出判斷,但可只對它們中的一個(gè)做出判斷。
作為判斷的結(jié)果,如果滿足布局約束,時(shí)序安排單元83執(zhí)行對所選擇存儲(chǔ)器的分配,并執(zhí)行時(shí)序安排(步驟S79)。與實(shí)施例7不同,在實(shí)施例8中,步驟S79中的時(shí)序安排是通過使用從步驟S77中獲得的存儲(chǔ)器存取時(shí)間執(zhí)行的。
另一個(gè)方面,如果布局約束不能滿足,存儲(chǔ)器選擇單元81再次選擇存儲(chǔ)器(步驟S76)。在該情形的步驟S76中,使用可選擇存儲(chǔ)器列表以便排除已經(jīng)選擇的存儲(chǔ)器。
然后,在步驟S79中的時(shí)序安排完成之后,類似圖35所示的步驟S68,約束判斷單元82指定相應(yīng)于所選擇的存儲(chǔ)器(存儲(chǔ)器M72)的存儲(chǔ)器單元(步驟S80)。
然后,類似于示于圖35中的步驟S69,約束判斷單元82計(jì)算每個(gè)指定存儲(chǔ)器單元的延遲時(shí)間,并做出關(guān)于是否存在其計(jì)算的延遲時(shí)間在延遲約束時(shí)間范圍內(nèi)的存儲(chǔ)器單元的判斷(步驟S81)。
在此,在實(shí)施例8中,通過把從步驟S77中的布局中獲得的存儲(chǔ)器存取時(shí)間加到LSI設(shè)計(jì)的程序庫中指定的存儲(chǔ)器存取時(shí)間上而計(jì)算得到所選擇的存儲(chǔ)器延遲時(shí)間。因此,存儲(chǔ)器單元的存取時(shí)間的計(jì)算精度可得到增強(qiáng)。
作為判斷的結(jié)果,如果計(jì)算的延遲時(shí)間在延遲約束時(shí)間范圍內(nèi)的存儲(chǔ)器單元存在,約束判斷單元82選擇最小化存儲(chǔ)器存取時(shí)間的存儲(chǔ)器單元(步驟S82)。然后,類似于圖2所示的實(shí)施例1中的例子,生成邏輯電路(步驟S8)以便完成該過程。
另一個(gè)方面,作為判斷結(jié)果,如果計(jì)算的延遲時(shí)間在延遲約束時(shí)間范圍內(nèi)的存儲(chǔ)器單元不存在,再次執(zhí)行步驟S76。這種情形中,在從可選擇存儲(chǔ)器列表中排除最初選擇的存儲(chǔ)器后執(zhí)行步驟S76。
如上所述,根據(jù)實(shí)施例8,布局被執(zhí)行,并根據(jù)從該過程獲得布局信息,可執(zhí)行對存儲(chǔ)器的分配。也就是,根據(jù)實(shí)施例8,關(guān)于存取時(shí)間的精確信息可根據(jù)存儲(chǔ)器和連接到其上的電路的物理布局信息獲得。而且,可以考慮布線的可能性和布局面積效率。因此,可為物理裝配分配最優(yōu)存儲(chǔ)器。
以這種方式,根據(jù)本發(fā)明的高階合成裝置和高階合成方法,根據(jù)行為級電路中描述的操作而具有最優(yōu)位寬的存儲(chǔ)器可被選擇,且存儲(chǔ)器的存取頻率可被最優(yōu)化。
本發(fā)明可以其它形式實(shí)施而不偏離本發(fā)明的精神或基本特征。該申請中公開的實(shí)施例的各個(gè)方面都被認(rèn)為是說明性的,而非限制性的。本發(fā)明的范圍由權(quán)利要求限定,而非前述說明書,和權(quán)利要求書等價(jià)的含義和范圍內(nèi)的所有變化都包括在權(quán)利要求保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種高階合成方法,通過所述方法,行為級電路中所描述的變量被分配至存儲(chǔ)器中以生成邏輯電路,所述方法包括如下步驟(a)計(jì)算行為級電路中變量引用數(shù)目;(b)提取變量的位寬并選擇多個(gè)能夠以所述提取的位寬進(jìn)行數(shù)據(jù)轉(zhuǎn)移的變量;(c)當(dāng)變量分配到在步驟(b)中所選的多個(gè)存儲(chǔ)器時(shí),計(jì)算所述存儲(chǔ)器的每一個(gè)的存取頻率之和,基于所述變量的引用數(shù)目和位寬執(zhí)行所述計(jì)算;以及(d)選擇最小化步驟(c)中計(jì)算的存儲(chǔ)器存取頻率之和的存儲(chǔ)器作為分配所述變量的目標(biāo)。
2.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟整合包括在行為級電路中所描述的多個(gè)陣列變量或結(jié)構(gòu)變量中的多個(gè)變量,以生成新的變量,其中為所述新變量執(zhí)行所述步驟(a)到(d)。
3.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟分離在所述行為級電路中描述的陣列變量或結(jié)構(gòu)變量以生成由包括在所述分離結(jié)果中的多個(gè)變量組成的新的變量,其中對所述新變量執(zhí)行所述步驟(a)到(d)。
4.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟整合在所述行為級電路中描述的多個(gè)陣列變量或結(jié)構(gòu)變量中包括的多個(gè)變量,以生成新的陣列變量或結(jié)構(gòu)變量,和分離所述新陣列變量或結(jié)構(gòu)變量以生成新變量,所述新變量由多個(gè)包括在所述分離結(jié)果中的變量組成,其中為所述新變量執(zhí)行所述步驟(a)到(d)。
5.如權(quán)利要求2到4中任一項(xiàng)所述的高階合成方法,其中所述多個(gè)變量是在所述行為級電路的同一區(qū)段中描述的變量。
6.如權(quán)利要求2到4中任一項(xiàng)所述的高階合成方法,其中所述多個(gè)變量是不在所述行為級電路的同一區(qū)段描述的變量。
7.如權(quán)利要求5或6所述的高階合成方法,其進(jìn)一步包括在執(zhí)行步驟(a)之前,將所有描述于所述行為級電路中的變量的每一個(gè)分配至不同存儲(chǔ)器,并執(zhí)行行為級電路中的執(zhí)行周期的時(shí)序安排;以及指定執(zhí)行周期,其中基于所述時(shí)序安排的結(jié)果存取所述陣列變量或結(jié)構(gòu)變量,判斷在執(zhí)行周期的預(yù)定頻率范圍內(nèi)存取的變量是在同一區(qū)段中描述的變量,并判斷沒有在所述執(zhí)行周期的預(yù)定頻率范圍內(nèi)存取的變量不是在同一區(qū)段中描述的變量。
8.如權(quán)利要求5或6所述的高階合成方法,其中所述同一區(qū)段是通過在行為級電路中的重復(fù)處理定義的,該方法進(jìn)一步包括如下步驟從包括在所述行為級電路中描述的同一陣列變量或結(jié)構(gòu)變量中的多個(gè)變量中指定在同一區(qū)段中描述的變量。
9.如權(quán)利要求2到4中任一項(xiàng)所述的高階合成方法,進(jìn)一步包括如下步驟執(zhí)行關(guān)于在所述行為級電路中描述的陣列變量或結(jié)構(gòu)變量的依賴性分析,以計(jì)算所述陣列變量或結(jié)構(gòu)變量中任意變量之間的距離矢量,以及基于所述計(jì)算的距離矢量指定多個(gè)變量。
10.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟設(shè)定由描述于所述行為級電路的變量組成的變量組,其中,在步驟(b),提取所述變量組的位寬和不組成所述變量組的變量的位寬,且為每個(gè)所述變量組和不組成該變量組的變量選擇多個(gè)存儲(chǔ)器。
11.如權(quán)利要求10所述的高階合成方法,其中組成所述變量組的變量是描述于所述行為級電路同一區(qū)段的變量。
12.如權(quán)利要求10所述的高階合成方法,其中所述組成所述變量組的變量是沒有描述于所述行為級電路同一區(qū)段的變量。
13.如權(quán)利要求11或12所述的高階合成方法,進(jìn)一步包括如下步驟在執(zhí)行步驟(a)之前,將所有描述于所述行為級電路中的變量分配至不同存儲(chǔ)器,并執(zhí)行所述行為級電路中的執(zhí)行周期的時(shí)序安排;以及指定執(zhí)行周期,其中基于所述時(shí)序安排的結(jié)果存取每個(gè)所述變量,判斷在執(zhí)行周期的預(yù)定頻率范圍內(nèi)存取的變量是在同一區(qū)段中描述的變量,并判斷沒有在所述范圍內(nèi)存取的變量不是在同一區(qū)段中描述的變量。
14.如權(quán)利要求10所述的高階合成方法,其中為所述變量組選擇的所述多個(gè)存儲(chǔ)器每個(gè)都有不同的位寬。
15.如權(quán)利要求10所述的高階合成方法,其中所述可配置的變量組的數(shù)目是預(yù)先設(shè)定的。
16.如權(quán)利要求11所述的高階合成方法,其中配置所述多個(gè)變量組,且組成至少一個(gè)變量組的變量的數(shù)目不同于組成另一個(gè)變量組的變量數(shù)目。
17.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟在執(zhí)行步驟(c)之前,分配所述變量至在步驟(b)選擇的存儲(chǔ)器,并執(zhí)行所述行為級電路中執(zhí)行周期的時(shí)序安排,其中,在步驟(c),基于時(shí)序安排的結(jié)果判斷是否存在能夠與存儲(chǔ)器存取并行執(zhí)行的操作處理,且如果有這樣的操作處理,校正存儲(chǔ)器存取的頻率和。
18.如權(quán)利要求17所述的高階合成方法,進(jìn)一步包括如下步驟提取所述行為級電路中描述的重復(fù)處理,并分析包括在重復(fù)處理中的變量依賴性;以及基于依賴性分析結(jié)果,交換重復(fù)處理中的執(zhí)行順序,從而在同一時(shí)間被引用的變量能在同一執(zhí)行周期執(zhí)行。
19.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟在執(zhí)行步驟(c)之前,分配所述變量至步驟(b)選擇的存儲(chǔ)器,并執(zhí)行行為級電路中的執(zhí)行周期的時(shí)序安排;以及在執(zhí)行步驟(d)之后,顯示對所選的存儲(chǔ)器的存取方式,所述存取方式是從所述時(shí)序安排中獲得。
20.如權(quán)利要求19所述的高階合成方法,其中從所述時(shí)序安排結(jié)果中提取以預(yù)定頻率或更高頻率對同一存儲(chǔ)器的連續(xù)存取,并且示出所述存取的存取方式被顯示。
21.如權(quán)利要求19所述的高階合成方法,其中從時(shí)序安排結(jié)果中提取不在同一執(zhí)行周期存取的多個(gè)存儲(chǔ)器,并且示出對所述提取的多個(gè)存儲(chǔ)器的存取條件的存取方式被顯示。
22.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟指定相應(yīng)于所選擇存儲(chǔ)器的多個(gè)存儲(chǔ)器單元,和從多個(gè)存儲(chǔ)器單元中選擇滿足關(guān)于一個(gè)執(zhí)行周期內(nèi)的延遲時(shí)間的預(yù)定條件的存儲(chǔ)單元,其中,在不能選擇滿足關(guān)于一個(gè)執(zhí)行周期內(nèi)的延遲時(shí)間的預(yù)定條件的所述存儲(chǔ)器的情形中,步驟(d)被再次執(zhí)行。
23.如權(quán)利要求22所述的高階合成方法,進(jìn)一步包括如下步驟分配變量至所選擇的存儲(chǔ)器,并執(zhí)行所述行為級電路中的執(zhí)行周期的時(shí)序安排,其中根據(jù)所述時(shí)序安排的結(jié)果和所述多個(gè)存儲(chǔ)器單元中每個(gè)的存取時(shí)間為所述多個(gè)存儲(chǔ)器中的每個(gè)計(jì)算一個(gè)執(zhí)行周期內(nèi)的延遲時(shí)間,并通過判斷所計(jì)算的延遲時(shí)間是否滿足所述預(yù)定條件,來執(zhí)行所述存儲(chǔ)器單元的選擇。
24.如權(quán)利要求22所述的高階合成方法,進(jìn)一步包括如下步驟在執(zhí)行步驟(d)之后,分配所述變量至所選擇的存儲(chǔ)器,并執(zhí)行布局,由此,生成布局信息,所述布局信息至少指定所選擇的存儲(chǔ)器的被設(shè)定的位置,和與所選擇存儲(chǔ)器連接的電路的被設(shè)定的位置,其中所述多個(gè)存儲(chǔ)器中每個(gè)的存取時(shí)間從所述布局信息確定。
25.如權(quán)利要求1所述的高階合成方法,進(jìn)一步包括如下步驟在執(zhí)行步驟(d)之后,分配所述變量至所選擇的存儲(chǔ)器,并執(zhí)行布局,由此,生成布局信息,所述布局信息至少指定一個(gè)所選擇的存儲(chǔ)器的被設(shè)定的位置,和與所選擇存儲(chǔ)器連接的電路的被設(shè)定的位置;基于所述布局信息,確定所選擇的存儲(chǔ)器的存取時(shí)間,布線的擁擠程度,和死空間的面積中的至少一個(gè);以及在所述存取時(shí)間被確定的情形中,使用所述存取時(shí)間執(zhí)行所述行為級電路中執(zhí)行周期的時(shí)序安排。
26.如權(quán)利要求25所述的高階合成方法,進(jìn)一步包括如下步驟在布線的擁擠程度被確定情形中,做出關(guān)于所述布線的擁擠程度是否滿足預(yù)定的條件的判斷,其中如果所述布線的擁擠程度不滿足預(yù)定條件,對除所選擇的存儲(chǔ)器之外的存儲(chǔ)器再次執(zhí)行步驟(d)。
27.如權(quán)利要求25所述的高階合成方法,進(jìn)一步包括如下步驟在死空間的面積被確定情形中,做出關(guān)于所述死空間的面積是否滿足預(yù)定的條件的判斷,其中如果所述死空間的面積不滿足預(yù)定條件,對除所選擇的存儲(chǔ)器之外的存儲(chǔ)器再次執(zhí)行步驟(d)。
28.一種高階合成裝置,其將行為級電路中描述的變量分配至存儲(chǔ)器,以生成邏輯電路,該裝置包括引用數(shù)目計(jì)算單元,其計(jì)算在所述行為級電路中的所述變量的引用數(shù)目;位寬提取單元,其提取所述變量的位寬,并選擇多個(gè)能夠以所提取的位寬進(jìn)行數(shù)據(jù)轉(zhuǎn)移的存儲(chǔ)器;以及存儲(chǔ)器選擇單元,用于在所述變量分配至所選擇的多個(gè)存儲(chǔ)器中的每個(gè)中時(shí),為所選擇的多個(gè)存儲(chǔ)器中的每一個(gè)計(jì)算存儲(chǔ)器存取頻率和,基于所述變量的所述引用數(shù)目和位寬執(zhí)行該計(jì)算,并選擇最小化所計(jì)算的存儲(chǔ)器存取頻率之和的存儲(chǔ)器作為分配目標(biāo)。
29.一種紀(jì)錄介質(zhì),其中紀(jì)錄有程序,該程度使得計(jì)算機(jī)將行為級電路中描述的變量分配給存儲(chǔ)器,并生成邏輯電路,其中所述程序包含使計(jì)算機(jī)執(zhí)行如下步驟的命令(a)計(jì)算在所述行為級電路中的所述變量的引用數(shù)目;(b)提取所述變量的位寬,并選擇多個(gè)能夠以所提取的位寬進(jìn)行數(shù)據(jù)轉(zhuǎn)移的存儲(chǔ)器;(c)當(dāng)所述變量分配到在步驟(b)中選擇的所述多個(gè)存儲(chǔ)器中時(shí),為在步驟(b)中選擇的所述多個(gè)存儲(chǔ)器中的每一個(gè)計(jì)算所述存儲(chǔ)器存取頻率和,基于所述變量的引用數(shù)目和位寬執(zhí)行所述計(jì)算;以及(d)選擇最小化在步驟(c)中計(jì)算的存儲(chǔ)器存取頻率之和的存儲(chǔ)器作為分配變量的目標(biāo)。
全文摘要
本發(fā)明揭示一種高階合成方法和高階合成裝置,其中首先,在行為級電路中描述的變量的引用數(shù)目被計(jì)算。然后,該變量的位寬被提取,且多個(gè)能夠以所提取的位寬進(jìn)行數(shù)據(jù)轉(zhuǎn)移的存儲(chǔ)器被選擇。其次,當(dāng)變量被分配至其中時(shí),基于所以數(shù)目和變量的位寬,多個(gè)存儲(chǔ)器中的每個(gè)存儲(chǔ)器的存取頻率和被計(jì)算。最后,作為分配變量的目標(biāo),最小化存儲(chǔ)器所計(jì)算的存取頻率和的存儲(chǔ)器被選擇。
文檔編號(hào)G06F17/50GK1624698SQ20041010062
公開日2005年6月8日 申請日期2004年12月6日 優(yōu)先權(quán)日2003年12月5日
發(fā)明者服部大, 小川修, 黑川圭一 申請人:松下電器產(chǎn)業(yè)株式會(huì)社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
兴业县| 上犹县| 洛隆县| 清水县| 康马县| 吉首市| 安平县| 信宜市| 清涧县| 陈巴尔虎旗| 车险| 龙陵县| 同德县| 凉山| 西和县| 万盛区| 西峡县| 顺义区| 蕉岭县| 西贡区| 青铜峡市| 泸州市| 和龙市| 澳门| 新巴尔虎左旗| 东乡县| 孟连| 定南县| 南康市| 漠河县| 菏泽市| 宕昌县| 喜德县| 稷山县| 临清市| 乌拉特前旗| 福贡县| 霍山县| 阆中市| 迁安市| 二连浩特市|