新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Verilog代碼驗證的全面性與代碼覆蓋率分析

        Verilog代碼驗證的全面性與代碼覆蓋率分析

        作者: 時間:2012-04-20 來源:網絡 收藏

        對于復雜的設計來說,檢查是檢查工作是否完全的重要方法,(codecoverge)可以指示描述的功能有多少在仿真過程中被過了,代碼包括以下內容。

        本文引用地址:http://www.104case.com/article/149192.htm

        1、語句覆蓋率(statementcoverge),又稱為聲明覆蓋率,用于每個聲明在過程中執行的次數。例如:

        always@(areq0orareq1)

        begin

        gnt0=0;//聲明

        if(areq0==1)

        gnt=1;//聲明2

        end

        仿真過程結束后將給出報告,說明整個仿真過程中每個聲明執行了多少次。如果某些聲明沒有執行過,則需要進行補充仿真。

        2、路徑覆蓋率(pathcoverge),在設計中往往使用分支控制語句來根據不同的條件進行不同的操作,路徑覆蓋率分析可以指出所有分支是否執行了,路徑覆蓋率分析主要以if-else語句的各種分支為分析對象。例如:

        If(areq0)

        begin

        ……

        end

        If(areq1)

        begin

        ……。。

        End

        這段代碼中存在4條路徑,分別對應著從areq0=0,areq0=1,areq1=0,areq1=1,經覆蓋率就是要分析整個驗證過程中所有分支路徑都曾經出現過。

        3、狀態機覆蓋率(statemachinecoverge)用于統計在仿真過程中狀態機發生了哪些跳轉,這種分析可以防止驗證過程中某些狀態跳轉從來沒有發生過,從而造成設計隱患。

        4、觸發覆蓋率(triggeringcoverge)分析用于檢查在仿真過程中某些局部電路是否發生過由于某個信號的變化而觸發進行運算和操作的情況。例如:

        always@(areq0orareq1orareq2)

        begin

        ……。。

        End

        觸發覆蓋率分析會檢查該電路是否由于areq0、areq1、areq2的變化而被執行,如果仿真過程中沒有出現過因某個信號(如areq2)的變化而執行電路功能的情況,那么就會給出提示,驗證者需要在testbench中補充測試內容,以避免存在設計缺陷。

        5、表達式覆蓋率分析(expressioncoverge),用于檢查布爾表達式驗證的充分性。例如:下面是連續賦值語句:

        assignareq=areq0||areq1;

        可能出現的信號值組合如下:

        areq0=0areq1=0

        areq0=0areq1=1

        areq0=1areq1=0

        areq0=1areq1=1

        表達式覆蓋率分析,該分析針對的是這些組合在整個驗證過程中是否出現過,并給出那些組合從未出的。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 彰化市| 舒兰市| 奎屯市| 景德镇市| 湖口县| 宁城县| 通山县| 门头沟区| 团风县| 怀柔区| 长春市| 郯城县| 来凤县| 荥阳市| 鹿邑县| 会泽县| 邮箱| 公主岭市| 云林县| 隆回县| 开平市| 永康市| 湖州市| 五寨县| 铜川市| 美姑县| 泰顺县| 张家口市| 玉溪市| 淮北市| 剑河县| 伊春市| 英德市| 泗洪县| 屯昌县| 洪雅县| 和林格尔县| 永宁县| 军事| 清水河县| 永修县|