專利名稱:一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及系統(tǒng)仿真領(lǐng)域,尤指一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的方法與系統(tǒng)。
背景技術(shù):
在大規(guī)模邏輯(FPGA/ASIC)驗證中,仿真與代碼覆蓋率分析是其中一個重要過程。
其基本執(zhí)行流程如下(1)預(yù)編譯(Instrumentation)——對被測邏輯整合,產(chǎn)生適合代碼覆蓋率分析的文件;(2)仿真(Simulation)——仿真用例的執(zhí)行過程,其過程中加入代碼覆蓋率分析;(3)代碼覆蓋率結(jié)果分析(Reporting)——合并多個仿真用例執(zhí)行后產(chǎn)生代碼覆蓋率數(shù)據(jù),并產(chǎn)生代碼覆蓋率報告。
一般來說,每個邏輯項目驗證都會需要多個仿真用例的支持。如何完成整個邏輯項目驗證中多個仿真用例的聯(lián)合仿真與代碼覆蓋率分析過程,業(yè)界有許多開展技術(shù)。
現(xiàn)有技術(shù)一GUI技術(shù),這是基本技術(shù)。簡要介紹如下(1)首先,邏輯驗證人員在代碼覆蓋率分析工具的GUI環(huán)境下,根據(jù)個人的經(jīng)驗和判斷,主要通過選擇對話框、確認(rèn)按鈕的步步引導(dǎo),完成預(yù)編譯過程;(2)然后,在仿真過程的GUI環(huán)境下,依據(jù)類似的操作過程,完成仿真用例的執(zhí)行過程;(3)最后,在代碼覆蓋率分析工具的GUI環(huán)境下,依據(jù)類似的操作過程,完成代碼覆蓋率結(jié)果的分析,并給出覆蓋率分析報告。
現(xiàn)有技術(shù)一的缺點缺點1配置都是測試執(zhí)行時臨時進行的,其效果完全取決于執(zhí)行者個人的經(jīng)驗和技術(shù)水平;缺點2執(zhí)行過程難以統(tǒng)一,好的經(jīng)驗不易積累和共享,不易形成標(biāo)準(zhǔn)化的運作流程;缺點3每個測試執(zhí)行都要人工參與,邏輯驗證人員無法從這些機械重復(fù)的事務(wù)中解放出來。
現(xiàn)有技術(shù)二局部意義的腳本化技術(shù)。
腳本化技術(shù)是多數(shù)邏輯驗證人員經(jīng)常采用的技術(shù)。一般來說,常用仿真工具和代碼覆蓋率分析工具都支持腳本化技術(shù)(如TCL等)。通過編寫腳本,可以使預(yù)編譯過程、各個仿真用例仿真過程或代碼覆蓋率結(jié)果分析過程的執(zhí)行實現(xiàn)自動化。
但是,現(xiàn)有技術(shù)的“局部意義的腳本化技術(shù)”,實現(xiàn)的是某個局部階段的腳本化,并非邏輯驗證中仿真與代碼覆蓋率分析全流程的腳本化。
現(xiàn)有技術(shù)二的缺點該技術(shù)還限制于“局部意義的腳本化技術(shù)”,解決了局部范圍的腳本化,但無法解決邏輯仿真與代碼覆蓋率分析全流程自動化。仿真前的預(yù)編譯過程,以及仿真后的代碼覆蓋率結(jié)果分析過程,還需要人工參與啟動。盡管每個仿真用例可以通過腳本實現(xiàn)自動執(zhí)行,但啟動每個仿真用例的工作還需要邏輯驗證人員手工參與。仿真用例數(shù)目越多,邏輯驗證人員參與的工作量越大。
發(fā)明內(nèi)容
本發(fā)明提供一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的方法與系統(tǒng),實現(xiàn)邏輯仿真與代碼覆蓋率分析全流程自動化。
本發(fā)明提供的自動調(diào)度邏輯仿真與代碼覆蓋率分析的方法,包括下列步驟11)使用一主模塊對被測邏輯進行預(yù)編譯,產(chǎn)生適合代碼覆蓋率分析的預(yù)編譯文件;12)所述主模塊調(diào)度用戶提供的全部仿真用例,生成一仿真用例索引目錄;13)所述主模塊根據(jù)上述仿真用例索引目錄順序執(zhí)行各仿真用例,對被測邏輯進行仿真測試;14)所述主模塊根據(jù)預(yù)編譯文件得到各仿真用例執(zhí)行后的代碼覆蓋率結(jié)果并保存。
根據(jù)本發(fā)明的上述方法,還包括有下列步驟將代碼覆蓋率結(jié)果輸出給一代碼覆蓋率結(jié)果分析模塊,由該結(jié)果分析模塊實現(xiàn)仿真用例執(zhí)行后被測邏輯的代碼覆蓋率結(jié)果分析并給出分析報告。
根據(jù)本發(fā)明的上述方法,所述主模塊在計算機中通過腳本語言實現(xiàn),仿真用例的運行是由腳本進行控制;其中主模塊執(zhí)行各仿真用例的具體方法為順序調(diào)度執(zhí)行每個用例目錄下的啟動腳本;在啟動腳本中進行該仿真用例所需的相關(guān)配置;順序調(diào)度激勵產(chǎn)生、仿真執(zhí)行、結(jié)果分析腳本,完成該仿真用例的執(zhí)行。
根據(jù)本發(fā)明的上述方法,其特征在于所述主模塊對被測邏輯項目和仿真用例進行路徑設(shè)置并創(chuàng)建目錄結(jié)構(gòu),將被測邏輯和仿真用例拷貝到相應(yīng)路徑下保存;自動生成仿真用例名稱列表;主模塊自動搜索仿真用例名稱,寫入到仿真用例索引目錄,并彈出圖形用戶界面,供用戶選擇是否需要進行仿真用例修改。
根據(jù)本發(fā)明的上述方法,所述主模塊設(shè)置有代碼覆蓋率分析的控制開關(guān),供用戶選擇是否需要對代碼覆蓋率進行分析。
本發(fā)明提供一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的系統(tǒng),包括一主模塊實現(xiàn)對系統(tǒng)中各模塊的調(diào)度;一預(yù)編譯模塊實現(xiàn)被測邏輯的預(yù)編譯過程;一用戶模塊包括被測邏輯、總線功能模型和若干仿真用例,由用戶提供;一代碼覆蓋率結(jié)果分析模塊實現(xiàn)仿真用例執(zhí)行后被測邏輯的代碼覆蓋率結(jié)果分析及報告功能;所述主模塊調(diào)度預(yù)編譯模塊對被測邏輯進行預(yù)編譯,產(chǎn)生適合代碼覆蓋率分析的預(yù)編譯文件;所述主模塊調(diào)度用戶提供的仿真用例,由總線功能模型模擬周圍器件和邏輯接口,向被測邏輯提供所需的各種激勵,進行仿真測試,并將測試結(jié)果送入結(jié)果分析模塊中進行分析。
本發(fā)明的上述系統(tǒng),還包括有一工具支持模塊提供調(diào)度邏輯仿真與代碼覆蓋率分析過程中需要用到的一些典型功能,由所述主模塊進行調(diào)度;一仿真配置模塊提供仿真過程中需要的配置項,由所述主模塊進行調(diào)度。
采用本發(fā)明的方法與系統(tǒng),能夠?qū)崿F(xiàn)邏輯仿真與代碼覆蓋率分析全流程自動化。
圖1為本發(fā)明系統(tǒng)結(jié)構(gòu)圖;圖2為本發(fā)明方法實施例流程圖;圖3為本發(fā)明方法實施例中的目錄結(jié)構(gòu)示意圖。
具體實施例方式
圖1為本發(fā)明的邏輯仿真與代碼覆蓋率分析系統(tǒng)結(jié)構(gòu)示意圖,虛線框內(nèi)為“用戶提供部分”。
如圖所示,主模塊主要實現(xiàn)一些環(huán)境變量的配置,以及對各子模塊的調(diào)度功能。
工具支持模塊提供調(diào)度邏輯仿真與代碼覆蓋率分析過程中需要用到的一些典型功能,由所述主模塊進行調(diào)度;例如支持用戶自由選擇是否需要啟動代碼覆蓋率分析、支持自動搜索邏輯代碼文件并允許用戶根據(jù)特定需求來調(diào)整需要進行覆蓋率分析的邏輯文件、支持自動搜索仿真用例集并根據(jù)用戶特定需求來調(diào)整本次仿真中需要執(zhí)行的仿真用例、支持仿真編譯過程的選擇、支持自動創(chuàng)建與配置仿真目錄、支持文件到列表的轉(zhuǎn)換、支持文件的批量拷貝與刪除,等等。
仿真配置提供仿真過程中需要的配置項,由所述主模塊進行調(diào)度。例如配置代碼覆蓋率分析所需的設(shè)計文件、配置待加載的原始覆蓋率文件、配置仿真后保存的結(jié)果覆蓋率文件、配置仿真過程中代碼覆蓋率分析的一些其它特殊屬性,等等。
預(yù)編譯模塊實現(xiàn)被測邏輯的預(yù)編譯過程,例如支持用戶對所有邏輯代碼批量選擇所需的代碼覆蓋率類型、支持用戶根據(jù)邏輯代碼的重要性差異而選擇不同分析深度的代碼覆蓋率類型、支持用戶對不同的語句類型和邏輯操作符選擇是否進行代碼覆蓋率分析,等等。
代碼覆蓋率結(jié)果分析模塊實現(xiàn)仿真用例執(zhí)行后被測邏輯的代碼覆蓋率結(jié)果分析及報告功能,例如支持每個仿真用例的結(jié)果覆蓋率文件與其名稱一致、支持仿真用例集中所有結(jié)果覆蓋率文件的自動合并、支持用戶選擇所關(guān)心的代碼覆蓋率類型并給出覆蓋率報告、支持用戶選擇所關(guān)心的類型進行代碼文件的排序,等等。
用戶提供部分主要包括被測邏輯(DUT)、共享模型、BFM(Bus FunctionalModel,總線功能模型)、仿真用例等內(nèi)容。
被測邏輯邏輯仿真測試活動中所關(guān)注的被測對象,其主要形式是面向可編程邏輯芯片的可綜合RTL代碼;
共享模型其代碼形式和DUT類似,該部分可以是一些已成熟的設(shè)計,或由芯片商等提供的一些商用IP模塊,和DUT一起構(gòu)成完整的邏輯。這部分在邏輯測試活動中不是主要的關(guān)注對象,一般也不再進行代碼覆蓋率分析;BFM總線功能模型,是仿真測試平臺(TestBench)的一個重要組成部分,模擬周圍器件和邏輯的接口,向邏輯提供所需的各種激勵,并捕獲邏輯的響應(yīng)結(jié)果,送入結(jié)果分析模塊中進行分析。BFM可以由可綜合的語言編寫,也可以由C、C++、SystemC等高級語言編寫;仿真用例在仿真活動中執(zhí)行的測試用例,仿真用例的運行是由腳本控制的。其中包括一個啟動腳本、可能有一個或多個激勵產(chǎn)生腳本、仿真執(zhí)行腳本、結(jié)果分析腳本等,啟動腳本順序調(diào)度激勵產(chǎn)生、仿真執(zhí)行、結(jié)果分析等腳本。對于每個仿真用例,其啟動腳本的名稱都相同,便于主模塊(調(diào)度算法模塊)對其進行調(diào)度執(zhí)行;但其配置參數(shù)有差別,分別實現(xiàn)不同的仿真控制,完成不同的功能測試。
如圖2所示,為本發(fā)明方法一具體實施例的流程圖,其中主模塊為用腳本語言實現(xiàn)的計算機程序,包括如下具體步驟(1)主模塊設(shè)置邏輯項目路徑,創(chuàng)建圖3所示的目錄結(jié)構(gòu),一并參見圖3,包括一級目錄project_name——具體邏輯項目的名稱;二級目錄bfm——存放仿真BFM文件;rm——存放仿真所需的參考模型,為可選項;rtl——存放被測邏輯;sim——仿真環(huán)境所在目錄,包括四個三級目錄;sim_work——仿真工作庫;cov_work——代碼覆蓋率分析工作庫;
report——存放代碼覆蓋率報告;log——存放過程中產(chǎn)生的一些有用log信息;另外,sim目錄還存放仿真配置文件、預(yù)編譯腳本、代碼覆蓋率結(jié)果分析腳本。
tests——仿真用例所在目錄。包含多個三級目錄。推薦三級目錄命名與具體仿真用例名稱一致,每個仿真用例的啟動腳本名稱統(tǒng)一(例如,可統(tǒng)一為start.tcl)。
tools——存放仿真及代碼覆蓋率分析過程中可能用到的工具腳本。
(2)主模塊提供用戶瀏覽器界面,以此將被測邏輯(DUT)、BFM、共享模型、仿真配置模塊、預(yù)編譯模塊、代碼覆蓋率結(jié)果分析模塊、仿真用例等從其它地方拷貝到相應(yīng)路徑下,也可以由用戶手工追加并分別配置;(3)主模塊設(shè)置代碼覆蓋率分析過程控制,即配置是否進行代碼覆蓋率分析的控制開關(guān)(code_cov_flag),其值為“0”或“1”;(4)如果代碼覆蓋率分析的控制開關(guān)為“0”,則轉(zhuǎn)到步驟(20),否則執(zhí)行步驟(5);(5)自動查找.\rtl目錄下的邏輯代碼文件,并將其索引寫入到一個索引文件(instr_index.f);(6)主模塊彈出對話框,詢問用戶是否需要修改這個索引文件(即是否要對索引文件中列出的所有邏輯代碼文件進行代碼覆蓋率分析);如果需要修改,執(zhí)行步驟(7),否則轉(zhuǎn)至步驟(8);(7)通過文本編輯器打開該文件,供用戶修改,用戶修改完畢、保存退出后,可按“確認(rèn)”按鈕,程序向下執(zhí)行至(8);修改過程中“確認(rèn)”按鈕無效;(8)彈出是否進行“預(yù)編譯”過程選擇按鈕,供用戶選擇是否進行預(yù)編譯。如果邏輯代碼沒有更改,預(yù)編譯過程只需要進行一次即可;如果選擇進行預(yù)編譯,則程序向下執(zhí)行(9),否則轉(zhuǎn)向(10);
(9)啟動預(yù)編譯模塊,依據(jù)該模塊中所進行的相關(guān)配置,產(chǎn)生相應(yīng)的預(yù)編譯文件;(10)彈出“仿真編譯選擇”按鈕,用戶根據(jù)需要選擇是否進行仿真編譯,如否,則轉(zhuǎn)至步驟(12);(11)如果代碼覆蓋率分析控制開關(guān)為1,則編譯預(yù)編譯代碼,用戶也可根據(jù)需要選擇共享模型、BFM模塊,調(diào)用仿真編譯腳本,選擇執(zhí)行編譯過程,之后按“確認(rèn)”按鈕,程序進行相關(guān)操作;(12)主模塊自動搜索仿真用例集.\tests下面的仿真用例名稱,并寫入到仿真用例索引列表(tst_index.f);(13)主模塊彈出圖形用戶界面,供用戶選擇是否需要進行修改仿真用例列表,如果是,執(zhí)行步驟(14);否則,轉(zhuǎn)至步驟(15);(14)通過文本編輯器打開該索引文件,供用戶修改;用戶修改完畢、保存退出后,按“確認(rèn)”按鈕,程序向下執(zhí)行,修改過程中“確認(rèn)”按鈕無效;(15)依據(jù)修改后的仿真用例索引文件(tst_index.f),給各仿真用例設(shè)定標(biāo)號N,初始化N=1;(16)主模塊,順序調(diào)度執(zhí)行每個用例目錄下的啟動腳本;在啟動腳本中進行該仿真用例所需的相關(guān)配置,并順序調(diào)度激勵產(chǎn)生、仿真執(zhí)行、結(jié)果分析等腳本,完成該仿真用例的執(zhí)行;(17)保存當(dāng)前仿真用例執(zhí)行后的覆蓋率結(jié)果文件;(18)判斷N是否為索引文件尾,如果索引中的所有用例執(zhí)行完畢,則轉(zhuǎn)向(19),否則,使N=N+1,轉(zhuǎn)至步驟(16);(19)調(diào)度代碼覆蓋率結(jié)果分析模塊,依據(jù)所進行的配置,給出全部仿真用例執(zhí)行完畢后總的代碼覆蓋率結(jié)果報告;(20)程序結(jié)束。
通過上述自動調(diào)度方法,可以實現(xiàn)邏輯項目路徑及相關(guān)目錄的配置、被測邏輯中需進行代碼覆蓋率分析的文件的重定義、預(yù)編譯過程的調(diào)度、仿真編譯過程的選擇、需執(zhí)行的仿真用例的重定義、仿真用例的自動執(zhí)行、各仿真用例執(zhí)行后的代碼覆蓋率結(jié)果文件的重命名、代碼覆蓋率結(jié)果數(shù)據(jù)的合并,及代碼覆蓋率分析報告的產(chǎn)生。
在上述方法中,對于用戶可能需要改變的配置項,通過“工具支持模塊”,提供相應(yīng)的GUI(Graphic User Interface,圖形用戶界面)接口,供用戶根據(jù)需要自由配置。
這樣,既可給用戶很大的自由度,根據(jù)實際需要進行相應(yīng)的配置,也保證了不需要用戶配置部分的自動、高效執(zhí)行。在設(shè)計好仿真用例的情況下,通過主模塊的自動調(diào)度,可以將所有仿真用例的仿真和代碼覆蓋率分析過程自動執(zhí)行完畢,并提供給用戶一份完整的代碼覆蓋率分析報告。
本發(fā)明方法中的各模塊,可以通過腳本語言(如TCL等)實現(xiàn),也可以通過C語言實現(xiàn)。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求書的保護范圍為準(zhǔn)。
權(quán)利要求
1.一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的方法,包括下列步驟11)使用一主模塊對被測邏輯進行預(yù)編譯,產(chǎn)生適合代碼覆蓋率分析的預(yù)編譯文件;12)所述主模塊調(diào)度用戶提供的全部仿真用例,生成一仿真用例索引目錄;13)所述主模塊根據(jù)上述仿真用例索引目錄順序執(zhí)行各仿真用例,對被測邏輯進行仿真測試;14)所述主模塊根據(jù)預(yù)編譯文件得到各仿真用例執(zhí)行后的代碼覆蓋率結(jié)果并保存。
2.如權(quán)利要求1所述的方法,其特征在于還包括有下列步驟將代碼覆蓋率結(jié)果輸出給一代碼覆蓋率結(jié)果分析模塊,由該結(jié)果分析模塊實現(xiàn)仿真用例執(zhí)行后被測邏輯的代碼覆蓋率結(jié)果分析并給出分析報告。
3.如權(quán)利要求2所述的方法,其特征在于所述主模塊在計算機中通過腳本語言實現(xiàn),仿真用例的運行是由腳本進行控制;其中主模塊執(zhí)行各仿真用例的具體方法為順序調(diào)度執(zhí)行每個用例目錄下的啟動腳本;在啟動腳本中進行該仿真用例所需的相關(guān)配置;順序調(diào)度激勵產(chǎn)生、仿真執(zhí)行、結(jié)果分析腳本,完成該仿真用例的執(zhí)行。
4.如權(quán)利要求3所述的方法,其特征在于所述主模塊對被測邏輯項目和仿真用例進行路徑設(shè)置并創(chuàng)建目錄結(jié)構(gòu),將被測邏輯和仿真用例拷貝到相應(yīng)路徑下保存;自動生成仿真用例名稱列表;主模塊自動搜索仿真用例名稱,寫入到仿真用例索引目錄,并彈出圖形用戶界面,供用戶選擇是否需要進行仿真用例修改。
5.如權(quán)利要求4所述的方法,其特征在于所述主模塊設(shè)置有代碼覆蓋率分析的控制開關(guān),供用戶選擇是否需要對代碼覆蓋率進行分析。
6.一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的系統(tǒng),其特征在于包括一主模塊實現(xiàn)對系統(tǒng)中各模塊的調(diào)度;一預(yù)編譯模塊實現(xiàn)被測邏輯的預(yù)編譯過程;一用戶模塊包括被測邏輯、總線功能模型和若干仿真用例,由用戶提供;一代碼覆蓋率結(jié)果分析模塊實現(xiàn)仿真用例執(zhí)行后被測邏輯的代碼覆蓋率結(jié)果分析及報告功能;所述主模塊調(diào)度預(yù)編譯模塊對被測邏輯進行預(yù)編譯,產(chǎn)生適合代碼覆蓋率分析的預(yù)編譯文件;所述主模塊調(diào)度用戶提供的仿真用例,由總線功能模型模擬周圍器件和邏輯接口,向被測邏輯提供所需的各種激勵,進行仿真測試,并將測試結(jié)果送入結(jié)果分析模塊中進行分析。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于所述系統(tǒng)還包括有一工具支持模塊提供調(diào)度邏輯仿真與代碼覆蓋率分析過程中需要用到的一些典型功能,由所述主模塊進行調(diào)度;一仿真配置模塊提供仿真過程中需要的配置項,由所述主模塊進行調(diào)度。
全文摘要
本發(fā)明有關(guān)一種自動調(diào)度邏輯仿真與代碼覆蓋率分析的方法與系統(tǒng),包括11)使用一主模塊對被測邏輯進行預(yù)編譯,產(chǎn)生適合代碼覆蓋率分析的預(yù)編譯文件;12)所述主模塊調(diào)度用戶提供的全部仿真用例,生成一仿真用例索引目錄;13)所述主模塊根據(jù)上述仿真用例索引目錄順序執(zhí)行各仿真用例,對被測邏輯進行仿真測試;14)所述主模塊根據(jù)預(yù)編譯文件得到各仿真用例執(zhí)行后的代碼覆蓋率結(jié)果并保存。采用本發(fā)明的方法與系統(tǒng),能夠?qū)崿F(xiàn)邏輯仿真與代碼覆蓋率分析全流程自動化。
文檔編號G06F11/00GK1744092SQ200410079030
公開日2006年3月8日 申請日期2004年9月4日 優(yōu)先權(quán)日2004年9月4日
發(fā)明者張凱峰, 葉芬, 徐爭 申請人:華為技術(shù)有限公司