本發(fā)明屬于電路處理技術(shù)領(lǐng)域,特別涉及一種快速獲取數(shù)字門級電路內(nèi)部節(jié)點(diǎn)仿真狀態(tài)的方法,可用于基于仿真的硅后驗證中跟蹤信號提取階段。
背景技術(shù):
業(yè)內(nèi)周知,集成電路芯片的設(shè)計大致分為前端邏輯設(shè)計綜合與后端物理設(shè)計綜合兩個部分。其中前段邏輯設(shè)計包括基本的rtl編程和仿真、邏輯綜合、靜態(tài)時序分析sta和形式驗證等多個步驟;后端物理設(shè)計包括時鐘樹綜合、布局布線、功耗分析、物理驗證和可制造性設(shè)計等多個步驟。在芯片設(shè)計中,前端邏輯的定義、開發(fā)、綜合、集成和驗證固然重要,但是隨著半導(dǎo)體制造工藝的發(fā)展,一塊芯片要去流片,進(jìn)而量產(chǎn),其后端物理設(shè)計顯得更加關(guān)鍵。
為了保證芯片功能實(shí)現(xiàn)的正確性,在芯片的設(shè)計過程中需要進(jìn)行驗證。芯片驗證一般有以下幾種方法:軟件仿真、硬件加速器驗證和形式驗證。其中:
軟件仿真是指利用仿真激勵,通過仿真軟件,對soc體系結(jié)構(gòu)進(jìn)行功能驗證。軟件仿真分為前端仿真和后端仿真。前端仿真是指對soc的rtl代碼進(jìn)行仿真,主要驗證體系結(jié)構(gòu)功能的正確性;后端仿真是指利用時序信息文件sdf,對soc的門級網(wǎng)表進(jìn)行仿真,主要驗證體系結(jié)構(gòu)實(shí)現(xiàn)的正確性,重點(diǎn)是驗證時序是否收斂。
門級網(wǎng)表通常傳遞了電路連接方面的信息,一般會使用硬件表述語言,例如verilog、vhdl等來進(jìn)行表述、驗證和仿真。用傳統(tǒng)的仿真工具進(jìn)行仿真驗證時,需要對每一個基準(zhǔn)電路單獨(dú)進(jìn)行編寫測試代碼文件,對于大型的門級電路十分不方便?,F(xiàn)有的門級網(wǎng)表仿真器雖然很好的解決了這個問題,但是隨著soc設(shè)計技術(shù)手段的發(fā)展和越來越多樣化的應(yīng)用需求,soc體系結(jié)構(gòu)越來越復(fù)雜,芯片規(guī)模越來越龐大,現(xiàn)有仿真器的仿真難度越來越大,所消耗的時間越來越長,嚴(yán)重阻礙了驗證工作的進(jìn)展。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于針對上述已有技術(shù)的不足,提出一種快速獲取數(shù)字門級電路內(nèi)部節(jié)點(diǎn)仿真狀態(tài)的方法,以降低門級電路仿真復(fù)雜度和難度,加快獲取數(shù)字門級電路內(nèi)部節(jié)點(diǎn)狀態(tài),減少仿真驗證所消耗的時間。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
(1)根據(jù)給定的門級電路,得到門極電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系;
(2)用硬件語言描述門級電路邏輯關(guān)系,生成門級電路邏輯描述文件;
(2a)新建門級電路邏輯描述文件cell.v;
(2b)遍歷整個門級電路,對其中門電路的種類數(shù)以及d觸發(fā)器的節(jié)點(diǎn)數(shù)目進(jìn)行統(tǒng)計;
(2c)遍歷整個門級電路,對每個門電路種類的輸入輸出管腳數(shù)進(jìn)行統(tǒng)計;
(2d)根據(jù)門級電路中各門電路的邏輯關(guān)系及輸入輸出管腳數(shù),在cell.v文件中編寫其對應(yīng)硬件邏輯模塊,其中對d觸發(fā)器單元還要寫帶異步復(fù)位的時序邏輯。
(3)根據(jù)門極電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系,將門級電路轉(zhuǎn)換成rtl級描述單元;
(4)根據(jù)門極電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系,用軟件語言生成modelsim仿真的測試文件;
(5)將rtl級描述單元,門級電路邏輯描述文件和測試文件加入到商用modelsim仿真軟件中進(jìn)行仿真,得到門級電路內(nèi)部節(jié)點(diǎn)的仿真狀態(tài)。
本發(fā)明相對于現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn):
1.本發(fā)明通過將門級電路轉(zhuǎn)換成rtl級描述單元,采用modelsim進(jìn)行仿真,大大減少了仿真的復(fù)雜度和仿真時間;
2.本發(fā)明通過為rtl級描述單元編寫測試文件,引入了復(fù)位信號,提高了門級電路仿真的準(zhǔn)確性。
附圖說明
圖1為本發(fā)明使用的門級電路圖;
圖2為本發(fā)明的實(shí)現(xiàn)流程圖。
具體實(shí)施方式
為使本發(fā)明目的、技術(shù)方案以及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對本發(fā)明進(jìn)行近一步的詳細(xì)說明。
參照附圖1,本發(fā)明針對的門級電路,包括4個外部輸入端g0、g1、g2、g3,6個d觸發(fā)器dff節(jié)點(diǎn)dffg4、dffg5、dffg6、dffg7、dffg8、dffg9,3個非門not節(jié)點(diǎn)notg15、notg16、notg20,1個與門and節(jié)點(diǎn)andg19,2個或門or節(jié)點(diǎn)org17、org18,4個或非門nor節(jié)點(diǎn)norg11、norg12、norg13、norg14,1個與非門節(jié)點(diǎn)nandg10和2個外部輸出g21、g22。
參照附圖2,本發(fā)明基于門級電路仿真的關(guān)鍵節(jié)點(diǎn)提取方法,包括以下步驟:
步驟1:根據(jù)圖1給定的門級電路,得到門極電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系。
(1a)初始化存放門級電路外部輸入、外部輸出和內(nèi)部節(jié)點(diǎn)信息的結(jié)構(gòu)體;
(1b)設(shè)定第一緩存數(shù)組buf[],將門級電路以字符的形式存入buf[];
(1c)按行對第一緩存數(shù)組buf[]中的特定字符進(jìn)行檢索,獲取門極電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系,并存入相應(yīng)的結(jié)構(gòu)體中。
步驟2:用硬件語言描述門級電路邏輯關(guān)系,生成門級電路邏輯描述文件。
(2a)新建門級電路邏輯描述文件cell.v;
(2b)遍歷整個門級電路,對其中門電路的種類數(shù)以及d觸發(fā)器的節(jié)點(diǎn)數(shù)目進(jìn)行統(tǒng)計,根據(jù)圖1可知,該門級電路中門電路的種類為not、nor、and、or、nand、dff等6種,d觸發(fā)器dff的節(jié)點(diǎn)數(shù)目為6;
(2c)遍歷整個門級電路,對每個門電路種類的輸入輸出管腳數(shù)進(jìn)行統(tǒng)計,由圖1所示的門級電路可知,在該門極電路中,非門not為單輸入單輸出的門電路,d觸發(fā)器dff為帶時鐘信號clk和低復(fù)位信號rst的單輸入單輸出的門電路,其他均為雙輸入單輸出的門電路;
(2d)根據(jù)門級電路中各門電路的邏輯關(guān)系及輸入輸出管腳數(shù),在cell.v文件中編寫其對應(yīng)的硬件邏輯模塊,且對d觸發(fā)器單元還要寫帶異步復(fù)位的時序邏輯。
步驟3:根據(jù)門極電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系,將門級電路轉(zhuǎn)換成rtl級描述單元。
(3a)新建rtl級描述單元vv.v文件;
(3b)遍歷整個門級電路的外部輸入節(jié)點(diǎn),將門級電路的外部輸入g0、g1、g2、g3轉(zhuǎn)化成rtl級輸入信號g0、g1、g2、g3,并引入時鐘信號clk和低復(fù)位信號rst,寫入到vv.v文件中;
(3c)遍歷整個門級電路的外部輸出節(jié)點(diǎn),將門級電路的外部輸出g21、g22轉(zhuǎn)化成rtl級輸出信號g21、g22,寫入到vv.v文件中;
(3d)遍歷整個門級電路的內(nèi)部節(jié)點(diǎn),從所有的內(nèi)部節(jié)點(diǎn)中找到dff節(jié)點(diǎn),將相關(guān)信息存入到dff節(jié)點(diǎn)對應(yīng)的結(jié)構(gòu)體中;
(3e)遍歷整個門級電路的內(nèi)部節(jié)點(diǎn),根據(jù)步驟(2d)中生成的硬件邏輯模塊,在vv.v文件中對內(nèi)部節(jié)點(diǎn)進(jìn)行例化。
步驟4:根據(jù)門極電路的外部輸入、外部輸出以及內(nèi)部節(jié)點(diǎn)的連接關(guān)系,用軟件語言生成modelsim仿真的測試文件。
(4a)新建modelsim仿真測試文件test.v;
(4b)遍歷整個門級電路的外部輸入節(jié)點(diǎn),將門級電路的外部輸入g0、g1、g2、g3轉(zhuǎn)換成reg型信號g0、g1、g2、g3,寫入到test.v文件中;
(4c)遍歷整個門級電路的外部輸出節(jié)點(diǎn),將門級電路的外部輸出g21、g22轉(zhuǎn)換成wire型信號g21、g22,寫入到test.v文件中;
(4d)根據(jù)門級電路rtl級描述單元特有格式,生成門級電路例化模塊,寫入到test.v文件中;
(4e)在test.v文件中,初始化時鐘信號clk和低復(fù)位信號rst;
(4f)在test.v文件中,將低復(fù)位信號rst拉為高電平1,在本實(shí)施例中,將時鐘信號設(shè)置為50mhz;
(4g)在test.v文件中,用隨機(jī)數(shù)函數(shù)random,在時鐘信號的控制下生成外部激勵信號,同時新建input.v文件,將每個外部輸入信號在每個時鐘下的狀態(tài)保存至文件input.v中。
步驟5:將rtl級描述單元,門級電路邏輯描述文件和測試文件加入到商用modelsim仿真軟件中進(jìn)行仿真。
(5a)在modelsim商用仿真軟件中,新建一個仿真工程;
(5b)在工程中添加rtl級描述單元vv.v、門級電路邏輯描述文件cell.v和測試文件test.v;
(5c)對工程中的rtl級描述單元vv.v、門級電路邏輯描述文件cell.v和測試文件test.v進(jìn)行編譯;
(5d)在modelsim軟件的自帶work庫中,找到測試文件test.v,并將其添加到仿真工程中;
(5e)雙擊仿真工程中的simulation類型文件,開始仿真;
(5f)仿真結(jié)束后,新建state.v文件,將仿真過程中內(nèi)部所有d觸發(fā)器每個時鐘的輸出狀態(tài)記錄到文件state.v中。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不限于此,任何熟悉該技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),均可輕易想到進(jìn)行改變或替換,例如除了本實(shí)施例,利用本發(fā)明還能對大型門級網(wǎng)表進(jìn)行關(guān)鍵節(jié)點(diǎn)的提取,進(jìn)而加快大型門級網(wǎng)表正確性的驗證和檢錯,這些都涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。