first commit
This commit is contained in:
99
xpr解析版/README.md
Normal file
99
xpr解析版/README.md
Normal 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中检查是否为源代码
|
||||
!!!!!!!!!!!!!!!!!!
|
||||
```
|
||||
Reference in New Issue
Block a user