[验证百花筒] 详细实例讲解如何将模块级的覆盖率合并到top级
引言
对于复杂模块,通常我们会专门搭建模块级的验证环境详细验证模块的功能,代码覆盖率通常都会达到100%或者指定的验收标准。验证完毕后,该模块又会作为更高一级的DUT例化在其中,姑且我们称之为top级DUT中的一个inst实例,而由于我们模块级已经完整验证了该模块的功能,系统级收集覆盖率的时候我们又不想完全把他exclude掉,或者说模块级我们只收集了一部分覆盖率,另一部分覆盖率我们留在系统级来收集,那么我们就需要将模块级收集的覆盖率与系统级收集的该模块的覆盖率进行合并。本文就用详细实例讲解如何实现上述需求。
仿真环境目录结构
仿真目录文件结构如下图所示:

其中rtl目录包含顶层设计B.v和模块级设计ip.v,需要merge的覆盖率就是ip模块的覆盖率
sim_module目录是模块级仿真目录,收集的覆盖率为sim_module/cov.vdb
sim_top目录为顶层仿真目录,,收集的覆盖率为sim_top/cov.vdb
两级仿真目录有各自的顶层testbench文件tb.sv以及相同的Makefile文件,flist为各自仿真编译需要吃的相关代码文件,cov_file指定覆盖率收集层次。
Makefile核心代码片段如下:
仿真文件介绍
相关文件详细介绍如下

本文详细介绍了如何在复杂系统中,利用SynopsysUrg工具将模块级的覆盖率与top级覆盖率合并,以充分利用已验证模块的功能并保持整体覆盖率数据完整。
最低0.47元/天 解锁文章
4492

被折叠的 条评论
为什么被折叠?



