本發(fā)明涉及半導體制造領域,特別涉及一種自動優(yōu)化片上系統(tǒng)層次化模塊布局的方法及系統(tǒng)。
背景技術:
片上系統(tǒng)(System On Chip,SOC)設計技術始于20世紀90年代中期,隨著半導體工藝技術的發(fā)展,集成電路IC設計者能夠?qū)⒂鷣碛鷱碗s的功能集成到單硅片上,SOC正是IC向集成系統(tǒng)IS轉變的大方向下產(chǎn)生的。由于SOC可以充分利用已有的設計積累,顯著地提高了特定應用集成電路(Application Specific Integrated Circuit,ASIC)的設計能力,因此發(fā)展非常迅速,引起了工業(yè)界和學術界的關注。
在集成電路片上系統(tǒng)(SOC)的層次化設計過程中,自動布局實現(xiàn)了在層次上自下而上進行布局,其存在的問題是通過平面規(guī)劃計算的下層各子模塊的幾何約束,在某些情況下或許并不適合某些子模塊,例如,某些子模塊的布局與平面規(guī)劃指定的尺寸(幾何約束)相差很大,而其他模塊的布局又比較嚴格的遵循了平面規(guī)劃指定的尺寸(幾何約束)要求,參考圖1所示。在這種情況下會導致上層布局存在一些未利用面積,造成不必要的芯片面積浪費。
技術實現(xiàn)要素:
本發(fā)提供一種自動優(yōu)化片上系統(tǒng)層次化模塊布局的方法及系統(tǒng),解決通過現(xiàn)有技術進行SOC層次化模塊布局時存在一些未利用面積,造成不必要的芯片面積浪費的問題。
本發(fā)明提供了一種自動優(yōu)化片上系統(tǒng)層次化模塊布局的方法,包括步驟:
(1)讀入待優(yōu)化電路模塊及其各子模塊的布局和各子模塊的幾何約束;
(2)搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間;
(3)搜索引起空白空間的子模塊,將該子模塊作為待調(diào)整子模塊;
(4)通過調(diào)整待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該待調(diào)整子模塊引起的空白空間;
(5)根據(jù)調(diào)整后各子模塊的幾何尺寸重新布局待優(yōu)化電路模塊;
重復上述步驟(1)至步驟(5)直至刪除所有空白空間。
優(yōu)選地,所述搜尋各子模塊根據(jù)所述幾何約束進行布局引起的空白空間包括:
收集各子模塊的頂點;
對所有頂點作水平線和垂直線;
獲取所有水平線和垂直線圍成的矩形空間內(nèi)未包含任意一個子模塊的任意部分的各矩形空間,將未包含任意一個子模塊的任意部分的各矩形空間作為空白空間。
優(yōu)選地,所述搜索引起空白空間的子模塊,將該子模塊作為待調(diào)整子模塊包括:
從所述空白空間的任意一邊界朝向?qū)γ孢吔邕M行外推法,直至遇到阻礙外推的子模塊,將阻礙外推的子模塊作為待調(diào)整子模塊。
優(yōu)選地,所述通過調(diào)整待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該待調(diào)整子模塊引起的空白空間包括:
從各空白空間中選取一個空白空間作為待處理空白空間;
當所述待處理空白空間在垂直方向的值小于相應待調(diào)整子模塊在垂直方向的值,調(diào)整相應待調(diào)整子模塊在垂直方向的幾何約束,使得該子模塊的上邊沿/下邊沿與待處理空白空間的上邊沿/下邊沿接近同一水平線和/或當所述待處理空白空間在水平方向的值小于相應待調(diào)整子模塊在水平方向的值,調(diào)整相應待調(diào)整子模塊在水平方向的幾何約束使得該子模塊的右邊 沿/左邊沿與待處理空白空間的左邊沿/右邊沿接近同一垂直線,并根據(jù)各待調(diào)整子模塊在調(diào)整前后所占面積不變原則,調(diào)整被調(diào)整后的待調(diào)整子模塊在水平方向/垂直方向的長度;
對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸;
刪除所述待處理空白空間。
優(yōu)選地,所述方法還包括:
搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間之后,對各空白空間按照大小進行排序;
所述從各空白空間中選取一個空白空間作為待處理空白空間包括:將最大的空白空間作為待處理空白空間。
優(yōu)選地,所述方法還包括:
將該子模塊作為待調(diào)整子模塊之后,搜索引起所述待調(diào)整子模塊引起空白空間的所有子模塊,構成待調(diào)整子模塊隊列;
調(diào)整所述待調(diào)整子模塊隊列中各待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除所述待調(diào)整子模塊引起的空白空間。
優(yōu)選地,所述方法還包括:
搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間之后,濾除小于設定閾值的空白空間。
優(yōu)選地,所述方法還包括:
通過調(diào)整待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該待調(diào)整子模塊引起的空白空間之后,判斷是否還存在空白空間,若是,則選取另一個空白空間作為待處理空白空間,若否,則根據(jù)調(diào)整后各子模塊的幾何尺寸重新布局待優(yōu)化電路模塊。
一種自動優(yōu)化片上系統(tǒng)層次化模塊布局的系統(tǒng),包括:
讀入模塊,用于讀入待優(yōu)化電路模塊及其各子模塊的布局和各子模塊的幾何約束;
空白空間搜尋模塊,用于搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間;
待調(diào)整子模塊搜索模塊,用于搜索引起空白空間的子模塊,將該子模塊作為將該子模塊作為待調(diào)整子模塊;
調(diào)整模塊,用于通過調(diào)整待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該待調(diào)整子模塊引起的空白空間;
布局模塊,用于根據(jù)調(diào)整后各子模塊的幾何尺寸重新布局待優(yōu)化電路模塊;
第一判斷模塊,用于判斷是否還存在空白空間,當判斷結果為是,繼續(xù)優(yōu)化片上系統(tǒng)層次化模塊布局,當判斷結果為否,將當前片上系統(tǒng)層次化模塊布局作為輸出結果。
優(yōu)選地,所述空白空間搜尋模塊包括:
頂點收集單元,用于收集各子模塊的頂點;
做線單元,用于對所有頂點作水平線和垂直線;
空白空間獲取單元,用于獲取所有水平線和垂直線圍成的矩形空間內(nèi)未包含任意一個子模塊的任意部分的各矩形空間,將未包含任意一個子模塊的任意部分的各矩形空間作為空白空間。
優(yōu)選地,所述待調(diào)整子模塊搜索模塊具體用于從所述空白空間的任意一邊界朝向?qū)γ孢吔邕M行外推法,直至遇到阻礙外推的子模塊,將阻礙外推的子模塊作為待調(diào)整子模塊。
優(yōu)選地,所述調(diào)整模塊包括:
選取單元,用于從各空白空間中選取一個空白空間作為待處理空白空間;
幾何約束調(diào)整單元,用于當所述待處理空白空間在垂直方向的值小于相應待調(diào)整子模塊在垂直方向的值,調(diào)整相應待調(diào)整子模塊在垂直方向的幾何約束,使得該子模塊的上邊沿/下邊沿與待處理空白空間的上邊沿/下邊沿接近同一水平線和/或當所述待處理空白空間在水平方向的值小于相應待調(diào)整子模塊在水平方向的值,調(diào)整相應待調(diào)整子模塊在水平方向的幾何 約束使得該子模塊的右邊沿/左邊沿與待處理空白空間的左邊沿/右邊沿接近同一垂直線,并根據(jù)各待調(diào)整子模塊在調(diào)整前后所占面積不變原則,調(diào)整被調(diào)整后的待調(diào)整子模塊在水平方向/垂直方向的長度;
幾何尺寸獲取單元,用于對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸;
刪除單元,用于刪除所述待處理空白空間。
優(yōu)選地,所述系統(tǒng)還包括:
排序模塊,與所述空白空間搜尋模塊相連接,用于對各空白空間按照大小進行排序;
選取單元具體用于將最大的空白空間作為待處理空白空間。
優(yōu)選地,所述系統(tǒng)還包括:
濾除模塊,與所述空白空間搜尋模塊相連接,用于濾除小于設定閾值的空白空間。
優(yōu)選地,所述系統(tǒng)還包括:
第二判斷模塊,用于判斷通過調(diào)整待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該待調(diào)整子模塊引起的空白空間之后是否還存在空白空間,若是,則選取另一個空白空間作為待處理空白空間,若否,則根據(jù)調(diào)整后各子模塊的幾何尺寸重新布局待優(yōu)化電路模塊。
本發(fā)明提供的一種自動優(yōu)化片上系統(tǒng)層次化模塊布局的方法及系統(tǒng),通過對讀入的待優(yōu)化電路模塊及其子模塊的布局和各子模塊的幾何約束進行搜尋,得到由上述幾何約束不合適而導致的各空白空間,然后搜索引起空白空間的待調(diào)整子模塊,并通過對該待調(diào)整子模塊的幾何約束進行調(diào)整,獲得在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該空白空間,最終根據(jù)調(diào)整后各子模塊的幾何尺寸重新布局待優(yōu)化電路模塊。由于本發(fā)明提供的方法能自動搜尋因子模塊的幾何尺寸不合適引起的空白空間,并自動搜索引起該空白空間的待調(diào)整子模塊,然后調(diào)整該待調(diào)整子模塊的幾何約束并根據(jù)其對子模塊進行布局得到子模塊幾何尺寸以消除空白空間,解決現(xiàn)有技術造成不必要的芯片面積浪費的問題,從而能提升芯片面 積的有效利用率,降低成本。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為根據(jù)現(xiàn)有技術進行SOC層次化模塊布局的示意圖;
圖2為根據(jù)本發(fā)明提供的一種自動優(yōu)化SOC層次化模塊布局的方法的流程圖;
圖3至圖4為根據(jù)本發(fā)明提供的方法獲取的空白空間的示意圖;
圖5為根據(jù)本發(fā)明提供的方法獲取待調(diào)整子模塊的示意圖;
圖6至圖21為根據(jù)本發(fā)明提供方法的各實施例的邏輯圖;
圖22為根據(jù)本發(fā)明提供的一種自動優(yōu)化SOC層次化模塊布局的系統(tǒng)的結構示意圖。
具體實施方式
下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。此外,本發(fā)明可以在不同例子中重復參考數(shù)字和/或字母。這種重復是為了簡化和清楚的目的,其本身不指示所討論各種實施例和/或設置之間的關系。
現(xiàn)有技術對電路模塊按照SOC的層次化進行布局時,由于通過平面規(guī)劃計算的各子模塊的幾何約束并不適合所有子模塊,使得按照平面規(guī)劃計算得到的幾何約束對所有子模塊進行布局時,常常會出現(xiàn)一些空白空間,當將這樣存在較多空白空間的模塊集成于芯片上時,造成不必要的芯片面積浪費。為此需要根據(jù)當前布局結果對子模塊的幾何約束進行自動調(diào)整,以實現(xiàn)自動優(yōu)化SOC層次化模塊布局的目的。
本發(fā)明提供的一種自動優(yōu)化片上系統(tǒng)層次化模塊布局的方法及系統(tǒng),由于在讀入待優(yōu)化電路模塊及其各子模塊的布局和各子模塊的幾何約束,能自動搜尋因子模塊的幾何約束不合適引起的空白空間,并自動搜索引起該空白空間的待調(diào)整子模塊,然后調(diào)整該待調(diào)整子模塊的幾何約束并根據(jù)其對子模塊進行布局得到子模塊幾何尺寸,以消除空白空間,解決現(xiàn)有技術造成不必要的芯片面積浪費的問題,從而能提升芯片面積的有效利用率,降低成本。
為了更好的理解本發(fā)明的技術方案和技術效果,以下將結合流程圖和具體的實施例進行詳細的描述,流程圖如圖5所示。
步驟S01,讀入待優(yōu)化電路模塊及其各子模塊的布局和各子模塊的幾何約束。
在本實施中,所述待優(yōu)化電路模塊可以包括:電源模塊、D/A轉換模塊、頻率合成模塊等能集成于芯片上的電路模塊。各子模塊布局于平面體系,而非自由系,各子模塊之間以及與電路模塊之間存在一定的聯(lián)系;這種聯(lián)系對各子模塊之間的位置關系及大小形成幾何學上的限制,這種幾何學上的限制稱為幾何約束。在本實施例中,所述幾何約束主要包括:各子模塊在垂直方向上的值以及長度,各子模塊在水平方向上的值以及長度。
步驟S02,搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間。
在本實施例中,所述搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間可以包括:收集各子模塊的頂點;對所有頂點作水平線和垂直線;獲取所有水平線和垂直線圍成的矩形空間內(nèi)未包含任意一個子模塊的任意部分的各矩形空間,將未包含任意一個子模塊的任意部分的各矩形空間作為空白空間;在另一些實施例中,所述方法還包括:在獲取空白空間后,濾除小于設定閾值的空白空間。其中,所述設定閾值可以是指定值,也可以是根據(jù)一定規(guī)則獲取的值,例如:該設定閾值可以是待優(yōu)化電路模塊的各子模塊中面積最小的面積值,還可以是各子模塊下層次的各子模塊中面積最小的面積值。將小于該設定閾值的空白空間濾除。在實際應用中,模塊之間根據(jù)設計規(guī)則和引出連線的需求,需要在模塊之間保留一定的間距,因此會引入一些必須保留的面積,優(yōu)選地,所述設定閾值應當為該層次模 塊中面積最小的面積值與外圍保留間距所引入的面積值之和。
在一個具體實施例中,所述待優(yōu)化電路模塊A的各子模塊為Ai,首先收集各子模塊Ai的四個頂點構成頂點序列QP;然后對各定點序列QP中每一個頂點Pi過該點作水平線HLi和垂直線VLi;接著獲取任意兩個點對應的兩對線HLi、VLi、HLj和VLj構成一個矩形空間;最終檢查各矩陣空間是否包含任意一個子模塊的任意部分,將未包含任意一個子模塊的任意部分的各矩形空間作為空白空間FSi。如圖3至圖4所示,空白空間包括:FS1、FS2、FS3、FS4。其中,i,j為1,2,3…等正整數(shù)。
需要說明的是,在實際應用中,可以將所示空白空間構成隊列QFS,以便于計算機自動對各空白空間進行處理。
步驟S03,搜索引起空白空間的子模塊,將該子模塊作為將該子模塊作為待調(diào)整子模塊。
在本實施例中,所述搜索引起空白空間的子模塊,將該子模塊作為將該子模塊作為待調(diào)整子模塊包括:從所述空白空間的任意一邊界朝向?qū)γ孢吔邕M行外推法,直至遇到阻礙外推的子模塊,將阻礙外推的子模塊作為待調(diào)整子模塊。
在實際應用中,可以從所述空白空間的任意一邊界為基準進行外推法,將該子模塊作為待調(diào)整子模塊,例如,參考圖5所示,可以采用以下任意一種或多種:
1)空白空間左邊界外推法直至遇到阻礙外推的子模塊,如圖5中空白空間FSi左邊界外推得到子模塊A1;
2)空白空間右邊界外推法直至遇到阻礙外推的子模塊,如圖5中空白空間FSi右邊界外推得到子模塊A4;
3)空白空間上邊界外推法直至遇到阻礙外推的子模塊,如圖5中空白空間FSi上邊界外推得到子模塊A5、A6;
4)空白空間下邊界外推法直至遇到阻礙外推的子模塊,如圖5中空白空間FSi下邊界外推得到子模塊A2、A3。
在實際應用中,獲得待調(diào)整子模塊之后,搜索引起所述待調(diào)整子模塊引起空白空間的所有子模塊,構成待調(diào)整子模塊隊列,以便于計算機對引 起空白空間的所有子模塊進行自動處理。
在一個具體實施例中,搜索引起空白空間FSi的子模塊,將該子模塊作為待調(diào)整子模塊,優(yōu)選地,將所示待調(diào)整子模塊歸入一個集合中,形成待調(diào)整子模塊集合QAi={Ai|i=1,2,...}。
進一步的,搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間之后,對各空白空間按照大小進行排序,即對待調(diào)整子模塊集合QAi進行排序。
步驟S04,通過調(diào)整待調(diào)整子模塊的幾何約束,以去除該待調(diào)整子模塊引起的空白空間。
在本實施例中,調(diào)整待調(diào)整子模塊的幾何約束依賴于該待調(diào)整子模塊和空白空間的位置關系。
所述通過調(diào)整待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該待調(diào)整子模塊引起的空白空間包括:
從各空白空間中選取一個空白空間作為待處理空白空間;當所述待處理空白空間在垂直方向的值小于相應待調(diào)整子模塊在垂直方向的值,調(diào)整相應待調(diào)整子模塊在垂直方向的幾何約束,使得該子模塊的上邊沿/下邊沿與待處理空白空間的上邊沿/下邊沿接近同一水平線和/或當所述待處理空白空間在水平方向的值小于相應待調(diào)整子模塊在水平方向的值,調(diào)整相應待調(diào)整子模塊在水平方向的幾何約束使得該子模塊的右邊沿/左邊沿與待處理空白空間的左邊沿/右邊沿接近同一垂直線,并根據(jù)各待調(diào)整子模塊在調(diào)整前后所占面積不變原則,調(diào)整被調(diào)整后的待調(diào)整子模塊在水平方向/垂直方向的長度;對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸;刪除所述待處理空白空間。
進一步的,所述從各空白空間中選取一個空白空間作為待處理空白空間包括:將最大的空白空間作為待處理空白空間。
在實際應用中,可以調(diào)整所述待調(diào)整子模塊隊列中各待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除所述待調(diào)整子模塊引起的空白空間。
當然,為了提高自動優(yōu)化效率,本實施例還可以在調(diào)整待調(diào)整子模塊的幾何約束,去除該待調(diào)整子模塊引起的空白空間之后,判斷是否還存在空白空間,若是,則選取另一個空白空間作為待處理空白空間,若否,則根據(jù)調(diào)整后各子模塊的幾何約束重新布局待優(yōu)化電路模塊。
以圖5所示的布局為例,對調(diào)整待調(diào)整子模塊的幾何約束進行說明:圖5中以陰影標注的區(qū)域為該待優(yōu)化電路模塊的最大空白空間FSi,空白空間左邊界外推法直至遇到阻礙外推的子模塊,如圖10中A1,A1在Y方向的幾何約束應調(diào)整為接近YL(A1)-[YTR(A1)-YBL(FSi)],其中YL(A1)為A1的Y方向長度,YTR(A1)為A1的右上角的Y坐標值,YBL(FSi)為空白空間FSi的左下角Y坐標值。需要注意的是YTR(A1)〉YTL(FSi)時,不對A1進行調(diào)整。
空白空間右邊界外推法直至遇到阻礙外推的子模塊,如圖10中的A4,A4在Y方向的幾何約束應調(diào)整為接近YL(A4)-[YTL(A4)-YBR(FSi)],其中YL(A4)為A4的Y方向長度,YTL(A4)為A4的左上角的Y坐標值,YBR(FSi)為空白空間FSi的右下角Y坐標值。需要注意的是YTL(A4)〉YTR(FSi)時,不對A4進行調(diào)整。
空白空間上邊界外推法直至遇到阻礙外推的子模塊,如圖10中的A5,A5在Y方向的幾何約束應調(diào)整為接近YL(A5)+[YBR(A5)-YBR(FSi)],其中YL(A5)為A5的Y方向長度,YBR(A5)為A5的右下角的Y坐標值,YBR(FSi)為空白空間FSi的右下角Y坐標值。需要注意的是YBR(A5)<YBR(FSi)時,不對A5進行調(diào)整。
實施例一
在本實施例中,如圖6所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.若上述隊列QFS為空,則轉向步驟10結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟4;
4.從上述隊列QFS中選取空白空間FSi;
5.搜索引起空白空間FSi的子模塊Ai;
6.根據(jù)子模塊Ai在模塊A內(nèi)造成的空白空間FSi對子模塊Ai幾何約束進行自動調(diào)整;
7.在新的幾何約束下重新布局子模塊Ai;
8.在空白空間隊列QFS中刪除FSi;
9.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
10.結束電路模塊A的布局優(yōu)化。
實施例二
在本實施例中,如圖7所示,與實施例一所不同的是:增加步驟3對QFS內(nèi)的空白空間按從大到小進行排序,步驟5為從上述隊列QFS中選取最大空白空間FSi,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的空白空間按從大到小的順序進行排序;
4.若上述隊列QFS為空,則轉向步驟11結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟5;
5.從上述隊列QFS中選取最大的空白空間FSi;
6.搜索引起空白空間FSi的子模塊Ai;
7.根據(jù)子模塊Ai在模塊A內(nèi)造成的面積浪費對子模塊Ai幾何約束進行自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai;
9.在空白空間隊列QFS中刪除FSi;
10.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
11.結束電路模塊A的布局優(yōu)化。
實施例三
在本實施例中,如圖8所示,與實施例一所不同的是,增加步驟3濾除隊列QFS中面積大小可忽略的空白空間,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.濾除隊列QFS中面積大小可忽略的空白空間;
4.若上述隊列QFS為空,則轉向步驟11結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行驟5;
5.從上述隊列QFS中選取空白空間FSi;
6.搜索引起空白空間FSi的子模塊Ai;
7.根據(jù)子模塊Ai在模塊A內(nèi)造成的面積浪費對子模塊Ai幾何約束進行自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai;
9.在空白空間隊列QFS中刪除FSi;
10.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
11.結束電路模塊A的布局優(yōu)化。
其中,所述設定閾值如上文所述,在此不再詳述。
實施例四
在本實施例中,如圖9所示,與實施例一所不同的是:增加步驟2針對空白空間進行排序,增加步驟3濾除隊列QFS中面積大小可忽略的空白空間,對空白空間選取按取最大值原則進行,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的空白空間按從大到小的順序進行排序;
4.濾除隊列QFS中面積大小可忽略的空白空間;
5.若上述隊列QFS為空,則轉向步驟12結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟6;
6.從上述隊列QFS中選取最大的空白空間FSi;
7.搜索引起空白空間FSi的子模塊Ai;
8.根據(jù)子模塊Ai在模塊A內(nèi)造成的面積浪費對子模塊Ai幾何約束進行自動調(diào)整;
9.在新的幾何約束下重新布局子模塊Ai;
10.在空白空間隊列QFS中刪除FSi;
11.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
12.結束電路模塊A的布局優(yōu)化。
實施例五
在本實施例中,如圖10所示,不同于實施例一,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.若上述隊列QFS為空,則轉向步驟10結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟4;
4.從上述隊列QFS中選取空白空間FSi;
5.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
6.選取子模塊隊列QAi一未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
7.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟8,否則轉向步驟6;
8.在空白空間隊列QFS中刪除FSi;
9.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
10.結束電路模塊A的布局優(yōu)化。
實施例六
在本實施例中,如圖11所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的空白空間按面積從大到小的順序進行排序;
4.若上述隊列QFS為空,則轉向步驟11結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟5;
5.從上述隊列QFS中選取最大的空白空間FSi;
6.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
7.選取子模塊隊列QAi未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟9,否則轉向步驟7;
9.在空白空間隊列QFS中刪除FSi;
10.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
11.結束電路模塊A的布局優(yōu)化。
實施例七
在本實施例中,如圖12所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.濾除隊列QFS中面積大小可忽略的空白空間;
4.若上述隊列QFS為空,則轉向步驟11結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟5;
5.從上述隊列QFS中選取空白空間FSi;
6.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
7.選取子模塊隊列QAi未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟9,否則轉向步驟7;
9.在空白空間隊列QFS中刪除FSi;
10.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
11.結束電路模塊A的布局優(yōu)化。
實施例八
在本實施例中,如圖13所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的空白空間按從大到小的順序進行排序;
4.濾除隊列QFS中面積大小可忽略的空白空間;
5.若上述隊列QFS為空,則轉向步驟12結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟6;
6.從上述隊列QFS中選取最大的空白空間FSi;
7.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
8.選取子模塊隊列QAi未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
9.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟10,否則轉向步驟8;
10.在空白空間隊列QFS中刪除FSi;
11.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
12.結束電路模塊A的布局優(yōu)化。
實施例九
在本實施例中,如圖14所示,與實施例一所不同的是:在重新布局電路模塊A之前對所有引起待處理空白空間的所有子模塊Ai均作處理,然后才對電路模塊A在頂層重新布局,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.若上述隊列QFS為空,則轉向步驟11結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟4;
4.從上述隊列QFS中選取空白空間FSi;
5.搜索引起空白空間FSi的子模塊Ai;
6.根據(jù)子模塊Ai在電路模塊A內(nèi)造成的面積浪費對子模塊Ai幾何約束進行自動調(diào)整;
7.在新的幾何約束下重新布局子模塊Ai;
8.在空白空間隊列QFS中刪除FSi,
9.若空白空間隊列QFS為空,轉為執(zhí)行步驟11,否則轉為執(zhí)行步驟4;
10.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
11.結束電路模塊A的布局優(yōu)化。
實施例十
在本實施例中,如圖15所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的空白空間按從大到小的順序進行排序;
4.若上述隊列QFS為空,則轉向步驟12結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟5;
5.從上述隊列QFS中選取最大的空白空間FSi;
6.搜索引起空白空間FSi的子模塊Ai;
7.根據(jù)子模塊Ai在模塊A內(nèi)造成的面積浪費對子模塊Ai幾何約束進行自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai;
9.在空白空間隊列QFS中刪除FSi;
10.若空白空間隊列FS為空,轉為執(zhí)行步驟11,否則轉為執(zhí)行步驟5;
11.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
12.結束電路模塊A的布局優(yōu)化。
實施例十一
在本實施例中,如圖16所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.濾除隊列QFS中面積大小可忽略的空白空間;
4.若上述隊列QFS為空,則轉向步驟12結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟5;
5.從上述隊列QFS中選取空白空間FSi;
6.搜索引起空白空間FSi的子模塊Ai;
7.根據(jù)子模塊Ai在電路模塊A內(nèi)造成的面積浪費對子模塊Ai幾何約束進行自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai;
9.在空白空間隊列QFS中刪除FSi;
10.若空白空間隊列QFS為空,轉為執(zhí)行步驟11,否則轉為執(zhí)行步驟5;
11.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
12.結束電路模塊A的布局優(yōu)化。
實施例十二
在本實施例中,如圖17所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的各空白空間FS按從大到小的順序進行排序;
4.濾除隊列QFS中面積大小可忽略的空白空間;
5.若上述隊列QFS為空,則轉向步驟13結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟6;
6.從上述隊列QFS中選取最大的空白空間FSi;
7.搜索引起空白空間FSi的子模塊Ai;
8.根據(jù)子模塊Ai在電路模塊A內(nèi)造成的面積浪費對子模塊Ai幾何約束進行自動調(diào)整;
9.在新的幾何約束下重新布局子模塊Ai;
10.在空白空間隊列QFS中刪除FSi;
11.若空白空間隊列QFS為空,轉為執(zhí)行步驟12,否則轉為執(zhí)行步驟6;
12.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
13.結束電路模塊A的布局優(yōu)化。
實施例十三
在本實施例中,如圖18所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.若上述隊列QFS為空,則轉向步驟11結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟4;
4.從上述隊列QFS中選取空白空間FSi;
5.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
6.選取子模塊隊列QAi未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
7.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟8,否則轉向步驟6;
8.在空白空間隊列QFS中刪除FSi;
9.若空白空間隊列QFS為空,轉為執(zhí)行步驟11,否則轉為執(zhí)行步驟4;
10.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
11.結束電路模塊A的布局優(yōu)化。
實施例十四
在本實施例中,如圖19所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的空白空間按面積從大到小的順序進行排序;
4.若上述隊列QFS為空,則轉向步驟12結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟5;
5.從上述隊列QFS中選取最大的空白空間FSi;
6.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
7.選取子模塊隊列QAi未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟9,否則轉向步驟7;
9.在空白空間隊列QFS中刪除FSi;
10.若空白空間隊列FS為空,轉為執(zhí)行步驟11,否則轉為執(zhí)行步驟5;
11.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
12.結束電路模塊A的布局優(yōu)化。
實施例十五
在本實施例中,如圖20所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.濾除隊列QFS中面積大小可忽略的空白空間;
4.若上述隊列QFS為空,則轉向步驟12結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟5;
5.從上述隊列QFS中選取空白空間FSi;
6.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
7.選取子模塊隊列QAi未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
8.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟9,否則轉向步驟7;
9.在空白空間隊列QFS中刪除FSi;
10.若空白空間隊列FS為空,轉為執(zhí)行步驟11,否則轉為執(zhí)行步驟4;
11.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
12.結束電路模塊A的布局優(yōu)化。
實施例十六
在本實施例中,如圖21所示,一種自動優(yōu)化SOC層次化模塊布局方法具體包括以下步驟:
1.讀入電路模塊A及其子模塊的布局和各子模塊設計約束;
2.在電路模塊A的布局上搜尋空白空間FS,構成隊列QFS;
3.對空白空間隊列QFS中的空白空間按從大到小的順序進行排序;
4.濾除隊列QFS中面積大小可忽略的空白空間;
5.若上述隊列QFS為空,則轉向步驟13結束電路模塊A的布局優(yōu)化,否則轉向執(zhí)行步驟6;
6.從上述隊列QFS中選取最大的空白空間FSi;
7.搜索引起空白空間FSi的所有子模塊Ai,構成子模塊隊列QAi;
8.選取子模塊隊列QAi未調(diào)整的子模塊Ai幾何約束自動調(diào)整;
9.在新的幾何約束下重新布局子模塊Ai,若子模塊隊列QAi中所有子模塊均已完成重新布局,則轉向步驟10,否則轉向步驟8;
10.在空白空間隊列QFS中刪除FSi;
11.若空白空間隊列FS為空,轉為執(zhí)行步驟12,否則轉為執(zhí)行步驟6;
12.在A模塊的頂層重新布局電路模塊A,并轉為執(zhí)行步驟1;
13.結束電路模塊A的布局優(yōu)化。
在本發(fā)明實施例中通過在讀入待優(yōu)化電路模塊及其各子模塊的布局和各子模塊的幾何約束之后,自動搜尋因子模塊的幾何尺寸不合適引起的空白空間,并自動搜索引起該空白空間的待調(diào)整子模塊,然后調(diào)整該待調(diào)整子模塊的幾何約束并對子模塊重新進行布局以消除空白空間,最終對所述待優(yōu)化電路模塊進行重新布局,解決現(xiàn)有技術造成不必要的芯片面積浪費的問題,從而能提升芯片面積的有效利用率,降低生產(chǎn)成本。
相應地,本發(fā)明還提供了一種自動優(yōu)化片上系統(tǒng)層次化模塊布局的系 統(tǒng),包括:
讀入模塊201,用于讀入待優(yōu)化電路模塊及其各子模塊的布局和各子模塊的幾何約束;
空白空間搜尋模塊202,用于搜尋各子模塊根據(jù)所述幾何約束進行布局引起的各空白空間;
待調(diào)整子模塊搜索模塊203,用于搜索引起空白空間的子模塊,將該子模塊作為待調(diào)整子模塊;
調(diào)整模塊204,用于通過調(diào)整待調(diào)整子模塊的幾何約束,對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸,以去除該待調(diào)整子模塊引起的空白空間;
布局模塊205,用于根據(jù)調(diào)整后各子模塊的幾何尺寸重新布局待優(yōu)化電路模塊;
第一判斷模塊206,用于判斷是否還存在空白空間,當判斷結果為是,繼續(xù)優(yōu)化片上系統(tǒng)層次化模塊布局,當判斷結果為否,將當前片上系統(tǒng)層次化模塊布局作為輸出結果。
在實際應用中,所述空白空間搜尋模塊202包括:
頂點收集單元,用于收集各子模塊的頂點;
做線單元,用于對所有頂點作水平線和垂直線;
空白空間獲取單元,用于獲取所有水平線和垂直線圍成的矩形空間內(nèi)未包含任意一個子模塊的任意部分的各矩形空間,將未包含任意一個子模塊的任意部分的各矩形空間作為空白空間;
進一步地,為了提高優(yōu)化效率,可以濾除面積小于一定閾值的空白空間,所述系統(tǒng)還包括:濾除模塊301,與所述空白空間搜尋模塊202相連接,用于濾除小于設定閾值的空白空間。
在實際應用中,該系統(tǒng)為了獲取所述待調(diào)整子模塊,所述待調(diào)整子模塊搜索模塊203具體用于從所述空白空間的任意一邊界朝向?qū)γ孢吔邕M行外推法,直至遇到阻礙外推的子模塊,將阻礙外推的子模塊作為待調(diào)整子模塊。
在本實施例中,本系統(tǒng)基于幾何約束調(diào)整待調(diào)整子模塊,以消除空白 空間。所述調(diào)整模塊204包括:
選取單元,用于從各空白空間中選取一個空白空間作為待處理空白空間;
幾何約束調(diào)整單元,用于當所述待處理空白空間在垂直方向的值小于相應待調(diào)整子模塊在垂直方向的值,調(diào)整相應待調(diào)整子模塊在垂直方向的幾何約束,使得該子模塊的上邊沿/下邊沿與待處理空白空間的上邊沿/下邊沿接近同一水平線和/或當所述待處理空白空間在水平方向的值小于相應待調(diào)整子模塊在水平方向的值,調(diào)整相應待調(diào)整子模塊在水平方向的幾何約束使得該子模塊的右邊沿/左邊沿與待處理空白空間的左邊沿/右邊沿接近同一垂直線,并根據(jù)各待調(diào)整子模塊在調(diào)整前后所占面積不變原則,調(diào)整被調(diào)整后的待調(diào)整子模塊在水平方向/垂直方向的長度;
幾何尺寸獲取單元,用于對待調(diào)整子模塊在調(diào)整后幾何約束下進行布局得到該待調(diào)整子模塊的幾何尺寸;
刪除單元,用于刪除所述待處理空白空間。
進一步地,本系統(tǒng)可以對所述空白空間的大小進行排序,以便于優(yōu)先處理造成最大面積浪費的空白空間,因此,所述系統(tǒng)還包括:
排序模塊302,與所述空白空間搜尋模塊相連接,用于對各空白空間按照大小進行排序;
選取單元具體用于將最大的空白空間作為待處理空白空間。
此外,為了提升系統(tǒng)效率,本系統(tǒng)在調(diào)整模塊204之后,可以通過一個判斷模塊判斷待引起調(diào)整子模塊引起空白空間的子模塊是否都進行了幾何約束調(diào)整,所述系統(tǒng)還包括:
第二判斷模塊303,用于判斷調(diào)整待調(diào)整子模塊的幾何約束,去除該待調(diào)整子模塊引起的空白空間之后是否還存在空白空間,若是,則選取另一個空白空間作為待處理空白空間,若否,則根據(jù)調(diào)整后各子模塊的幾何約束重新布局待優(yōu)化電路模塊。
當然,該系統(tǒng)還可以進一步包括存儲模塊(未圖示),用于保存搜索結果,如空白空間及待調(diào)整子模塊相關信息等。這樣,以方便對待優(yōu)化電路模塊布局進行計算機自動處理,并存優(yōu)化后電路模塊布局結果相關信息 等。
本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可。尤其,對于實施例二而言,由于其是本發(fā)明提供的方法的另一種示例,所以描述得比較簡單,相關之處參見實施例一的部分說明即可。以上所描述的實施例僅僅是示意性的,本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
雖然本發(fā)明已以較佳實施例披露如上,然而并非用以限定本發(fā)明。任何熟悉本領域的技術人員,在不脫離本發(fā)明技術方案范圍情況下,都可利用上述揭示的方法和技術內(nèi)容對本發(fā)明技術方案作出許多可能的變動和修飾,或修改為等同變化的等效實施例。因此,凡是未脫離本發(fā)明技術方案的內(nèi)容,依據(jù)本發(fā)明的技術實質(zhì)對以上實施例所做的任何簡單修改、等同變化及修飾,均仍屬于本發(fā)明技術方案保護的范圍內(nèi)。