亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種覆蓋率的統(tǒng)計(jì)方法及裝置的制造方法

文檔序號(hào):9288479閱讀:435來源:國知局
一種覆蓋率的統(tǒng)計(jì)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及計(jì)算機(jī)技術(shù),尤指一種覆蓋率的統(tǒng)計(jì)方法及裝置。
【背景技術(shù)】
[0002]隨著工藝技術(shù)以及應(yīng)用領(lǐng)域的不斷發(fā)展,一方面芯片設(shè)計(jì)的復(fù)雜度不斷提高,另一方面對(duì)芯片研發(fā)周期的要求越來越嚴(yán)格,這就要求對(duì)于芯片的各種驗(yàn)證工作需要盡早和高效地進(jìn)行。相對(duì)應(yīng)的,作為衡量驗(yàn)證充分程度的一個(gè)重要指標(biāo),覆蓋率的統(tǒng)計(jì)和分析對(duì)于控制驗(yàn)證周期和提高驗(yàn)證效率,有著非常重要的意義。
[0003]傳統(tǒng)上的覆蓋率統(tǒng)計(jì),是利用仿真工具(如VCS,IES等)自帶的覆蓋率統(tǒng)計(jì)功能對(duì)代碼覆蓋進(jìn)行檢查。但這樣的方式存在兩個(gè)問題,一是對(duì)于多次仿真的覆蓋率結(jié)果合并需要代碼版本一致,但在代碼設(shè)計(jì)初期和中期階段,因?yàn)樵O(shè)計(jì)代碼還在不斷調(diào)試修改之中,全芯片代碼的穩(wěn)定版本很難實(shí)現(xiàn);二是這樣的覆蓋率統(tǒng)計(jì)僅僅能用于仿真驗(yàn)證之中,對(duì)于現(xiàn)在驗(yàn)證超大規(guī)模芯片需要使用的FPGA驗(yàn)證無法使用。

【發(fā)明內(nèi)容】

[0004]為了解決上述技術(shù)問題,本發(fā)明提供了一種覆蓋率的統(tǒng)計(jì)方法及裝置,能夠使得覆蓋率的統(tǒng)計(jì)不再依賴于代碼版本的穩(wěn)定,對(duì)代碼版本的變動(dòng)不再敏感。
[0005]為了達(dá)到本發(fā)明目的,本發(fā)明提供了一種覆蓋率的統(tǒng)計(jì)方法,包括:
[0006]在代碼中分別為所述代碼中的每個(gè)待覆蓋點(diǎn)添加用于檢測(cè)待覆蓋點(diǎn)的覆蓋情況的檢測(cè)邏輯以及用于保存檢測(cè)結(jié)果的寄存器;
[0007]在所述代碼開始執(zhí)行后,所述檢測(cè)邏輯檢測(cè)對(duì)應(yīng)的待覆蓋點(diǎn)的覆蓋情況,在檢測(cè)到對(duì)應(yīng)的待覆蓋點(diǎn)被覆蓋時(shí),記錄到對(duì)應(yīng)的寄存器中,直到所述代碼執(zhí)行完畢;
[0008]分別讀取每個(gè)待覆蓋點(diǎn)對(duì)應(yīng)的寄存器的寄存器值,對(duì)讀取的寄存器值進(jìn)行統(tǒng)計(jì)分析,生成所述代碼的覆蓋結(jié)果。
[0009]進(jìn)一步地,所述方法還包括:
[0010]在代碼中分別為所述代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器后,為所述檢測(cè)邏輯和寄存器添加用于控制是否對(duì)所述檢測(cè)邏輯和寄存器進(jìn)行編譯的控制開關(guān);
[0011]在對(duì)所述代碼進(jìn)行編譯時(shí),判斷所述控制開關(guān)的狀態(tài),如果所述控制開關(guān)開啟,則對(duì)所述檢測(cè)邏輯和寄存器進(jìn)行編譯;否則,不對(duì)所述檢測(cè)邏輯和寄存器進(jìn)行編譯。
[0012]進(jìn)一步地,所述方法還包括:
[0013]在代碼中分別為所述代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器前,對(duì)所述代碼的執(zhí)行環(huán)境進(jìn)行評(píng)估,確定能夠支持的檢測(cè)邏輯和寄存器的數(shù)量,根據(jù)該數(shù)量選擇待覆蓋點(diǎn)。
[0014]進(jìn)一步地,所述對(duì)讀取的寄存器值進(jìn)行統(tǒng)計(jì)分析,包括:
[0015]根據(jù)預(yù)定義的所述寄存器值的含義,將寄存器值轉(zhuǎn)化為被覆蓋次數(shù),得到每個(gè)待覆蓋點(diǎn)的被覆蓋次數(shù)。
[0016]進(jìn)一步地,所述方法還包括:
[0017]在代碼中分別為所述代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器前,根據(jù)待覆蓋點(diǎn)的被覆蓋次數(shù)的檢測(cè)需要配置所述寄存器的位數(shù)。
[0018]進(jìn)一步地,一種覆蓋率的統(tǒng)計(jì)裝置,包括:配置單元、檢測(cè)單元和統(tǒng)計(jì)單元,其中:
[0019]所述配置單元,用于在代碼中分別為所述代碼中的每個(gè)待覆蓋點(diǎn)添加用于檢測(cè)待覆蓋點(diǎn)的覆蓋情況的檢測(cè)邏輯以及用于保存檢測(cè)結(jié)果的寄存器;
[0020]所述檢測(cè)單元,用于在所述代碼開始執(zhí)行后,運(yùn)行所述檢測(cè)邏輯檢測(cè)對(duì)應(yīng)的待覆蓋點(diǎn)的覆蓋情況,在檢測(cè)到對(duì)應(yīng)的待覆蓋點(diǎn)被覆蓋時(shí),記錄到對(duì)應(yīng)的寄存器中,直到所述代碼執(zhí)行完畢;
[0021]所述統(tǒng)計(jì)單元,用于分別讀取每個(gè)待覆蓋點(diǎn)對(duì)應(yīng)的寄存器的寄存器值,對(duì)讀取的寄存器值進(jìn)行統(tǒng)計(jì)分析,生成所述代碼的覆蓋結(jié)果。
[0022]進(jìn)一步地,所述裝置還包括控制單元和編譯單元,其中:
[0023]所述控制單元,用于在所述配置單元在代碼中分別為所述代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器后,為所述檢測(cè)邏輯和寄存器添加用于控制是否對(duì)所述檢測(cè)邏輯和寄存器進(jìn)行編譯的控制開關(guān);
[0024]所述編譯單元,用于在對(duì)所述代碼進(jìn)行編譯時(shí),判斷所述控制開關(guān)的狀態(tài),如果所述控制開關(guān)開啟,則對(duì)所述檢測(cè)邏輯和寄存器進(jìn)行編譯;否則,不對(duì)所述檢測(cè)邏輯和寄存器進(jìn)行編譯。
[0025]進(jìn)一步地,所述裝置還包括選擇單元,其中:
[0026]所述選擇單元,用于在所述配置單元在代碼中分別為所述代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器前,對(duì)所述代碼的執(zhí)行環(huán)境進(jìn)行評(píng)估,確定能夠支持的檢測(cè)邏輯和寄存器的數(shù)量,根據(jù)該數(shù)量選擇待覆蓋點(diǎn)。
[0027]進(jìn)一步地,所述統(tǒng)計(jì)單元對(duì)讀取的寄存器值進(jìn)行統(tǒng)計(jì)分析,包括:
[0028]根據(jù)預(yù)定義的所述寄存器值的含義,將寄存器值轉(zhuǎn)化為被覆蓋次數(shù),得到每個(gè)待覆蓋點(diǎn)的被覆蓋次數(shù)。
[0029]進(jìn)一步地,所述配置單元,還用于在代碼中分別為所述代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器前,根據(jù)待覆蓋點(diǎn)的被覆蓋次數(shù)的檢測(cè)需要配置所述寄存器的位數(shù)。
[0030]與現(xiàn)有技術(shù)相比,本發(fā)明包括在代碼中為每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和相應(yīng)的寄存器進(jìn)行覆蓋率統(tǒng)計(jì),在保證芯片的結(jié)構(gòu)和功能實(shí)現(xiàn)的前提下,添加的檢測(cè)邏輯和寄存器使覆蓋率的統(tǒng)計(jì),不再依賴于代碼版本的穩(wěn)定,對(duì)代碼版本的變動(dòng)不再敏感,可以靈活的應(yīng)用于代碼設(shè)計(jì)的初期和中期階段,使驗(yàn)證工作盡早地高效開展。
[0031]進(jìn)一步地,通過為檢測(cè)邏輯和寄存器添加控制開關(guān)可以確保添加的檢測(cè)邏輯和寄存器不會(huì)影響實(shí)際芯片的結(jié)構(gòu)和功能實(shí)現(xiàn)。
[0032]進(jìn)一步地,在代碼中為每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器前,對(duì)代碼的執(zhí)行環(huán)境進(jìn)行評(píng)估,根據(jù)資源的允許選擇待覆蓋點(diǎn),可以很方便地移植到如FPGA驗(yàn)證中使用。
[0033]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
【附圖說明】
[0034]附圖用來提供對(duì)本發(fā)明技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本申請(qǐng)的實(shí)施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對(duì)本發(fā)明技術(shù)方案的限制。
[0035]圖1為本發(fā)明覆蓋率的統(tǒng)計(jì)方法的流程圖;
[0036]圖2為本發(fā)明覆蓋率的統(tǒng)計(jì)裝置的架構(gòu)圖;
[0037]圖3為本發(fā)明覆蓋率的統(tǒng)計(jì)方法的應(yīng)用場(chǎng)景的示意圖。
【具體實(shí)施方式】
[0038]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
[0039]在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0040]圖1所示為本發(fā)明的覆蓋率的統(tǒng)計(jì)方法,包括:
[0041]步驟101:在代碼中分別為代碼中的每個(gè)待覆蓋點(diǎn)添加用于檢測(cè)待覆蓋點(diǎn)的覆蓋情況的檢測(cè)邏輯以及用于保存檢測(cè)結(jié)果的寄存器;
[0042]本發(fā)明可以應(yīng)用于對(duì)芯片進(jìn)行測(cè)試、驗(yàn)證時(shí)的覆蓋率統(tǒng)計(jì),也可以是其他情況下對(duì)代碼進(jìn)行測(cè)試、驗(yàn)證時(shí)的覆蓋率統(tǒng)計(jì)。例如,對(duì)于超大規(guī)模芯片仿真驗(yàn)證的需求,針對(duì)覆蓋目標(biāo),通過在芯片邏輯中添加額外的檢測(cè)邏輯和寄存器,用于檢測(cè)代碼中的待覆蓋點(diǎn)的覆蓋情況。
[0043]本發(fā)明中為每個(gè)待覆蓋點(diǎn)分別添加檢測(cè)邏輯和寄存器,檢測(cè)邏輯和寄存器添加在代碼中,代碼中的每個(gè)待覆蓋點(diǎn)分別對(duì)應(yīng)各自的檢測(cè)邏輯和寄存器。檢測(cè)邏輯用于檢測(cè)待覆蓋點(diǎn)的覆蓋情況,如是否被覆蓋、覆蓋的次數(shù)等,如果檢測(cè)到有覆蓋,則設(shè)置對(duì)應(yīng)的寄存器。寄存器用于保存檢測(cè)結(jié)果。
[0044]待覆蓋點(diǎn)是指代碼中的一條代碼或?qū)崿F(xiàn)某一功能邏輯的多條代碼。在統(tǒng)計(jì)覆蓋率之前需要確定出待覆蓋點(diǎn)。在添加寄存器前,需要根據(jù)對(duì)應(yīng)的待覆蓋點(diǎn)的被覆蓋次數(shù)的檢測(cè)需要設(shè)置寄存器的位數(shù),例如,如果是檢測(cè)單行代碼是否覆蓋,可以設(shè)置一位的寄存器,用“O”和“ I ”來區(qū)分;如果需要檢測(cè)代碼的覆蓋次數(shù),則需要設(shè)置多位寄存器。
[0045]步驟102:在代碼開始執(zhí)行后,檢測(cè)邏輯檢測(cè)對(duì)應(yīng)的待覆蓋點(diǎn)的覆蓋情況,在檢測(cè)到對(duì)應(yīng)的待覆蓋點(diǎn)被覆蓋時(shí),記錄到對(duì)應(yīng)的寄存器中,直到代碼執(zhí)行完畢;
[0046]針對(duì)芯片的檢測(cè)、驗(yàn)證,本發(fā)明中在芯片復(fù)位完成,開始工作(代碼開始執(zhí)行)的時(shí)候,檢測(cè)邏輯開始對(duì)待覆蓋點(diǎn)的覆蓋情況進(jìn)行檢測(cè),檢測(cè)一直持續(xù)進(jìn)行,在檢測(cè)到對(duì)應(yīng)的待覆蓋點(diǎn)被覆蓋時(shí),記錄到對(duì)應(yīng)的寄存器中,直到代碼執(zhí)行完畢,檢測(cè)完成。
[0047]步驟103:分別讀取每個(gè)待覆蓋點(diǎn)對(duì)應(yīng)的寄存器的寄存器值,對(duì)讀取的寄存器值進(jìn)行統(tǒng)計(jì)分析,生成代碼的覆蓋結(jié)果。
[0048]針對(duì)芯片檢測(cè)、驗(yàn)證的情況,芯片對(duì)自身的所有寄存器均設(shè)有訪問邏輯,本發(fā)明中可以將訪問邏輯提供對(duì)外對(duì)數(shù)據(jù)接口,直接用來訪問添加的寄存器,實(shí)現(xiàn)讀取寄存器的寄存器值;或者,也可以通過建立掃描鏈的方式對(duì)寄存器進(jìn)行訪問,讀取寄存器的寄存器值。
[0049]本發(fā)明中對(duì)讀取的寄存器值進(jìn)行統(tǒng)計(jì)分析可以是根據(jù)預(yù)定義的寄存器值的含義,將寄存器值轉(zhuǎn)化為被覆蓋次數(shù),得到每個(gè)待覆蓋點(diǎn)的被覆蓋次數(shù)。在讀取寄存器值的基礎(chǔ)上,根據(jù)事先的定義的寄存器值代表的含義,進(jìn)行統(tǒng)計(jì)分析,即將寄存器的二進(jìn)制值轉(zhuǎn)化為直觀的覆蓋結(jié)果報(bào)告,用于評(píng)估當(dāng)前驗(yàn)證情況和指導(dǎo)下一步的驗(yàn)證工作。
[0050]進(jìn)一步地,在代碼中分別為代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器后,還為檢測(cè)邏輯和寄存器添加用于控制是否對(duì)檢測(cè)邏輯和寄存器進(jìn)行編譯的控制開關(guān);在對(duì)代碼進(jìn)行編譯時(shí),判斷控制開關(guān)的狀態(tài),如果控制開關(guān)開啟,則對(duì)檢測(cè)邏輯和寄存器進(jìn)行編譯;否則,不對(duì)檢測(cè)邏輯和寄存器進(jìn)行編譯。
[0051]本發(fā)明中通過在編譯列表里通過控制開關(guān)來控制是否對(duì)檢測(cè)邏輯和寄存器進(jìn)行編譯,能夠保證添加的寄存器和檢測(cè)邏輯僅應(yīng)用于檢測(cè)、驗(yàn)證,不會(huì)影響芯片的設(shè)計(jì)、結(jié)構(gòu)和功能實(shí)現(xiàn)。添加的控制開關(guān)可以是宏定義開關(guān),可以對(duì)檢測(cè)邏輯和寄存器添加統(tǒng)一的控制開關(guān),也可以對(duì)每個(gè)待覆蓋點(diǎn)的檢測(cè)邏輯和寄存器分別添加控制開關(guān)。
[0052]進(jìn)一步地,在代碼中分別為代碼的每個(gè)待覆蓋點(diǎn)添加檢測(cè)邏輯和寄存器前,對(duì)代碼的執(zhí)行環(huán)境進(jìn)行評(píng)估,確定能夠支持的檢測(cè)邏輯和寄存器的數(shù)量,根據(jù)該數(shù)量選擇待覆蓋點(diǎn)。
[0053]例如,在需要應(yīng)用到資源比較緊張的檢測(cè)、驗(yàn)證環(huán)境中(比如FPGA驗(yàn)證)的情況,
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1