first commit

This commit is contained in:
lihansani
2026-07-13 17:55:17 +08:00
commit b8b4ea895d
21 changed files with 2687 additions and 0 deletions

99
xpr解析版/README.md Normal file
View File

@@ -0,0 +1,99 @@
# 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中检查是否为源代码
```