Verilog代碼驗(yàn)證的全面性與代碼覆蓋率分析
對(duì)于復(fù)雜的設(shè)計(jì)來(lái)說(shuō),Verilog代碼覆蓋率檢查是檢查驗(yàn)證工作是否完全的重要方法,代碼覆蓋率(codecoverge)可以指示Verilog代碼描述的功能有多少在仿真過(guò)程中被驗(yàn)證過(guò)了,代碼覆蓋率分析包括以下分析內(nèi)容。
本文引用地址:http://m.butianyuan.cn/article/149192.htm1、語(yǔ)句覆蓋率(statementcoverge),又稱為聲明覆蓋率,用于分析每個(gè)聲明在驗(yàn)證過(guò)程中執(zhí)行的次數(shù)。例如:
always@(areq0orareq1)
begin
gnt0=0;//聲明
if(areq0==1)
gnt=1;//聲明2
end
仿真過(guò)程結(jié)束后將給出報(bào)告,說(shuō)明整個(gè)仿真過(guò)程中每個(gè)聲明執(zhí)行了多少次。如果某些聲明沒(méi)有執(zhí)行過(guò),則需要進(jìn)行補(bǔ)充仿真。
2、路徑覆蓋率(pathcoverge),在設(shè)計(jì)中往往使用分支控制語(yǔ)句來(lái)根據(jù)不同的條件進(jìn)行不同的操作,路徑覆蓋率分析可以指出所有分支是否執(zhí)行了,路徑覆蓋率分析主要以if-else語(yǔ)句的各種分支為分析對(duì)象。例如:
If(areq0)
begin
……
end
If(areq1)
begin
……。。
End
這段代碼中存在4條路徑,分別對(duì)應(yīng)著從areq0=0,areq0=1,areq1=0,areq1=1,經(jīng)覆蓋率就是要分析整個(gè)驗(yàn)證過(guò)程中所有分支路徑都曾經(jīng)出現(xiàn)過(guò)。
3、狀態(tài)機(jī)覆蓋率(statemachinecoverge)用于統(tǒng)計(jì)在仿真過(guò)程中狀態(tài)機(jī)發(fā)生了哪些跳轉(zhuǎn),這種分析可以防止驗(yàn)證過(guò)程中某些狀態(tài)跳轉(zhuǎn)從來(lái)沒(méi)有發(fā)生過(guò),從而造成設(shè)計(jì)隱患。
4、觸發(fā)覆蓋率(triggeringcoverge)分析用于檢查在仿真過(guò)程中某些局部電路是否發(fā)生過(guò)由于某個(gè)信號(hào)的變化而觸發(fā)進(jìn)行運(yùn)算和操作的情況。例如:
always@(areq0orareq1orareq2)
begin
……。。
End
觸發(fā)覆蓋率分析會(huì)檢查該電路是否由于areq0、areq1、areq2的變化而被執(zhí)行,如果仿真過(guò)程中沒(méi)有出現(xiàn)過(guò)因某個(gè)信號(hào)(如areq2)的變化而執(zhí)行電路功能的情況,那么就會(huì)給出提示,驗(yàn)證者需要在testbench中補(bǔ)充測(cè)試內(nèi)容,以避免存在設(shè)計(jì)缺陷。
5、表達(dá)式覆蓋率分析(expressioncoverge),用于檢查布爾表達(dá)式驗(yàn)證的充分性。例如:下面是連續(xù)賦值語(yǔ)句:
assignareq=areq0||areq1;
可能出現(xiàn)的信號(hào)值組合如下:
areq0=0areq1=0
areq0=0areq1=1
areq0=1areq1=0
areq0=1areq1=1
表達(dá)式覆蓋率分析,該分析針對(duì)的是這些組合在整個(gè)驗(yàn)證過(guò)程中是否出現(xiàn)過(guò),并給出那些組合從未出的。
評(píng)論