基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取方法
【專利摘要】本發(fā)明公開了一種基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取方法。主要解決現(xiàn)有技術(shù)搜索效率低下、恢復(fù)節(jié)點(diǎn)狀態(tài)范圍不準(zhǔn)確和重復(fù)率過(guò)高的問(wèn)題。其包括:獲取門級(jí)電路的連接關(guān)系;通過(guò)對(duì)門級(jí)電路進(jìn)行仿真,生成相應(yīng)的門級(jí)節(jié)點(diǎn)的狀態(tài),計(jì)算關(guān)鍵節(jié)點(diǎn)0、1狀態(tài)的比率;提取門級(jí)電路的頻繁子電路;由頻繁子電路中提取的D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)門級(jí)電路節(jié)點(diǎn);結(jié)合D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)節(jié)點(diǎn)數(shù)目和0、1狀態(tài)比率,計(jì)算加權(quán)值,提取出加權(quán)值最大的D觸發(fā)器DFF節(jié)點(diǎn);以提取的D觸發(fā)器DFF節(jié)點(diǎn)為基礎(chǔ),依次進(jìn)行后續(xù)關(guān)鍵節(jié)點(diǎn)提取。本發(fā)明降低了恢復(fù)節(jié)點(diǎn)的重復(fù)率,提高了搜索效率和關(guān)鍵節(jié)點(diǎn)恢復(fù)節(jié)點(diǎn)狀態(tài)范圍,可用于門級(jí)電路檢錯(cuò),實(shí)現(xiàn)對(duì)內(nèi)部信號(hào)的跟蹤。
【專利說(shuō)明】
基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于電路處理技術(shù)領(lǐng)域,特別涉及一種門級(jí)電路的關(guān)鍵節(jié)點(diǎn)提取的方法,可用于檢測(cè)門級(jí)電路中存在的錯(cuò)誤,實(shí)現(xiàn)對(duì)內(nèi)部信號(hào)的跟蹤。
【背景技術(shù)】
[0002]隨著芯片規(guī)模和復(fù)雜度的不斷提高,僅靠仿真或者形式驗(yàn)證等硅前驗(yàn)證技術(shù)來(lái)驗(yàn)證芯片的正確性耗時(shí)過(guò)長(zhǎng),且無(wú)法充分保證首次流片的正確性。為了在芯片推向市場(chǎng)前,消除硅前驗(yàn)證階段無(wú)法發(fā)現(xiàn)的錯(cuò)誤,首次流片后的硅調(diào)試是非常必要的。
[0003]硅調(diào)試技術(shù)分為基于掃描鏈和基于跟蹤信號(hào)兩種技術(shù)?;趻呙桄湹墓枵{(diào)試技術(shù)主要通過(guò)某一具體的觸發(fā)信號(hào)對(duì)內(nèi)部電路節(jié)點(diǎn)的狀態(tài)進(jìn)行捕獲,然后由掃描鏈將捕獲到的數(shù)據(jù)傳至片外進(jìn)行分析。但該技術(shù)致命的缺陷在于,每次將捕獲的數(shù)據(jù)外傳時(shí),都需要停止正常工作模式,因此無(wú)法對(duì)內(nèi)部信號(hào)進(jìn)行實(shí)時(shí)監(jiān)測(cè)和驗(yàn)證內(nèi)部信號(hào)中存在的一些延時(shí)性錯(cuò)誤。然而基于跟蹤信號(hào)的硅調(diào)試技術(shù)能很好的解決實(shí)時(shí)監(jiān)測(cè)的問(wèn)題?;诟櫺盘?hào)技術(shù)的關(guān)鍵是提取特定的關(guān)鍵節(jié)點(diǎn),來(lái)用于內(nèi)部信號(hào)的跟蹤和恢復(fù)。
[0004]門級(jí)電路關(guān)鍵節(jié)點(diǎn)的提取即在門級(jí)電路D觸發(fā)器DFF節(jié)點(diǎn)中篩選出一定數(shù)量恢復(fù)節(jié)點(diǎn)狀態(tài)范圍最大的D觸發(fā)器DFF節(jié)點(diǎn)。而恢復(fù)節(jié)點(diǎn)狀態(tài)過(guò)程分為正向和反向兩個(gè)方向,其中:
[0005]門級(jí)電路節(jié)點(diǎn)正向恢復(fù):是通過(guò)門級(jí)電路當(dāng)前門節(jié)點(diǎn)輸入狀態(tài)及自身正向邏輯關(guān)系得出其輸出狀態(tài),同時(shí)由當(dāng)前門節(jié)點(diǎn)輸出所連接的其他門節(jié)點(diǎn)的輸入,可以得到對(duì)應(yīng)門節(jié)點(diǎn)的輸入狀態(tài),最后通過(guò)得到的門節(jié)點(diǎn)的輸入狀態(tài)及其正向邏輯關(guān)系繼續(xù)進(jìn)行正向恢復(fù),進(jìn)而恢復(fù)出正向連接中可以恢復(fù)的各節(jié)點(diǎn)狀態(tài)。
[0006]門級(jí)電路節(jié)點(diǎn)反向恢復(fù):是通過(guò)門級(jí)電路當(dāng)前門節(jié)點(diǎn)的輸出狀態(tài)及自身反向邏輯關(guān)系得出其輸入狀態(tài),同時(shí)由當(dāng)前門節(jié)點(diǎn)輸入所連接的其他門節(jié)點(diǎn)的輸出,可以得到對(duì)應(yīng)門節(jié)點(diǎn)的輸出狀態(tài),最后通過(guò)得到的門節(jié)點(diǎn)的輸出狀態(tài)及其反向邏輯關(guān)系繼續(xù)進(jìn)行反向恢復(fù),進(jìn)而恢復(fù)出反向連接中可以恢復(fù)的各節(jié)點(diǎn)狀態(tài)。
[0007]最后以門級(jí)電路中D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)出的其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目為參考,篩選出恢復(fù)節(jié)點(diǎn)狀態(tài)范圍最大的D觸發(fā)器DFF節(jié)點(diǎn),作為門級(jí)電路的關(guān)鍵節(jié)點(diǎn)。
[0008]由于傳統(tǒng)關(guān)鍵節(jié)點(diǎn)的提取是以單個(gè)D觸發(fā)器DFF節(jié)點(diǎn)為分析對(duì)象,通過(guò)對(duì)每個(gè)節(jié)點(diǎn)及其相鄰電路進(jìn)行分析,一方面搜索空間很大,甚至?xí)嬖谝恍┤哂嗨阉?,進(jìn)而導(dǎo)致算法的復(fù)雜度過(guò)高搜索效率低下;另一方面沒(méi)有考慮多個(gè)D觸發(fā)器DFF節(jié)點(diǎn)共同恢復(fù)節(jié)點(diǎn)狀態(tài)的情況,導(dǎo)致恢復(fù)節(jié)點(diǎn)狀態(tài)范圍不準(zhǔn)確或重復(fù)率過(guò)高。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目的在于針對(duì)上述已有技術(shù)的不足,提出一種基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取的方法,以降低關(guān)鍵節(jié)點(diǎn)提取的復(fù)雜度和恢復(fù)節(jié)點(diǎn)的重復(fù)率,提高關(guān)鍵節(jié)點(diǎn)恢復(fù)節(jié)點(diǎn)狀態(tài)范圍。
[0010]為了實(shí)現(xiàn)上述目的,本發(fā)明采用了以下方案:
[0011](I)獲取門級(jí)電路中節(jié)點(diǎn)的連接關(guān)系,得到門級(jí)電路內(nèi)部的連接方式;
[0012](2)對(duì)門級(jí)電路進(jìn)行仿真,生成相應(yīng)的門級(jí)電路節(jié)點(diǎn)狀態(tài)即輸出狀態(tài),所述門級(jí)節(jié)點(diǎn)狀態(tài)用于關(guān)鍵節(jié)點(diǎn)提取時(shí),計(jì)算關(guān)鍵節(jié)點(diǎn)0、1狀態(tài)的比率;
[0013](3)設(shè)定門級(jí)電路最小支持度t及生成鏈狀模板的長(zhǎng)度上限m,對(duì)門級(jí)電路的頻繁子電路進(jìn)行提?。?br>[0014](4)將提取的頻繁子電路中的D觸發(fā)器DFF節(jié)點(diǎn)選為候選節(jié)點(diǎn),再以D觸發(fā)器DFF節(jié)點(diǎn)為起點(diǎn),正向或反向恢復(fù)門級(jí)電路節(jié)點(diǎn);
[0015](5)通過(guò)D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)的其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目加權(quán)值,進(jìn)行排序找到恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)最多的D觸發(fā)器DFF節(jié)點(diǎn);
[0016](6)以提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)所恢復(fù)節(jié)點(diǎn)狀態(tài)為基礎(chǔ),依次進(jìn)行關(guān)鍵節(jié)點(diǎn)提取,直到提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目達(dá)到η個(gè)或提取完頻繁子電路中所有D觸發(fā)器DFF節(jié)點(diǎn)為止。
[0017]本發(fā)明相對(duì)于現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn):
[0018]1.本發(fā)明通過(guò)仿真獲取各關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)O、I狀態(tài)的比率,避免了因某些關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)狀態(tài)較小概率為O或者I而導(dǎo)致關(guān)鍵節(jié)點(diǎn)提取出現(xiàn)偏差的問(wèn)題;
[0019]2.本發(fā)明通過(guò)門級(jí)電路頻繁子電路的提取縮小了關(guān)鍵節(jié)點(diǎn)提取的范圍,提高了關(guān)鍵節(jié)點(diǎn)提取的搜索效率;
[0020]3.本發(fā)明在恢復(fù)節(jié)點(diǎn)過(guò)程中,通過(guò)標(biāo)記已恢復(fù)的節(jié)點(diǎn),避免了節(jié)點(diǎn)的重復(fù)恢復(fù),加快了節(jié)點(diǎn)恢復(fù)的過(guò)程;
[0021]4.本發(fā)明對(duì)關(guān)鍵節(jié)點(diǎn)的提取由于充分考慮了多個(gè)關(guān)鍵節(jié)點(diǎn)共同恢復(fù)節(jié)點(diǎn)的情況,相較于單個(gè)關(guān)鍵節(jié)點(diǎn)的提取,提取的關(guān)鍵節(jié)點(diǎn)所恢復(fù)的節(jié)點(diǎn)數(shù)更多。
【附圖說(shuō)明】
[0022]圖1為本發(fā)明使用的門級(jí)電路圖;
[0023]圖2為本發(fā)明的實(shí)現(xiàn)流程圖;
[0024]圖3為本發(fā)明中D觸發(fā)器DFF節(jié)點(diǎn)正向恢復(fù)節(jié)點(diǎn)的方向圖;
[0025]圖4為本發(fā)明中D觸發(fā)器DFF節(jié)點(diǎn)反向恢復(fù)節(jié)點(diǎn)的方向圖。
【具體實(shí)施方式】
[0026]為使本發(fā)明目的、技術(shù)方案以及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)行近一步的詳細(xì)說(shuō)明。
[0027]參照?qǐng)D1,本發(fā)明針對(duì)的門級(jí)電路,包括4個(gè)外部輸入端GO、G1、G2、G3,6個(gè)D觸發(fā)器DFF節(jié)點(diǎn)DFFG4、DFFG5、DFFG6、DFFG7、DFFG8、DFFG9,3個(gè)非門NOT節(jié)點(diǎn)N0TG15、N0TG16、勵(lì)丁620,1個(gè)與門八仰節(jié)點(diǎn)六仰619,2個(gè)或門01?節(jié)點(diǎn)01^17、01^18,4個(gè)或非門勵(lì)1?節(jié)點(diǎn)勵(lì)1^11、從)1^12、從)1?13、從)1?14,1個(gè)與非門節(jié)點(diǎn)嫩冊(cè)610和2個(gè)外部輸出621、622。
[0028]參照?qǐng)D2,本發(fā)明基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取方法,包括以下步驟:
[0029]步驟1:獲取門級(jí)電路中節(jié)點(diǎn)的連接關(guān)系,得到門級(jí)電路內(nèi)部連接關(guān)系。
[0030](Ia)將門級(jí)電路以字符的形式存入第一緩存數(shù)組buf[];
[0031](Ib)初始化存放門級(jí)電路外部輸入、外部輸出和內(nèi)部節(jié)點(diǎn)信息的結(jié)構(gòu)體;
[0032](Ic)分別從外部輸入、外部輸出及內(nèi)部節(jié)點(diǎn)三個(gè)方面,遍歷整個(gè)門級(jí)電路,通過(guò)對(duì)第一緩存數(shù)組buf []中特定的字符進(jìn)行檢索,獲取門級(jí)電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系,并存入對(duì)應(yīng)結(jié)構(gòu)體中。
[0033]步驟2:對(duì)門級(jí)電路進(jìn)行仿真。
[0034](2a)對(duì)整個(gè)門級(jí)電路進(jìn)行復(fù)位,將門級(jí)電路中所有D觸發(fā)器DFF節(jié)點(diǎn)輸入置O;
[0035](2b)將仿真周期設(shè)定為64;
[0036](2c)初始化整個(gè)門級(jí)電路,將所有門級(jí)電路節(jié)點(diǎn)標(biāo)記為未更新狀態(tài);
[0037](2d)由隨機(jī)函數(shù)產(chǎn)生長(zhǎng)度為4的0,I隨機(jī)序列,并分別賦值給門級(jí)電路的外部輸入端60、61、62、63;
[0038](2e)遍歷門級(jí)電路中所有 D 觸發(fā)器 DFF 節(jié)點(diǎn) DFFG4、DFFG5、DFFG6、DFFG7、DFFG8、DFFG9,由各D觸發(fā)器DFF節(jié)點(diǎn)輸入,更新其節(jié)點(diǎn)狀態(tài),并將其節(jié)點(diǎn)狀態(tài)標(biāo)記為已更新狀態(tài);[0039 ] (2f)對(duì)外部輸入端和D觸發(fā)器DFF節(jié)點(diǎn)輸出端所連接的各門級(jí)電路節(jié)點(diǎn)的輸入狀態(tài)進(jìn)行更新,并將所有輸入端已更新的門級(jí)電路節(jié)點(diǎn)的仿真周期更新為當(dāng)前仿真周期:
[0040](20)遍歷所有外部輸入端60、61、62、63,分別找到各外部輸入端所連接內(nèi)部節(jié)點(diǎn)輸入進(jìn)行更新;
[0041 ] (2f2)通過(guò)各D觸發(fā)器DFF節(jié)點(diǎn)的輸出連接關(guān)系,找到各D觸發(fā)器DFF節(jié)點(diǎn)所連接的內(nèi)部節(jié)點(diǎn)輸入進(jìn)行更新;
[0042](2f3)遍歷所有節(jié)點(diǎn)狀態(tài)未更新的門級(jí)電路節(jié)點(diǎn),找到所有輸入端已更新的第三與非門節(jié)點(diǎn)N0RG13、第一非門節(jié)點(diǎn)N0TG15、第三非門節(jié)點(diǎn)N0TG20,將其仿真周期更新為當(dāng)前仿真周期;
[0043](2g)對(duì)處于當(dāng)前仿真周期的第三與非門節(jié)點(diǎn)N0RG13、第一非門節(jié)點(diǎn)N0TG15、第三非門節(jié)點(diǎn)N0TG20,通過(guò)其自身的邏輯關(guān)系,更新其節(jié)點(diǎn)狀態(tài),并將其節(jié)點(diǎn)狀態(tài)標(biāo)記為已更新狀態(tài);
[0044](2h)由節(jié)點(diǎn)狀態(tài)已更新的第三與非門節(jié)點(diǎn)N0RG13、第一非門節(jié)點(diǎn)N0TG15、第三非門節(jié)點(diǎn)N0TG20,更新其輸出所連接的內(nèi)部節(jié)點(diǎn)輸入;
[0045](2i)遍歷所有節(jié)點(diǎn)狀態(tài)未更新的門級(jí)電路節(jié)點(diǎn),找到所有輸入已更新的第四與非門節(jié)點(diǎn)N0RG14、第一或門節(jié)點(diǎn)0RG17,將其仿真周期更新為當(dāng)前仿真周期;
[0046](2j)對(duì)處于當(dāng)前仿真周期的第四與非門節(jié)點(diǎn)N0RG14、第一或門節(jié)點(diǎn)0RG17通過(guò)其自身的邏輯關(guān)系,更新其節(jié)點(diǎn)狀態(tài),并將其節(jié)點(diǎn)狀態(tài)標(biāo)記為已更新狀態(tài);
[0047](2k)遍歷所有節(jié)點(diǎn)狀態(tài)未更新的門級(jí)電路節(jié)點(diǎn),找到節(jié)點(diǎn)狀態(tài)已更新的門級(jí)電路節(jié)點(diǎn),更新其輸出所連接內(nèi)部節(jié)點(diǎn)輸入,將所有輸入已更新的門級(jí)電路節(jié)點(diǎn)再通過(guò)其自身邏輯關(guān)系,更新其節(jié)點(diǎn)狀態(tài),直到所有門級(jí)電路節(jié)點(diǎn)狀態(tài)均已處于已更新狀態(tài)為止,結(jié)束當(dāng)前仿真周期;
[0048](21)重復(fù)上述步驟(2c)到(2k)的過(guò)程,完成剩下63個(gè)仿真周期的門級(jí)電路仿真;
[0049](2m)統(tǒng)計(jì)64個(gè)仿真周期內(nèi)各D觸發(fā)器DFF節(jié)點(diǎn)O,I狀態(tài),并計(jì)算每個(gè)D觸發(fā)器DFF節(jié)點(diǎn)0、I狀態(tài)的比率。
[0050]步驟3:對(duì)門級(jí)電路進(jìn)行頻繁子電路提取。
[0051](3a)設(shè)定頻繁子電路最小支持度t為2和頻繁子電路規(guī)模上限m為3;
[0052]頻繁子電路支持度tS卩門級(jí)電路中與當(dāng)前頻繁子電路同構(gòu)的子電路的數(shù)目,而門級(jí)電路中大于等于頻繁子電路最小支持度的候選子電路稱為頻繁子電路;所有支持度小于頻繁子電路最小支持度的候選子電路稱為非頻繁子電路。
[0053]引入最小支持度閾值t和生成頻繁子電路規(guī)模上限m概念,可限定所提取的頻繁子電路的最小支持度及規(guī)模,使得規(guī)模最大或支持度最高的頻繁子電路優(yōu)先提取,避免傳統(tǒng)規(guī)律性提取常常將所有頻繁子電路全部提取從而導(dǎo)致算法復(fù)雜度過(guò)高的情況,其具體實(shí)現(xiàn)如下:
[0054](3b)以D觸發(fā)器DFF節(jié)點(diǎn)為根節(jié)點(diǎn),對(duì)門級(jí)電路進(jìn)行檢索,提取滿足最小支持度t的二元頻繁子電路結(jié)構(gòu),排除不能提取二元頻繁子電路的根節(jié)點(diǎn),降低根節(jié)點(diǎn)的個(gè)數(shù);
[0055](3bI)統(tǒng)計(jì)門級(jí)電路中根節(jié)點(diǎn)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目為6;
[0056](3b2)子電路結(jié)構(gòu)規(guī)模擴(kuò)展為2后,得到二元頻繁子電路為DFFG—N0RG、N0RG—DFFG,其中 DFFG—N0RG包括DFFG5—N0RG12、DFFG7—N0RG13,N0RG—DFFG包括NORG11DFFG5、N0RG124DFFG6、N0RG13—DFFG8、N0RG14—DFFG7,同時(shí)可以刪除不能提取二元頻繁子電路的根節(jié)點(diǎn)第一D觸發(fā)器DFF節(jié)點(diǎn)DFFG4、第六D觸發(fā)器DFF節(jié)點(diǎn)DFFG9;
[0057](3c)對(duì)提取的二元頻繁子電路規(guī)模進(jìn)行前向或后向擴(kuò)展,子電路結(jié)構(gòu)規(guī)模擴(kuò)展為3后,可以得到頻繁子電路為 DFFG—N0RG4DFFG、N0RG4DFFG4N0RG、N0RG4N0RG—DFFG,其中 DFFG—N0RG—DFFG 包括 DFFG5—N0RG12—DFFG6、DFFG7—N0RG13—DFFG8,N0RG—DFFG—NORG 包括 NORGl 1—DFFG5—N0RG12、N0RG4DFFG—N0RG,N0RG4N0RG—DFFG 包括 NORGl 2—?jiǎng)?lì)1^1140??65、勵(lì)1^134勵(lì)1^1440??67,此時(shí)頻繁子電路規(guī)模達(dá)到設(shè)計(jì)的規(guī)模上限111,結(jié)束對(duì)子電路結(jié)構(gòu)規(guī)模的擴(kuò)展,并將頻繁子電路DFFG—NORG—DFFG、N0RG—DFFG—N0RG對(duì)應(yīng)的節(jié)點(diǎn)存入第二緩存數(shù)組buf2[]。
[0058]步驟4:以D觸發(fā)器DFF節(jié)點(diǎn)為起點(diǎn),正向或反向恢復(fù)門級(jí)電路節(jié)點(diǎn)。
[0059 ] (4a)在第二緩存數(shù)組buf 2 []中,提取D觸發(fā)器DFF節(jié)點(diǎn)第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5;
[0060](4b)初始化整個(gè)門級(jí)電路,將所有門級(jí)電路節(jié)點(diǎn)標(biāo)記為未恢復(fù)狀態(tài);
[0061 ] (4c)由第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5輸出方向恢復(fù)節(jié)點(diǎn);
[0062]參照?qǐng)D3,本步驟具體實(shí)現(xiàn)如下:
[0063](4c I)當(dāng)?shù)诙﨑觸發(fā)器DFF節(jié)點(diǎn)DFFG5節(jié)點(diǎn)狀態(tài)為I時(shí),由門級(jí)電路內(nèi)部節(jié)點(diǎn)連接關(guān)系,得出第二或非門節(jié)點(diǎn)N0RG12的輸入狀態(tài)為I;
[0064](4c2)由第二或非門節(jié)點(diǎn)NORGl2的自身邏輯關(guān)系,得到第二或非門節(jié)點(diǎn)NORGl2的節(jié)點(diǎn)狀態(tài)為O,并將第二或非門節(jié)點(diǎn)N0RG12入隊(duì),其節(jié)點(diǎn)狀態(tài)標(biāo)記為已恢復(fù)狀態(tài);
[0065](4c3)將第二或非門節(jié)點(diǎn)N0RG12出隊(duì),由門級(jí)電路內(nèi)部連接關(guān)系,得到與第二或非門節(jié)點(diǎn)N0RG12相連的第一或非門節(jié)點(diǎn)NORGll、第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6、第二非門節(jié)點(diǎn)NOTGl 6的輸入狀態(tài)都為O;
[0066](4c4)分別由第一或非門節(jié)點(diǎn)NORGll、第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6、第二非門節(jié)點(diǎn)N0TG16的自身邏輯關(guān)系,得到第一或非門節(jié)點(diǎn)NORGll節(jié)點(diǎn)狀態(tài)未知即不能恢復(fù)出第一或非門節(jié)點(diǎn)NORGll的節(jié)點(diǎn)狀態(tài),第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6節(jié)點(diǎn)狀態(tài)為O,第二非門節(jié)點(diǎn)N0TG16節(jié)點(diǎn)狀態(tài)為1,并將第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6和第二非門節(jié)點(diǎn)N0TG16均入隊(duì),其節(jié)點(diǎn)狀態(tài)標(biāo)記為已恢復(fù)狀態(tài);
[0067](4c5)分別將第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6和第二非門節(jié)點(diǎn)N0TG16出隊(duì),由門級(jí)電路內(nèi)部連接關(guān)系,得到第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6所連接第三非門節(jié)點(diǎn)N0TG20輸入狀態(tài)為O,第二非門節(jié)點(diǎn)N0TG16所連接第一 D觸發(fā)器DFF節(jié)點(diǎn)DFFG4和第一與門節(jié)點(diǎn)ANDG19的輸入狀態(tài)都為I;
[0068](4c6)分別由第三非門節(jié)點(diǎn)N0TG20、第一與門節(jié)點(diǎn)ANDG19、第一 D觸發(fā)器DFF節(jié)點(diǎn)DFFG4的自身邏輯關(guān)系,得到第三非門節(jié)點(diǎn)N0TG20節(jié)點(diǎn)狀態(tài)為I,第一與門節(jié)點(diǎn)ANDG19節(jié)點(diǎn)狀態(tài)未知即不能恢復(fù)出其節(jié)點(diǎn)狀態(tài),第一D觸發(fā)器DFF節(jié)點(diǎn)DFFG4節(jié)點(diǎn)狀態(tài)為I,并將第三非門節(jié)點(diǎn)N0TG20、第一D觸發(fā)器DFF節(jié)點(diǎn)DFFG4入隊(duì),其節(jié)點(diǎn)狀態(tài)標(biāo)記為已恢復(fù)狀態(tài);
[0069](4c7)分別將第三非門節(jié)點(diǎn)N0TG20、第一D觸發(fā)器DFF節(jié)點(diǎn)DFFG4出隊(duì),由門級(jí)電路內(nèi)部連接關(guān)系,得到第三非門節(jié)點(diǎn)N0TG20所連接的第一與非門節(jié)點(diǎn)NANDG10的輸入狀態(tài)為I,而第一D觸發(fā)器DFF節(jié)點(diǎn)DFFG4所連接的是外部輸出G21即無(wú)法恢復(fù)其他節(jié)點(diǎn)狀態(tài);
[0070](4c8)由第一與非門節(jié)點(diǎn)NANDG10自身邏輯關(guān)系,得到第一與非門節(jié)點(diǎn)NANDGK^點(diǎn)狀態(tài)未知即不能恢復(fù)出第一與非門節(jié)點(diǎn)NANDG10的節(jié)點(diǎn)狀態(tài),無(wú)法繼續(xù)正向恢復(fù)節(jié)點(diǎn);
[0071](4c9)第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5節(jié)點(diǎn)狀態(tài)為O時(shí),第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5輸出方向無(wú)法恢復(fù)其它節(jié)點(diǎn)狀態(tài);
[0072](4cl0)統(tǒng)計(jì)步驟(4cl)到(4c9)中所有入隊(duì)節(jié)點(diǎn),得到第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5節(jié)點(diǎn)輸出方向能恢復(fù)的節(jié)點(diǎn)有第二或非門節(jié)點(diǎn)N0RG12、第二非門節(jié)點(diǎn)N0TG16、第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6、第三非門節(jié)點(diǎn)N0TG20、第一 D觸發(fā)器DFF節(jié)點(diǎn)DFFG4五個(gè)節(jié)點(diǎn);
[0073](4d)再次初始化整個(gè)門級(jí)電路,將所有門級(jí)電路節(jié)點(diǎn)標(biāo)記為未恢復(fù)狀態(tài);
[0074](4e)由第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5輸出反方向恢復(fù)節(jié)點(diǎn);
[0075]參照?qǐng)D4,本步驟具體實(shí)現(xiàn)如下:
[0076](4el)當(dāng)?shù)诙?D觸發(fā)器DFF節(jié)點(diǎn)DFFG5節(jié)點(diǎn)狀態(tài)為I時(shí),由其自身反向邏輯關(guān)系,得出第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5節(jié)點(diǎn)輸入狀態(tài)為I;
[0077](4e2)由門級(jí)電路內(nèi)部節(jié)點(diǎn)連接關(guān)系,得到第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5所連接第一或非門節(jié)點(diǎn)NORGll的節(jié)點(diǎn)狀態(tài)為I,并將第一或非門節(jié)點(diǎn)NORGll入隊(duì),其節(jié)點(diǎn)狀態(tài)標(biāo)記為已恢復(fù)狀態(tài);
[0078](4e3)由第一或非門節(jié)點(diǎn)NORGll自身反向邏輯關(guān)系,可以得出第一或非門NORGll所有輸入狀態(tài)均為O;
[0079](4e4)由門級(jí)電路內(nèi)部節(jié)點(diǎn)連接關(guān)系,得到第一或非門節(jié)點(diǎn)NORGl I所連接第一非門節(jié)點(diǎn)N0TG15和第二或非門N0RG12節(jié)點(diǎn)狀態(tài)為0,并將第一非門節(jié)點(diǎn)N0RG15和第二或非門節(jié)點(diǎn)NORGl 2入隊(duì),其節(jié)點(diǎn)狀態(tài)標(biāo)記為已恢復(fù)狀態(tài);
[0080](4e5)分別由第一非門節(jié)點(diǎn)N0TG15和第二或非門節(jié)點(diǎn)N0RG12的自身反向邏輯關(guān)系,得到節(jié)點(diǎn)第一非門節(jié)點(diǎn)N0TG15輸入狀態(tài)為I;而第二或非門節(jié)點(diǎn)N0RG12輸入狀態(tài)未知即不能繼續(xù)沿第二或非門節(jié)點(diǎn)N0RG12輸出反方向恢復(fù)節(jié)點(diǎn);
[0081 ] (4e6)由第一非門節(jié)點(diǎn)NOTGl 5輸入連接了外部輸入,結(jié)束反方向恢復(fù)節(jié)點(diǎn),最終得到第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5輸出反方向恢復(fù)節(jié)點(diǎn)有第一非門節(jié)點(diǎn)N0TG5、第二或非門節(jié)點(diǎn)N0RG12和第一或非門節(jié)點(diǎn)NORGl I三個(gè)節(jié)點(diǎn)。
[0082](4f)當(dāng)?shù)诙?D觸發(fā)器DFF節(jié)點(diǎn)DFFG5節(jié)點(diǎn)狀態(tài)為O時(shí),第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5輸出反方向無(wú)法恢復(fù)其它節(jié)點(diǎn)狀態(tài);
[0083](4g)參照步驟(4b)到(4g)完成對(duì)buf2[]中第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6正向或反向的門級(jí)電路節(jié)點(diǎn)恢復(fù),可得第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6能正向恢復(fù)出節(jié)點(diǎn)第三非門節(jié)點(diǎn)N0TG20、第一與非門節(jié)點(diǎn)NANDG10、第二或非門節(jié)點(diǎn)N0RG12三個(gè)節(jié)點(diǎn),反向恢復(fù)出第一或非門節(jié)點(diǎn)■1^11、第二或非門節(jié)點(diǎn)_!^12、第二0觸發(fā)器0??節(jié)點(diǎn)0??65、第一與非門節(jié)點(diǎn)NAND1、第三非門節(jié)點(diǎn)N0TG20、第二或門節(jié)點(diǎn)ORG18六個(gè)節(jié)點(diǎn);
[0084](4h)參照步驟(4b)到(4g)完成對(duì)buf 2 []中第四D觸發(fā)器DFF節(jié)點(diǎn)DFFG7正向或反向的門級(jí)電路節(jié)點(diǎn)恢復(fù),可得第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG7能正向恢復(fù)出第三或非門節(jié)點(diǎn)NORGl 3和第四D觸發(fā)器DFF節(jié)點(diǎn)DFFG8兩個(gè)節(jié)點(diǎn),反向恢復(fù)出第四或非門節(jié)點(diǎn)NORGl4、第三或非門節(jié)點(diǎn)N0RG13;
[0085](4i)參照步驟(4b)到(4g)完成對(duì)buf 2 []中第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG8正向或反向的門級(jí)電路節(jié)點(diǎn)恢復(fù),得到第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG8能正向恢復(fù)出第二或門節(jié)點(diǎn)0RG18,反向恢復(fù)出第三或非門節(jié)點(diǎn)N0RG13、第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG7和第四或非門節(jié)點(diǎn)N0RG14三個(gè)節(jié)點(diǎn)。
[0086]步驟5通過(guò)D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)的其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目加權(quán)值,進(jìn)行排序,找到恢復(fù)其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)最多的D觸發(fā)器DFF節(jié)點(diǎn)。
[0087](5a)由步驟4節(jié)點(diǎn)恢復(fù)過(guò)程可知,第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5恢復(fù)的D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目為2,第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6恢復(fù)的D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目為I,第四D觸發(fā)器DFF節(jié)點(diǎn)DFFG7恢復(fù)的D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目為I,第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG8恢復(fù)的D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目為I;
[0088](5b)通過(guò)D觸發(fā)器DFF節(jié)點(diǎn)0、I狀態(tài)的比率和D觸發(fā)器DFF節(jié)點(diǎn)分別在0、I狀態(tài)下恢復(fù)節(jié)點(diǎn)的數(shù)目,計(jì)算各D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)其他D觸發(fā)器DFF節(jié)點(diǎn)的加權(quán)值;
[0089]加權(quán)公式如下:
[0090]score = dff[i].0ne_cnt*dff[i].0ne_rate+(1.0~dff[i].0ne_rate)*dff[i].zero_cnt;
[0091 ] 其中,變量score為D觸發(fā)器DFF節(jié)點(diǎn)的加權(quán)值;變量dff [ i ].0ne_cnt和變量dff
[i].Zer0_cnt分別為第i個(gè)D觸發(fā)器DFF節(jié)點(diǎn)的狀態(tài)為I和O時(shí),恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)的數(shù)目;變量dff [ i].0ne_rate為第i個(gè)D觸發(fā)器DFF節(jié)點(diǎn)在64個(gè)仿真周期內(nèi)狀態(tài)為I的比率。
[0092](5d)對(duì)所得加權(quán)值進(jìn)行快速排序,將各D觸發(fā)器DFF節(jié)點(diǎn)的加權(quán)值從大到小排序,找出加權(quán)值最大的第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5,作為提取的第一個(gè)關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)。
[0093]步驟6以提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)所恢復(fù)節(jié)點(diǎn)狀態(tài)為基礎(chǔ),依次進(jìn)行關(guān)鍵節(jié)點(diǎn)提取,直到提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目達(dá)到η個(gè)或提取完頻繁子電路中所有D觸發(fā)器DFF節(jié)點(diǎn)為止。
[0094](6a)設(shè)定提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目η為4;
[0095](6b)以第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5恢復(fù)的節(jié)點(diǎn)狀態(tài)為基礎(chǔ),選取第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6,進(jìn)行門級(jí)電路節(jié)點(diǎn)恢復(fù);
[0096](6c)由第二D觸發(fā)器DFF節(jié)點(diǎn)DFFG5恢復(fù)的節(jié)點(diǎn)狀態(tài)可知,第二或非門節(jié)點(diǎn)N0RG12節(jié)點(diǎn)狀態(tài)為I;而第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6進(jìn)行門級(jí)電路節(jié)點(diǎn)恢復(fù),可得第一與非門節(jié)點(diǎn)NANDlO節(jié)點(diǎn)狀態(tài)為I;
[0097](6d)由第二或非門節(jié)點(diǎn)N0RG12和第一與非門節(jié)點(diǎn)NANDG10輸出均為節(jié)點(diǎn)第一與門節(jié)點(diǎn)ANDG19的輸入,因而可以得到第一與門節(jié)點(diǎn)ANDG19節(jié)點(diǎn)狀態(tài)為I;
[0098](6e)由門級(jí)電路內(nèi)部節(jié)點(diǎn)連接關(guān)系,得出第一與門節(jié)點(diǎn)ANDG19所連接第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG9節(jié)點(diǎn)狀態(tài)為I,進(jìn)而相較于單個(gè)第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6的節(jié)點(diǎn)恢復(fù)過(guò)程,能夠多恢復(fù)出第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG9的節(jié)點(diǎn)狀態(tài)。
[0099](6f)第四D觸發(fā)器DFF節(jié)點(diǎn)DFFG7再以第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5恢復(fù)的節(jié)點(diǎn)狀態(tài)為基礎(chǔ),進(jìn)行門級(jí)電路節(jié)點(diǎn)恢復(fù),其恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目與單個(gè)第四D觸發(fā)器DFF節(jié)點(diǎn)DFFG7恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目相同;
[0100](6g)第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG8再以第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5恢復(fù)的節(jié)點(diǎn)狀態(tài)為基礎(chǔ),進(jìn)行門級(jí)電路節(jié)點(diǎn)恢復(fù),其恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)結(jié)果與單個(gè)第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG8的節(jié)點(diǎn)恢復(fù)過(guò)程相同;
[0101](6h)參照步驟(6b)到(6g)各D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)的其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目和各D觸發(fā)器DFF節(jié)點(diǎn)O、I狀態(tài)的比率計(jì)算加權(quán)值,找出加權(quán)值最大的第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6,作為提取的第二個(gè)關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn);
[0102](6i)以第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5、第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6恢復(fù)的節(jié)點(diǎn)狀態(tài)為基礎(chǔ),參照步驟(6b)到(6h),提取第四D觸發(fā)器DFF節(jié)點(diǎn)DFFG7,作為第三個(gè)關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn);
[0103](6 j)以第二 D觸發(fā)器DFF節(jié)點(diǎn)DFFG5、第三D觸發(fā)器DFF節(jié)點(diǎn)DFFG6、第四D觸發(fā)器DFF節(jié)點(diǎn)DFFG8恢復(fù)的節(jié)點(diǎn)狀態(tài)為基礎(chǔ),參照步驟(6b)到(6h),提取第五D觸發(fā)器DFF節(jié)點(diǎn)DFFG8,作為第四個(gè)關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn),并結(jié)束關(guān)鍵節(jié)點(diǎn)提取過(guò)程。
[0104]除了本實(shí)施例,本發(fā)明還能對(duì)大型門級(jí)網(wǎng)表進(jìn)行關(guān)鍵節(jié)點(diǎn)的提取,進(jìn)而加快大型門級(jí)網(wǎng)表正確性的驗(yàn)證和檢錯(cuò)。
[0105]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不限于此,任何熟悉該技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的改變或替換,都涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取方法,包括:(1)獲取門級(jí)電路中節(jié)點(diǎn)的連接關(guān)系,得到門級(jí)電路內(nèi)部的連接方式;(2)對(duì)門級(jí)電路進(jìn)行仿真,生成相應(yīng)的門級(jí)電路節(jié)點(diǎn)狀態(tài)即輸出狀態(tài),所述門級(jí)節(jié)點(diǎn)狀 態(tài)用于關(guān)鍵節(jié)點(diǎn)提取時(shí),計(jì)算關(guān)鍵節(jié)點(diǎn)〇、1狀態(tài)的比率;(3)設(shè)定門級(jí)電路最小支持度t及生成鏈狀模板的長(zhǎng)度上限m,對(duì)門級(jí)電路的頻繁子電 路進(jìn)行提??;(4)將提取的頻繁子電路中的D觸發(fā)器DFF節(jié)點(diǎn)選為候選節(jié)點(diǎn),再以D觸發(fā)器DFF節(jié)點(diǎn)為 起點(diǎn),正向或反向恢復(fù)門級(jí)電路節(jié)點(diǎn);(5)通過(guò)D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)的其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目加權(quán)值,進(jìn)行排序找到恢復(fù) 其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)最多的D觸發(fā)器DFF節(jié)點(diǎn);(6)以提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)所恢復(fù)節(jié)點(diǎn)狀態(tài)為基礎(chǔ),依次進(jìn)行關(guān)鍵節(jié)點(diǎn)提取,直 到提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目達(dá)到n個(gè)或提取完頻繁子電路中所有D觸發(fā)器DFF節(jié)點(diǎn)為 止。2.根據(jù)權(quán)利要求1所述的基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取的方法,其中步驟1中獲取 門級(jí)電路各節(jié)點(diǎn)的連接關(guān)系,得到門級(jí)電路內(nèi)部的連接方式,按如下步驟進(jìn)行:(la)將整個(gè)門級(jí)電路以字符的形式存入第一緩存數(shù)組bufl[];(lb)初始化存放門級(jí)電路外部輸入、外部輸出和內(nèi)部節(jié)點(diǎn)信息的結(jié)構(gòu)體;(lc)分別從外部輸入、外部輸出及內(nèi)部節(jié)點(diǎn)三個(gè)方面,遍歷整個(gè)門級(jí)電路,通過(guò)對(duì)第一 緩存數(shù)組buf[]中特定的字符進(jìn)行檢索,獲取門級(jí)電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn) 的連接關(guān)系,并存入對(duì)應(yīng)結(jié)構(gòu)體中。3.根據(jù)權(quán)利要求1所述的基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取的方法,其中步驟2中對(duì)門 級(jí)電路進(jìn)行仿真,按如下步驟進(jìn)行:(2a)對(duì)整個(gè)門級(jí)電路進(jìn)行復(fù)位,將門級(jí)電路中所有D觸發(fā)器DFF節(jié)點(diǎn)輸入端置0;(2b)設(shè)定仿真周期使門級(jí)電路在正常模式下工作;(2c)由隨機(jī)函數(shù)產(chǎn)生隨機(jī)的0,1序列作為外部激勵(lì);(2d)初始化整個(gè)門級(jí)電路,將所有門級(jí)電路節(jié)點(diǎn)標(biāo)記為未更新狀態(tài);(2e)遍歷門級(jí)電路中所有D觸發(fā)器DFF節(jié)點(diǎn),由各D觸發(fā)器DFF節(jié)點(diǎn)輸入端,更新其節(jié)點(diǎn) 狀態(tài),并將其節(jié)點(diǎn)狀態(tài)標(biāo)記為已更新狀態(tài);(2f)對(duì)外部輸入端和D觸發(fā)器DFF節(jié)點(diǎn)輸出端所連接的各門級(jí)電路節(jié)點(diǎn)的輸入狀態(tài)進(jìn) 行更新,并將所有輸入端已更新的門級(jí)電路節(jié)點(diǎn)的仿真周期更新為當(dāng)前仿真周期;(2g)對(duì)于處于當(dāng)前仿真周期的門級(jí)電路節(jié)點(diǎn),通過(guò)其自身的邏輯關(guān)系,更新其輸出狀 態(tài),并將當(dāng)前門級(jí)電路節(jié)點(diǎn)狀態(tài)標(biāo)記為已更新;(2h)判斷所有門級(jí)電路節(jié)點(diǎn)狀態(tài)是否全部更新,若是,則當(dāng)前仿真周期結(jié)束否則,對(duì)節(jié) 點(diǎn)狀態(tài)已更新的門級(jí)電路節(jié)點(diǎn)輸出端所連接的除D觸發(fā)器DFF節(jié)點(diǎn)以外其他節(jié)點(diǎn)的輸入狀 態(tài)進(jìn)行更新,將所有輸入已更新的門級(jí)電路節(jié)點(diǎn)的仿真周期更新為當(dāng)前仿真周期,返回步 驟(2g)。(2i)重復(fù)上述步驟(2c)到(2h)的過(guò)程,完成剩余仿真周期的門級(jí)電路仿真;(2j)獲取門級(jí)電路仿真過(guò)程中生成的D觸發(fā)器DFF狀態(tài),并計(jì)算每個(gè)D觸發(fā)器DFF節(jié)點(diǎn)0、 1狀態(tài)的比率。4.根據(jù)權(quán)利要求1所述的基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取的方法,其中步驟3中對(duì)門 級(jí)電路的頻繁子電路進(jìn)行提取,按如下步驟進(jìn)行:(3a)設(shè)定頻繁子電路最小支持度t和頻繁子電路規(guī)模上限m;(3b)在現(xiàn)有二元子電路結(jié)構(gòu)模板的基礎(chǔ)上,以D觸發(fā)器DFF節(jié)點(diǎn)為根節(jié)點(diǎn),對(duì)門級(jí)電路 進(jìn)行檢索,提取滿足最小支持度t的二元頻繁子電路結(jié)構(gòu),排除不能提取二元頻繁子電路的 根節(jié)點(diǎn),降低根節(jié)點(diǎn)的個(gè)數(shù);(3c)對(duì)提取的二元頻繁子電路規(guī)模進(jìn)行前向或后向擴(kuò)展,檢索門級(jí)電路,直到擴(kuò)展后 的頻繁子電路規(guī)模達(dá)到設(shè)定的規(guī)模上限m或不滿足最小支持度t為止,并將滿足上述條件的 頻繁子電路的節(jié)點(diǎn)編號(hào)存入第二緩存數(shù)組buf2[]。5.根據(jù)權(quán)利要求1所述的基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取的方法,其中步驟4中以D 觸發(fā)器DFF節(jié)點(diǎn)為起點(diǎn),正向或反向恢復(fù)門級(jí)電路節(jié)點(diǎn),按如下步驟進(jìn)行:(4a)在第二緩存數(shù)組buf2[]中,提取D觸發(fā)器DFF節(jié)點(diǎn);(4b)初始化整個(gè)門級(jí)電路,將所有門級(jí)電路節(jié)點(diǎn)標(biāo)記為未恢復(fù)狀態(tài);(4c)從D觸發(fā)器DFF節(jié)點(diǎn)的輸出端正向出發(fā),遍歷門級(jí)電路,找到當(dāng)前D觸發(fā)器DFF節(jié)點(diǎn) 輸出端所連接的其他門級(jí)電路節(jié)點(diǎn)的輸入端,若對(duì)應(yīng)節(jié)點(diǎn)處于未恢復(fù)狀態(tài),則恢復(fù)其輸入 狀態(tài);否則,不再恢復(fù)其輸入狀態(tài);(4c)通過(guò)恢復(fù)出的節(jié)點(diǎn)輸入狀態(tài)及其自身正向邏輯關(guān)系,恢復(fù)對(duì)應(yīng)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài), 并將節(jié)點(diǎn)狀態(tài)恢復(fù)的節(jié)點(diǎn)標(biāo)記為已恢復(fù)狀態(tài),且對(duì)應(yīng)節(jié)點(diǎn)編號(hào)一一入隊(duì);(4d)判斷隊(duì)列是否為空,若隊(duì)列為空,則結(jié)束門級(jí)電路節(jié)點(diǎn)正向恢復(fù)過(guò)程,否則,根據(jù) 隊(duì)列先進(jìn)先出原則,將節(jié)點(diǎn)狀態(tài)恢復(fù)的節(jié)點(diǎn)出隊(duì),遍歷門級(jí)電路,找到出隊(duì)節(jié)點(diǎn)輸出端所連 接的門級(jí)電路節(jié)點(diǎn)輸入端,若對(duì)應(yīng)節(jié)點(diǎn)處于未恢復(fù)狀態(tài),則恢復(fù)其輸入狀態(tài),返回步驟 (4c);否則,不再恢復(fù)其輸入狀態(tài);(4e)從D觸發(fā)器DFF節(jié)點(diǎn)輸出的反方向出發(fā),通過(guò)D觸發(fā)器DFF節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)及自身反 向邏輯關(guān)系,恢復(fù)其對(duì)應(yīng)輸入狀態(tài);(4f)遍歷門級(jí)電路,找到與D觸發(fā)器DFF節(jié)點(diǎn)輸入端相連的門級(jí)電路節(jié)點(diǎn),若對(duì)應(yīng)節(jié)點(diǎn) 處于未恢復(fù)狀態(tài),則恢復(fù)其節(jié)點(diǎn)狀態(tài),并將節(jié)點(diǎn)狀態(tài)恢復(fù)的節(jié)點(diǎn)標(biāo)記為已恢復(fù)狀態(tài),且對(duì)應(yīng) 節(jié)點(diǎn)編號(hào)一一入隊(duì);否則,不再恢復(fù)其節(jié)點(diǎn)狀態(tài);(4g)判斷隊(duì)列是否為空,若隊(duì)列為空,則結(jié)束門級(jí)電路節(jié)點(diǎn)反向恢復(fù)過(guò)程,否則,根據(jù) 隊(duì)列先進(jìn)先出原則,將節(jié)點(diǎn)狀態(tài)恢復(fù)的節(jié)點(diǎn)出隊(duì),通過(guò)出隊(duì)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)及自身反向邏 輯關(guān)系,恢復(fù)其對(duì)應(yīng)輸入狀態(tài);(4 h)遍歷門級(jí)電路的節(jié)點(diǎn),找到與出隊(duì)節(jié)點(diǎn)輸入端相連的門級(jí)電路節(jié)點(diǎn),若對(duì)應(yīng)節(jié)點(diǎn) 處于未恢復(fù)狀態(tài),則恢復(fù)其節(jié)點(diǎn)狀態(tài),并將節(jié)點(diǎn)狀態(tài)恢復(fù)的節(jié)點(diǎn)標(biāo)記為已恢復(fù)狀態(tài),且對(duì)應(yīng) 節(jié)點(diǎn)編號(hào)一一入隊(duì),返回步驟(4g);否則,不再恢復(fù)其節(jié)點(diǎn)狀態(tài)。6.根據(jù)權(quán)利要求1所述的基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取的方法,其中步驟5中通過(guò) D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)的其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目加權(quán)值,進(jìn)行排序找到恢復(fù)其他D觸發(fā)器 DFF節(jié)點(diǎn)數(shù)最多的D觸發(fā)器DFF節(jié)點(diǎn),按如下步驟進(jìn)行:(5a)在每個(gè)D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)節(jié)點(diǎn)過(guò)程中,將恢復(fù)出來(lái)的D觸發(fā)器DFF節(jié)點(diǎn)編號(hào)與之 前恢復(fù)的D觸發(fā)器DFF節(jié)點(diǎn)編號(hào)進(jìn)行比較,若兩者不同,則對(duì)恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目加1, 且記錄恢復(fù)的D觸發(fā)器DFF節(jié)點(diǎn)編號(hào),若兩者相同,則恢復(fù)節(jié)點(diǎn)數(shù)目不變; (5b)統(tǒng)計(jì)D觸發(fā)器DFF節(jié)點(diǎn)在O,I這兩種狀態(tài)的情況下,沿正向或反向總共恢復(fù)的其他D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目; (5c)通過(guò)D觸發(fā)器DFF節(jié)點(diǎn)O,I狀態(tài)的比率和D觸發(fā)器DFF節(jié)點(diǎn)分別在O,I狀態(tài)下恢復(fù)節(jié)點(diǎn)的數(shù)目,計(jì)算D觸發(fā)器DFF節(jié)點(diǎn)恢復(fù)其他D觸發(fā)器DFF節(jié)點(diǎn)的加權(quán)值; (5d)對(duì)所得加權(quán)值進(jìn)行快速排序,將各D觸發(fā)器DFF節(jié)點(diǎn)的加權(quán)值從大到小排序,找出恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)最多的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn),作為提取的第一個(gè)關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)。7.根據(jù)權(quán)利要求1所述的基于門級(jí)電路仿真的關(guān)鍵節(jié)點(diǎn)提取的方法,其中步驟6中以提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)所恢復(fù)節(jié)點(diǎn)狀態(tài)為基礎(chǔ),依次進(jìn)行關(guān)鍵節(jié)點(diǎn)提取,直到提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目達(dá)到η個(gè)或提取完頻繁子電路中所有D觸發(fā)器DFF節(jié)點(diǎn)為止,按如下步驟進(jìn)行: (6a)設(shè)定提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目η,I〈 = n〈 = 32; (6b)以提取的第一個(gè)關(guān)鍵節(jié)點(diǎn)所恢復(fù)的門級(jí)電路節(jié)點(diǎn)狀態(tài)為基礎(chǔ),由除第一個(gè)關(guān)鍵節(jié)點(diǎn)以外的D觸發(fā)器DFF節(jié)點(diǎn)出發(fā),進(jìn)行門級(jí)電路節(jié)點(diǎn)恢復(fù),得到恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)最多的D觸發(fā)器DFF節(jié)點(diǎn),作為提取的第二個(gè)關(guān)鍵節(jié)點(diǎn); (6c)以提取的第一個(gè)關(guān)鍵節(jié)點(diǎn)和第二個(gè)關(guān)鍵節(jié)點(diǎn)所恢復(fù)的門級(jí)電路節(jié)點(diǎn)狀態(tài)為基礎(chǔ),由其他候選D觸發(fā)器DFF節(jié)點(diǎn)出發(fā),進(jìn)行門級(jí)電路節(jié)點(diǎn)恢復(fù),得到恢復(fù)D觸發(fā)器DFF節(jié)點(diǎn)數(shù)最多的D觸發(fā)器DFF節(jié)點(diǎn),作為提取的第三個(gè)關(guān)鍵節(jié)點(diǎn); (6d)以所有提取過(guò)的關(guān)鍵節(jié)點(diǎn)所恢復(fù)的門級(jí)電路節(jié)點(diǎn)狀態(tài)為基礎(chǔ),依次進(jìn)行后續(xù)關(guān)鍵節(jié)點(diǎn)提取,直到提取的關(guān)鍵D觸發(fā)器DFF節(jié)點(diǎn)數(shù)目達(dá)到η個(gè)或提取完頻繁子電路中所有D觸發(fā)器DFF節(jié)點(diǎn)為止。
【文檔編號(hào)】G06F17/50GK105956178SQ201610364265
【公開日】2016年9月21日
【申請(qǐng)日】2016年5月27日
【發(fā)明人】潘偉濤, 周俊, 邱智亮, 高麗麗, 刁卓, 陳珊珊
【申請(qǐng)人】西安電子科技大學(xué)