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