專利名稱:用于計算集成電路模型的驗證覆蓋率的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計技術(shù),更具體地說,涉及用于計算集成電路模型的驗證覆蓋率的方法和設(shè)備。
■
背景技術(shù):
在集成電路設(shè)計過程中,驗證(verification)是非常重要的一個步驟。在驗證步驟中,向集成電路模型輸入各種激勵信號,通過比較集成電路模型的實際輸出信號和期望的輸出信號是否相符,來檢查集成電路模型的邏輯正確性。例如,在驗證具有兩個輸入端的 與門模型時,依次向該模型輸入四種可能的激勵信號,檢查各激勵信號下與門模型的輸出是否正確,從而確定該與門模型的邏輯是否正確。集成電路模型需要經(jīng)過驗證以后才能用來作為制造實際集成電路的依據(jù)。驗證步驟的目的是確保集成電路模型在所有可能的激勵的情況下都能夠按照設(shè)計正確地工作。理論上講,通過窮舉各種可能的激勵信號可以實現(xiàn)完全的驗證,從而確保集成電路模型的正確性。但是這種方式效率太低,從而隨著集成電路的復(fù)雜度越來越高而變得越來越不實際。在實際的驗證步驟中所采用的激勵信號是所有可能的激勵信號的子集。所述子集可以是人工地選取的,這需要驗證人員有非常豐富的經(jīng)驗。所述子集也可以通過根據(jù)約束條件進(jìn)行隨機測試?yán)啥x取。但無論采用哪種方法,都需要考察驗證的完備性,即考察采用所述子集進(jìn)行驗證是否覆蓋了各種可能性。通常用覆蓋率(coverage)來表示所述完備性。傳統(tǒng)的覆蓋率計算方法基于寄存器傳送級(RTL, Register Transfer Level)單元。例如,將已經(jīng)驗證過的RTL單元占集成電路模型中總RTL單元的比例作為所述覆蓋率。然而,孤立的RTL單元能夠正確工作并不代表由這些RTL單元組成的集成電路模型能夠正確地工作。因此,需要一種改進(jìn)的覆蓋率計算方法。
■
發(fā)明內(nèi)容
本發(fā)明實施例提供了用于計算集成電路模型的驗證覆蓋率的方法和設(shè)備。根據(jù)本發(fā)明實施例的一種計算集成電路模型的驗證覆蓋率的方法,包括獲取待驗證集成電路模型的邏輯結(jié)構(gòu);根據(jù)所述邏輯結(jié)構(gòu),搜索并記錄所述待驗證集成電路模型中的信號路徑;以及計算驗證對所述信號路徑的覆蓋率。根據(jù)本發(fā)明實施例的一種計算集成電路模型的驗證覆蓋率的設(shè)備,包括獲取裝置,配置為獲取待驗證集成電路模型的邏輯結(jié)構(gòu);搜索裝置,配置為根據(jù)所述邏輯結(jié)構(gòu),搜索并記錄所述待驗證集成電路模型中的信號路徑;以及計算裝置,配置為計算驗證對所述
信號路徑的覆蓋率。根據(jù)本發(fā)明實施例提供的技術(shù)方案,可以得到基于信號路徑的驗證覆蓋率。所述基于信號路徑的驗證覆蓋率可以與基于RTL單元的驗證覆蓋率結(jié)合,更加準(zhǔn)確地提供有關(guān)驗證完備性的數(shù)據(jù)。
■
圖I是適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖。圖2是根據(jù)本發(fā)明實施例的計算驗證覆蓋率的方法的流程圖。圖3是如何搜索并記錄信號路徑的流程圖。圖4A和圖4B示出正向信號追蹤和反向信號追蹤。圖5是一個組合邏輯電路。圖6是根據(jù)本發(fā)明實施例的計算驗證覆蓋率的裝置的方框圖。 ■
具體實施例方式所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明的多個方面可以體現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的多個方面可以具體實現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等)、或者本文一般稱為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的組合。此外,本發(fā)明的多個方面還可以采取體現(xiàn)在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可用的程序碼??梢允褂靡粋€或多個計算機可讀的介質(zhì)的任何組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于一電的、磁的、光的、電磁的、紅外線的、或半導(dǎo)體的系統(tǒng)、裝置、器件或任何以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括以下有一個或多個導(dǎo)線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任何合適的組合。在本文件的語境中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形的介質(zhì),該程序被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。計算機可讀的信號介質(zhì)可包括在基帶中或者作為載波一部分傳播的、其中體現(xiàn)計算機可讀的程序碼的傳播的數(shù)據(jù)信號。這種傳播的信號可以采用多種形式,包括一但不限于一電磁信號、光信號或任何以上合適的組合。計算機可讀的信號介質(zhì)可以是并非為計算機可讀存儲介質(zhì)、但是能發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序的任何計算機可讀介質(zhì)。計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者任何合適的上述組
口 ο計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者任何合適的上述組合。用于執(zhí)行本發(fā)明的操作的計算機程序碼,可以以一種或多種程序設(shè)計語言的任何組合來編寫,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言-諸如Java、Smalltalk、C++之類,還包括常規(guī)的過程式程序設(shè)計語言-諸如” C”程序設(shè)計語言或類似的程序設(shè)計語言。程序碼可以完全地在用戶的計算上執(zhí)行、部分地在用戶的計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶的計算機上部分在遠(yuǎn)程計算機上執(zhí)行、或者完全在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。在后一種情形中,遠(yuǎn)程計算機可以通過任何種類的網(wǎng)絡(luò)--包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶的計算機,或者,可以(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng))連接到外部計算機。以下參照按照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明的多個方面。要明白的是,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行的這些指令,產(chǎn)生實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能指令計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令產(chǎn)生一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品?!ひ部梢园延嬎銠C程序指令加載到計算機或其它可編程數(shù)據(jù)處理裝置上,使得在計算機或其它可編程數(shù)據(jù)處理裝置上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而在計算機或其它可編程裝置上執(zhí)行的指令就提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。下面參照附圖,結(jié)合具體實施例對本發(fā)明進(jìn)行描述。這樣的描述僅僅出于說明目的,而不意圖對本發(fā)明的范圍進(jìn)行限制。圖I示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖。如所示,計算機系統(tǒng)100可以包括CPU(中央處理單元)101、RAM(隨機存取存儲器)102、R0M(只讀存儲器)103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。在這些設(shè)備中,與系統(tǒng)總線104耦合的有CPU 10URAM 102, ROM 103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖I所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。如前所述,孤立的RTL單元能夠正確工作并不代表由這些RTL單元組成的集成電路模型能夠正確地工作。比如說,設(shè)計人員在設(shè)計集成電路模型中時可能漏掉了一個RTL單元。這個RTL單元由于并不存在于集成電路模型中,因此無所謂“被驗證”。但是由于漏掉了該RTL單元,可能導(dǎo)致集成電路模型整體不能按照設(shè)計正確地工作。又比如說,假定兩個有限狀態(tài)機(Finite State Machine) RTL單元本身均能正確工作。如果其中一個的輸出可能是另外一個的輸入,那么其連接關(guān)系正確與否就影響這兩個RTL單元作為一個整體是否能夠正確地工作,進(jìn)而影響到受這兩個有限狀態(tài)驅(qū)動的其他RTL單元的工作準(zhǔn)確性。圖2是根據(jù)本發(fā)明實施例的計算驗證覆蓋率的方法的流程圖。步驟201,獲取待驗證集成電路模型(DUT, Design Under Test)的邏輯結(jié)構(gòu)。此處提取的邏輯結(jié)構(gòu)是以RTL單元為基本單位的。從集成電路模型中提取RTL單元是本領(lǐng)域的常用技術(shù),例如許多綜合(synthesis)工具都可以做到,在此不再贅述。在提取了 RTL單元之后,也很容易得到各RTL單元與其他RTL單元之間的連接關(guān)系,從而獲取所述邏輯結(jié)構(gòu)??梢杂糜邢驁D來表示所述邏輯結(jié)構(gòu)。對以RTL單元為基本單位的集成電路設(shè)計模型而言,其對應(yīng)的有向圖中的各個節(jié)點表示RTL單元,節(jié)點之間的有向邊表示RTL單元之間信號輸入或輸出。根據(jù)本發(fā)明的一個實施例,連接RTL單元的線路本身也可以看作是有向圖中的節(jié)點而不是有向邊。通過為各個節(jié)點設(shè)置屬性,使得各個節(jié)點可以表示不同的RTL單元或線路。本領(lǐng)域技術(shù)人員都知道如何通過鄰接矩陣、鄰接表等數(shù)據(jù)結(jié)構(gòu)來表示一個有向圖,從而表示一個實際的邏輯結(jié)構(gòu)。當(dāng)然,本領(lǐng)域技術(shù)人員還可以采用其他很多手段來表示一個集成電路模型的邏輯結(jié)構(gòu)。因此,獲取一個集成電路模型的邏輯結(jié)構(gòu),就是獲取表示該集成電路模型的數(shù)據(jù)結(jié)構(gòu)的集合。在后面的描述中,由于RTL單元和有向圖節(jié)點之間的對應(yīng)關(guān)系,因此其具有相同 的指代對象。步驟202,根據(jù)所述邏輯結(jié)構(gòu),搜索并記錄所述待驗證集成電路模型中的信號路徑。在步驟201中已經(jīng)得到了集成電路模型中的RTL單元以及RTL單元之間的連接關(guān)系。根據(jù)這些信息,可以得到集成電路模型中的信號路徑。具體步驟在下面結(jié)合其他附圖進(jìn)行更為詳細(xì)的說明。對集成電路模型中的信號路徑進(jìn)行搜索,其基本思想是分析電路結(jié)構(gòu)并且進(jìn)行窮舉式搜索。由于電路結(jié)構(gòu)本質(zhì)上是一個有向圖,因此窮舉式搜索必然是閉合的。也就是說,窮舉式搜索必然能夠找到電路結(jié)構(gòu)中的所有信號路徑。在這一步驟中得到的信號路徑可以用特定的表達(dá)方式進(jìn)行記錄。一般來說,根據(jù)本發(fā)明的一個實施例,可以采用通用覆蓋率代碼(Generic Coverage Code)來記錄所述信號路徑。根據(jù)本發(fā)明的另一個實施例,可以將所述通用覆蓋率代碼進(jìn)一步轉(zhuǎn)換成其他用于驗證的語言,例如SVA/PSL/OVA/Wrapper等,以記錄所述信號路徑。進(jìn)而,對所述信號路徑也可以根據(jù)某些約束條件進(jìn)行篩選。比如,某分支實際上是不可能采取的。在記錄時可以排除包含該分支的信號路徑。步驟203,計算驗證對所述彳目號路徑的覆蓋率。在開始驗證后,向集成電路模型輸入激勵信號??梢院苋菀椎嘏袛喑鲞@些激勵信號使得那些信號路徑被執(zhí)行過??梢砸员粓?zhí)行過的信號路徑占所有信號路徑的比例作為所述覆蓋率。如果在步驟202中對信號路徑進(jìn)行了篩選,那么也可以以被執(zhí)行過的信號路徑占通過篩選余下的信號路徑的比例作為所述覆蓋率。在得到覆蓋率以后,就可以作為評價驗證效果的參考。如果覆蓋率低于某個閾值,可能需要重新生成激勵信號,然后用重新生成的激勵信號再次進(jìn)行驗證,并且重新計算驗證對所述信號路徑的覆蓋率。在窮舉式搜索中,搜索起始節(jié)點的選擇影響到搜索的計算量。搜索起始節(jié)點的選擇還影響到以所搜索到的信號路徑為參考進(jìn)行驗證時的效率。因此,對搜索起始節(jié)點的選擇是非常重要的。根據(jù)本發(fā)明的一個實施例,以集成電路模型的輸入端作為搜索起始節(jié)點。如前所述,集成電路模型本質(zhì)上是一個有向圖。對以RTL單元為基本單位的集成電路設(shè)計模型而言,有向圖中的各個節(jié)點表示RTL單元,節(jié)點之間的有向邊表示RTL單元之間信號輸入或輸出。集成電路模型的輸入端,或者對應(yīng)有向圖的輸入節(jié)點,是這樣的一個RTL單元其只有輸出的有向邊但是沒有輸入的有向邊,或者其輸入的有向邊來自于集成電路模型外部。根據(jù)本發(fā)明的另一個實施例,以有限狀態(tài)機作為搜索起始節(jié)點。有限狀態(tài)機往往是后續(xù)電路的驅(qū)動,因此以有限狀態(tài)機作為搜索起始節(jié)點所找到的信號路徑也可以進(jìn)行有效率的驗證。如何根據(jù)集成電路模型的邏輯結(jié)構(gòu)識別出集成電路模型的輸入端或有限狀態(tài)機是本領(lǐng)域的常用技術(shù),在此不再贅述。下面參照圖3描述如何搜索并記錄所述集成電路模型中的信號路徑。步驟301,以所述搜索起始節(jié)點作為正向信號追蹤的追蹤源節(jié)點。 正向信號追蹤的意思是,順著作為追蹤源節(jié)點的一個RTL單元的輸出有向邊到達(dá)作為追蹤漏節(jié)點的下一個RTL單元。正向信號追蹤只涉及兩個RTL單元,即有向邊兩端的RTL單元。如前所述,搜索起始節(jié)點也是一種RTL單元,因此可以作為所述追蹤源節(jié)點。后面還要提到反向信號追蹤,其含義是順著作為追蹤漏節(jié)點的一個RTL單元的輸入有向邊到達(dá)作為追蹤源節(jié)點的RTL單元。反向信號追蹤也只涉及兩個RTL單元,即有向邊兩端的RTL單元。步驟302,從所述追蹤源節(jié)點開始進(jìn)行正向信號追蹤,記錄有向邊另一端的追蹤漏節(jié)點作為中途節(jié)點。步驟303,判斷所述中途節(jié)點是否觸發(fā)器,如果是則進(jìn)入步驟304,否則進(jìn)入步驟305。步驟303是可選的。在不存在步驟303的情況下,從步驟302直接進(jìn)入步驟304。步驟304,從所述中途節(jié)點開始進(jìn)行正向信號追蹤,并且判斷有向邊另一端的追蹤漏節(jié)點是否為搜索終結(jié)節(jié)點,如果是則進(jìn)入步驟306,否則進(jìn)入步驟305。搜索終結(jié)節(jié)點可以是集成電路模型的輸出端,或者集成電路模型內(nèi)部給有限狀態(tài)機提供輸入的節(jié)點。根據(jù)數(shù)字電路本身的特性,通常要求搜索終結(jié)節(jié)點有穩(wěn)定的輸出。因此在信號路徑上,搜索終結(jié)節(jié)點之前通常存在觸發(fā)器。在判斷某個RTL單元是否為搜索終結(jié)節(jié)點即步驟304之前,先判斷其是否存在對應(yīng)的觸發(fā)器,可以提高辨識搜索終結(jié)節(jié)點的準(zhǔn)確度。同時,由于觸發(fā)器的辨識相對搜索終結(jié)節(jié)點的辨識更加容易,也可以避免對每一個中途節(jié)點都進(jìn)行是否為搜索終結(jié)節(jié)點的判斷。步驟305,以所述中途節(jié)點作為新的追蹤源節(jié)點,返回步驟302。步驟306,輸出包含所述搜索起始節(jié)點,所述中途節(jié)點和所述搜索終結(jié)節(jié)點的信號路徑。根據(jù)本發(fā)明的一個實施例,可以在步驟302中記錄中途節(jié)點的數(shù)目。中途節(jié)點數(shù)目表示路徑的長度。路徑越長,則對該路徑進(jìn)行驗證所需要的激勵信號可能就越多。采用大量激勵信號對一條過長的路徑進(jìn)行驗證會使得整體的驗證效率降低。特別地,也可以在步驟303中記錄觸發(fā)器的數(shù)目。觸發(fā)器的存在在更大程度上意味著驗證所需要的激勵信號數(shù)目的增加。可以在搜索信號路徑的過程中判斷一條路徑經(jīng)過的中途節(jié)點數(shù)目或觸發(fā)器數(shù)目是否超過中途節(jié)點數(shù)目閾值或觸發(fā)器數(shù)目閾值,一旦超過就停止進(jìn)一步的正向信號追蹤,并且不記錄該信號路徑。也可以在搜索過程中不進(jìn)行信號路徑長度的判斷,而是將搜索得到的信號路徑均進(jìn)行記錄,然后再以中途節(jié)點數(shù)目或觸發(fā)器數(shù)目作為約束條件對所記錄的路徑進(jìn)行篩選。一個追蹤源節(jié)點可能輸出多條有向邊,每個有向邊的另一端都有一個追蹤漏節(jié)點。這些多條有向邊分別對應(yīng)于不同的路徑??梢栽诒硎竟?jié)點的數(shù)據(jù)結(jié)構(gòu)中設(shè)置一個標(biāo)識位來幫助搜索到所有這些不同的路徑。在進(jìn)行搜索之前,將所有節(jié)點的標(biāo)志位復(fù)位到默認(rèn)值,例如O。在開始每一次正向信號追蹤之前,判斷當(dāng)前追蹤源節(jié)點所輸出的各有向邊另一端的追蹤漏節(jié)點的標(biāo)志位是否均為非默認(rèn)值,例如I。如果是的話,則將該追蹤源節(jié)點的標(biāo)志位置位為所述非默認(rèn)值,并且返回步驟301,即重新從搜索起始節(jié)點開始正向信號追蹤。否則,即如果當(dāng)前追蹤源所輸出的各有向邊另一端的追蹤漏節(jié)點中有一個或多個的標(biāo)志位為默認(rèn)值,則正向信號追蹤到所述標(biāo)志位為默認(rèn)值的追蹤漏節(jié)點中的一個。本領(lǐng)域技術(shù)人員還可以設(shè)計出各種其他方法,來確保找到從同一搜索起始節(jié)點開始的所有信號路徑。 在以上的描述中,假定所述信號路徑是“直接連接路徑”,即信號路徑上不存在組合邏輯RTL單元。組合邏輯RTL單元的輸出是由多個輸入決定的?;镜慕M合邏輯RTL單元是,諸如與門、或門的各種邏輯門,復(fù)用器(MUX),比較器。復(fù)雜的組合邏輯電路,例如加法器、乘法器等都可以分解成基本組合邏輯RTL單元的組合。包含所述組合邏輯RTL單元的信號路徑是“組合邏輯路徑”。組合邏輯路徑的搜索終結(jié)節(jié)點的信號往往取決于多個搜索起始節(jié)點的信號。根據(jù)本發(fā)明的一個實施例,采用反向信號追蹤來確定組合邏輯路徑的各個搜索起始節(jié)點。簡而言之,在正向信號追蹤時如果發(fā)現(xiàn)組合邏輯RTL單元,則除了以該組合邏輯RTL單元為新的追蹤源節(jié)點繼續(xù)進(jìn)行正向信號追蹤以外,還以該組合邏輯RTL單元為追蹤漏節(jié)點進(jìn)行反向信號追蹤,以便找到所有能夠影響該組合邏輯RTL單元輸出的搜索起始節(jié)點。如前所述,集成電路模型中的信號要么來自輸入端,要么來自有限狀態(tài)機,因此反向信號追蹤最終會抵達(dá)這兩種RTL單元中的一個。圖4A以與門為例說明正向信號追蹤和反向信號追蹤。正向信號追蹤由虛線所示,反向信號追蹤由點劃線所示。正向信號追蹤沿著有向邊Input A所指示抵達(dá)作為追蹤漏節(jié)點的與門。接下來,一方面以所述與門為新的追蹤源節(jié)點沿著有向邊Output C進(jìn)行下一次正向信號追蹤,另一方面沿著輸入到與門的另一條有向邊Input B進(jìn)行反向信號追蹤。正向信號追蹤會抵達(dá)搜索終結(jié)節(jié)點,而反向信號追蹤會抵達(dá)另一個搜索起始節(jié)點。圖4B以復(fù)用器為例說明正向信號追蹤和反向信號追蹤。對于復(fù)用器而言,沿有向邊Input D的控制信號決定了沿有向邊Input A的信號是否能夠通過所述復(fù)用器,因此優(yōu)選地可以只沿著有向邊Input D進(jìn)行反向信號追蹤。反向信號追蹤所找到的RTL單元有可能也是組合邏輯RTL單元。可以采用深度優(yōu)先或廣度優(yōu)先的算法來找到所有的搜索起始節(jié)點。下面參照圖5說明采用深度優(yōu)先的算法來找到所有搜索起始節(jié)點的步驟。首先,從第一搜索起始節(jié)點通過正向信號追蹤到達(dá)與門A。由于與門A是組合邏輯RTL單元,因此需要進(jìn)行反向信號追蹤。第二,以與門A為追蹤漏節(jié)點進(jìn)行反向信號追蹤,到達(dá)與門B。與門B也是組合邏輯RTL單元,因此其有多個輸入有向邊。將與門B記錄下來。第三,以與門B為追蹤漏 節(jié)點進(jìn)行反向信號追蹤,沿著與門B的一個輸入有向邊到達(dá)第二搜索起始節(jié)點。第四,返回與門B,以與門B為追蹤漏節(jié)點進(jìn)行第二次反向信號追蹤,沿著與門B的另一個輸入有向邊到達(dá)第三搜索起始節(jié)點。第五,由于針對與門B的各輸入有向邊均進(jìn)行了反向信號追蹤,因此與門B已經(jīng)處理完畢。進(jìn)而,由于與門A的各輸入有向邊也已經(jīng)處理完畢,因此已經(jīng)找到了影響與門A的輸出的各搜索起始節(jié)點。通過結(jié)合正向信號追蹤和反向信號追蹤,可以得到這樣的信號路徑,該路徑包括至少一個搜索終結(jié)節(jié)點,影響該搜索終結(jié)節(jié)點的信號的搜索起始節(jié)點,以及所述搜索起始節(jié)點和搜索終結(jié)節(jié)點之間的中途節(jié)點。在驗證時,可以容易地確定所述路徑是否被執(zhí)行過,從而得到以信號路徑為基準(zhǔn)的覆蓋率。圖6是基于本發(fā)明實施例的計算集成電路模型的驗證覆蓋率的設(shè)備。該設(shè)備包括獲取裝置,配置為獲取待驗證集成電路模型的邏輯結(jié)構(gòu);搜索裝置,配置為根據(jù)所述邏輯結(jié)構(gòu),搜索并記錄所述待驗證集成電路模型中的信號路徑;以及計算裝置,配置為計算驗證對所述信號路徑的覆蓋率。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。雖然以上結(jié)合具體實施例,對本發(fā)明的各個裝置和方法進(jìn)行了詳細(xì)描述,但本發(fā)明并不限于此。本領(lǐng)域普通技術(shù)人員能夠在說明書教導(dǎo)之下對本發(fā)明進(jìn)行多種變換、替換和修改而不偏離本發(fā)明的精神和范圍。應(yīng)該理解,所有這樣的變化、替換、修改仍然落入本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明的保護(hù)范圍由所附權(quán)利要求來限定。
權(quán)利要求
1.一種計算集成電路模型的驗證覆蓋率的方法,包括 獲取待驗證集成電路模型的邏輯結(jié)構(gòu); 根據(jù)所述邏輯結(jié)構(gòu),搜索并記錄所述待驗證集成電路模型中的信號路徑;以及 計算對所述信號路徑的驗證覆蓋率。
2.如權(quán)利要求I所述的方法,其中所述邏輯結(jié)構(gòu)以有向圖表示,其中搜索并記錄所述待驗證集成電路|吳型中的彳目號路徑包括 以搜索起始節(jié)點作為正向信號追蹤的追蹤源節(jié)點; 從所述追蹤源節(jié)點開始進(jìn)行正向信號追蹤; 記錄有向邊另一端的追蹤漏節(jié)點作為中途節(jié)點; 判斷是否發(fā)現(xiàn)搜索終結(jié)節(jié)點; 如果未發(fā)現(xiàn)搜索終結(jié)節(jié)點,則以所述中途節(jié)點作為新的追蹤源節(jié)點進(jìn)行正向信號追蹤,并返回所述記錄中途節(jié)點的步驟;以及 如果發(fā)現(xiàn)搜索終結(jié)節(jié)點,則記錄包含所述搜索起始節(jié)點,所述中途節(jié)點和所述搜索終結(jié)節(jié)點的信號路徑。
3.如權(quán)利要求2所述的方法,其中所述搜索起始節(jié)點是以下節(jié)點中的一個 集成電路模型的輸入端,或有限狀態(tài)機。
4.如權(quán)利要求2或3所述的方法,其中所述搜索終結(jié)節(jié)點是以下節(jié)點中的一個 集成電路模型的輸出端,或向有限狀態(tài)機提供輸入的節(jié)點。
5.如權(quán)利要求2所述的方法,其中判斷是否發(fā)現(xiàn)搜索終結(jié)節(jié)點包括 判斷所述中途節(jié)點是否為觸發(fā)器; 如果所述中途節(jié)點不是觸發(fā)器,則確定未發(fā)現(xiàn)搜索終結(jié)節(jié)點;以及如果所述中途節(jié)點是觸發(fā)器,則以所述觸發(fā)器為追蹤源節(jié)點進(jìn)行正向信號追蹤,判斷有向邊另一端的追蹤漏節(jié)點是否為搜索終結(jié)節(jié)點。
6.如權(quán)利要求2所述的方法,進(jìn)一步包括 如果所述中途節(jié)點是組合邏輯電路,則從所述組合邏輯電路開始進(jìn)行反向信號追蹤,直到發(fā)現(xiàn)影響所述組合邏輯電路的輸出的所有搜索起始節(jié)點。
7.如權(quán)利要求I或2所述的方法,搜索并記錄所述待驗證集成電路模型中的信號路徑包括 記錄所述待驗證集成電路模型中長度短于閾值的信號路徑。
8.如權(quán)利要求7所述的方法,其中所述信號路徑的長度由信號路徑所經(jīng)過的觸發(fā)器數(shù)目表示。
9.一種計算集成電路模型的驗證覆蓋率的設(shè)備,包括 獲取裝置,配置為獲取待驗證集成電路模型的邏輯結(jié)構(gòu); 搜索裝置,配置為根據(jù)所述邏輯結(jié)構(gòu),搜索并記錄所述待驗證集成電路模型中的信號路徑;以及 計算裝置,配置為計算對所述信號路徑的驗證覆蓋率。
10.如權(quán)利要求9所述的設(shè)備,其中所述邏輯結(jié)構(gòu)以有向圖表示,所述搜索裝置包括 配置為以搜索起始節(jié)點作為正向信號追蹤的追蹤源節(jié)點的裝置; 配置為從所述追蹤源節(jié)點開始進(jìn)行正向信號追蹤的裝置;配置為記錄有向邊另一端的追蹤漏節(jié)點作為中途節(jié)點的裝置; 配置為判斷是否發(fā)現(xiàn)搜索終結(jié)節(jié)點的裝置; 配置為如果未發(fā)現(xiàn)搜索終結(jié)節(jié)點,則以所述中途節(jié)點作為新的追蹤源節(jié)點進(jìn)行正向信號追蹤,并觸發(fā)所述配置為記錄有向邊另一端的追蹤漏節(jié)點作為中途節(jié)點的裝置的裝置;以及 配置為如果發(fā)現(xiàn)搜索終結(jié)節(jié)點,則記錄包含所述搜索起始節(jié)點,所述中途節(jié)點和所述搜索終結(jié)節(jié)點的信號路徑的裝置。
11.如權(quán)利要求10所述的設(shè)備,其中所述搜索起始節(jié)點是以下節(jié)點中的一個 集成電路模型的輸入端,或有限狀態(tài)機。
12.如權(quán)利要求10或11所述的設(shè)備,其中所述搜索終結(jié)節(jié)點是以下節(jié)點中的一個 集成電路模型的輸出端,或向有限狀態(tài)機提供輸入的節(jié)點。
13.如權(quán)利要求10所述的設(shè)備,其中所述配置為判斷是否發(fā)現(xiàn)搜索終結(jié)節(jié)點的裝置包括 配置為判斷所述中途節(jié)點是否為觸發(fā)器的裝置; 配置為如果所述中途節(jié)點不是觸發(fā)器,則確定未發(fā)現(xiàn)搜索終結(jié)節(jié)點的裝置;以及配置為如果所述中途節(jié)點是觸發(fā)器,則以所述觸發(fā)器為追蹤源節(jié)點進(jìn)行正向信號追蹤,并且判斷有向邊另一端的追蹤漏節(jié)點是否為搜索終結(jié)節(jié)點的裝置。
14.如權(quán)利要求10所述的設(shè)備,進(jìn)一步包括 配置為如果所述中途節(jié)點是組合邏輯電路,則從所述組合邏輯電路開始進(jìn)行反向信號追蹤,直到發(fā)現(xiàn)影響所述組合邏輯電路的輸出的所有搜索起始節(jié)點的裝置。
15.如權(quán)利要求9或10所述的設(shè)備,其中所述搜索裝置包括 配置為記錄所述待驗證集成電路模型中長度短于閾值的信號路徑的裝置。
16.如權(quán)利要求15所述的設(shè)備,其中所述信號路徑的長度由信號路徑所經(jīng)過的觸發(fā)器數(shù)目表示。
全文摘要
本發(fā)明實施例提供了一種計算集成電路模型的驗證覆蓋率的方法,包括獲取待驗證集成電路模型的邏輯結(jié)構(gòu);根據(jù)所述邏輯結(jié)構(gòu),搜索并記錄所述待驗證集成電路模型中的信號路徑;以及計算驗證對所述信號路徑的覆蓋率。根據(jù)本發(fā)明實施例提供的技術(shù)方案,可以得到基于信號路徑的驗證覆蓋率,從而更加準(zhǔn)確地提供有關(guān)驗證完備性的數(shù)據(jù)。
文檔編號G06F17/50GK102968515SQ20111027026
公開日2013年3月13日 申請日期2011年8月31日 優(yōu)先權(quán)日2011年8月31日
發(fā)明者范博, 陳亮, 潘永峰, 周凡 申請人:國際商業(yè)機器公司