Files
2026-07-13 17:55:17 +08:00

99 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
2. 运行脚本:
```bash
python xpr解析.py
```
3. 输入**项目根目录**路径(可以直接从资源管理器拖拽进来,自动去除引号)
4. 脚本自动检测:
-`.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中检查是否为源代码
```