vivado联合modelsim测试覆盖率

(1)用vivado编译modelsim仿真库,并配置环境

         安装modelsim和vivado。点击vivado菜单栏中的tools,在下拉选项中选择compile simulation libraries。simulator选项选择:modelsim simulator。compile library location表示编译库存放的路径。simulator executable path:表示modelsim安装路径,即modelsim.exe所在的路径。如下所示:
vivado联合modelsim测试覆盖率_第1张图片
根据计算机配置,编译时间大概在10分钟左右。

(2)配置modelsim.ini

        编译完modelsim的仿真库后,在编译库路径下找到modelsim.ini文件,将所有内容拷贝。再在modelsim安装目录下找到modelsim.ini文件,去掉只读属性后,将编译库路径下的modelsim.ini文件拷贝过来,保存后再选中只读属性。

vivado联合modelsim测试覆盖率_第2张图片

                                                        编译库路径下的modelsim.ini文件

vivado联合modelsim测试覆盖率_第3张图片

                                                    modelsim安装目录下的modelsim.ini文件

        如下所示,将编译库路径下modelsim.ini文件中的内容拷贝到modelsim安装目录下的modelsim.ini文件中,注意在vital2000 = $MODEL_TECH/../vital2000语句后开始粘贴。

vivado联合modelsim测试覆盖率_第4张图片

(3)配置vivado环境

        这一步将vivado与modelsim联合起来。点击vivado菜单栏中的tools,在下拉菜单中选择setting,target simulator选择modelsim simulator ,compile library location选择刚才编译库的路径。再点击apply,最后点击ok。
vivado联合modelsim测试覆盖率_第5张图片

(4)在vivado中开始仿真

        在vivado中建立工程后,创建源文件以及tb文件,点击simulation—>run behavior simulation。如下图所示:这一步骤将打开modelsim。
vivado联合modelsim测试覆盖率_第6张图片

(5)在modelsim中设置覆盖率选项 

       (方法一)

        在vivado中点击simulation 后,将自动打开modelsim界面。此时,在modelsim中的library、project、覆盖率coverage界面中都没有内容,这是因为vivado将工程创建在xil_defaultlib默认的库下,在modelsim命令窗口中会看到这条命令:        

vivado联合modelsim测试覆盖率_第7张图片

        这条命令拷贝如下:

vsim -voptargs=""+acc"" -L blk_mem_gen_v8_4_2 -L xil_defaultlib -L 
fifo_generator_v13_2_3 -L xbip_utils_v3_0_9 -L c_reg_fd_v12_0_5 -L 
xbip_dsp48_wrapper_v3_0_4 -L xbip_pipe_v3_0_5 -L xbip_dsp48_addsub_v3_0_5 -L 
xbip_addsub_v3_0_5 -L c_addsub_v12_0_12 -L xbip_bram18k_v3_0_5 -L 
mult_gen_v12_0_14 -L axi_utils_v2_0_5 -L cordic_v6_0_14 -L unisims_ver -L 
unimacro_ver -L secureip -L xpm -lib xil_defaultlib xil_defaultlib.tb xil_defaultlib.glbl 

        将上述命令中-voptargs=""+acc""删掉,这个选项表示优化设计;然后在命令的最后加上覆盖率的选项:-coverage -novopt
        整个命令如下:

vsim  -L blk_mem_gen_v8_4_2 -L xil_defaultlib -L 
fifo_generator_v13_2_3 -L xbip_utils_v3_0_9 -L c_reg_fd_v12_0_5 -L 
xbip_dsp48_wrapper_v3_0_4 -L xbip_pipe_v3_0_5 -L xbip_dsp48_addsub_v3_0_5 -L 
xbip_addsub_v3_0_5 -L c_addsub_v12_0_12 -L xbip_bram18k_v3_0_5 -L 
mult_gen_v12_0_14 -L axi_utils_v2_0_5 -L cordic_v6_0_14 -L unisims_ver -L 
unimacro_ver -L secureip -L xpm -lib xil_defaultlib xil_defaultlib.tb xil_defaultlib.glbl 
-coverage -novopt

        在modelsim命令行窗口中敲入上面修改后的命令,将在modelsim的instance或者sim 窗口中显示各个模块实例的覆盖率。如下所示
vivado联合modelsim测试覆盖率_第8张图片

        在Modelsim菜单栏中点击view—>coverage—>instance coverage ,即可看到各个模块实例的覆盖率情况,点击view—>coverage—>code coverage analysis即可看到每个实例的语句覆盖情况。

        (方法二)

        通过vivado打开modelsim后,显示的命令行如下所示:

vsim -voptargs=""+acc"" -L blk_mem_gen_v8_4_2 -L xil_defaultlib -L 
fifo_generator_v13_2_3 -L xbip_utils_v3_0_9 -L c_reg_fd_v12_0_5 -L 
xbip_dsp48_wrapper_v3_0_4 -L xbip_pipe_v3_0_5 -L xbip_dsp48_addsub_v3_0_5 -L 
xbip_addsub_v3_0_5 -L c_addsub_v12_0_12 -L xbip_bram18k_v3_0_5 -L 
mult_gen_v12_0_14 -L axi_utils_v2_0_5 -L cordic_v6_0_14 -L unisims_ver -L 
unimacro_ver -L secureip -L xpm -lib xil_defaultlib xil_defaultlib.tb xil_defaultlib.glbl 

(1)删除第1行中的-voptargs=""+acc""
(2)将最后一行的 xil_defaultlib.tb删掉,再在最后一行添加如下命令:
 -coverage xil_defaultlib.tb -voptargs="+cover=bcesfx"。xil_defaultlib表示xilinx默认库,tb表示自己的顶层仿真模块名。

vsim  -L blk_mem_gen_v8_4_2 -L xil_defaultlib -L fifo_generator_v13_2_3 
-L xbip_utils_v3_0_9 -L c_reg_fd_v12_0_5 -L xbip_dsp48_wrapper_v3_0_4 
-L xbip_pipe_v3_0_5 -L xbip_dsp48_addsub_v3_0_5 -L xbip_addsub_v3_0_5 
-L c_addsub_v12_0_12 -L xbip_bram18k_v3_0_5 -L mult_gen_v12_0_14 
-L axi_utils_v2_0_5 -L cordic_v6_0_14 -L unisims_ver -L unimacro_ver 
-L secureip -L xpm -lib xil_defaultlib  xil_defaultlib.glbl 
-coverage xil_defaultlib.tb -voptargs="+cover=bcesfx"

(6)保存coverage

        保存覆盖率信息报告,在菜单栏中选择Tools-->Coverage Save-->保存为.ucdb文件格式。

(7)合并多个测试用例的覆盖率

        如果需要合并多个.ucdb文件,使用quit -sim退出仿真,点击菜单栏“File”—>“change dirctory”,切换到.ucdb保存的目录下(所有测试用例生成的ucdb文件放在同一目录下),在modelsim命令窗口使用“vcover merge  file_name.ucdb  *.ucdb”,*表示通配符。

你可能感兴趣的:(vivado,FPGA,测试覆盖率)