在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖

[求助] 脚本收集/合并覆盖率

[复制链接]
发表于 2025-5-9 11:39:45 | 显示全部楼层
kankan
发表于 2025-5-9 16:12:24 | 显示全部楼层


路过的小怪物 发表于 2025-5-8 14:08
你这样不需要指定合并的模块吗?urg会自动把模块一样的,用旧的覆盖率合并新的覆盖率?假如我开始收集好 ...


路劲相同的时候不需要指定合并的模块,会按路径合并的,如果路径有变化例如base vdb是最新版本system的RTL,其他还有一些UT的RTL覆盖率,那么需要使用使用mapfile进行,具体的你可以参考vcs的coverage说明手册。如果不同的环境使用了多种编译方式,2-step和3-step都有的话,那么可能要注意work的空间。
你可以做一个小实验,用最新的RTL收集一个最简单的用例,然后用旧的合并上去。
发表于 2025-5-21 16:20:54 | 显示全部楼层


路过的小怪物 发表于 2025-5-8 14:09
老大说没改动的合并,要我改一个脚本,我也没办法呀


问他怎么确认改动的模块不会影响到没改动的模块?
发表于 2025-6-3 09:35:18 | 显示全部楼层
要不搞个脚本,删除覆盖率文件之后,自动跑全部test case?
#bash
find *.v > testcase.lst
sed -i 's/\.v//g' testcase.lst
while IFS=read -r var_name; do
make sim test_case=$var_name
echo "$var_name:" >> sim_all.result
grep '$resault_mark' >> sim_all.resault
done < testcase.lst
发表于 2025-6-3 10:38:45 | 显示全部楼层




  1. # --- Makefile Variables ---
  2. # 旧的顶层覆盖率数据库路径
  3. TOP_OLD_VDB             := path/to/your/TOP_OLD.vdb

  4. # 包含修改后子模块新覆盖率的数据库路径
  5. # (这可能是一个新的完整顶层运行的VDB,或一个针对子模块的VDB)
  6. NEW_SUBMODULE_RUN_VDB   := path/to/your/NEW_SUBMODULE_RUN.vdb

  7. # 合并后的新覆盖率数据库名称和路径
  8. MERGED_DB_NAME          := merged_coverage/MERGED_FINAL.vdb
  9. MERGED_DB_DIR           := $(dir $(MERGED_DB_NAME))

  10. # 映射文件
  11. MAPFILE                 := $(MERGED_DB_DIR)/module_merge.map

  12. # URG合并日志文件
  13. LOG_FILE                := $(MERGED_DB_DIR)/urg_merge.log

  14. # 子模块在旧顶层VDB中的层级路径 (目标路径)
  15. HIER_PATH_SUBMODULE_DST := uvm_test_top.env.agent.your_modified_submodule_inst

  16. # 子模块在新运行VDB中的层级路径 (源路径)
  17. # 注意:如果 NEW_SUBMODULE_RUN_VDB 是一个独立的子模块测试VDB,此路径可能只是子模块名。
  18. # 如果是一个新的完整顶层运行的VDB,此路径可能与DST路径相同或类似。
  19. HIER_PATH_SUBMODULE_SRC := $(HIER_PATH_SUBMODULE_DST) # 根据实际情况调整

  20. # --- Targets ---
  21. .PHONY: all merge clean create_mapfile

  22. all: merge

  23. # 创建映射文件
  24. create_mapfile:
  25.         [url=home.php?mod=space&uid=17569]@echo[/url] "+++ Creating mapfile: $(MAPFILE)"
  26.         @mkdir -p $(MERGED_DB_DIR)
  27.         @echo "INSTANCE:" > $(MAPFILE)
  28.         @echo "SRC: $(HIER_PATH_SUBMODULE_SRC)" >> $(MAPFILE)
  29.         @echo "DST: $(HIER_PATH_SUBMODULE_DST)" >> $(MAPFILE)
  30.         @echo "+++ Mapfile created."

  31. # 执行URG合并
  32. merge: create_mapfile
  33.         @echo "+++ Merging coverage using mapfile..."
  34.         @mkdir -p $(MERGED_DB_DIR)
  35.         urg -dir $(TOP_OLD_VDB) \
  36.             -dir $(NEW_SUBMODULE_RUN_VDB) \
  37.             -mapfile $(MAPFILE) \
  38.             -dbname $(MERGED_DB_NAME) \
  39.             -log $(LOG_FILE) \
  40.             # 您可以在此添加其他URG选项, 例如 -metric line+cond+fsm+tgl+branch -report urg_report_dir
  41.         @echo "+++ Merge process complete. Merged VDB: $(MERGED_DB_NAME)"
  42.         @echo "+++ URG Log file: $(LOG_FILE)"

  43. # 清理生成的文件
  44. clean:
  45.         @echo "+++ Cleaning merged coverage database, mapfile, and log..."
  46.         rm -rf $(MERGED_DB_DIR)
  47.         @echo "+++ Clean complete."


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-25 03:51 , Processed in 0.015832 second(s), 6 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表