|
发表于 2025-6-3 10:38:45
|
显示全部楼层
- # --- Makefile Variables ---
- # 旧的顶层覆盖率数据库路径
- TOP_OLD_VDB := path/to/your/TOP_OLD.vdb
- # 包含修改后子模块新覆盖率的数据库路径
- # (这可能是一个新的完整顶层运行的VDB,或一个针对子模块的VDB)
- NEW_SUBMODULE_RUN_VDB := path/to/your/NEW_SUBMODULE_RUN.vdb
- # 合并后的新覆盖率数据库名称和路径
- MERGED_DB_NAME := merged_coverage/MERGED_FINAL.vdb
- MERGED_DB_DIR := $(dir $(MERGED_DB_NAME))
- # 映射文件
- MAPFILE := $(MERGED_DB_DIR)/module_merge.map
- # URG合并日志文件
- LOG_FILE := $(MERGED_DB_DIR)/urg_merge.log
- # 子模块在旧顶层VDB中的层级路径 (目标路径)
- HIER_PATH_SUBMODULE_DST := uvm_test_top.env.agent.your_modified_submodule_inst
- # 子模块在新运行VDB中的层级路径 (源路径)
- # 注意:如果 NEW_SUBMODULE_RUN_VDB 是一个独立的子模块测试VDB,此路径可能只是子模块名。
- # 如果是一个新的完整顶层运行的VDB,此路径可能与DST路径相同或类似。
- HIER_PATH_SUBMODULE_SRC := $(HIER_PATH_SUBMODULE_DST) # 根据实际情况调整
- # --- Targets ---
- .PHONY: all merge clean create_mapfile
- all: merge
- # 创建映射文件
- create_mapfile:
- [url=home.php?mod=space&uid=17569]@echo[/url] "+++ Creating mapfile: $(MAPFILE)"
- @mkdir -p $(MERGED_DB_DIR)
- @echo "INSTANCE:" > $(MAPFILE)
- @echo "SRC: $(HIER_PATH_SUBMODULE_SRC)" >> $(MAPFILE)
- @echo "DST: $(HIER_PATH_SUBMODULE_DST)" >> $(MAPFILE)
- @echo "+++ Mapfile created."
- # 执行URG合并
- merge: create_mapfile
- @echo "+++ Merging coverage using mapfile..."
- @mkdir -p $(MERGED_DB_DIR)
- urg -dir $(TOP_OLD_VDB) \
- -dir $(NEW_SUBMODULE_RUN_VDB) \
- -mapfile $(MAPFILE) \
- -dbname $(MERGED_DB_NAME) \
- -log $(LOG_FILE) \
- # 您可以在此添加其他URG选项, 例如 -metric line+cond+fsm+tgl+branch -report urg_report_dir
- @echo "+++ Merge process complete. Merged VDB: $(MERGED_DB_NAME)"
- @echo "+++ URG Log file: $(LOG_FILE)"
- # 清理生成的文件
- clean:
- @echo "+++ Cleaning merged coverage database, mapfile, and log..."
- rm -rf $(MERGED_DB_DIR)
- @echo "+++ Clean complete."
复制代码 |
|