Files
SourceCodeExtractionTool/xpr解析版
2026-07-13 17:55:17 +08:00
..
2026-07-13 17:55:17 +08:00
2026-07-13 17:55:17 +08:00
2026-07-13 17:55:17 +08:00
2026-07-13 17:55:17 +08:00
2026-07-13 17:55:17 +08:00
2026-07-13 17:55:17 +08:00

FPGA 项目源代码提取工具

从 Vivado/ISE 项目中自动提取实际参与编译的源代码文件。


功能说明

自动按优先级检测并提取:

.xpr (Vivado) → .xise (ISE) → .syr (ISE 综合报告)
  • 只提取参与综合/synthesis/Implementation 的文件
  • 自动识别 testbench 并单独放入 tb文件/ 子目录
  • 自动防重名覆盖(重名文件自动加 _1, _2 后缀)
  • 输出目录带时间戳 Copy_Files_YYYYMMDD_HHMMSS

使用方式

  1. config.txt 中配置需要提取的文件后缀(每行一个),例如:
v
vhd
sv
vh
xdc
  1. 运行脚本:
python xpr解析.py
  1. 输入项目根目录路径(可以直接从资源管理器拖拽进来,自动去除引号)

  2. 脚本自动检测:

    • .xpr → 按 Vivado 解析
    • .xpr 但有 .xise → 列出所有 .xise,让你选一个,然后按 ISE 解析
    • .xpr.xise 但有 .syr → 列出所有 .syr,让你选一个,然后按综合报告解析
    • 都没有 → 输出提示后退出

⚠️ 重要说明

项目根目录下必须要有 .xpr / .xise / .syr 其中之一才能提取

如果你的项目只有 .ise(二进制):

  • 请在 ISE 中打开 → File → Save Project As → 另存为 .xise 格式
  • 或者用已经跑过综合生成的 .syr 文件提取

路径解析规则

Vivado (.xpr)

  • $PPRDIR/xxx/yyy.v → 直接拼接 项目根目录/xxx/yyy.v
  • $PSRCDIR/xxx/yyy.v → 优先在 项目名.srcs/ 目录模糊匹配,找不到再全局搜索

ISE (.xise)

  • 路径都是相对项目根目录 → 直接拼接即可
  • 只要有 <association name="Implementation"> 就提取

ISE (.syr)

  • 正则匹配 Compiling ... file "path/to/file.v" 提取引号中的路径
  • 绝对路径存在就直接用,不存在则提取文件名去项目根目录找
  • 相对路径/纯文件名 → 模糊搜索

输出说明

输出目录 Copy_Files_YYYYMMDD_HHMMSS

Copy_Files_20260703_143025/
├── top.v
├── uart.vhd
├── ...
└── tb文件/
    ├── tb_top.v
    └── ...

程序末尾会打印统计信息:

  • 成功复制数量
  • 跳过(文件不存在)数量
  • 未找到(解析到路径但定位失败)列表
  • 最终输出目录绝对路径

如果识别到 testbench 文件,会打印醒目的提醒:


识别到项目中存在testbench文件,请在vivado中检查是否为源代码