在使用 VCS 工具进行代码覆盖率合并时,mapfile 是一个重要的配置文件,用于定义如何将不同模块或实例的覆盖率数据映射到目标模块上。以下是关于 mapfile 的使用和相关命令的详细说明:

1. mapfile 的作用

mapfile 是一个文本文件,用于指定覆盖率数据的映射关系。它允许你将多个模块或实例的覆盖率数据合并到一个目标模块上,通常用于将子模块的覆盖率数据合并到顶层模块。

2. mapfile 的格式

mapfile 的内容定义了源模块(或实例)和目标模块之间的映射关系。其格式通常如下:

MODULE: <目标模块名>
INSTANCE:
SRC: <源模块路径>
DST: <目标模块路径>

例如:

MODULE: My_Ip
INSTANCE:
SRC: A.B.My_Ip1
DST: C.D.My_Ip1

 这个例子表示将模块 A.B.My_Ip1 的覆盖率数据映射到目标模块 C.D.My_Ip1 上。

3. 合并覆盖率的命令

使用 urg 命令和 -mapfile 选项可以实现覆盖率的合并:

urg -dir base.vdb -dir input.vdb -mapfile file_name

  • base.vdb:目标覆盖率数据库。

  • input.vdb:源覆盖率数据库。

  • file_name:包含映射关系的 mapfile

4. 特殊场合

比如,同一个模块的多份实例化,共4份。我们期望都merge 到 d 实例上,语法如下。 

 请注意:必须一一列举出所有的 SRC 源。

# 创建 mapfile
MODULE: my_module
INSTANCE:
SRC: top.a
DST: top.d
SRC: top.b
DST: top.d
SRC: top.c
DST: top.d


# 合并覆盖率
urg -dir simv_d.vdb -dir simv_a.vdb -dir simv_b.vdb -dir simv_c.vdb -mapfile mapfile.txt -dbname merged.vdb

# 查看合并后的覆盖率
verdi -cov -covdir merged.vdb

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐