# 团队统一维护脚本和此配置。用法：
# 不提供 path：扫描 check_path 配置的 /project/tb
# uv run tools/uvm_migration_scan.py
# 提供相对 path：只扫描 /project/tb/env/
# uv run tools/uvm_migration_scan.py env/
# 统一指定报告目录：uv run tools/uvm_migration_scan.py env/ --output-dir ./reports
# 固定输出 JSON、CSV 和扫描摘要。脚本自动读取同目录的此配置，团队统一维护。
# 配置中的相对路径基于本文件所在目录。
# CLI 相对输入路径基于各 check_path，绝对输入路径直接使用；未配置 check_path 时基于当前目录。
version: 1                     # YAML 配置格式版本

# 固定的 VCS 内置库迁移路径，仅支持这一组；修改为其他版本会报错。
migration:
  from: uvm-1.2
  to: uvm-ieee-2020-2.0

check_path: [/project/tb]        # 改为实际工程根目录；不提供 path 时扫描这里
output_dir: ./                  # 默认输出 migration-report.json/.csv/.summary.json
include_suffix: []              # 空列表：所有文本执行所选规则；仅显式填写或 --ext 才限制后缀
exclude_dirs: []                # Python 正则 search：匹配 / 分隔的绝对目录路径，并剪枝
exclude_files: []               # Python 正则 search：只匹配文件名
exclude_suffix: []              # 字面后缀，不区分大小写；例如 [.csv, .bin, .hex]

# 排除示例，按项目需要启用，不默认忽略构建脚本：
# exclude_dirs:
#   - '(ut|bt|it|sst|st)/\w+/design\b'
#   - '(ut|bt|it|sst|st)/\w+/work\b'
# exclude_files:
#   - '^lpddr_(force|release)_dff\.sv$'
#   - '^dwc_\w+'
# exclude_suffix: [.csv, .bin, .txt, .swo, .hex, .ppm, .pl, .py, .sh, .h, .c, .ld, .hvp, .svp, .fw]

# 内置规则不根据后缀改变检查范围；.sh/.py/.inc/无后缀同样检查 API、宏及 FLAG。
# 不想扫描脚本时自行配置 exclude_suffix: [.sh, .py]。
rules: []                       # 不限制，执行全部内置迁移规则；例如 [C5, S3]

# 去注释默认启用，并按常见文件后缀选择语法；需要调整范围时覆盖 include_suffix/include_files。
# include_suffix / include_files 空列表均表示不加限制，两个条件同时填写时取交集。
# 省略 include_suffix 使用下面的默认后缀；两项均为 [] 则处理所有已选文本。
# 不处理任何文件可设 include_files: ['(?!)']。
# slash 只去除 // 和 /* ... */；hash 去除未被引号/转义保护的 # 到行尾。
# 按团队输入选择启用范围；.sv 中的 #(...) 和 #10 不能用 hash 方式处理。
remove_comments:
  slash:
    include_suffix: [.sv, .svh, .v, .vh]
    include_files: []           # 文件名正则；例如 ['^tb_']，不影响迁移规则选择
  hash:
    include_suffix: [.sh, .py, .yaml, .yml]
    include_files: []           # 无后缀 Makefile 可用 ['^Makefile$']，同时将 include_suffix 改为 []

# 声明本次扫描对应的实际构建条件；不根据扫描文本中出现 define 自动推断。
compatibility:
  UVM_ENABLE_DEPRECATED_API: null
  UVM_LEGACY_FIELD_MACRO_SEMANTICS: null
  uvm_compat_pkg_compiled: null   # 只登记，不据此过滤 packer/位流风险
hide_compat_covered: false       # true：终端和退出码忽略已覆盖项；JSON/CSV 仍保留并标 suppressed

# 仅由团队在确认误报/例外后集中登记；默认无豁免。不读取个人 waive 或源码内豁免注释。
# 每项必须包含唯一 id、单个内置 rule、path 正则、reason；可选 lines: [12, 18]。
# path 对相对于本 YAML 目录的 / 分隔路径做正则 search；需全路径匹配时加 ^...$。
# lines 省略或 [] 表示不限制行号；0 表示文件级命中。
# JSON/CSV 保留豁免 ID、原因及位置；仅完整覆盖命中（包括全部 related_lines）才从退出码中过滤。
waivers: []
