轉自:http://blog.csdn.net/limanjihe/article/details/52430286
對於vcs工具,支持生成覆蓋率報告,通過查看覆蓋率報告,即可知道設計中有什么問題。
要生成覆蓋率報告,要在編譯和仿真的時候,加入一個選項。
-cm line | fsm | tgl | cond , 指定生成針對什么條件的覆蓋率報告。
如下的makefile,就生成上述四個的覆蓋率報告。注意,編譯和仿真,都要加上-cm這個選項。
執行 make vcs , make sim后,會生成simv.vdb文件夾,該文件夾下包含了覆蓋率的內容,但是我們需要將內容生成報告,這樣,才方便我們查看。
生成報告,使用的是 urg命令,該命令也是屬於vcs工具里面的。
-dir: 指定 .vdb文件夾的位置
-report: 指定生成報告的格式,報告格式有兩種,一種網頁格式,一種text格式。這里,both代表生成兩種。
執行 make urg后,就會生成both文件夾。
這文件夾下的文件,就是覆蓋率報告了。
打開dashboard.html。可以看到整體的一些信息。
但是我們關心的是設計的,而不是testbench的。點擊hierarchy,得到層次。
點擊u1,也就是設計的頂層。可以看到關於該頂層的信息。因為在頂層,都是調用各個子模塊(這里是調用 band_generaterx_tx, uart_txd模塊),所以沒有line的覆蓋率統計,但是有TOGGLE的覆蓋率統計,也就是信號的翻轉。
從上面可以看出,對於rst_n信號,沒有從1->0的翻轉,而這個信號是testbench中傳遞的,因此看出,在testbench設計,對於rst_n信號產生,有bug。
點擊左下角的uart_txd_1,查看該模塊的信息。
對於該設計,因為有具體的實現,所以可以看到有line的覆蓋率,toggle的覆蓋率,FSM的覆蓋率。
對於line覆蓋率,從報告看出,總共有42行,覆蓋到了41行。通過查看代碼,可以知道是哪一行沒有被執行到。
對於toggle覆蓋率。從報告看出,只有rst_n有問題,而這問題是testbench的的bug造成的。
對於FSM的檢查。從報告看出,每個狀態都有被覆蓋到。但是從有些狀態跳轉到另外的狀態,沒有被覆蓋到。因此造成FSM的覆蓋率不高。
通過查看覆蓋率報告,可以查找到設計的缺陷,從而進行修正。