本發(fā)明屬于半導(dǎo)體集成電路自動(dòng)化設(shè)計(jì)領(lǐng)域,主要涉及原理圖(Schematic)在設(shè)計(jì)過(guò)程中不同版本之間的差異比較。
背景技術(shù):
集成電路設(shè)計(jì)者在電路原理圖設(shè)計(jì)過(guò)程中,完成原理圖設(shè)計(jì)后會(huì)進(jìn)行電路仿真,如果仿真結(jié)果沒(méi)有達(dá)到設(shè)計(jì)預(yù)期目標(biāo),則會(huì)修改原理圖并重新進(jìn)行仿真,甚至有可能會(huì)因?yàn)榉抡娼Y(jié)果不如上一次的設(shè)計(jì)而將修改撤消,如此不停循環(huán)迭代直到原理圖符合設(shè)計(jì)預(yù)期為止。因此,在原理圖的設(shè)計(jì)過(guò)程中,不可避免的會(huì)不斷修改原理圖設(shè)計(jì),從而產(chǎn)生不同的原理圖版本。
原理圖設(shè)計(jì)者會(huì)比較原理圖不同版本之間的具體差異,從而分析出引起仿真結(jié)果差異的原因,以便于改進(jìn)電路拓?fù)浣Y(jié)構(gòu)或器件屬性,因此理清不同版本的原理圖之間的差異對(duì)設(shè)計(jì)者而言極為重要。對(duì)于電路設(shè)計(jì)者而言,差異主要包括電路拓?fù)浣Y(jié)構(gòu)、器件屬性等影響仿真結(jié)果的關(guān)鍵差異;但是,對(duì)于原理圖而言,差異體現(xiàn)在原理圖數(shù)據(jù)庫(kù)文件的任何一種改動(dòng),除了電路拓?fù)浣Y(jié)構(gòu)、器件屬性等影響仿真結(jié)果的關(guān)鍵差異以外,對(duì)器件或者線網(wǎng)的物理位置挪動(dòng)或者旋轉(zhuǎn)鏡像等也會(huì)造成原理圖數(shù)據(jù)庫(kù)文件的差異。此外,原理圖數(shù)據(jù)庫(kù)通常是由二進(jìn)制文件組成,原理圖設(shè)計(jì)者并不能直接“看清”不同版本的原理圖之間的差異。
除了幫助原理圖設(shè)計(jì)者分析影響仿真結(jié)果的原理圖差異之外,一些特殊情況也可能需要對(duì)原理圖的不同版本之間進(jìn)行比較,并且會(huì)忽略器件的管腳可交換性引起的差異,因此直觀的分析出不同版本之間的關(guān)鍵差異可以有效幫助原理圖設(shè)計(jì)者提高工作效率。
技術(shù)實(shí)現(xiàn)要素:
(一)要解決的技術(shù)問(wèn)題
本發(fā)明提供一種基于拓?fù)潢P(guān)系的原理圖的版本比較方法,用于比較兩個(gè)原理圖版本之間的差異,能夠忽略器件或者線網(wǎng)的物理位置挪動(dòng)或者旋轉(zhuǎn)鏡像等物理坐標(biāo)上的差異,以及器件的管腳可交換性引起的拓?fù)浣Y(jié)構(gòu)差異,根據(jù)電路連接的拓?fù)潢P(guān)系,只將原理圖中的電路拓?fù)浣Y(jié)構(gòu)或器件屬性等影響仿真結(jié)果的關(guān)鍵差異分析出來(lái)。
(二) 技術(shù)方案
本發(fā)明的技術(shù)方案包括如下步驟:
步驟1:讀入原理圖設(shè)計(jì)的兩個(gè)不同版本,先進(jìn)行層次拓?fù)潢P(guān)系比較,得出層次差異并同時(shí)生成對(duì)應(yīng)單元(Cell)序列,對(duì)應(yīng)單元由一對(duì)分別來(lái)自原理圖兩個(gè)不同版本的單元組成;
步驟2:按照逆拓?fù)湫虮闅v對(duì)應(yīng)單元序列,比較對(duì)應(yīng)單元的局部數(shù)據(jù),包括比較對(duì)應(yīng)單元的所有器件(Instance),比較對(duì)應(yīng)單元的所有線網(wǎng)(Wire),并得出對(duì)應(yīng)單元之間的所有器件屬性和線網(wǎng)連接的差異.
其中步驟1所述的層次拓?fù)潢P(guān)系比較具體包括:
步驟1.1:從頂層單元(Top Cell)出發(fā)遍歷兩個(gè)原理圖,將單元的拓?fù)湔{(diào)用關(guān)系表示成兩個(gè)以頂層單元為根節(jié)點(diǎn)的有向圖;
步驟1.2:對(duì)兩個(gè)有向圖進(jìn)行拓?fù)渑判虻玫酵負(fù)湫蛄校?jié)點(diǎn)到根節(jié)點(diǎn)的最長(zhǎng)路徑的長(zhǎng)度定義為節(jié)點(diǎn)的深度,然后按照拓?fù)湫虮闅v兩個(gè)有向圖的拓?fù)湫蛄校瑢⑸疃认嗤⑶颐窒嗤膯卧纬蓪?duì)應(yīng)單元,并且加入對(duì)應(yīng)單元序列,將不能形成對(duì)應(yīng)單元的單元直接記錄成非對(duì)應(yīng)單元;
其中步驟2所述的比較對(duì)應(yīng)單元的所有器件,具體包括:
步驟2.1:對(duì)于給定的對(duì)應(yīng)單元,任意選取兩個(gè)版本中的一個(gè)單元,遍歷被選單元內(nèi)的所有器件,建立名字哈希表;
步驟2.2:遍歷另外一個(gè)版本的單元內(nèi)的所有器件,查找名字哈希表,若查找成功,即具有相同名字,則將這兩個(gè)來(lái)自不同版本的一對(duì)器件標(biāo)記為對(duì)應(yīng)器件,若查找失敗,則標(biāo)記為差異器件;
步驟2.3:遍歷哈希表中所有器件,對(duì)于沒(méi)有成功標(biāo)記成對(duì)應(yīng)器件的器件則標(biāo)記為差異器件;
步驟2.4:依次遍歷所有對(duì)應(yīng)器件,一一遍歷器件的所有屬性并比較各個(gè)屬性值,屬性包括器件類(lèi)型和器件參數(shù),若存在不相同屬性值,則說(shuō)明該組對(duì)應(yīng)器件存在屬性差異。
其中步驟2所述的比較對(duì)應(yīng)單元的所有線網(wǎng),具體包括:
步驟2.5:給所有器件賦予特征值,分別遍歷對(duì)應(yīng)單元中兩個(gè)版本單元內(nèi)的所有器件,對(duì)于標(biāo)記為對(duì)應(yīng)器件的則賦予一個(gè)唯一的特征值,對(duì)于標(biāo)記為差異器件的則賦予特征值為0;
步驟2.6:給所有類(lèi)型的器件管腳賦予特征值,對(duì)于不具有交換性的管腳賦予唯一的特征值,而對(duì)于可相互交換的一組管腳賦予相同的唯一特征值,對(duì)于單元引用類(lèi)型的器件,則按照單元管腳內(nèi)部連接的線網(wǎng)對(duì)應(yīng)關(guān)系賦予唯一特征值,具有對(duì)應(yīng)關(guān)系的線網(wǎng)所連接的單元管腳具有相同的特征值;
步驟2.7:分別遍歷對(duì)應(yīng)單元中兩個(gè)版本的單元內(nèi)所有線網(wǎng),給每一個(gè)線網(wǎng)計(jì)算出一個(gè)特征值,該特征值等于線網(wǎng)連接的所有器件特征值與連接管腳特征值的乘積平方之和,即特征值=Sum( (器件特征值 x 連接管腳的特征值)^2);
步驟2.8:將具有相同特征值的線網(wǎng)收集在同一個(gè)集合,若一個(gè)集合中正好包含一對(duì)分別來(lái)自?xún)蓚€(gè)版本的線網(wǎng),則標(biāo)記這一對(duì)線網(wǎng)為對(duì)應(yīng)線網(wǎng),若一個(gè)集合只包含一個(gè)線網(wǎng),則標(biāo)記為差異線網(wǎng),其他集合中的線網(wǎng)標(biāo)記為可交換線網(wǎng);
步驟2.9:若存在可交換線網(wǎng),遍歷所有對(duì)應(yīng)器件,并依次遍歷器件上的所有管腳,若管腳上所連接的線網(wǎng)為可交換線網(wǎng),則檢查對(duì)應(yīng)器件相同管腳位置上所連接的線網(wǎng),若屬于同一個(gè)可交換線網(wǎng)集合,則直接將這一對(duì)可交換線網(wǎng)標(biāo)記為對(duì)應(yīng)線網(wǎng)并分別從原可交換線網(wǎng)集合中去除;
步驟2.10:若仍然存在可交換線網(wǎng),遍歷所有對(duì)應(yīng)器件,并依次遍歷器件上的所有管腳,若管腳上所連接的線網(wǎng)為可交換線網(wǎng),則依次檢查對(duì)應(yīng)器件中具有相同特征值的可交換管腳位置上所連接的線網(wǎng),若屬于同一個(gè)可交換線網(wǎng)集合,則直接將這一對(duì)可交換線網(wǎng)標(biāo)記為對(duì)應(yīng)線網(wǎng)并分別從原可交換線網(wǎng)集合中去除;
步驟2.11:遍歷所有對(duì)應(yīng)器件,并依次遍歷器件上的所有管腳,若管腳上所連接的線網(wǎng)不是對(duì)應(yīng)線網(wǎng),則檢查對(duì)應(yīng)器件相同管腳位置上所連接的線網(wǎng),若不是對(duì)應(yīng)線網(wǎng),則直接將這一對(duì)管腳上連接的線網(wǎng)標(biāo)記修改為有差異的對(duì)應(yīng)線網(wǎng),否則繼續(xù)查看具有相同特征值的可交換管腳位置上所連接的線網(wǎng),直到發(fā)現(xiàn)一個(gè)不是對(duì)應(yīng)線網(wǎng)的管腳,則直接將這一對(duì)管腳上連接的線網(wǎng)標(biāo)記修改為有差異的對(duì)應(yīng)線網(wǎng);
(三) 有益效果
本發(fā)明的技術(shù)方案,在比較原理圖兩個(gè)版本之間的差異時(shí),并不比較器件或者線網(wǎng)的物理坐標(biāo)位置,因此器件或線網(wǎng)挪動(dòng)或者旋轉(zhuǎn)鏡像等造成的物理坐標(biāo)上的差異會(huì)被忽略,同時(shí)比較過(guò)程中考慮了器件的管腳可交換性,可以忽略管腳可交換引起的拓?fù)浣Y(jié)構(gòu)差異,這樣根據(jù)電路連接的拓?fù)潢P(guān)系,只將原理圖中的電路拓?fù)浣Y(jié)構(gòu)或器件屬性等影響仿真結(jié)果的關(guān)鍵差異分析出來(lái),既幫助原理圖設(shè)計(jì)者找出了關(guān)鍵差異,也忽略掉了無(wú)用的坐標(biāo)等差異。
附圖說(shuō)明
圖1 比較流程圖
圖2 實(shí)例的層次拓?fù)潢P(guān)系圖
圖3 實(shí)例的TOP單元版本1
圖4 實(shí)例的TOP單元版本2
圖5 實(shí)例的inv單元版本1
圖6 實(shí)例的inv單元版本2
圖7 實(shí)例的test單元版本1
圖8 實(shí)例的test單元版本2
具體實(shí)施方式
本發(fā)明的總體流程如圖1所示,為了方便理解技術(shù)方案,下面結(jié)合圖2—圖8中的舉例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。
舉例說(shuō)明:圖3—圖8是采用主流原理圖設(shè)計(jì)工具繪制的一個(gè)原理圖的兩個(gè)不同版本,圖2是整個(gè)原理圖的層次拓?fù)潢P(guān)系圖,版本1和版本2的層次拓?fù)潢P(guān)系一樣,其中圖3、圖4分別是TOP對(duì)應(yīng)單元的版本1和版本2,調(diào)用子單元inv、test,圖5、圖6分別是inv對(duì)應(yīng)單元的版本1和版本2,圖7、圖8分別是test對(duì)應(yīng)單元的版本1和版本2。針對(duì)這個(gè)實(shí)例,比較出版本1和版本2之間的差異,為了便于描述,成對(duì)出現(xiàn)單元、器件或線網(wǎng)等概念時(shí)一律將版本1的數(shù)據(jù)放在第一個(gè),第二個(gè)則來(lái)自版本2。
具體實(shí)施步驟如下:
步驟1:讀入兩個(gè)原理圖的版本,先進(jìn)行層次拓?fù)潢P(guān)系比較:
步驟1.1:從頂層單元出發(fā)遍歷兩個(gè)原理圖的版本,將單元的拓?fù)湔{(diào)用關(guān)系表示成兩個(gè)以頂層單元TOP為根節(jié)點(diǎn)的有向圖,如圖2所示;
步驟1.2:對(duì)兩個(gè)有向圖進(jìn)行拓?fù)渑判?,得到兩個(gè)一樣的拓?fù)湫蛄衶TOP,inv,test},節(jié)點(diǎn)到根節(jié)點(diǎn)的最長(zhǎng)路徑的長(zhǎng)度定義為節(jié)點(diǎn)的深度,因此TOP單元深度為0,inv,test單元的深度均為1,按照拓?fù)湫虮闅v兩個(gè)有向圖的拓?fù)湫蛄校瑢⑸疃认嗤⑶颐窒嗤膯卧纬蓪?duì)應(yīng)單元,因此形成對(duì)應(yīng)單元序列(TOP,TOP),(inv,inv),(test,test),本實(shí)例沒(méi)有非對(duì)應(yīng)單元。
步驟2:按照逆拓?fù)湫虮闅v對(duì)應(yīng)單元序列,即(test,test),(inv,inv),(TOP,TOP)中的各個(gè)對(duì)應(yīng)單元,比較對(duì)應(yīng)單元的局部數(shù)據(jù),包括比較對(duì)應(yīng)單元的所有器件,比較對(duì)應(yīng)單元的所有線網(wǎng),并得出對(duì)應(yīng)單元之間的所有器件屬性和線網(wǎng)連接的差異。本實(shí)例中對(duì)應(yīng)單元(TOP,TOP),(inv,inv)的兩個(gè)版本數(shù)據(jù)之間沒(méi)有做實(shí)質(zhì)性修改,即沒(méi)有"關(guān)鍵"差異,因此以對(duì)應(yīng)單元(test,test)為例說(shuō)明步驟2的具體步驟如下:
首先比較對(duì)應(yīng)單元(test,test)的所有器件,具體步驟如下:
步驟2.1:選擇版本1的單元test,遍歷單元內(nèi)所有器件,包括R0,R1,M0,M1,M2,M3,M4,M5,D0,建立名字哈希表;
步驟2.2:遍歷版本2的單元test內(nèi)所有器件,包括R0,R1,M0,M1,M2,M3,M4,M5,查找步驟2.1中建立的名字哈希表,以R0為例,哈希表中存在相同名字的器件,則標(biāo)記版本1的R0和版本2的R0為對(duì)應(yīng)器件,因此遍歷所有器件后得到對(duì)應(yīng)器件包括(R0,R0),(R1,R1),(M0,M0),(M1,M1),(M2,M2),(M3,M3),(M4,M4),(M5,M5).
步驟2.3:遍歷步驟2.1中建立的哈希表,由于D0沒(méi)有標(biāo)記成對(duì)應(yīng)器件,因此將版本1中的器件D0標(biāo)記為差異器件;
步驟2.4:依次遍歷所有對(duì)應(yīng)器件, 包括(R0,R0),(R1,R1),(M0,M0),(M1,M1),(M2,M2),(M3,M3),(M4,M4),(M5,M5),一一遍歷器件的所有屬性并比較各個(gè)屬性值,以(R0,R0)為例,器件類(lèi)型相同,版本1中R0存在屬性r并且r=800,版本2中R0同名屬性r=200,屬性值不相同,因此對(duì)應(yīng)器件(R0,R0)存在屬性差異;同理,對(duì)應(yīng)器件(R1,R1)也存在屬性差異;
即,器件比較后總共發(fā)現(xiàn)3處差異:D0差異器件,對(duì)應(yīng)器件(R0,R0)和(R1,R1)的屬性差異。
比較完器件,然后比較所有線網(wǎng),具體步驟如下:
步驟2.5:給所有器件賦予特征值,對(duì)于標(biāo)記為對(duì)應(yīng)器件的賦予一個(gè)唯一的特征值,比如(R0,R0)是對(duì)應(yīng)器件,因此賦值后版本1中的R0的特征值與版本2中的R0的特征值相同但是與其他器件不同,而差異器件D0的特征值為0,全部器件的特征值如下:
版本1器件 版本2器件 特征值
R0 R0 11
R1 R1 13
M0 M0 15
M1 M1 17
M2 M2 19
M3 M3 21
M4 M4 23
M5 M5 25
D0 0
步驟2.6:給所有器件管腳類(lèi)型賦予特征值,電阻類(lèi)型器件R0等的管腳有P/N兩個(gè),并且可以交換,因此具有相同的特征值,MOSFET器件M0等的管腳有D/G/S/B四個(gè),其中D/S可以交換,二極管器件D0的管腳有P/N兩個(gè)并且不能交換,因此器件管腳的特征值列表如下:
電阻類(lèi)型器件管腳特征值表:
管腳 特征值
P 1
N 1
MOSFET類(lèi)型器件管腳特征值表:
管腳 特征值
D 1
G 3
S 1
B 5
二極管類(lèi)型器件管腳特征值表:
管腳 特征值
P 1
N 3
步驟2.7:分別遍歷對(duì)應(yīng)單元中兩個(gè)版本的單元內(nèi)所有線網(wǎng),給每一個(gè)線網(wǎng)計(jì)算出一個(gè)特征值,以版本1中的線網(wǎng)BYP為例,線網(wǎng)BYP通過(guò)MOSFET的管腳G分別連接到M1和M4,M1的特征值17,M4的特征值23,管腳G的特征值3,因此線網(wǎng)BYP的特征值的計(jì)算等式為:
特征值=(17x3)^2+(23x3)^2,
即版本1的線網(wǎng)BYP的特征值=7362,同理計(jì)算出版本1和版本2所有線網(wǎng)的特征值;
步驟2.8:對(duì)計(jì)算特征值后的所有線網(wǎng),將具有相同特征值的線網(wǎng)收集在同一個(gè)集合,可以得出如下集合:
集合1{{版本1的線網(wǎng)BIAS},{版本2的線網(wǎng)BIAS}}
集合2{{版本1的線網(wǎng)net1},{版本2的線網(wǎng)net1}}
集合3{{版本1的線網(wǎng)net2},{版本2的線網(wǎng)net2}}
集合4{{版本1的線網(wǎng)VDD!},{版本2的線網(wǎng)VDD!}}
集合5{{版本1的線網(wǎng)GND!},{版本2的線網(wǎng)GND!}}
集合6{{版本1的線網(wǎng)FB},{版本2的線網(wǎng)FB}}
集合7{{版本1的線網(wǎng)C2},{版本2的線網(wǎng)C2}}
集合8{{版本1的線網(wǎng)BYP},{}}
集合9{{版本1的線網(wǎng)C1},{}}
集合10{{},{版本2的線網(wǎng)BYP}}
集合11{{},{版本2的線網(wǎng)C1}}
對(duì)于集合中正好包含一對(duì)分別來(lái)自?xún)蓚€(gè)版本的線網(wǎng)集合,標(biāo)記這一對(duì)線網(wǎng)為對(duì)應(yīng)線網(wǎng),集合1、集合2、集合3、集合4、集合5、集合6、集合7符合要求,因此得到對(duì)應(yīng)線網(wǎng)(BIAS,BIAS), (net1,net1), (net2,net2), (VDD!,VDD!), (GND!, GND!), (FB,FB), (C2,C2);
對(duì)于集合中只包含一個(gè)線網(wǎng)的,直接標(biāo)記為差異線網(wǎng),版本1的線網(wǎng)BYP、C1,版本2的線網(wǎng)BYP、C1符合要求標(biāo)記為差異線網(wǎng);本實(shí)例中沒(méi)有可交換線網(wǎng);
步驟2.9:無(wú)可交換線網(wǎng);
步驟2.10:無(wú)可交換線網(wǎng);
步驟2.11:遍歷所有對(duì)應(yīng)器件,當(dāng)遍歷到對(duì)應(yīng)器件(M1,M1)時(shí),遍歷(M1,M1)的管腳D/G/S/B,其中版本1的M1管腳G上連接BYP不是對(duì)應(yīng)線網(wǎng),因此檢查對(duì)應(yīng)版本2的M1管腳G,由于版本2的M1管腳G連接的線網(wǎng)BYP同樣不是對(duì)應(yīng)線網(wǎng),則將版本1的線網(wǎng)BYP和版本2的線網(wǎng)BYP組成對(duì)應(yīng)線網(wǎng)并修改標(biāo)記為有差異的對(duì)應(yīng)線網(wǎng)(BYP,BYP);同理可以發(fā)現(xiàn)有差異的對(duì)應(yīng)線網(wǎng)(C1,C1);
即,經(jīng)過(guò)比較對(duì)應(yīng)單元(test,test)的所有線網(wǎng),一共發(fā)現(xiàn)2處線網(wǎng)的差異:
(BYP,BYP), (C1,C1).
如此,經(jīng)過(guò)對(duì)應(yīng)單元(test,test)的比較,一共發(fā)現(xiàn)3處器件差異和2處線網(wǎng)差異:D0差異器件,對(duì)應(yīng)器件(R0,R0)和(R1,R1)的屬性差異,線網(wǎng)(BYP,BYP),線網(wǎng)(C1,C1),而實(shí)際上版本1中管腳BIAS與版本2中管腳BIAS的物理位置明顯不同,但不會(huì)報(bào)告出來(lái)。
以上所述僅僅是本發(fā)明的一種優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出對(duì)于本技術(shù)領(lǐng)域的技術(shù)人員而言,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出很多種變形,比如哈希函數(shù)的變形等等,這些變形也應(yīng)當(dāng)屬于本發(fā)明的保護(hù)范圍。