專利名稱:集成電路設(shè)計(jì)和庫的優(yōu)化的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子設(shè)計(jì)自動化領(lǐng)域,更具體而言涉及其設(shè)計(jì)基于單元庫(cell library)的數(shù)字電路的優(yōu)化。
背景技術(shù):
集成電路是信息時(shí)代的重要組成部分并且對于信息時(shí)代是很關(guān)鍵的,其影響著包 括金融、銀行、法律、軍事、高科技、運(yùn)輸、電話、石油、醫(yī)療、藥物、食品、農(nóng)業(yè)、教育以及許多 其他產(chǎn)業(yè)在內(nèi)的每一種產(chǎn)業(yè)。諸如DSP、放大器、DRAM、SRAM、EPROM、EEPR0M、閃存、微處理 器、ASIC和可編程邏輯之類的集成電路被用于諸如計(jì)算機(jī)、聯(lián)網(wǎng)、電信和消費(fèi)類電子產(chǎn)品之 類的許多應(yīng)用中。消費(fèi)者不斷地要求其電子產(chǎn)品具有更高的性能。例如,更高速的計(jì)算機(jī)將會提供 更高速的圖形用于多媒體應(yīng)用或開發(fā)。更高速的因特網(wǎng)web服務(wù)器將帶來更強(qiáng)的在線商 務(wù),包括在線股票交易、書籍銷售、拍賣以及雜貨購買,這些只是幾個(gè)示例。更高性能的集成 電路將提高包含這些集成電路的產(chǎn)品的性能。大型的當(dāng)代集成電路具有數(shù)百萬的包括門和晶體管在內(nèi)的器件,并且是非常復(fù)雜 的。隨著工藝技術(shù)的改進(jìn),在單個(gè)集成電路上可制造越來越多的器件,因此集成電路將隨著 時(shí)間而繼續(xù)變得更加復(fù)雜。為了應(yīng)對構(gòu)建更復(fù)雜且更高性能的集成電路的挑戰(zhàn),使用了軟 件工具。這些工具處于通常稱為計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助工程(CAE)或電子設(shè)計(jì) 自動化(EDA)的領(lǐng)域中。始終需要改進(jìn)這些電子自動化工具以便滿足對集成電路的更高集 成度和更佳性能的需求。因此,需要用于電子設(shè)計(jì)自動化的改進(jìn)技術(shù)。
發(fā)明內(nèi)容
一種方法以選擇用于實(shí)現(xiàn)設(shè)計(jì)的最佳單元集合的方式對設(shè)計(jì)和庫(或庫的集合) 進(jìn)行共同優(yōu)化。該方法考慮到了在降低設(shè)計(jì)成本和遵守設(shè)計(jì)約束的同時(shí)限制新單元數(shù)目的 思想。該方法選擇最小接近最優(yōu)單元集合來優(yōu)化設(shè)計(jì)。這包括對基于單元的設(shè)計(jì)和用于實(shí) 現(xiàn)它的單元庫的同時(shí)優(yōu)化。該方法考慮了被描述為虛擬單元的新單元的集合,這些新單元 可能具有與原始庫不同的晶體管拓?fù)?、不同的大小、不同的邏輯功能?或不同的單元模板。映射過程可以取描述尚未實(shí)現(xiàn)但可得到估計(jì)成本的可能單元的額外方法作為輸入;這些單元在本申請中被稱為虛擬單元。設(shè)計(jì)隨后被映射到真實(shí)和虛擬單元以確定初始 最優(yōu)單元集合。重映射的設(shè)計(jì)隨后被遞增地重映射以減少所使用的單元的數(shù)目,同時(shí)不會 顯著惡化實(shí)現(xiàn)成本并且仍遵守設(shè)計(jì)約束。整個(gè)過程可以被迭代若干次。在確定理想單元集 合之后,可以插入每個(gè)單元的一些額外大小以保證時(shí)序閉合。最終單元集合的行高也可被 優(yōu)化以更好地適配于為最終庫選擇的單元。在一種實(shí)現(xiàn)方式中,一種用于電路設(shè)計(jì)和庫的同時(shí)優(yōu)化的方法包括提供初始電 路網(wǎng)表(其可以通過多個(gè)單元或布爾方程或其他方式(例如RTL代碼)來表述);提供初 始存在單元集合(可以為空);提供額外可容許功能/單元集合,其中可能包括虛擬單元; 在考慮初始存在單元集合和額外可容許功能或單元集合的情況下,映射電路以使實(shí)現(xiàn)成本 最小化;產(chǎn)生新的重映射的網(wǎng)表;以及產(chǎn)生由重映射的網(wǎng)表中使用的預(yù)先存在的單元和可 容許功能構(gòu)成的新單元庫規(guī)格和描述。額外可容許功能或單元集合可以通過功能或單元(可能包括虛擬單元)的列表來 顯式地定義。每個(gè)額外可容許邏輯功能可具不同的實(shí)現(xiàn),包括不同的晶體管拓?fù)洹⒕w管 的不同大小和不同的驅(qū)動強(qiáng)度。額外可容許功能或單元集合可以通過某個(gè)參數(shù)來隱式地定 義。額外可容許功能集合可由所允許的最大輸入數(shù)目來隱式地定義。額外可容許功能集合 可由處于串聯(lián)或并聯(lián)關(guān)聯(lián)的串聯(lián)和并聯(lián)開關(guān)的最大數(shù)目來隱式地定義。額外可容許功能集合可由功能的BDD實(shí)現(xiàn)中串聯(lián)的電弧的最大數(shù)目來隱式地定 義。額外可容許功能集合可由一般晶體管實(shí)現(xiàn)中串聯(lián)的開關(guān)的最大允許數(shù)目來隱式地定 義。額外可容許功能集合可由用于實(shí)現(xiàn)組合邏輯功能的兩個(gè)晶體管平面中串聯(lián)開關(guān)數(shù)目的 準(zhǔn)確下限上的最大允許開關(guān)數(shù)目來隱式地定義。在一種實(shí)現(xiàn)方式中,一種優(yōu)化單元庫模板的方法包括接收目標(biāo)技術(shù)信息;接收 要包括在庫中的功能或單元的集合;接收要為每個(gè)功能創(chuàng)建的驅(qū)動強(qiáng)度的集合;為每對功 能和驅(qū)動強(qiáng)度接收或得出晶體管拓?fù)涞募?;為不同的備選單元模板產(chǎn)生單元特性的初步 估計(jì);以及作為為所需單元的全體估計(jì)的特性的函數(shù),為所述庫選擇最終模板。在一種實(shí)現(xiàn)方式,一種在布置和布線之后優(yōu)化與電路網(wǎng)表相關(guān)聯(lián)的單元庫的方法 包括接收經(jīng)布置和布線的電路網(wǎng)表;接收相關(guān)聯(lián)的單元庫;從所述庫中去除(或忽略或不 允許使用)未使用的功能;可選地去除(或忽略或不允許使用)使用的功能的未使用的驅(qū) 動強(qiáng)度;對于每個(gè)使用的單元,添加鄰近驅(qū)動強(qiáng)度的集合,以允許進(jìn)一步的大小調(diào)節(jié);根據(jù) 本專利中描述的約束中的任何一個(gè)或組合,可選地使單元庫模板適應(yīng)于單元的新混合;以 及輸出考慮到引入的修改的新的庫規(guī)格。在一種實(shí)現(xiàn)方式中,一種用于在電路設(shè)計(jì)中使用的庫的優(yōu)化的方法包括提供初 始電路網(wǎng)表;提供一個(gè)或多個(gè)已存在單元集合;提供一個(gè)或多個(gè)額外可容許單元集合;在 考慮初始存在單元集合和額外可容許單元集合的情況下,分析所述初始電路網(wǎng)表以找出降 低實(shí)現(xiàn)成本的單元;以及輸出一個(gè)或多個(gè)新單元庫規(guī)格和描述,這一個(gè)或多個(gè)新單元庫規(guī) 格和描述包括潛在地降低設(shè)計(jì)成本的預(yù)先存在的單元的子集和可容許單元的子集。初始電路網(wǎng)表可由布爾方程或若干個(gè)單元的表述中的至少一種來提供的。分析初 始電路網(wǎng)表可包括在考慮初始存在單元集合和額外可容許單元集合的同時(shí)重映射電路。該方法可包括輸出新的重映射的網(wǎng)表。額外可容許單元集合可至少包括列出額外可得功能或單元的顯式集合。額外可容 許單元集合可包括列出額外可得單元的顯式集合,并且每個(gè)額外可容許邏輯功能可具有不 同的實(shí)現(xiàn)。額外可容許單元集合可包括通過某個(gè)參數(shù)隱式地定義的功能或單元的集合。額外可容許單元集合可包括由所允許的最大輸入數(shù)目隱式地定義的功能或單元 的集合。額外可容許單元集合可包括由處于串聯(lián)或并聯(lián)關(guān)聯(lián)的串聯(lián)和并聯(lián)開關(guān)的最大數(shù)目 隱式地定義的功能或單元的集合。額外可容許單元集合可包括由功能的BDD實(shí)現(xiàn)中串聯(lián)的 電弧的最大數(shù)目隱式地定義的單元的集合。額外可容許單元集合可包括由一般晶體管實(shí)現(xiàn)中串聯(lián)的開關(guān)的最大允許數(shù)目隱 式地定義的功能或單元的集合。額外可容許功能集合可由用于實(shí)現(xiàn)組合邏輯功能的兩個(gè)晶 體管規(guī)劃中串聯(lián)開關(guān)數(shù)目的準(zhǔn)確下限上的最大允許開關(guān)數(shù)目來隱式地定義。在一種實(shí)現(xiàn)方式中,一種優(yōu)化單元庫模板的方法包括接收目標(biāo)技術(shù)信息;接收 要包括在庫中的功能或單元的集合;接收要為每個(gè)功能創(chuàng)建的驅(qū)動強(qiáng)度的集合;為每對功 能和驅(qū)動強(qiáng)度接收或得出晶體管拓?fù)涞募?;為不同的備選單元模板輸出單元特性的初步 估計(jì);以及按照為所需單元的全體估計(jì)的特性的函數(shù),為庫選擇最終模板。在一種實(shí)現(xiàn)方式中,一種在布置和布線之后優(yōu)化與電路網(wǎng)表相關(guān)聯(lián)的單元庫的方 法包括接收經(jīng)布置和布線的電路網(wǎng)表;接收相關(guān)聯(lián)的單元庫;從庫中去除未使用的功能; 可選地去除使用的功能的未使用的驅(qū)動強(qiáng)度;對于每個(gè)使用的單元,添加鄰近驅(qū)動強(qiáng)度的 集合,以允許進(jìn)一步大小調(diào)節(jié);可選地使單元庫模板適應(yīng)于單元的新混合;以及輸出考慮 到引入的修改的新的庫規(guī)格。可選地使單元庫模板適應(yīng)于單元的新混合可包括接收目標(biāo)技術(shù)信息;接收要包 括在庫中的功能或單元的集合;接收要為每個(gè)功能創(chuàng)建的驅(qū)動強(qiáng)度的集合;為每對功能和 驅(qū)動強(qiáng)度接收或得出晶體管拓?fù)涞募?;為不同的備選單元模板輸出單元特性的初步估 計(jì);以及按照為所需單元的全體估計(jì)的特性的函數(shù),為庫選擇最終模板。在一種實(shí)現(xiàn)方式中,一種用于優(yōu)化在電路設(shè)計(jì)中使用的庫的計(jì)算機(jī)程序產(chǎn)品是利 用計(jì)算機(jī)可讀介質(zhì)來體現(xiàn)的,該計(jì)算機(jī)可讀介質(zhì)包括用于提供初始電路網(wǎng)表的計(jì)算機(jī)可 讀代碼;用于提供一個(gè)或多個(gè)已存在單元集合的計(jì)算機(jī)可讀代碼;用于提供一個(gè)或多個(gè)額 外可容許單元集合的計(jì)算機(jī)可讀代碼;用于在考慮初始存在單元集合和額外可容許單元集 合的情況下,分析初始電路網(wǎng)表以找出降低實(shí)現(xiàn)成本的單元的計(jì)算機(jī)可讀代碼;以及用于 輸出一個(gè)或多個(gè)新單元庫規(guī)格和描述的計(jì)算機(jī)可讀代碼,這一個(gè)或多個(gè)新單元庫規(guī)格和描 述包括潛在地降低設(shè)計(jì)成本的預(yù)先存在的單元的子集和可容許單元的子集。該計(jì)算機(jī)程序產(chǎn)品可包括用于在考慮初始存在單元集合和額外可容許單元集合 的同時(shí)對電路進(jìn)行重映射的計(jì)算機(jī)可讀代碼。該計(jì)算機(jī)程序產(chǎn)品可包括用于輸出新的重映 射的網(wǎng)表的計(jì)算機(jī)可讀代碼。額外可容許單元集合可至少包括列出額外可得功能或單元的顯式集合。額外可容 許單元集合可包括列出額外可得單元的顯式集合,并且每個(gè)額外可容許邏輯功能可具有不 同的實(shí)現(xiàn)。在一種實(shí)現(xiàn)方式中,一種方法包括提供第一集成電路設(shè)計(jì)網(wǎng)表;將第一集成電 路網(wǎng)表內(nèi)的組件的群組映射為與存儲在計(jì)算機(jī)可讀介質(zhì)上的第一單元庫中的一個(gè)或多個(gè)單元相對應(yīng);從映射中去除到第一單元的至少一個(gè)組件群組,其中映射將不包括任何第一 單元映射;以及生成僅包括在映射中識別的單元的第二庫,其中第二庫不包括任何第一單 元映射并且被存儲在計(jì)算機(jī)可讀介質(zhì)上。該方法還可包括將第一集成電路設(shè)計(jì)網(wǎng)表映射到使用第二庫但不使用第一庫的 第二集成電路設(shè)計(jì)網(wǎng)表;以及將第二集成電路設(shè)計(jì)網(wǎng)表存儲在計(jì)算機(jī)可讀介質(zhì)上。該方法 可包括在生成第二庫之前,在第二庫中而不在第一庫中添加第二單元,其中第二集成電路 設(shè)計(jì)網(wǎng)表包括對第二單元的至少一個(gè)引用。該方法可包括在生成第二庫之后,至少識別和去除第二庫的第二單元;生成包 括第二庫的單元但不包括第二單元的第三庫;將第一集成電路設(shè)計(jì)網(wǎng)表映射到具有對第三 庫的引用但不具有對第一和第二庫的引用的第二集成電路設(shè)計(jì)網(wǎng)表;以及將第二集成電路 設(shè)計(jì)網(wǎng)表存儲在計(jì)算機(jī)可讀介質(zhì)上。生成第二庫可包括執(zhí)行物理綜合而不是邏輯綜合來獲 得第二庫的單元。在考慮以下詳細(xì)描述和附圖后本發(fā)明的其他目的、特征和優(yōu)點(diǎn)將變得清楚,在各 幅附圖中相似的標(biāo)號表示相似的特征。
圖1示出了用于執(zhí)行電子設(shè)計(jì)自動化的本發(fā)明的系統(tǒng)。圖2示出了用于執(zhí)行本發(fā)明的軟件的計(jì)算機(jī)系統(tǒng)的簡化系統(tǒng)框圖。圖3示出了當(dāng)把庫看作設(shè)計(jì)空間的一部分時(shí)性能與成本之間的折衷的示圖。圖4示出了用于數(shù)字設(shè)計(jì)和庫的同時(shí)優(yōu)化的輸入和輸出數(shù)據(jù)的系統(tǒng)流程。圖5示出了用于數(shù)字設(shè)計(jì)和庫的同時(shí)優(yōu)化的輸入和輸出數(shù)據(jù)的系統(tǒng),其中示出了 過程迭代的可能性。圖6示出了用于數(shù)字設(shè)計(jì)和庫的同時(shí)優(yōu)化的一種可能的實(shí)現(xiàn)方式的流程。圖7示出了用于數(shù)字設(shè)計(jì)和庫的同時(shí)優(yōu)化的一種可能的實(shí)現(xiàn)方式的流程,其中示 出了過程迭代的可能性。圖8示出了執(zhí)行映射和布置和布線來作為選擇對于特定設(shè)計(jì)需要綜合的有效驅(qū) 動強(qiáng)度的手段的過程。圖9示出了在布置和布線之后優(yōu)化庫規(guī)格的過程。圖10示出了最終庫的生成。圖11示出了由十一個(gè)單元實(shí)例構(gòu)成的電路。圖12示出了由四個(gè)單元實(shí)例構(gòu)成的等效電路。圖13示出了由五個(gè)單元實(shí)例構(gòu)成的等效電路。圖14A和14B示出了同一單元的九軌版本和七軌版本的集成電路布局。
具體實(shí)施例方式圖1示出了本發(fā)明的系統(tǒng)。在一個(gè)實(shí)施例中,本發(fā)明是在例如圖1所示的計(jì)算機(jī) 工作站系統(tǒng)上執(zhí)行的軟件。圖1示出了包括監(jiān)視器3、屏幕5、機(jī)箱7、鍵盤9和鼠標(biāo)11的計(jì) 算機(jī)系統(tǒng)1。鼠標(biāo)11可具有一個(gè)或多個(gè)按鈕,例如鼠標(biāo)按鈕13。機(jī)箱7容納常見的計(jì)算機(jī) 組件(其中一些沒有示出),例如處理器(包括多處理器和網(wǎng)格的可能性)、存儲器、大容量存儲設(shè)備17等等。大容量存儲設(shè)備17可包括大容量盤驅(qū)動器、軟盤、磁盤、光盤、磁光盤、固定盤、硬 盤、CD-ROM、可記錄 CD、DVD、可記錄 DVD (例如,DVD-R、DVD+R、DVD-RW、DVD+RW、HD-DVD 或藍(lán) 光盤)、閃存和其他非易失性固態(tài)存儲裝置(例如,USB閃存驅(qū)動器)、電池支持的易失性存 儲器、磁帶存儲裝置、讀取器、以及其他類似的介質(zhì)、以及這些的組合。本發(fā)明的由計(jì)算機(jī)實(shí)現(xiàn)的或計(jì)算機(jī)可執(zhí)行的版本可以利用計(jì)算機(jī)可讀介質(zhì)來體 現(xiàn)、存儲在計(jì)算機(jī)可讀介質(zhì)上或者與計(jì)算機(jī)可讀介質(zhì)相關(guān)聯(lián)。計(jì)算機(jī)可讀介質(zhì)可包括任何 參與向一個(gè)或多個(gè)處理器提供指令以便執(zhí)行的介質(zhì)。這種介質(zhì)可采取許多形式,包括但不 限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)例如包括閃存或者光盤或磁盤。 易失性介質(zhì)包括靜態(tài)或動態(tài)存儲器,比如緩存存儲器或RAM。傳輸介質(zhì)包括同軸電纜、銅線、 光纖線路以及布置成總線的電線。傳輸介質(zhì)還可以采取電磁波、射頻波、聲波或光波的形 式,例如在無線電波和紅外數(shù)據(jù)通信期間生成的那些。例如,本發(fā)明的軟件的二進(jìn)制機(jī)器可執(zhí)行版本可被存儲在或駐留在RAM或緩存存 儲器中,或者存儲在或駐留在大容量存儲設(shè)備17上。本發(fā)明的軟件的源代碼也可以被存儲 或駐留在大容量存儲設(shè)備17 (例如,硬盤、磁盤、磁帶或CD-ROM)上。又例如,本發(fā)明的代碼 可以經(jīng)由電線、無線電波傳輸或通過諸如因特網(wǎng)之類的網(wǎng)絡(luò)傳輸。圖2示出了用于執(zhí)行本發(fā)明的軟件的計(jì)算機(jī)系統(tǒng)1的系統(tǒng)框圖。與圖1中的一樣, 計(jì)算機(jī)系統(tǒng)1包括監(jiān)視器3、鍵盤9和大容量存儲設(shè)備17。計(jì)算機(jī)系統(tǒng)1還包括子系統(tǒng),例 如中央處理器202、系統(tǒng)存儲器204、輸入/輸出(I/O)控制器206、顯示適配器208、串行或 通用串行總線(USB)端口 212、網(wǎng)絡(luò)接口 218、以及揚(yáng)聲器220。本發(fā)明也可結(jié)合具有更多或 更少子系統(tǒng)的計(jì)算機(jī)系統(tǒng)使用。例如,計(jì)算機(jī)系統(tǒng)可包括多個(gè)處理器202(即,多處理器系 統(tǒng))或者系統(tǒng)可包括緩存存儲器。處理器可以是雙核或多核處理器,其中在單個(gè)集成電路上有多個(gè)處理器核心。系 統(tǒng)還可以是分布式計(jì)算環(huán)境的一部分。在分布式計(jì)算環(huán)境中,各個(gè)計(jì)算系統(tǒng)連接到網(wǎng)絡(luò)并 且可用于根據(jù)需要將計(jì)算資源借給網(wǎng)絡(luò)中的其他系統(tǒng)。網(wǎng)絡(luò)可以是內(nèi)部以太網(wǎng)絡(luò)、因特網(wǎng) 或其他網(wǎng)絡(luò)。諸如222之類的箭頭表示計(jì)算機(jī)系統(tǒng)1的系統(tǒng)總線體系結(jié)構(gòu)。然而,這些箭頭例 示了用于鏈接子系統(tǒng)的任何互連方案。例如,揚(yáng)聲器220可通過端口連接到其他子系統(tǒng)或 者具有到中央處理器202的內(nèi)部連接。圖1所示的計(jì)算機(jī)系統(tǒng)1只是適于結(jié)合本發(fā)明使用 的計(jì)算機(jī)系統(tǒng)的一個(gè)示例。本領(lǐng)域的普通技術(shù)人員很容易清楚適于結(jié)合本發(fā)明使用的子系 統(tǒng)的其他配置。計(jì)算機(jī)軟件產(chǎn)品可以用各種適當(dāng)?shù)木幊陶Z言中的任何一種寫成,所述編程語言 例如是 C、C++、Pascal、Fortran、Perl、Matlab (來自 Mathfforks, Inc.)、SAS> SPSS、Java、 JavaScript, TCL和AJAX。計(jì)算機(jī)軟件產(chǎn)品可以是具有數(shù)據(jù)輸入和數(shù)據(jù)顯示模塊的獨(dú)立 應(yīng)用?;蛘?,計(jì)算機(jī)軟件產(chǎn)品可以是可實(shí)例化為分布式對象的類。計(jì)算機(jī)軟件產(chǎn)品也可 以是諸如 Java Beans (來自 Sun Microsystems)或 Enterprise Java Beans (來自 Sun Microsystems的EJB)之類的組件軟件。系統(tǒng)的操作系統(tǒng)可以是Microsoft Windows 操作系統(tǒng)家族(例如,Windows 95、 98,Me,Windows NT,Windows 2000、Windows XP,Windows XP x64 Edition,Windows Vista、Windows 7,Windows CE,Windows Mobile),Linux,HP-UX,UNIX,Sun OS,Solaris,Mac OS X、 Alpha 0S、AIX、IRIX32 或 IRIX64 之一或者這些的組合。Microsoft Windows 是 Microsoft Corporation的商標(biāo)。也可使用其他操作系統(tǒng)。分布式計(jì)算環(huán)境中的計(jì)算機(jī)可使用與其他 計(jì)算機(jī)不同的操作系統(tǒng)。另外,計(jì)算機(jī)可連接到網(wǎng)絡(luò)并且可利用此網(wǎng)絡(luò)與其他計(jì)算機(jī)相接口。例如,網(wǎng)絡(luò)中的每個(gè)計(jì)算機(jī)可以并行執(zhí)行本發(fā)明的許多步驟系列的任務(wù)的一部分。另外,網(wǎng)絡(luò)可以是內(nèi) 聯(lián)網(wǎng)、互聯(lián)網(wǎng)或因特網(wǎng),等等。網(wǎng)絡(luò)可以是有線網(wǎng)絡(luò)(例如,使用銅線)、電話網(wǎng)絡(luò)、分組網(wǎng) 絡(luò)、光網(wǎng)絡(luò)(例如,使用光纖)、或者無線網(wǎng)絡(luò),或者這些的任何組合。例如,數(shù)據(jù)和其他信 息可利用諸如 Wi-Fi(IEEE 標(biāo)準(zhǔn) 802. 11,802. Ila,802. lib,802. lie,802. llg,802. Ili 和 802. lln,這只是幾個(gè)示例)之類的協(xié)議使用無線網(wǎng)絡(luò)在計(jì)算機(jī)與本發(fā)明的系統(tǒng)的組件(或 步驟)之間傳遞。例如,來自一計(jì)算機(jī)的信號可以至少部分被無線地傳送到組件或其他計(jì) 算機(jī)。本發(fā)明涉及其設(shè)計(jì)基于單元庫的數(shù)字電路的優(yōu)化。大多數(shù)數(shù)字設(shè)計(jì)目前都是基于 單元庫的。這意味著大多數(shù)設(shè)計(jì)流程都將具有這樣一個(gè)步驟,在該步驟中,布爾邏輯方程被 映射到來自庫(或庫集合)的互連的單元集合。來自庫的單元實(shí)現(xiàn)邏輯基元(布爾函數(shù)和 存儲元件),這些邏輯基元隨后被相互連接以產(chǎn)生整個(gè)電路的期望功能。將這些方程轉(zhuǎn)換 成互連的單元的集合的步驟是以遵從某些成本上的約束(通常是所要求的操作頻率)、而 同時(shí)使其他成本(通常是面積和功率)最小化的方式來進(jìn)行的。此步驟通常被稱為技術(shù)映 射,并且存在可從不同廠商或大學(xué)獲得的若干工具來執(zhí)行技術(shù)映射。此工具的輸入通常是 設(shè)計(jì)、預(yù)設(shè)計(jì)的庫和優(yōu)化目標(biāo)?;趩卧脑O(shè)計(jì)可以涉及映射和未映射的設(shè)計(jì)(mapped and unmapped design)、 優(yōu)化目標(biāo)(optimization goal)、設(shè)計(jì)約束(design constraint)、目標(biāo)庫(target library)、庫模板(library template)的概念。本發(fā)明利用了增補(bǔ)庫(enriched library)、 使用子集(used subset)、使用直方圖(histogram of use)、實(shí)例貢獻(xiàn)(contribution of instances)、虛擬單元(virtual cell)、近似壓成單元(nearly compacted cell)、單元生 成器工具(cell generator tool)和單元生成器API (cell generator API)的概念。下面 簡要論述這些概念。映射和未映射的設(shè)計(jì)。當(dāng)某一設(shè)計(jì)(或設(shè)計(jì)的一部分)被表述為來自庫的互連單 元的網(wǎng)絡(luò)時(shí),它被說成是映射的。庫中的每個(gè)單元可以被實(shí)例化多次;有一些可能較少被 實(shí)例化(甚至只被實(shí)例化一次),并且?guī)熘锌傻玫囊恍﹩卧赡芨静槐皇褂谩.?dāng)某一設(shè) 計(jì)(或設(shè)計(jì)的一部分)在更高級別被描述、而不對來自某一庫的作為子設(shè)計(jì)的單元進(jìn)行引 用(實(shí)例化)時(shí),它被說成是未映射的。在將未映射設(shè)計(jì)轉(zhuǎn)換成映射設(shè)計(jì)的同時(shí)使設(shè)計(jì)成 本最小化的任務(wù)通常被稱為技術(shù)映射。類似地,術(shù)語“重映射”用于從一映射設(shè)計(jì)到另一不 同映射設(shè)計(jì)的轉(zhuǎn)換;術(shù)語“技術(shù)獨(dú)立優(yōu)化”用于從一未映射設(shè)計(jì)到另一不同未映射設(shè)計(jì)的轉(zhuǎn) 換;并且術(shù)語“去映射”用于從映射設(shè)計(jì)到未映射設(shè)計(jì)的轉(zhuǎn)換。優(yōu)化目標(biāo)和設(shè)計(jì)約束。優(yōu)化目標(biāo)和設(shè)計(jì)約束向優(yōu)化工具描述設(shè)計(jì)者對正被處理的 特定設(shè)計(jì)的要求是什么。通常,優(yōu)化工具接收優(yōu)化目標(biāo)和設(shè)計(jì)約束的混合,這些優(yōu)化目標(biāo)和 設(shè)計(jì)約束可能是針對電路的不同點(diǎn)表述的。示例包括使面積和功率最小化,同時(shí)遵守期望 的到達(dá)時(shí)間和頻率;降低時(shí)序并遵守最大面積;遵守最大面積并且增大產(chǎn)量。設(shè)計(jì)目標(biāo)和約束的許多組合可被設(shè)計(jì)者用于實(shí)現(xiàn)其目標(biāo)。目標(biāo)庫。對于任何產(chǎn)生將引用庫的映射設(shè)計(jì)的優(yōu)化步驟,必須指定目標(biāo)庫,該目標(biāo) 庫包含可被映射工具使用的單元。映射工具可能應(yīng)對多個(gè)目標(biāo)庫,因?yàn)榭傻玫膯卧杀粍?分到不同庫中。目標(biāo)庫可包括用于初始電路的初始庫中的一些或全部。庫模板。因?yàn)檎麄€(gè)設(shè)計(jì)的最終布局是通過并排布置單元來進(jìn)行的,所以單元的設(shè) 計(jì)受到限制,以使得它們在以這種方式被布置時(shí)將會更容易適配到一起。廠商可提供帶有 不同模板的庫,以適應(yīng)不同的設(shè)計(jì)目標(biāo),比如功耗或高速。廠商經(jīng)常為同一技術(shù)節(jié)點(diǎn)提供至 少三種不同的標(biāo)準(zhǔn)單元庫庫的通用、高速和低功率版本。一些廠商可提供額外的其他版 本。這些庫可使用不同的模板并且具有不同的行高和電網(wǎng)大小?;蛘撸@些庫可使用 將被用于同一設(shè)計(jì)中的同一模板或兼容的模板。當(dāng)庫的不同版本具有不兼容的模板并且設(shè) 計(jì)工具不支持對不同模板的使用時(shí),設(shè)計(jì)者可能必須在庫的不同版本(例如,通用、高速和 低功率)之間做出選擇來實(shí)現(xiàn)其設(shè)計(jì)。當(dāng)庫具有相同或兼容模板時(shí),設(shè)計(jì)者可以混合來自 庫的不同版本的單元。一些模板可以適應(yīng)雙倍高度單元,這些單元將占據(jù)兩個(gè)相鄰的行。本發(fā)明解決的一個(gè)問題是在考慮通過添加新單元來增補(bǔ)可得目標(biāo)庫的可能性的 情況下,選擇最小近似最優(yōu)單元集合來優(yōu)化設(shè)計(jì)。這涉及對基于單元的設(shè)計(jì)和用于實(shí)現(xiàn)它 的單元庫的同時(shí)優(yōu)化。注意,用戶可能僅對優(yōu)化的庫感興趣,因此電路可以僅用于引導(dǎo)庫優(yōu) 化過程。在此情況下,本發(fā)明產(chǎn)生了針對特定設(shè)計(jì)優(yōu)化的庫,而無需輸出優(yōu)化的電路。本發(fā) 明考慮了以下事實(shí)可以通過添加新單元來增補(bǔ)庫,從而可能具有與原始庫不同的晶體管 拓?fù)?、不同的大小、不同的邏輯功能?或不同的單元模板。增補(bǔ)庫。如果設(shè)計(jì)者向某一庫添加新單元以便優(yōu)化設(shè)計(jì),則可以說該庫是增補(bǔ)的。使用子集。在映射某一設(shè)計(jì)之后,映射的設(shè)計(jì)對來自庫的特定單元進(jìn)行引用,這些 單元在該設(shè)計(jì)中被實(shí)例化。不一定來自庫的所有單元都在該設(shè)計(jì)中被實(shí)例化。在給定的映 射設(shè)計(jì)中被實(shí)例化至少一次的所有單元的集合構(gòu)成該庫針對該給定設(shè)計(jì)的使用子集。使用直方圖。在給定某一映射設(shè)計(jì)和某一庫針對該特定設(shè)計(jì)的使用子集的情況 下,該使用子集中的每個(gè)單元在該設(shè)計(jì)中將具有特定數(shù)目的實(shí)例。一些單元可能只被使用 一次,而其他的可能被實(shí)例化多次。直方圖可根據(jù)來自庫或來自每一個(gè)體單元的某種特性 (比如面積、功率、延遲等等)而被加權(quán)。實(shí)例貢獻(xiàn)。每個(gè)實(shí)例對設(shè)計(jì)的貢獻(xiàn)可通過其在設(shè)計(jì)中被使用了多少次(從使用 直方圖可得的數(shù)據(jù))以及通過單元在低閑置實(shí)例(這些實(shí)例與對用于電路的時(shí)序閉合 (timing closure)的單元的貢獻(xiàn)有關(guān))中出現(xiàn)了多少次來衡量。可以針對設(shè)計(jì)的有限區(qū)域 或針對子設(shè)計(jì)來計(jì)算實(shí)例貢獻(xiàn)。虛擬單元。虛擬單元是具有不是從單元的最終布局描述生成的數(shù)據(jù)的單元。這些 虛擬單元尚未被以其最終形式實(shí)現(xiàn)或表征(以用于出帶(tapeout)),但是它們可得到估計(jì) 成本,從而使得它們可用于設(shè)計(jì)和優(yōu)化過程期間。估計(jì)成本是從除最終布局以外的其他來 源得到的或者是從具有與用于出帶的那些不同的精確度的最終布局得到的。取決于虛擬單 元或其估計(jì)成本與最終物理實(shí)現(xiàn)(用于出帶)的距離有多遠(yuǎn),虛擬單元可以有較高或較低 的虛擬程度。虛擬單元與其最終出帶版本越近,其虛擬程度就越低。虛擬單元與其最終出 帶版本越遠(yuǎn),其虛擬程度就越高。
通常在壓成前對晶體管的布置和布線(此描述有時(shí)被稱為棒狀圖(stick diagram))被用于估計(jì)面積和電特性。如果估計(jì)是完全根據(jù)spice網(wǎng)表來進(jìn)行的,那么我們 稱單元為虛擬_虛擬單元或二重虛擬單元。產(chǎn)生用于本發(fā)明中的虛擬單元的方法不同于先 前的方案,先前的方案對現(xiàn)有單元進(jìn)行內(nèi)插以獲得其間的驅(qū)動強(qiáng)度。在本方案中,單元的成 本是通過由單元生成器提供的估計(jì)API來得出的。這些成本可能已經(jīng)被預(yù)先計(jì)算并且可在 額外單元的集合中得到。注意,每個(gè)單元具有一功能,該功能表述該單元的行為,可以是組 合功能仏冊2、01 3、嫩冊4、40122及其他)或存儲器元件(FFD、FFDSR等等)。多個(gè)單元可 具有同一功能,但驅(qū)動強(qiáng)度、晶體管拓?fù)洹⑦壿嬜?、單元模板等等不同?
近似壓成單元。近似壓成單元是這樣的單元這些單元仍包含某些設(shè)計(jì)規(guī)則檢查 (DRC)差錯(cuò),但是對于這些單元,可以以很好的精度得出面積和電特性。也可通過執(zhí)行產(chǎn)生 不那么精確的表征數(shù)據(jù)(但獲得這些表征數(shù)據(jù)不那么耗時(shí))的輕度表征來從完全壓成單元 得出虛擬單元,單元生成器工具。單元生成工具是能夠生成將用于基于單元的設(shè)計(jì)中的單元的工 具。用戶必須指定要生成的單元的期望功能。單元生成器工具可以從邏輯方程或從spice 網(wǎng)表或指定期望單元的其他形式開始生成單元。單元生成是基于技術(shù)定義(提供關(guān)于目 標(biāo)技術(shù)設(shè)計(jì)規(guī)則的信息)和單元的期望單元模板的。單元生成器的一個(gè)示例是Nangate Library Creator 工具,其用戶手冊與其他Nangate軟件用戶手冊、Nangate軟件屏幕(包 括幫助屏幕)和本申請中引用的所有其他參考文獻(xiàn)一起通過引用被并入。單元生成工具可 依賴于外部工具來進(jìn)行表征,或者可具有緊密集成的工具來執(zhí)行表征。庫表征工具的一個(gè) 不例是 Nangate Library Characterizer 工具。商標(biāo)是其各自的所有人的財(cái)產(chǎn)。Nangate Library Creator 禾口 Nangate Library Characterizer 是 Nangate A/S 的商標(biāo)。單元生成器API。單元生成器API可提供一接口來通過使用不同的精確度估計(jì)單 元成本(面積、延遲、功率等等)。取決于虛擬單元與最終物理實(shí)現(xiàn)(用于出帶)的距離有 多遠(yuǎn),它們可呈現(xiàn)不同的虛擬程度。虛擬程度越低,虛擬單元與其最終出帶版本就越近。根 據(jù)先前的論述,單元的成本可以以至少四種不同的精度選項(xiàng)來生成二重虛擬、虛擬、近似 壓成和最終布局。單元生成器應(yīng)用程序接口(API)可以提供所有這四種不同方法來生成單 元和庫數(shù)據(jù)。單元生成器API可用于為可容許的功能取得真實(shí)或估計(jì)成本,并且將為被認(rèn) 為不可得的功能返回?zé)o限成本。本發(fā)明致力于使用增補(bǔ)庫來優(yōu)化設(shè)計(jì)。解答空間被庫增補(bǔ)所放大,并且在后續(xù)步 驟中增補(bǔ)庫被過濾以將所添加的單元的數(shù)目限制到用戶定義的數(shù)據(jù)。目標(biāo)是從庫的增補(bǔ)中 獲得最大增益,而不會添加比設(shè)計(jì)者所允許更多的單元。從實(shí)用性的角度來看,此過程允許 了對設(shè)計(jì)以及用于實(shí)現(xiàn)它的庫的共同優(yōu)化。圖3示出了當(dāng)把庫看作設(shè)計(jì)空間的一部分時(shí)性能與成本之間的折衷的示圖。圖 3圖示了問題定義找到在使實(shí)現(xiàn)成本最小化以引入潛在的成本節(jié)省的同時(shí)實(shí)現(xiàn)期望性能 (虛線307)的庫(表示為星點(diǎn)302)。注意,圖中呈現(xiàn)的成本是面積、延遲和功率。這些是作 為示例列舉的,而不是作為對本發(fā)明的限制;任何能夠測量的品質(zhì)指數(shù)(figure of merit) (面積、功率、延遲、產(chǎn)量及其他)都可在此過程期間被優(yōu)化。所提出的方法的優(yōu)點(diǎn)包括將庫作為設(shè)計(jì)空間的一部分來加以利用。
12
先前,一些方案結(jié)合完全虛擬的庫來工作,而不考慮詳細(xì)的物理方面,也不嘗試過 濾它。這些方案使用完全虛擬的庫,其中庫是由某種拓?fù)鋮?shù)來定義的。唯一目標(biāo)是使晶 體管的數(shù)目最小化。實(shí)際面積和表征不存在并且不被考慮。對于單元的數(shù)目不執(zhí)行有效過 濾,因此由此產(chǎn)生的庫中的單元的數(shù)目可能會顯著增大。這些方案是非常不精確的,因?yàn)槠錄]有考慮實(shí)際數(shù)據(jù)_沒有表征、沒有面積、沒有 關(guān)于單元或其配置的詳細(xì)數(shù)據(jù);只考慮了晶體管的數(shù)目。另一缺點(diǎn)在于對所使用的單元的 數(shù)目沒有有效限制。—些方案對現(xiàn)有庫進(jìn)行過濾,而不對其進(jìn)行增補(bǔ)或擴(kuò)展。例如,一種方案僅對來自 先前已存在的庫的單元進(jìn)行過濾。不進(jìn)行增補(bǔ)。這些方案的主要局限在于其只過濾現(xiàn)有的 預(yù)表征的庫;該方案沒有看到能夠改進(jìn)設(shè)計(jì)的額外單元。另一個(gè)局限在于單元的過濾是逐 單元地進(jìn)行的,而鄰近大小單元沒有被保留來用于時(shí)序閉合?!┓桨笇爝M(jìn)行增補(bǔ),但是增補(bǔ)將限于添加新的驅(qū)動強(qiáng)度,而沒有新的功能。這 樣,增補(bǔ)將僅考慮現(xiàn)有單元的新大小。沒有添加新功能。增補(bǔ)限于初始庫上現(xiàn)有(并且已 表征)的功能。發(fā)生這種情況是因?yàn)橛糜趧?chuàng)建新大小的虛擬單元的特性是從庫中的現(xiàn)有單 元得出的。這些方案不向庫添加新功能并且不能利用新的拓?fù)?,因?yàn)樗袛?shù)據(jù)都是從現(xiàn)有單 元生成的。只有已經(jīng)存在于庫中的單元能夠被使用,因?yàn)閷傩允菑膸熘械默F(xiàn)有單元得出的。 這使得新拓?fù)?例如,晶體管網(wǎng)表)的使用對于具有給定拓?fù)涞膸熘幸呀?jīng)存在的功能非常 不精確。為了確保精確,此方案隱式地假定庫中的單元的拓?fù)涫且阎?,從而能夠?chuàng)建具有 類似拓?fù)?并因此具有類似屬性,這些屬性可以從現(xiàn)有單元正確得出)的新單元。另一種方案使用新單元的實(shí)時(shí)創(chuàng)建來優(yōu)化特定設(shè)計(jì)。此方案沒有考慮初始(虛 擬)庫。它搜索設(shè)計(jì)并且為優(yōu)化的候選點(diǎn)創(chuàng)建新單元。新單元的創(chuàng)建是基于依情境而定的 信息來進(jìn)行的,該信息用于產(chǎn)生將用來替換現(xiàn)有電路的一部分的新單元。一種方法創(chuàng)建依設(shè)計(jì)而定的單元。一種方法用特定單元來替代電路的一些部分 (例如子電路)。一種方法減小在添加依設(shè)計(jì)而定的單元的過程中創(chuàng)建的新單元的數(shù)目。一 種方法執(zhí)行在此情境中單元特性的布局前估計(jì)。它可以被看作是生成虛擬單元的一種可能 方法。一種方法生成具有功能上冗余的晶體管網(wǎng)絡(luò)的邏輯電路。一種方法接收被映射到給 定單元庫的設(shè)計(jì),然后單元的晶體管大小被改變,以便使電路加速。晶體管大小的這種改變 導(dǎo)致了向庫添加新單元,庫隨后被重新設(shè)計(jì)以適應(yīng)新單元。這些方案結(jié)合將用作子電路的替代的依設(shè)計(jì)而定的單元的創(chuàng)建而工作。其可能花 費(fèi)較長的時(shí)間(因?yàn)楸碚骱托阅茉u估是實(shí)時(shí)進(jìn)行的),因此其進(jìn)行更局部的搜索。另一個(gè)缺 點(diǎn)是其致力于就地優(yōu)化,對單元的布置的任何修改都將修改創(chuàng)建單元的環(huán)境和邊界條件。 如果發(fā)生這種情況,那么依設(shè)計(jì)而定的單元將不再有效。由于在此現(xiàn)有技術(shù)中沒有提供鄰 近大小的單元,所以在此特定情況中時(shí)序閉合將受到負(fù)面影響。在這個(gè)意義上,此現(xiàn)有技術(shù) 提供了有限得多的利用新單元對依設(shè)計(jì)而定的庫的增補(bǔ)。用于庫生成的方法預(yù)先具有單元描述。因此,它是一種一旦知曉單元即開發(fā)出通 用庫的方法。在此方法中沒有考慮任何設(shè)計(jì)特異性,因此可以說它不是一種依設(shè)計(jì)而定的 庫的創(chuàng)建方法。這些方案不針對特定設(shè)計(jì)來優(yōu)化庫。它只是在一旦單元被指定后就產(chǎn)生單 元布局以形成庫。選擇單元本身是設(shè)計(jì)者的職責(zé),而該方法在這個(gè)任務(wù)上完全不幫助設(shè)計(jì)者。本專利提供了一種新穎的方法,用于執(zhí)行數(shù)字設(shè)計(jì)以及在其實(shí)現(xiàn)上使用的單元庫 的同時(shí)優(yōu)化。圖4示出了執(zhí)行此共同優(yōu)化的系統(tǒng)流程。圖4示出了數(shù)字設(shè)計(jì)和庫的同時(shí)優(yōu)化400的輸入和輸出數(shù)據(jù)的系統(tǒng)流程。通常, 該方法將初始設(shè)計(jì)403、初始庫406 (選項(xiàng))以及額外可容許功能的集合409作為輸入。過 程400的輸出是重映射的設(shè)計(jì)413和庫規(guī)格416。庫規(guī)格或優(yōu)化庫具有新的功能、新的大小、新的模板,并且也可包括初始庫的子 集。注意,用戶可能僅對優(yōu)化的庫416感興趣,因此電路403可以僅用于引導(dǎo)庫優(yōu)化過程 400。在此情況下,該技術(shù)產(chǎn)生針對特定設(shè)計(jì)優(yōu)化的庫規(guī)格416,而無需輸出經(jīng)優(yōu)化的電路 413。重映射的設(shè)計(jì)或電路在此情況下可能不被輸出。三個(gè)輸入項(xiàng)是要優(yōu)化的電路或初始設(shè)計(jì)403、初始存在的單元庫406 (其可以為 空)、以及隱式或顯式地定義的額外可容許的邏輯功能的集合409。諸如設(shè)計(jì)約束和優(yōu)化目 標(biāo)之類的其他輸入項(xiàng)也可被該方法使用,但在圖中沒有明確示出。設(shè)計(jì)約束是電路設(shè)計(jì)領(lǐng) 域的技術(shù)人員所熟知的,因此在此描述中將不對其進(jìn)行描述。要優(yōu)化的電路可以被描述為門的網(wǎng)表或者方程組或者二者的混合,或者其他格 式。初始電路或要優(yōu)化的電路也可以是從RTL獲得的并且可能已經(jīng)在某種程度上被優(yōu)化。 門的網(wǎng)表是對進(jìn)行實(shí)例化并且互連在初始存在的庫中描述的門的電路的描述。電路的功能 可以從對門及其互連的描述得出?;蛘?,要優(yōu)化的電路可被描述為直接表述電路的功能的 一組布爾方程,而不對庫中的特定門進(jìn)行實(shí)例化。初始電路也可以對通用庫進(jìn)行引用,通用 庫中只描述了門的功能。注意,在本發(fā)明的范圍中可使用能夠針對其來描述要處理的功能的任何電路描 述,包括含有來自庫的單元引用和通過方程、真值表、二元判定圖(BDD)或其等同形式描述 的電路的未映射部分的混合描述。初始存在的庫包含已經(jīng)可用于設(shè)計(jì)的單元的集合。注意,此集合可以是空的;而如 果此集合非空,那么庫的子集可以不被允許或者被忽略或者被標(biāo)記為“勿使用”。在要優(yōu)化 的電路的初始描述中可以引用也可以不引用單元,該電路可以是映射的、未映射的或者部 分映射或未映射的電路,或者這些的組合。額外可容許的單元(邏輯功能)的集合定義了可被視為單獨(dú)單元的額外(相對于 原始庫而言)單元功能的列表。在這個(gè)意義上,目標(biāo)庫可被看作(一個(gè)或多個(gè))原始庫中 的單元與額外可容許邏輯功能的集合的并集。在此流程中,新的可容許功能被用于生成要 被添加到庫的候選單元,從而增補(bǔ)了可得單元的集合。額外可容許功能的集合可以被隱式 或顯式地描述或者甚至通過兩者(隱式和顯式定義)的組合來描述。以下給出庫的隱式定義的一些不同的示例。本申請中(下文和其他地方)的示例 被提供來例示本發(fā)明的一些方面,并且這些方面可以根據(jù)特定應(yīng)用的需要或期望來應(yīng)用和 修改。本發(fā)明的范圍不應(yīng)以任何方式局限于或限制于給出的特定示例。示例1(關(guān)于隱式庫定義)按輸入數(shù)目。當(dāng)按輸入數(shù)目來定義庫時(shí),可根據(jù)功能 的輸入數(shù)目來接受或放棄功能。要接受或拒絕的輸入數(shù)目的具體值是隱式地定義庫中的功 能的參數(shù)。示例2(關(guān)于隱式庫定義)按串聯(lián)并聯(lián)實(shí)現(xiàn)中的串聯(lián)和并聯(lián)晶體管的數(shù)目。當(dāng)按串聯(lián)和并聯(lián)晶體管的數(shù)目來定義庫時(shí),可根據(jù)功能的串聯(lián)和并聯(lián)晶體管的數(shù)目來接受或放 棄功能。要接受或拒絕的串聯(lián)和并聯(lián)晶體管的數(shù)目的具體值是隱式地定義庫中的功能的參 數(shù)。示例3 (關(guān)于隱式庫定義)按BDD高度。當(dāng)按BDD高度來定義庫時(shí),可根據(jù)表示 功能的BDD的高度來接受或放棄功能。要接受或拒絕的BDD高度的具體值是隱式地定義庫 中的功能的參數(shù)。示例4 (關(guān)于隱式庫定義)按一般開關(guān)實(shí)現(xiàn)中可實(shí)現(xiàn)的晶體管鏈的最小(最壞情 況)長度。這是串聯(lián)晶體管的數(shù)目的“下限”。當(dāng)按晶體管鏈的最小可實(shí)現(xiàn)(最壞情況)長 度來定義庫時(shí),可根據(jù)功能的晶體管鏈的最小可實(shí)現(xiàn)(最壞情況)長度來接受或放棄功能。 要接受或拒絕的晶體管鏈的最小可實(shí)現(xiàn)(最壞情況)長度的具體值是隱式地定義庫中的功 能的參數(shù)。示例5(關(guān)于隱式庫定義)上述四種方法的任何組合,包括將來自這些示例的功 能與原始庫中存在的功能相組合(包括生成原始庫中的單元的關(guān)聯(lián))。注意,對于隱式或顯 式地定義的每個(gè)單元功能,可以創(chuàng)建單元差異,包括不同的晶體管拓?fù)?、不同的晶體管大小 以及不同的驅(qū)動強(qiáng)度。注意,這些方法是僅作為示例給出的,本發(fā)明并不限于使用這里例示 的方法。顯式定義在于顯式地列出額外可容許的邏輯功能的集合。這在于以適于執(zhí)行方法 的任何格式提供額外可得的功能的列表。注意,任何形式的對額外可得功能的定義在本發(fā)明的情境中都是有效的。所列出 的方法是例示性的而不是限制性的。方法的輸出包括映射的網(wǎng)表和構(gòu)成新庫的單元的集合。注意,用戶可能僅對優(yōu)化 的庫感興趣,因此電路可以僅用于引導(dǎo)庫優(yōu)化過程。在此情況下,本發(fā)明產(chǎn)生針對特定設(shè)計(jì) 進(jìn)行了優(yōu)化的庫,而無需輸出優(yōu)化的電路。下面描述映射的網(wǎng)表和構(gòu)成新庫的單元的集合。映射的網(wǎng)絡(luò)是實(shí)現(xiàn)原始電路的互連單元的集合,其可能在成本方面具有某些優(yōu) 點(diǎn),成本包括但不限于面積、延遲和功耗。要獲得的具體優(yōu)點(diǎn)由設(shè)計(jì)者通過為映射工具描述 設(shè)計(jì)約束和目標(biāo)來引導(dǎo)。映射的網(wǎng)絡(luò)中使用的單元在也被該方法輸出的新庫中列出。該方法輸出的新庫可包含以下各項(xiàng)中的任何項(xiàng)。1.現(xiàn)有庫本身,意味著現(xiàn)有單元的組合。2.增補(bǔ)庫,意味著新單元(來自額外可得單元的集合)被添加到了現(xiàn)有庫。新單 元可表示新邏輯功能或現(xiàn)有邏輯功能的新驅(qū)動強(qiáng)度,包括現(xiàn)有功能的新晶體管拓?fù)?。引?新單元的目標(biāo)是減小最終設(shè)計(jì)的面積、延遲和功率。要獲得的具體優(yōu)點(diǎn)由設(shè)計(jì)者通過為映 射工具描述設(shè)計(jì)約束和目標(biāo)來引導(dǎo)。注意,在此過程期間,來自原始庫的一些單元可能因?yàn)?在增補(bǔ)庫中引入了更高效的單元而被去除、忽略、不允許或者標(biāo)記為勿使用。3.新庫,意味著單元模板已變化,以更好地適配于新單元庫中的單元混合。同樣, 新的邏輯功能和現(xiàn)有單元的新驅(qū)動強(qiáng)度可被添加到現(xiàn)有庫。然而,如果新模板被選擇,則原 始單元可能被重新設(shè)計(jì)以適配于新模板中??赡芤?yàn)樵诳紤]單元的新混合時(shí)舊模板不是最 佳模板而引入新模板。4.新的混合模板庫,由在多個(gè)模板中可得的單元構(gòu)成。原理類似于上述的“新庫”, 但是單元可能在不同模板中可得,如果布置和布線工具能夠應(yīng)對非統(tǒng)一單元模板或使用不同模板或功率區(qū)域或者單元的不同Vt版本的電路區(qū)域的話?;旌夏0鍘炜墒褂貌患嫒菽0宀⑶铱删哂胁煌男懈吆碗娋W(wǎng)大小;或者它可使用將要用于同一設(shè)計(jì)中的兼容模板。這 樣,對于不兼容模板的情況,設(shè)計(jì)者可以在要用于不同電路模板區(qū)域的單元的不同模板版 本之間進(jìn)行選擇,或者如果模板兼容的話,則設(shè)計(jì)者可以在電路的任何區(qū)域中混合單元。一 些模板可以適應(yīng)雙倍高度單元,這些單元將占據(jù)兩個(gè)相鄰的行。注意,由該方法產(chǎn)生的新設(shè)計(jì)和庫規(guī)格如圖5所示可用作優(yōu)化過程的輸入520,以 產(chǎn)生迭代優(yōu)化。優(yōu)化過程可以被迭代任意多次(例如,2、3、4、5、6、7或更多次)。這是很重 要的,因?yàn)楸娝苤?,?yōu)化工具產(chǎn)生的結(jié)果是依賴于初始數(shù)據(jù)的,因此迭代可提供進(jìn)一步的 改善。在迭代過程的更一般意義上,優(yōu)化可以再使用在先前迭代中產(chǎn)生的設(shè)計(jì)或庫的任何 先前版本。對于圖5,注意用戶可能僅對優(yōu)化的庫感興趣,因此電路可以僅用于引導(dǎo)庫優(yōu)化過 程。在此情況下,本發(fā)明產(chǎn)生針對特定設(shè)計(jì)優(yōu)化的庫,而無需輸出優(yōu)化的電路。在此情況下 可以不輸出該電路??蓱?yīng)用來實(shí)現(xiàn)所提出的用于設(shè)計(jì)和庫的同時(shí)優(yōu)化的方法的一種可能的流程400 在圖6中示出。下面描述一種流程的特定實(shí)現(xiàn)方式的步驟。對于圖6,注意用戶可能僅對優(yōu)化的庫感興趣,因此電路可以僅用于引導(dǎo)庫優(yōu)化過 程。在此情況下,本發(fā)明產(chǎn)生針對特定設(shè)計(jì)優(yōu)化的庫,而無需輸出優(yōu)化的電路。在此情況下 可以不輸出該電路。下面給出具體流程,但是應(yīng)當(dāng)理解,本發(fā)明并不限于所給出的具體流程和步驟。本 發(fā)明的流程可具有額外的步驟(在本申請中不一定描述)、替換所給出的一些步驟的不同 步驟、更少的步驟或者所給出的步驟的子集、或者與所給出的順序不同的步驟、或者這些的 任何組合。另外,本發(fā)明的其他實(shí)現(xiàn)方式中的步驟可能不與所給出的步驟完全相同,并且可 以按照對特定應(yīng)用適當(dāng)?shù)姆绞交蛘呋跀?shù)據(jù)而被修改或更改。1.在步驟603中,在考慮現(xiàn)有庫和可容許功能的情況下,生成標(biāo)識出用于優(yōu)化設(shè) 計(jì)的候選單元的匹配。基本上,此步驟識別了與初始庫中的單元或者可容許功能(這些功 能可變?yōu)閱卧?的集合中的功能相對應(yīng)的電路部分。這個(gè)階段通常被本領(lǐng)域的技術(shù)人員稱 為匹配。然而,這里它呈現(xiàn)出了一種能夠同時(shí)識別物理、虛擬和二重虛擬單元的原始特性。2.在步驟606中,選擇實(shí)現(xiàn)電路的最佳候選單元集合。一旦電路的不同部分被指 派了候選單元,該技術(shù)就選擇候選者的子集,以使得它們以對面積、延遲和功耗成本的期望 折衷來實(shí)現(xiàn)電路。此階段中執(zhí)行的選擇通常被本領(lǐng)域的技術(shù)人員稱為覆蓋。3.在步驟610中,在成本可接受的同時(shí),去除不那么頻繁使用的候選單元。此步驟 將會查看覆蓋階段的結(jié)果并且去除僅具有少量實(shí)例的單元的實(shí)例。電路的這些部分隨后在 考慮到剩余的使用單元的集合的同時(shí)被重映射。此步驟的目標(biāo)是減小單元候選者的整體數(shù) 目(以及庫的大小),同時(shí)不顯著增大設(shè)計(jì)實(shí)現(xiàn)成本并遵守設(shè)計(jì)約束。注意,此過程可以對 來自任何用于設(shè)計(jì)的庫的單元進(jìn)行去除、忽略或標(biāo)記為勿使用。4.在步驟614中,針對新庫來優(yōu)化單元模板。由于產(chǎn)生了單元的新混合,因此可以 優(yōu)化庫模板以更好地適應(yīng)于優(yōu)化的庫中存在的單元的集合。庫模板定義了單元高度、電源 寬度、P型和N型擴(kuò)散的區(qū)域等等。5.在步驟619中,產(chǎn)生重映射的設(shè)計(jì)和定制的庫規(guī)格。定制的庫規(guī)格包括用于在重映射的設(shè)計(jì)中使用的單元的多種驅(qū)動強(qiáng)度。要求這多種驅(qū)動強(qiáng)度是因?yàn)橐韵率聦?shí)布置 和布線之后的閉合時(shí)間(closing time)所需的驅(qū)動強(qiáng)度是預(yù)先未知的。注意,由于輸出庫包含虛擬和二重虛擬單元,所以圖6中的輸出庫是庫規(guī)格。這意 味著在電路的最終出帶之前,重映射的設(shè)計(jì)中使用的虛擬和二重虛擬單元必須被用作產(chǎn)生 物理單元的規(guī)格。注意,用戶可能僅對優(yōu)化的庫感興趣,因此電路可以僅用于引導(dǎo)庫優(yōu)化過 程。在此情況下,本發(fā)明產(chǎn)生針對特定設(shè)計(jì)優(yōu)化的庫,而無需輸出優(yōu)化的電路。同樣,讀者應(yīng)注意,由該方法產(chǎn)生的新設(shè)計(jì)和庫規(guī)格可用作優(yōu)化過程的輸入,以產(chǎn) 生迭代優(yōu)化,如圖7所示。新設(shè)計(jì)和庫規(guī)格可用作步驟603或610的輸入。這是很重要的, 因?yàn)楸娝苤瑑?yōu)化工具產(chǎn)生的結(jié)果是依賴于初始數(shù)據(jù)的,因此迭代可提供進(jìn)一步的改善。 在迭代過程的更一般意義上,優(yōu)化可以再使用在先前迭代中產(chǎn)生的設(shè)計(jì)或庫的任何先前版 本。對于圖7,注意用戶可能僅對優(yōu)化的庫感興趣,因此電路可以僅用于引導(dǎo)庫優(yōu)化過 程。在此情況下,本發(fā)明產(chǎn)生針對特定設(shè)計(jì)進(jìn)行了優(yōu)化的庫,而無需輸出優(yōu)化的電路。在此 情況下可以不輸出該電路。這里描述的方法可通過后處理步驟808被進(jìn)一步增強(qiáng),如圖8所示。對于圖8,注 意用戶可能僅對優(yōu)化的庫感興趣,因此電路可以僅用于引導(dǎo)庫優(yōu)化過程。在此情況下,本發(fā) 明產(chǎn)生針對特定設(shè)計(jì)優(yōu)化的庫,而無需輸出優(yōu)化的電路。在此情況下可以不輸出該電路。這一后處理步驟包括使用由該方法產(chǎn)生的輸出映射網(wǎng)表810和輸出增補(bǔ)庫815來 通過執(zhí)行布置和布線818得出設(shè)計(jì)的新版本。設(shè)計(jì)的這個(gè)經(jīng)布置和布線的版本822使得可 以驗(yàn)證來自初始單元庫的哪些單元和大小被有效地用在電路的物理實(shí)現(xiàn)中。這樣,可以在 考慮到有效使用的單元和大小的情況下執(zhí)行庫規(guī)格的進(jìn)一步優(yōu)化826。在布置和布線之后優(yōu)化庫規(guī)格的過程(826)在圖9中更詳細(xì)示出。此過程可以采 取某種級別的布置保護(hù),其中現(xiàn)有的單元保持在相同位置或者沒有顯著位移。下面描述通 過優(yōu)化進(jìn)行的基本動作。1.在步驟933中,去除未以任何大小使用的單元功能。從庫中去除存在于庫中但 未以任何大小使用的單元,以便使必須生成的單元的數(shù)目最小化。2.在步驟935中,對于使用的單元,去除未使用的大小。未使用的大小也可被去除
以簡化庫。3.在步驟937中,對于使用的單元和大小,添加額外的大小以使得可以為了時(shí)序 閉合而調(diào)節(jié)現(xiàn)有大小。隨著電路被布置和布線并且時(shí)序閉合或接近閉合,單元接近將要使 用的最終大小。對于每個(gè)使用的單元/大小,在庫中引入鄰近大小的集合,以便可以進(jìn)行最 終的時(shí)序固定。4.在步驟939中,調(diào)節(jié)庫模板以對優(yōu)化的設(shè)計(jì)中的單元的新混合進(jìn)行優(yōu)化。隨著 單元的新混合被產(chǎn)生,庫模板可被優(yōu)化,以更好地適應(yīng)于優(yōu)化的庫中存在的單元的集合。庫 模板定義了單元高度、電源的寬度、P和N擴(kuò)散的區(qū)域等等。在生成優(yōu)化的庫規(guī)格948之后,該技術(shù)進(jìn)行到相應(yīng)優(yōu)化物理庫的綜合1052,如圖 10所示。這對應(yīng)于將虛擬和二重虛擬單元(通過物理綜合)變換成物理實(shí)現(xiàn)。單元的物理 實(shí)現(xiàn)隨后將構(gòu)成優(yōu)化的物理庫1054,該優(yōu)化的物理庫1054將用于執(zhí)行最終設(shè)計(jì)閉合以用 于出帶。注意,在物理綜合之后,設(shè)計(jì)可能必須被更新(如重映射的設(shè)計(jì)1056所示)以反映新庫。此步驟在本發(fā)明的范圍中也將被自動進(jìn)行。本發(fā)明相對于現(xiàn)有技術(shù)提供了優(yōu)點(diǎn)。本發(fā)明使用了就面積和性能(功率、延遲、產(chǎn) 量及其他)而言更現(xiàn)實(shí)的數(shù)據(jù)。它還使得可以控制新創(chuàng)建的功能的類型和數(shù)目。本發(fā)明具有添加對于優(yōu)化設(shè)計(jì)可能有用的新單元的優(yōu)點(diǎn)。此外,本發(fā)明具有添加 鄰近大小的單元以允許進(jìn)行最終時(shí)序閉合和優(yōu)化的步驟。本發(fā)明具有利用新功能、不同晶體管拓?fù)?、不同大小和單元模板的差異的?yōu)點(diǎn)。其 他方案中的不同大小是通過現(xiàn)有單元大小的內(nèi)插來生成的,這在不同大小具有不同拓?fù)鋾r(shí) 可能添加大量的不精確。這里描述的本發(fā)明沒有此問題,并且甚至支持使用具有相同驅(qū)動 強(qiáng)度的多個(gè)拓?fù)?。本發(fā)明更加強(qiáng)大,因?yàn)閱卧紫缺惶砑拥綆?,然后映射工具決定有興趣使用哪些 單元。這里給出的本發(fā)明通過可能使用預(yù)先計(jì)算的關(guān)于虛擬單元的數(shù)據(jù)(初始表征和面積 預(yù)覽)而利用了大的單元集合,這使得這里給出的本發(fā)明更加快速。另一點(diǎn)在于在將單元插入到庫中時(shí)不需要按相似性來對單元分組(使單元獨(dú)特 化)單元已經(jīng)在虛擬庫(額外可得功能的集合)中可得,帶有可選擇的大小,這些大小使 得映射工具能夠在條件類似時(shí)選擇相同單元大??;從而使得這在本發(fā)明的情境中不成問 題。這里給出的本發(fā)明通過向庫添加不同風(fēng)格的新單元,從而使得可以控制將預(yù)先創(chuàng)建的 新功能的類型;然后在后續(xù)步驟中控制單元數(shù)量。這與生成單元以滿足條件并隨后有一個(gè) 驗(yàn)證步驟來查明是否可以改為使用類似的已經(jīng)存在的單元的方案有根本不同。其他方案不具有控制新生成的單元的數(shù)目的特征。本發(fā)明的另一優(yōu)點(diǎn)在于添加鄰 近大小的單元以便可以進(jìn)行最終時(shí)序閉合和優(yōu)化的步驟,如果單元的使用條件(例如,布 置)變化較微小的話。本發(fā)明考慮到了設(shè)計(jì)并且自動產(chǎn)生期望單元的規(guī)格以優(yōu)化該設(shè)計(jì)。其他方案對于 設(shè)計(jì)者完成此任務(wù)沒有幫助,因?yàn)樵O(shè)計(jì)者必須自己產(chǎn)生單元規(guī)格。作為這里給出的本發(fā)明的應(yīng)用的示例,考慮圖11所示的電路。它是通過使 用常見標(biāo)準(zhǔn)單元庫產(chǎn)生的電路。因此該電路將使用圖中列出的單元,包括反相器 1100、N0R2 (U27)、具有一個(gè)反相輸入的N0R3 (U26)、具有一個(gè)反相輸入的NAND3 (U24)、 OAI21 (U22)、OAI31 (U18)、A0I21 (U20)以及 0AI22 (U19)。OAI 是或與非(OR-AND-INVERT) 門。AOI是與或非(AND-0R-INVERT)門。這些是最常見的庫中可以找到的單元。重要的是 要注意該電路具有十一個(gè)單元實(shí)例。對于此特定示例,可以使用增補(bǔ)庫,例如通過使用在由晶體管的串聯(lián)和并聯(lián)關(guān)聯(lián) 構(gòu)成的邏輯門中具有有限數(shù)目的串聯(lián)連接的PMOS和NMOS晶體管的組合單元而產(chǎn)生的庫。 在此方案中,虛擬或物理庫可能可得,或者單元生成器工具可以為要添加的單元提供成本 估計(jì)。通過使用晶體管的串聯(lián)和并聯(lián)組合(最多四個(gè)串聯(lián)的晶體管)并且允許單元的輸 入/輸出的求反,可以獲得圖12中的電路。注意,實(shí)例的數(shù)目減少到四個(gè)。即使圖12中的 單元可能大于圖11中的單元,重要的是要注意到,單元實(shí)例的較少數(shù)目補(bǔ)償了對較大單元 的使用。實(shí)際上,圖12中的電路實(shí)現(xiàn)起來需要的晶體管較少。另外,可以更高效地確定圖12中的電路的大小,因?yàn)樾枰彌_的單元輸出更少。 注意,此步驟中的額外可容許的功能的集合可以被顯式或隱式地定義,如以上所述和下面所重復(fù)的。額外可容許的邏輯功能的集合定義了可被視為單獨(dú)單元的功能的列表。在此流程 中,新的可容許功能被用于生成要被添加到庫的候選單元,從而增補(bǔ)了可得單元的集合。額 外可容許功能的集合可以被隱式或顯式地描述或者甚至通過兩者(隱式和顯式定義)的組 合來描述。以下給出庫的隱式定義的一些不同的示例。本申請中(下文和其他地方)的示例 被提供來例示本發(fā)明的一些方面,并且這些方面可以根據(jù)特定應(yīng)用的需要或期望來應(yīng)用和 修改。本發(fā)明的范圍不應(yīng)以任何方式局限于或限制于給出的特定示例。示例1(關(guān)于隱式庫定義)按輸入數(shù)目。當(dāng)按輸入數(shù)目來定義庫時(shí),可根據(jù)功能 的輸入數(shù)目來接受或放棄功能。要接受或拒絕的輸入數(shù)目的具體值是隱式地定義庫中的功 能的參數(shù)。示例2(關(guān)于隱式庫定義)按串聯(lián)并聯(lián)實(shí)現(xiàn)中的串聯(lián)和并聯(lián)晶體管的數(shù)目。當(dāng)按 串聯(lián)和并聯(lián)晶體管的數(shù)目來定義庫時(shí),可根據(jù)功能的串聯(lián)和并聯(lián)晶體管的數(shù)目來接受或放 棄功能。要接受或拒絕的串聯(lián)和并聯(lián)晶體管的數(shù)目的具體值是隱式地定義庫中的功能的參 數(shù)。示例3 (關(guān)于隱式庫定義)按BDD高度。當(dāng)按BDD高度來定義庫時(shí),可根據(jù)表示 功能的BDD的高度來接受或放棄功能。要接受或拒絕的BDD高度的具體值是隱式地定義庫 中的功能的參數(shù)。示例4 (關(guān)于隱式庫定義)按一般開關(guān)實(shí)現(xiàn)中可實(shí)現(xiàn)的晶體管鏈的最小(最壞情 況)長度。這是串聯(lián)晶體管的數(shù)目的“下限”。當(dāng)按晶體管鏈的最小可實(shí)現(xiàn)(最壞情況)長 度來定義庫時(shí),可根據(jù)功能的晶體管鏈的最小可實(shí)現(xiàn)(最壞情況)長度來接受或放棄功能。 要接受或拒絕的晶體管鏈的最小可實(shí)現(xiàn)(最壞情況)長度的具體值是隱式地定義庫中的功 能的參數(shù)。示例5(關(guān)于隱式庫定義)上述四種方法的任何組合,包括將來自這些示例的功 能與原始庫中存在的功能相組合(包括生成原始庫中的單元的關(guān)聯(lián))。注意,對于隱式或顯 式地定義的每個(gè)單元功能,可以創(chuàng)建單元差異,包括不同的晶體管拓?fù)?、不同的晶體管大 小以及不同的驅(qū)動強(qiáng)度。注意,這些方法是僅作為示例給出的,本發(fā)明并不限于使用這里例 示的方法。顯式定義在于顯式地列出額外可容許的邏輯功能的集合。這在于以適于執(zhí)行方法 的任何格式來提供額外可得的功能的列表。對庫進(jìn)行過濾以減少單元的步驟在圖13中圖示出,其給出了由此步驟產(chǎn)生的電 路。認(rèn)為這里給出的示例是一個(gè)大得多的電路的一部分,并且圖12中的生成輸出信號nO 的單元在該更大電路的范圍中具有非常少的實(shí)例。然后,此特定單元可以在庫中被禁止并 且被重映射到具有更多實(shí)例的單元。這將產(chǎn)生圖13的電路,其中生成nO的單元已被在定義了范圍的更大電路的其他 子電路中具有更多實(shí)例的單元的兩個(gè)實(shí)例所替代。此過程考慮了第一映射中每個(gè)單元具有 的實(shí)例的數(shù)目的信息,并且其目標(biāo)在于去除具有較少實(shí)例的單元,這些單元在被從庫中去 除時(shí)不會意味著顯著的成本增大。庫增補(bǔ)過程的接下來的步驟考慮了每個(gè)使用的單元必須以足夠數(shù)目的大小可得。這樣,大小變體(XI、XI. 5、X2、X4等等)被添加到庫,用于每個(gè)所選庫,以構(gòu)成庫。這用于 使得布置和布線工具可以高效地執(zhí)行最終的時(shí)序閉合和優(yōu)化。一旦添加了大小,就可以為庫定義新的模板。由于單元和實(shí)例的數(shù)目是已知的,因 此可以使用庫生成工具API來針對不同模板查詢單元的特性,以便選擇降低實(shí)現(xiàn)的整體成 本的模板。圖14A和14B圖示了將兩個(gè)不同模板應(yīng)用到同一邏輯功能。注意,單元將不同地 適應(yīng)九軌模板(圖14A)和七軌模板(圖14B)。在此特定情況下,可以注意到七軌模板將產(chǎn) 生更小的面積。這種情形在單元與單元之間可能是不同的,必須基于單元實(shí)例的數(shù)目或其 他度量來進(jìn)行加權(quán)判定。此步驟在最終時(shí)序閉合以后可以被再次應(yīng)用,因?yàn)橐恍﹩卧笮?在此過程期間可能被改變,從而更改了使用直方圖。對本發(fā)明的此描述是為了例示和描述而給出的。并不意圖毫無遺漏或者將本發(fā)明 限制到所描述的確切形式,考慮到上述教導(dǎo),許多修改和變化是可能的。選擇和描述實(shí)施例 是為了最好地說明本發(fā)明的原理及其實(shí)際應(yīng)用。此描述將使得本領(lǐng)域的其他技術(shù)人員能夠 在各種實(shí)施例中以適合于特定使用的各種修改來最佳地利用和實(shí)現(xiàn)本發(fā)明。本發(fā)明的范圍 由以下權(quán)利要求來限定。
權(quán)利要求
一種用于對在電路設(shè)計(jì)中使用的庫的優(yōu)化的方法,該方法包括提供初始電路網(wǎng)表;提供一個(gè)或多個(gè)已存在單元集合;提供一個(gè)或多個(gè)額外可容許單元集合;在考慮初始存在單元集合和額外可容許單元集合的情況下,分析所述初始電路網(wǎng)表以找出降低實(shí)現(xiàn)成本的單元;以及輸出一個(gè)或多個(gè)新單元庫規(guī)格和描述,這一個(gè)或多個(gè)新單元庫規(guī)格和描述包括潛在地降低設(shè)計(jì)成本的預(yù)先存在的單元的子集和可容許單元的子集。
2.如權(quán)利要求1所述的方法,其中,所述初始電路網(wǎng)表是由布爾方程或多個(gè)單元的表 述中的至少一種來提供的。
3.如權(quán)利要求1所述的方法,其中,分析所述初始電路網(wǎng)表包括在考慮初始存在單元集合和額外可容許單元集合的同時(shí)重映射電路。
4.如權(quán)利要求3所述的方法,包括 輸出新的重映射的網(wǎng)表。
5.如權(quán)利要求4所述的方法,其中,所述額外可容許單元集合至少包括列出額外可得 功能或單元的顯式集合。
6.如權(quán)利要求4所述的方法,其中,所述額外可容許單元集合包括列出額外可得單元 的顯式集合,并且每個(gè)額外可容許邏輯功能可具有不同的實(shí)現(xiàn)。
7.如權(quán)利要求4所述的方法,其中,所述額外可容許單元集合包括通過某個(gè)參數(shù)而隱 式地定義的功能或單元的集合。
8.如權(quán)利要求4所述的方法,其中,所述額外可容許單元集合包括由所允許的最大輸 入數(shù)目隱式地定義的功能或單元的集合。
9.如權(quán)利要求4所述的方法,其中,所述額外可容許單元集合包括由處于串聯(lián)或并聯(lián) 關(guān)聯(lián)的串聯(lián)和并聯(lián)開關(guān)的最大數(shù)目隱式地定義的功能或單元的集合。
10.如權(quán)利要求4所述的方法,其中,所述額外可容許單元集合包括由功能的BDD實(shí)現(xiàn) 中串聯(lián)的電弧的最大數(shù)目隱式地定義的單元的集合。
11.如權(quán)利要求4所述的方法,其中,所述額外可容許單元集合包括由一般晶體管實(shí)現(xiàn) 中串聯(lián)的開關(guān)的最大允許數(shù)目隱式地定義的功能或單元的集合。
12.如權(quán)利要求4所述的方法,其中,所述額外可容許功能集合是由用于實(shí)現(xiàn)組合邏輯 功能的兩個(gè)晶體管規(guī)劃中串聯(lián)開關(guān)數(shù)目的準(zhǔn)確下限上的最大允許開關(guān)數(shù)目來隱式地定義 的。
13.一種優(yōu)化單元庫模板的方法,包括 接收目標(biāo)技術(shù)信息;接收要包括在庫中的功能或單元的集合;接收要為每個(gè)功能創(chuàng)建的驅(qū)動強(qiáng)度的集合;為每對功能和驅(qū)動強(qiáng)度接收或得出晶體管拓?fù)涞募?;為不同的備選單元模板輸出單元特性的初步估計(jì);以及按照為所需單元的全體估計(jì)的特性的函數(shù),為所述庫選擇最終模板。
14.一種在布置和布線之后優(yōu)化與電路網(wǎng)表相關(guān)聯(lián)的單元庫的方法,包括接收經(jīng)布置和布線的電路網(wǎng)表; 接收相關(guān)聯(lián)的單元庫; 從所述庫中去除未使用的功能; 可選地為使用的功能去除未使用的驅(qū)動強(qiáng)度;對于每個(gè)使用的單元,添加鄰近驅(qū)動強(qiáng)度的集合,以允許進(jìn)一步大小調(diào)節(jié); 可選地使單元庫模板適應(yīng)于單元的新混合;以及 輸出考慮到引入的修改的新的庫規(guī)格。
15.如權(quán)利要求14所述的方法,其中,可選地使單元庫模板適應(yīng)于單元的新混合包括 接收目標(biāo)技術(shù)信息;接收要包括在所述庫中的功能或單元的集合;接收要為每個(gè)功能創(chuàng)建的驅(qū)動強(qiáng)度的集合;為每對功能和驅(qū)動強(qiáng)度接收或得出晶體管拓?fù)涞募?;為不同的備選單元模板輸出單元特性的初步估計(jì);以及按照為所需單元的全體估計(jì)的特性的函數(shù),為所述庫選擇最終模板。
16.一種用于優(yōu)化在電路設(shè)計(jì)中使用的庫的計(jì)算機(jī)程序產(chǎn)品是利用計(jì)算機(jī)可讀介質(zhì)來 體現(xiàn)的,該計(jì)算機(jī)可讀介質(zhì)包括用于提供初始電路網(wǎng)表的計(jì)算機(jī)可讀代碼; 用于提供一個(gè)或多個(gè)已存在單元集合的計(jì)算機(jī)可讀代碼; 用于提供一個(gè)或多個(gè)額外可容許單元集合的計(jì)算機(jī)可讀代碼; 用于在考慮初始存在單元集合和額外可容許單元集合的情況下,分析所述初始電路網(wǎng) 表以找出降低實(shí)現(xiàn)成本的單元的計(jì)算機(jī)可讀代碼;以及用于輸出一個(gè)或多個(gè)新單元庫規(guī)格和描述的計(jì)算機(jī)可讀代碼,這一個(gè)或多個(gè)新單元庫 規(guī)格和描述包括潛在地降低設(shè)計(jì)成本的預(yù)先存在的單元的子集和可容許單元的子集。
17.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,包括用于在考慮初始存在單元集合和額外可容許單元集合的同時(shí)重映射電路的計(jì)算機(jī)可 讀代碼。
18.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,包括 用于輸出新的重映射的網(wǎng)表的計(jì)算機(jī)可讀代碼。
19.如權(quán)利要求18所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述額外可容許單元集合至少包括 列出額外可得功能或單元的顯式集合。
20.如權(quán)利要求18所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述額外可容許單元集合包括列出 額外可得單元的顯式集合,并且每個(gè)額外可容許邏輯功能可具有不同的實(shí)現(xiàn)。
21.一種方法,包括 提供第一集成電路設(shè)計(jì)網(wǎng)表;將所述第一集成電路網(wǎng)表內(nèi)的組件的群組映射為與存儲在計(jì)算機(jī)可讀介質(zhì)上的第一 單元庫中的一個(gè)或多個(gè)單元相對應(yīng);從所述映射中去除到第一單元的至少一個(gè)組件群組,其中所述映射將不包括任何第一 單元映射;以及生成僅包括在所述映射中識別的單元的第二庫,其中所述第二庫不包括任何第一單元映射并且被存儲在計(jì)算機(jī)可讀介質(zhì)上。
22.如權(quán)利要求21所述的方法,包括將所述第一集成電路設(shè)計(jì)網(wǎng)表映射到使用所述第二庫但不使用所述第一庫的第二集 成電路設(shè)計(jì)網(wǎng)表;以及將所述第二集成電路設(shè)計(jì)網(wǎng)表存儲在計(jì)算機(jī)可讀介質(zhì)上。
23.如權(quán)利要求23所述的方法,包括在生成所述第二庫之前,在所述第二庫中而不在所述第一庫中添加第二單元,其中所 述第二集成電路設(shè)計(jì)網(wǎng)表包括對所述第二單元的至少一個(gè)引用。
24.如權(quán)利要求21所述的方法,包括在生成所述第二庫之后,識別和去除至少所述第二庫的第二單元; 生成包括所述第二庫的單元但不包括所述第二單元的第三庫; 將所述第一集成電路設(shè)計(jì)網(wǎng)表映射到具有對所述第三庫的引用但不具有對第一和第 二庫的引用的第二集成電路設(shè)計(jì)網(wǎng)表;以及將所述第二集成電路設(shè)計(jì)網(wǎng)表存儲在計(jì)算機(jī)可讀介質(zhì)上。
25.如權(quán)利要求21所述的方法,其中,生成第二庫包括 執(zhí)行物理綜合而不是邏輯綜合來獲得所述第二庫的單元。
全文摘要
一種方法以選擇用于實(shí)現(xiàn)設(shè)計(jì)的最佳單元集合的方式對設(shè)計(jì)和庫進(jìn)行共同優(yōu)化。該方法考慮到了在降低目標(biāo)成本和遵守設(shè)計(jì)約束的同時(shí)限制新單元數(shù)目的思想。該方法選擇最小接近最優(yōu)單元集合來優(yōu)化設(shè)計(jì)。這包括對基于單元的設(shè)計(jì)和用于實(shí)現(xiàn)它的單元庫的同時(shí)優(yōu)化。當(dāng)忽略電路時(shí),本發(fā)明可以針對特定應(yīng)用僅產(chǎn)生優(yōu)化的庫。該方法考慮了被描述為最終單元或虛擬單元的新單元的集合,這些新單元可能具有與原始庫不同的晶體管拓?fù)?、不同的大小、不同的邏輯功能?或不同的單元模板。
文檔編號G06F17/40GK101990671SQ200980112309
公開日2011年3月23日 申請日期2009年2月5日 優(yōu)先權(quán)日2008年2月5日
發(fā)明者奧爾·克里斯坦·安德森, 安德斯·博·拉斯穆森, 安德烈·伊納西歐·瑞斯, 維尼克休斯·派蘇提·考雷爾 申請人:納恩蓋特公司