FPGA 项目源代码提取工具
从 Vivado/ISE 项目中自动提取实际参与编译的源代码文件。
功能说明
自动按优先级检测并提取:
.xpr (Vivado) → .xise (ISE) → .syr (ISE 综合报告)
- 只提取参与综合/synthesis/Implementation 的文件
- 自动识别 testbench 并单独放入
tb文件/子目录 - 自动防重名覆盖(重名文件自动加
_1,_2后缀) - 输出目录带时间戳
Copy_Files_YYYYMMDD_HHMMSS
使用方式
- 在
config.txt中配置需要提取的文件后缀(每行一个),例如:
v
vhd
sv
vh
xdc
- 运行脚本:
python xpr解析.py
-
输入项目根目录路径(可以直接从资源管理器拖拽进来,自动去除引号)
-
脚本自动检测:
- 有
.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中检查是否为源代码
!!!!!!!!!!!!!!!!!!