專利名稱:時序電路的拓?fù)浣Y(jié)構(gòu)分析方法和狀態(tài)機模型提取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及SystemC形式化驗證技術(shù)領(lǐng)域,特別涉及一種基于SystemC的時序電路拓?fù)浣Y(jié)構(gòu)分析方法和一種基于SystemC的時序電路狀態(tài)機模型提取方法。
背景技術(shù):
目前芯片設(shè)計業(yè)正面臨著一系列的挑戰(zhàn),隨著半導(dǎo)體技術(shù)的迅猛發(fā)展,SoC( System-on-Chip,片上系統(tǒng)或系統(tǒng)芯片)已經(jīng)成為當(dāng)今集成電路設(shè)計的發(fā)展方向,SoC性能越來越強,規(guī)模越來越大。SoC芯片的規(guī)模一般遠(yuǎn)大于普通的ASIC,同時由于深亞微米工藝帶來的設(shè)計困難等,使得SoC設(shè)計的復(fù)雜度大大提高。在SoC設(shè)計中,仿真與驗證是SoC 設(shè)計流程中最復(fù)雜、最耗時的環(huán)節(jié),約占整個芯片開發(fā)周期的50% 8096,采用先進(jìn)的設(shè)計與仿真驗證方法成為SoC設(shè)計成功的關(guān)鍵。SoC技術(shù)的發(fā)展趨勢是基于SoC開發(fā)平臺,基于平臺的設(shè)計是一種可以達(dá)到最大程度系統(tǒng)重用的面向集成的設(shè)計方法,分享IP核開發(fā)與系統(tǒng)集成成果,不斷重整價值鏈,在關(guān)注面積、延遲、功耗的基礎(chǔ)上,向成品率、可靠性、 EMI噪聲、成本、易用性等轉(zhuǎn)移,使系統(tǒng)級集成能力快速發(fā)展。在系統(tǒng)芯片的各個設(shè)計中,像系統(tǒng)定義、軟硬件劃分、設(shè)計實現(xiàn)等,集成電路設(shè)計界一直在考慮如何滿足SoC的設(shè)計要求,一直在尋找一種能同時實現(xiàn)較高層次的軟件和硬件描述的系統(tǒng)級設(shè)計語言。隨著ASIC設(shè)計規(guī)模的增大,其前端驗證的難度、復(fù)雜度將以幾何級數(shù)的速度增加。當(dāng)今ASIC前端驗證已經(jīng)成為整個ASIC設(shè)計流程中耗時長、難度大卻又十分關(guān)鍵的階段。因此,在前端驗證階段,采用有效、實用的驗證方法具有重要意義。常用的功能驗證采用的方式是向被測單元施加一組測試向量激勵,將其輸出向量與標(biāo)準(zhǔn)的參考向量作比較,從而判斷模塊功能的正確性。靜態(tài)功能驗證中,沒有向設(shè)計施加輸入激勵信號。而是將設(shè)計映射至一個采用二叉決策圖或其他數(shù)學(xué)表達(dá)式來說明其功能的圖形結(jié)構(gòu)上。利用這種圖形結(jié)構(gòu)來證實或反駁屬性將能夠驗證這些數(shù)學(xué)表達(dá)式?;赟ystemC的建模與驗證方法主要基于傳統(tǒng)的動態(tài)仿真技術(shù),基于SystemC的形式驗證技術(shù)還不是很成熟。將形式驗證技術(shù)應(yīng)用于SystemC設(shè)計中將是一個很大的挑戰(zhàn),因為SystemC是一種面向?qū)ο蟮脑O(shè)計語言,還因為SystemC復(fù)雜的基于事件驅(qū)動的仿真語義。傳統(tǒng)的驗證方法大都采用動態(tài)仿真的方法,動態(tài)仿真的一個主要的缺點是,在一個限時仿真行程當(dāng)中,只能對芯片的典型工作特性進(jìn)行驗證。造成這種情況的主要原因在于采用的是定向測試法。當(dāng)采用動態(tài)驗證時,設(shè)計者使用覆蓋率來表示功能空間的估計值, 如行覆蓋率、表達(dá)式覆蓋率、FSM覆蓋率、變換覆蓋率和通路覆蓋率等。為了能對SystemC 描述的電路進(jìn)行形式化的靜態(tài)驗證,有必要對SystemC電路信息進(jìn)行提取。模型檢驗使用有限狀態(tài)機描述電路,通過狀態(tài)機的遍歷驗證電路是否滿足功能。狀態(tài)機系統(tǒng)是作為一個具有標(biāo)記的狀態(tài)轉(zhuǎn)移圖給出的,一個狀態(tài)標(biāo)記表示了在那個狀態(tài)的一個原子命題集合的取值。狀態(tài)轉(zhuǎn)移圖定義了系統(tǒng)模型。如何有效地獲取狀態(tài)機系統(tǒng)成為對SystemC描述的門級時序電路進(jìn)行形式化驗證的首要解決的問題之一。
因此,現(xiàn)有技術(shù)的不足就需要對SystemC描述的門級時序電路進(jìn)行形式化分析以及由此進(jìn)行時序電路拓?fù)浣Y(jié)構(gòu)分析。
發(fā)明內(nèi)容
本發(fā)明目的在于對SystemC描述的門級時序電路進(jìn)行形式化分析,從而提供一種適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,以及由此還提供一種適用于SystemC 的門級時序電路狀態(tài)機模型提取方法。為了達(dá)到上述目的,本發(fā)明采取技術(shù)方案如下
根據(jù)本發(fā)明提供的適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,所述時序電路包括由SystemC描述的能存儲電路狀態(tài)的邏輯器件和基本門器件,所述時序電路拓?fù)浣Y(jié)構(gòu)通過電路信息來體現(xiàn),在完成模塊實例化和端口信息綁定操作后執(zhí)行SC_M0DULE類內(nèi)的成員函數(shù)end_of_elaboration(),其中默認(rèn)的成員函數(shù)end_of_elaboration是空的,通過修改成員函數(shù)end_0f_elab0rati0n和添加獲取電路信息的代碼來提取各個模塊實例化時的電路信息。輸入電路是基于SystemC描述的、由觸發(fā)器和基本門(與,或,非,異或等)組成的時序電路,其中觸發(fā)器和基本門已由SystemC描述,被測電路由SystemC描述的子模塊組成。電路信息體現(xiàn)電路的拓?fù)浣Y(jié)構(gòu),包括觸發(fā)器個數(shù)以及它們的端口信息、門器件類型以及它們的端口信息、初級輸入端個數(shù)以及每條導(dǎo)線所連接的邏輯器件信息。因為觸發(fā)器和基本門等子模塊都由SystemC描述,因此被測電路是一個包含觸發(fā)器和基本門子模塊實例化信息的頂層模塊。由于SC_M0DULE類內(nèi)有個成員函數(shù)end_0f_ elaboration (),該函數(shù)在完成模塊實例化(elaboration)和端口信息綁定操作后執(zhí)行,標(biāo)志完成信號的是仿真啟動信號(sc_Start())。默認(rèn)的end_0f_elab0rati0n函數(shù)是空的, 通過修改encLof^elaboration函數(shù),添加獲取電路信息的代碼可提取各個模塊實例化時的模塊信息和端口信息。這里,可以通過數(shù)據(jù)結(jié)構(gòu)來構(gòu)建以端口為節(jié)點的拓?fù)浣Y(jié)構(gòu)圖。在 SystemC語言中,由SystemC描述的子模塊都是派生至類scjnodule的類,端口 SC_in/SC_ inout/sc_out是sc_interface。SystemC描述的子模塊是通過例化若干個信號連接起來的,每個信號在例化時會賦予信號線的名稱,比如sC_signal<b00l> a("wire_a");并且每個子模塊例化時也會賦予一個實例名,比如與門模塊的例化AndG2 dutl ( "dul");關(guān)鍵的步驟就是找出每個導(dǎo)線名稱與哪些子模塊名稱有連接關(guān)系,并用map/vector等數(shù)據(jù)結(jié)構(gòu)存儲起來。由已獲取的端口信息計算初級輸入端的個數(shù)。初級輸入端口是指只作為邏輯器件輸入的端口?;谏鲜鰰r序電路拓?fù)浣Y(jié)構(gòu)分析方法獲得的時序電路拓?fù)湫畔?,本發(fā)明進(jìn)一步提供了一種適用于SystemC的門級時序電路狀態(tài)機模型提取方法,其中(1)通過修改 SystemC模塊內(nèi)嵌函數(shù)end_0f_elab0rati0n和添加必要的數(shù)據(jù)結(jié)構(gòu)保存時序電路信息,按照上述的方法提取電路拓?fù)浣Y(jié)構(gòu)信息,其中,所述電路信息包括觸發(fā)器個數(shù)以及它們的端口信息、門器件類型以及它們的端口信息、初級輸入端個數(shù)以及每條導(dǎo)線所連接的邏輯器件信息;( 構(gòu)建電路的布爾函數(shù),完成觸發(fā)器或其它有存儲電路狀態(tài)的邏輯器件的狀態(tài)轉(zhuǎn)換映射;C3)使用二叉決策圖表示狀態(tài)轉(zhuǎn)移的布爾函數(shù),通過軟件描述步驟O)中的形式化分析結(jié)果;(4)初始化時序電路,包括初始化觸發(fā)器或其它有存儲電路狀態(tài)的邏輯器
5件;( 使用約束求解器求解狀態(tài)轉(zhuǎn)移的布爾函數(shù),得出時序電路可能存在的所有狀態(tài)集合和狀態(tài)轉(zhuǎn)換。示例地,適用二叉決策圖(BDD,binary decision diagram)來表示時序電路狀態(tài)轉(zhuǎn)移函數(shù),可以包含步驟如下
(1)在分配bdd變量前進(jìn)行初始化,設(shè)置申請bdd變量的個數(shù),個數(shù)為觸發(fā)器個數(shù)*2+ 初級輸入端(不作為觸發(fā)器端口的初級輸入端)。初始化wires用于存儲導(dǎo)線實例化名字和對應(yīng)bdd表示,devices存儲已知的邏輯門信息,初始化bdd變量T為bddtrue,表示狀態(tài)轉(zhuǎn)移函數(shù)的bdd表示。(2)先給觸發(fā)器的輸出和輸入端口分配bdd變量,為了方便后面計算狀態(tài)值,分配bdd變量時,注意輸入和輸出分配bdd的順序要保持一致。(3)然后給初級輸入端分配bdd變量,有些電路觸發(fā)器輸入端也作為初級輸入端,這步只給那些不作為觸發(fā)器端口的初級輸入端分配bdd,以避免重復(fù)。(4)遍歷電路中所有的門器件,計算每個門器件輸出的bdd表示。(5)最后對每個觸發(fā)器的輸入輸出端口的bdd表示進(jìn)行異或取反操作,并把結(jié)果做與操作就是電路狀態(tài)轉(zhuǎn)移函數(shù)的bdd表示。電路狀態(tài)轉(zhuǎn)移函數(shù)決定了電路狀態(tài)傳輸,它根據(jù)當(dāng)前狀態(tài)和下一個輸入符號產(chǎn)生下一狀態(tài)。本發(fā)明具有下列優(yōu)點
1.本發(fā)明基于SystemC仿真內(nèi)核,通過修改SystemC模塊內(nèi)嵌函數(shù)和二叉決策圖來描述布爾函數(shù)來實現(xiàn)狀態(tài)機模型提取,能夠很好地對SystemC時序電路進(jìn)行形式化分析。2.本發(fā)明不需要給SystemC時序電路施加任何激勵,完全由軟件算法來實現(xiàn),避免了實現(xiàn)的復(fù)雜性。
圖1、2、3是SystemC描述的時序電路。圖4是獲取時序電路狀態(tài)轉(zhuǎn)移函數(shù)二叉決策圖表示的方法步驟。圖5是對圖2和圖3進(jìn)行狀態(tài)機模型提取結(jié)果。
具體實施例方式下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述
圖1是一個含有2個觸發(fā)器、兩個或門和一個三輸入與門組成的時序門級電路?,F(xiàn)在按照上面的算法步驟對該時序電路構(gòu)造狀態(tài)轉(zhuǎn)移函數(shù)的bdd表示。其中電路信息已在實例化時通過修改encLotelaboration函數(shù)來獲取,在實例化時導(dǎo)線名字均采用圖中的名字, 即al, a2, si, s2, pi, p2, η。其中作為觸發(fā)器端口的端口為pl,si, p2, s2,作為初級輸入端的端口為al,a2,中間導(dǎo)線有η。根據(jù)以上算法,具體實現(xiàn)過程如圖2。作為示例,下面講述如何修改encLotelaboration函數(shù)來獲取電路端口互連信息
權(quán)利要求
1.一種適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,其中所述時序電路包括由SystemC描述的能存儲電路狀態(tài)的邏輯器件和基本門器件,所述時序電路拓?fù)浣Y(jié)構(gòu)通過電路信息來體現(xiàn),在完成模塊實例化和端口信息綁定操作后執(zhí)行SC_M0DULE類內(nèi)的成員函數(shù)end_0f_ elaboration (),其中默認(rèn)的成員函數(shù)end_of_e 1 aboration是空的,通過修改成員函數(shù) end_of_elaboration和添加獲取電路信息的代碼來提取各個模塊實例化時的電路信息。
2.根據(jù)權(quán)利要求1所述的適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,其特征在于,所述能存儲電路狀態(tài)的邏輯器件包括觸發(fā)器或鎖存器,所述基本門器件包括與、或、 非、異或門器件。
3.根據(jù)權(quán)利要求2所述的適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,其特征在于,所述電路信息包括觸發(fā)器個數(shù)以及它們的端口信息、門器件類型以及它們的端口信息、初級輸入端個數(shù)以及每條導(dǎo)線所連接的邏輯器件信息。
4.根據(jù)權(quán)利要求1所述的適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,其特征在于,被測的時序電路由SystemC描述的子模塊組成,所述電路信息包括模塊信息。
5.根據(jù)權(quán)利要求1所述的適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,其特征在于,用仿真啟動信號scjtartO來標(biāo)志模塊實例化和端口信息綁定操作的完成。
6.根據(jù)權(quán)利要求1所述的適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,其特征在于,由已獲取的端口信息計算初級輸入端的個數(shù),其中所述初級輸入端口是指只作為邏輯器件輸入的端口。
7.根據(jù)權(quán)利要求1所述的適用于SystemC描述的時序電路拓?fù)浣Y(jié)構(gòu)分析方法,其特征在于,從軟件角度分析時序電路的形式化方法。
8.一種適用于SystemC描述的時序電路狀態(tài)機模型提取方法,其步驟如下(1)通過修改SystemC模塊內(nèi)嵌函數(shù)encLof^elaboration和添加必要的數(shù)據(jù)結(jié)構(gòu)保存時序電路信息,按照權(quán)利要求1所述的方法提取電路拓?fù)浣Y(jié)構(gòu)信息,其中,所述電路信息包括觸發(fā)器個數(shù)以及它們的端口信息、門器件類型以及它們的端口信息、初級輸入端個數(shù)以及每條導(dǎo)線所連接的邏輯器件信息;(2)構(gòu)建電路的布爾函數(shù),完成觸發(fā)器或其它有存儲電路狀態(tài)的邏輯器件的狀態(tài)轉(zhuǎn)換映射;(3)使用二叉決策圖表示狀態(tài)轉(zhuǎn)移的布爾函數(shù),通過軟件描述步驟O)中的形式化分析結(jié)果;(4)初始化時序電路,包括初始化觸發(fā)器或其它有存儲電路狀態(tài)的邏輯器件;(5)使用約束求解器求解狀態(tài)轉(zhuǎn)移的布爾函數(shù),得出時序電路可能存在的所有狀態(tài)集合和狀態(tài)轉(zhuǎn)換。
9.根據(jù)權(quán)利要求8所述的適用于SystemC描述的時序電路狀態(tài)機模型提取方法,其特征在于,在所述步驟(2)中,使用二叉決策圖來描述SystemC電路中的布爾函數(shù)。
10.根據(jù)權(quán)利要求8所述的適用于SystemC描述的時序電路狀態(tài)機模型提取方法,其特征在于,在所述步驟(3)中,適用二叉決策圖表示狀態(tài)轉(zhuǎn)移的布爾函數(shù)包含步驟如下(1)在分配bdd變量前進(jìn)行初始化,設(shè)置申請bdd變量的個數(shù),個數(shù)為觸發(fā)器個數(shù)*2+ 初級輸入端,該初級輸入端不作為觸發(fā)器端口的初級輸入端,其中初始化wires用于存儲導(dǎo)線實例化名字和對應(yīng)bdd表示,devices存儲已知的邏輯門信息,初始化bdd變量T為 bddtrue,表示狀態(tài)轉(zhuǎn)移函數(shù)的bdd表示;(2)先給觸發(fā)器的輸出和輸入端口分配bdd變量,為了方便后面計算狀態(tài)值,分配bdd 變量時,輸入和輸出分配bdd的順序保持一致;(3)然后只給那些不作為觸發(fā)器端口的初級輸入端端口分配bdd變量;(4)遍歷電路中所有的門器件,計算每個門器件輸出的bdd表示;(5)最后對每個觸發(fā)器的輸入輸出端口的bdd表示進(jìn)行異或取反操作,并把結(jié)果做與操作以得到電路狀態(tài)轉(zhuǎn)移函數(shù)的bdd表示。
11.根據(jù)權(quán)利要求8所述的適用于SystemC描述的時序電路狀態(tài)機模型提取方法,其特征在于,在所述步驟(5)中,通過約束求解器求解的方法來求解SystemC電路的布爾函數(shù),獲取時序電路狀態(tài)轉(zhuǎn)移集合。
全文摘要
本發(fā)明涉及時序電路的拓?fù)浣Y(jié)構(gòu)分析方法和狀態(tài)機模型提取方法。該方法適用于基于SystemC描述的、由觸發(fā)器和基本門組成的時序電路,其中觸發(fā)器和基本門已由SystemC描述。電路信息體現(xiàn)電路的拓?fù)浣Y(jié)構(gòu),包括觸發(fā)器個數(shù)以及它們的端口信息,門器件類型以及它們的端口信息、初級輸入端個數(shù)以及每條導(dǎo)線所連接的邏輯器件信息。該方法主要包括提取電路拓?fù)浣Y(jié)構(gòu)信息;構(gòu)建電路的布爾函數(shù);使用二叉決策圖表示狀態(tài)轉(zhuǎn)移的布爾函數(shù);初始化時序電路;使用約束求解器求解狀態(tài)轉(zhuǎn)移的布爾函數(shù)。本發(fā)明實現(xiàn)了門級時序電路狀態(tài)機模型提取算法,能夠很好地獲取時序電路狀態(tài)機模型,而不需給設(shè)計施加任何激勵,避免了實現(xiàn)的復(fù)雜性。
文檔編號G06F17/50GK102567555SQ20101060722
公開日2012年7月11日 申請日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者王勝 申請人:北京國睿中數(shù)科技股份有限公司