本發(fā)明涉及集成電路計(jì)算機(jī)輔助設(shè)計(jì)領(lǐng)域,尤其涉及一種庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法。
背景技術(shù):
在標(biāo)準(zhǔn)單元庫(kù)、I/O庫(kù)以及IP器件的時(shí)延和功耗定義中,為了計(jì)算的準(zhǔn)確性,模型都是分不同的狀態(tài)定義的。在庫(kù)文件中,時(shí)延功耗模型有三種定義格式:leakage_power()、internal_power()及timing(),狀態(tài)則是用屬性when定義在不同的格式中。
而現(xiàn)在的庫(kù)文件都是由siliconsmart以及l(fā)iberate等工具自動(dòng)生成,由于提取庫(kù)中模型的選項(xiàng)較多,會(huì)出現(xiàn)狀態(tài)定義混亂的情況,目前沒(méi)有完整的解決方案,因而需要檢查狀態(tài)的完整性。
圖1為現(xiàn)有技術(shù)中單元及管腳狀態(tài)定義格式圖。在時(shí)延和功耗模型中,有三種類(lèi)型的狀態(tài)定義需要檢查完備性,截取其中的片段進(jìn)行說(shuō)明,如圖1所示:leakage_power()定義在cell的下一層,分不同的狀態(tài)定義具體功耗值;internal_power()定義在pin的下一層,分不同的狀態(tài),其中有些有定義related_pin,有些沒(méi)有定義related_pin;timing()也定義在pin的下一層,分不同的狀態(tài),不同的timing_type,但是必須定義related_pin。
直觀(guān)的檢查狀態(tài)完整性的方法,是通過(guò)選擇所有的輸入管腳(pin)進(jìn)行狀態(tài)枚舉,然后比對(duì)枚舉結(jié)果和出現(xiàn)的狀態(tài)。
然而實(shí)際情況并沒(méi)有這么簡(jiǎn)單,模型類(lèi)型以及輸出pin定義的功能(function)格式不同時(shí),狀態(tài)定義的規(guī)則也會(huì)不同。并且,還存在雙輸出、三態(tài)、狀態(tài)表,以及ff和latch等定義更復(fù)雜的情況。此時(shí),就需要根據(jù)輸入輸出pin的名稱(chēng),以及定義的function內(nèi)容,過(guò)濾出可行的狀態(tài)。
一般情況下,庫(kù)單元不同模型中狀態(tài)定義需要滿(mǎn)足以下條件:
1)leakage_power()狀態(tài),包含有輸出pin的狀態(tài),利用function定義內(nèi)容檢查,進(jìn)行布爾表達(dá)式的分析,判斷哪些狀態(tài)是可行的;
2)timing()狀態(tài),定義在兩個(gè)端點(diǎn)之間(arc)的時(shí)序關(guān)系,包括一個(gè)輸入pin和一個(gè)輸出pin,輸入pin的信號(hào)變化會(huì)引起輸出pin的信號(hào)變化,也就是說(shuō)狀態(tài)不能確定輸出的信號(hào);
3)internal_power()狀態(tài),此種狀態(tài)比較特殊,當(dāng)定義在兩個(gè)端點(diǎn)之間(arc)時(shí)和timing()狀態(tài)類(lèi)似;當(dāng)定義在在輸入pin時(shí),該輸入pin的信號(hào)變化不會(huì)引起輸出的變化,也就是說(shuō)狀態(tài)能確定輸出信號(hào)。
因而,提出一種庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法,能夠檢查功耗時(shí)延模型中狀態(tài)定義的完備性,幫助設(shè)計(jì)者以及庫(kù)的提取者得到完整以及規(guī)范的庫(kù)文件數(shù)據(jù),成為亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于提供一種庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法,可以檢查功耗時(shí)延模型中狀態(tài)定義的完備性,幫助設(shè)計(jì)者以及庫(kù)的提取者得到完整以及規(guī)范的庫(kù)文件數(shù)據(jù)。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法,包括以下步驟:
(1)獲取單元庫(kù)中定義的所有狀態(tài)集合,組成目標(biāo)集合;(2)根據(jù)所有管腳的名稱(chēng)枚舉出所有狀態(tài)集合,組成狀態(tài)總集合;(3)根據(jù)單元的功能定義,以及不同模型的特點(diǎn)從所述目標(biāo)集合中求出非法狀態(tài)集合;(4)基于所述非法狀態(tài)集合,比較所述狀態(tài)總集合和所述目標(biāo)集合,得出重復(fù)和缺失的狀態(tài)集合。
所述步驟(1)進(jìn)一步包括:針對(duì)每一個(gè)單元,抽取internal_power()、leakage_power()及timing()定義的狀態(tài),組成所述目標(biāo)集合。
所述步驟(2)進(jìn)一步包括以下步驟:
(21)通過(guò)所述目標(biāo)集合中的狀態(tài)和單元定義的管腳方向,確定關(guān)聯(lián)的輸入及輸出管腳的集合;(22)根據(jù)輸入管腳,得到狀態(tài)的個(gè)數(shù)。
所述步驟(3)進(jìn)一步包括:首先,選出不符合標(biāo)準(zhǔn)單元功能和三態(tài)定義的狀態(tài);然后,選出不符合模型特點(diǎn)的狀態(tài),得到所述非法狀態(tài)集合。
所述步驟(4)進(jìn)一步包括:扣除掉所述目標(biāo)集合中屬于所述非法狀態(tài)集合的部分,得到合法的目標(biāo)集合;扣除掉所述狀態(tài)總集合屬于所述非法狀態(tài)集合的部分,得到合法的狀態(tài)參考集合;求出所述合法的參考集合中多于所述合法的目標(biāo)集合的部分,得到定義缺失的狀態(tài)集合;所述目標(biāo)集合中,定義的狀態(tài)重復(fù)出現(xiàn)的為冗余狀態(tài)集合。
本發(fā)明提供的庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法,通過(guò)檢查定義時(shí)延和功耗的條件,對(duì)時(shí)序單元庫(kù)(Timing Library)中的狀態(tài)(condition)完備性進(jìn)行分析,查找出錯(cuò)誤定義、重復(fù)定義,以及遺漏的狀態(tài)。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。
附圖說(shuō)明
附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,并與本發(fā)明的實(shí)施例一起,用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
圖1為現(xiàn)有技術(shù)中單元及管腳狀態(tài)定義格式圖;
圖2為根據(jù)本發(fā)明的庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法流程圖;
圖3為根據(jù)本發(fā)明的數(shù)字和狀態(tài)的轉(zhuǎn)換圖;
圖4為根據(jù)本發(fā)明的狀態(tài)規(guī)則圖;
圖5為根據(jù)本發(fā)明的狀態(tài)集合運(yùn)算圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供的庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法,通過(guò)檢查定義時(shí)延和功耗的條件,對(duì)時(shí)序單元庫(kù)(Timing Library)中的狀態(tài)(condition)完備性進(jìn)行分析,查找出錯(cuò)誤定義、重復(fù)定義,以及遺漏的狀態(tài)。
首先,需要獲取狀態(tài)定義中的單元的輸入和輸出pin;然后,根據(jù)不同模型的特點(diǎn),進(jìn)行功能(function)分析,過(guò)濾錯(cuò)誤的狀態(tài),錯(cuò)誤狀態(tài)集和用戶(hù)提供的狀態(tài)集的交集,可得出用戶(hù)集合中錯(cuò)誤的狀態(tài);最后,比對(duì)用戶(hù)提供的狀態(tài)集和所有正確的狀態(tài)集合,可得出缺失的和重復(fù)的狀態(tài)。
圖2為根據(jù)本發(fā)明的庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法流程圖,下面將參考圖2,對(duì)本發(fā)明的庫(kù)單元時(shí)延功耗狀態(tài)完整性的檢查方法進(jìn)行詳細(xì)描述。
在步驟201,準(zhǔn)備需要檢查的標(biāo)準(zhǔn)單元時(shí)序庫(kù)文件,并讀入EDA工具中;
用戶(hù)在單元庫(kù)中定義的所有狀態(tài)集合,就是需要比較的目標(biāo)集合Set_tar。
在該步驟中,針對(duì)每一個(gè)單元,抽取internal_power()、leakage_power()及timing()定義的狀態(tài),組成目標(biāo)集合Set_tar。
以timing()為例,按照arc整理出所有的when定義的狀態(tài),這些狀態(tài)組成目標(biāo)集合Set_tar。
internal_power()及l(fā)eakage_power()也整理出所有的when定義的狀態(tài),這些狀態(tài)組成目標(biāo)集合Set_tar。
在步驟202,根據(jù)所有管腳(pin)的名稱(chēng)枚舉出所有狀態(tài)總集合Set_ref;
(1)通過(guò)目標(biāo)集合Set_tar中的狀態(tài)和單元定義的管腳方向,確定關(guān)聯(lián)的輸入及輸出pin的集合;
(2)數(shù)字信號(hào)只有0、1兩種,根據(jù)輸入pin的個(gè)數(shù)N,狀態(tài)的個(gè)數(shù)可有2的N次方種。
已知輸入管腳(pin)的個(gè)數(shù)N和名字,可以枚舉出2N種狀態(tài)。
圖3為根據(jù)本發(fā)明的數(shù)字和狀態(tài)的轉(zhuǎn)換圖。參考圖3,有A和B兩個(gè)輸入pin,可枚舉出四種狀態(tài)。因?yàn)檩斎雙in的順序是確定的,每一個(gè)數(shù)字對(duì)應(yīng)一個(gè)狀態(tài),所以狀態(tài)和數(shù)字可通過(guò)二進(jìn)制自由轉(zhuǎn)換。數(shù)字的操作比字符串的速度更快,只有在最后需要結(jié)果時(shí),才把具體的狀態(tài)用字符串輸出。由此枚舉出所有狀態(tài)的總集即狀態(tài)總集合Set_ref。
以timing()為例,每一條arc時(shí)序里存在的狀態(tài),可根據(jù)輸入及輸出管腳進(jìn)行枚舉,比如有三個(gè)輸入pinA、pinB、pinC及一個(gè)輸出pin Z。選取pinA和pinZ組成A->Z的arc,pinB和pinC的狀態(tài)枚舉出所有狀態(tài)BC、!BC、B!C、!B!C,這四個(gè)狀態(tài)組成arc A->Z的狀態(tài)總集合Set_ref;
在步驟203,根據(jù)單元的功能定義,以及不同模型的特點(diǎn)從目標(biāo)集合Set_tar中求出非法狀態(tài)集合Set_ill;
首先選出不符合標(biāo)準(zhǔn)單元功能和三態(tài)定義的狀態(tài),然后選出不符合模型特點(diǎn)的狀態(tài),得到的就是非法狀態(tài)集合。
其中,根據(jù)功能定義及輸入pin的狀態(tài)生成的二元決策圖(BDD)可求出輸出pin的狀態(tài)。
下面解釋?zhuān)绾胃鶕?jù)單元功能和三態(tài)屬性定義,求出非法狀態(tài)集合Set_ill。
圖4為根據(jù)本發(fā)明的狀態(tài)規(guī)則圖。以一個(gè)兩輸入與門(mén)為例,參考圖4,分析狀態(tài)的合法性。這個(gè)與門(mén)包含了兩個(gè)輸入管腳(pin)A和B,包含的輸出管腳(pin)Z的功能(function)定義是A&B。
在從pin A到pin Z的時(shí)序(arc)上定義timing(),當(dāng)when=B時(shí)(B=1),不能確定pin Z的輸出值,所以在從pin A到pin Z的arc下定義狀態(tài)B是合法的狀態(tài);當(dāng)when=!B(B=0)時(shí),pin Z為0,確定了pin Z的輸出,所以在從pin A到pin Z的時(shí)序arc下定義狀態(tài)!B是不合法的。
在internal_power()里定義的狀態(tài)就與在timing()里定義的完全不同了。
在pin A上定義internal_power(),當(dāng)when=B(B=1)時(shí),不能確定pin Z的輸出值,所以在pin A下定義狀態(tài)B是不合法的狀態(tài);當(dāng)when=!B(B=0)時(shí),pin Z肯定為0,確定了Z的輸出,所以在pin A下定義狀態(tài)!B是合法的。
在步驟204,基于非法狀態(tài)集合,比較狀態(tài)總集合和目標(biāo)集合,得出重復(fù)和缺失的狀態(tài)集合。
圖5為根據(jù)本發(fā)明的狀態(tài)集合運(yùn)算圖,如圖5中公式所示,扣除掉用戶(hù)給出的需要比較的目標(biāo)集合Set_tar中屬于非法狀態(tài)集合Set_ill的部分,得到合法(即符合規(guī)則)的目標(biāo)集合Set_tar’;同時(shí),扣除掉狀態(tài)總集合Set_ref屬于非法狀態(tài)集合Set_ill的部分,得到合法的狀態(tài)參考集合Set_ref’。在上述過(guò)程中,可以根據(jù)不同模型的特點(diǎn),及功能定義的分析,過(guò)濾掉一部分錯(cuò)誤的狀態(tài)。最后,求出合法的參考集合Set_ref’中多于合法的目標(biāo)集合Set_tar’的部分,得到用戶(hù)定義缺失的狀態(tài)集合Set_missing。而用戶(hù)定義的目標(biāo)集合Set_tar中,如果有重復(fù)出現(xiàn)的則是冗余狀態(tài)集合Set_redundant。
本領(lǐng)域普通技術(shù)人員可以理解:以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),其依然可以對(duì)前述各實(shí)施例記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。