- 添加 createVivadoProject 工具 - 实现 Vivado 自动检测(支持所有盘符和版本) - 添加 TCL 脚本生成器 - 添加配置管理模块 - 添加测试命令
3.1 KiB
3.1 KiB
Vivado 联动功能技术设计文档
1. 架构设计
后端 AI
↓ 调用工具
前端 Extension (messageHandler.ts)
↓ 调用
VivadoRunner (utils/vivadoRunner.ts)
↓ 生成 TCL 脚本并执行
本地 Vivado
2. 核心模块
2.1 VivadoRunner
职责:执行单个 Vivado 命令
主要方法:
createProject()- 创建工程runSynthesis()- 执行综合runImplementation()- 执行实现runBitstream()- 生成比特流
实现要点:
- 根据参数生成 TCL 脚本
- 启动子进程执行 Vivado
- 捕获输出日志
- 解析报告文件
- 返回结果
2.2 TCL 脚本生成
创建工程:
create_project {projectName} {workDir} -part {part} -force
add_files -norecurse {files}
set_property top {topModule} [current_fileset]
综合:
synth_design -part {part} -top {topModule}
report_utilization -file utilization.rpt
write_checkpoint -force synth.dcp
实现:
open_checkpoint {dcpFile}
opt_design
place_design
route_design
report_timing_summary -file timing.rpt
write_checkpoint -force impl.dcp
生成比特流:
open_checkpoint {dcpFile}
write_bitstream -force output.bit
2.3 MessageHandler 集成
// 处理工具调用
async function handleToolCall(toolName: string, params: any) {
switch(toolName) {
case 'createVivadoProject':
return await vivadoRunner.createProject(params);
case 'runVivadoSynthesis':
return await vivadoRunner.runSynthesis(params);
case 'runVivadoImplementation':
return await vivadoRunner.runImplementation(params);
case 'runVivadoBitstream':
return await vivadoRunner.runBitstream(params);
}
}
3. 配置管理
配置文件位置:
- 全局:
settings.json中的ic-coder.vivado - 项目:
.vscode/ic-coder-vivado.json
配置项:
{
"vivado": {
"enabled": true,
"executablePath": "C:/Xilinx/Vivado/2023.1/bin/vivado.bat",
"workingDir": "${workspaceFolder}/vivado_project"
}
}
4. 文件结构
src/
├── utils/
│ ├── vivadoRunner.ts # Vivado 执行器
│ ├── vivadoConfig.ts # 配置读取
│ └── tclGenerator.ts # TCL 脚本生成
└── utils/
└── messageHandler.ts # 工具调用处理(新增部分)
5. 实现要点
5.1 子进程执行
const process = spawn(vivadoPath, ['-mode', 'batch', '-source', tclPath]);
process.stdout.on('data', (data) => {
output += data.toString();
});
process.on('close', (code) => {
resolve({ success: code === 0, output });
});
5.2 报告解析
从 .rpt 文件中提取关键信息:
- 资源使用:LUT、FF、BRAM 数量
- 时序信息:WNS、TNS
5.3 错误处理
捕获常见错误:
- Vivado 未配置
- 文件不存在
- 综合/实现失败
- 时序不满足
返回清晰的错误信息给后端。
6. 测试
单元测试:
- TCL 脚本生成正确性
- 配置读取
集成测试:
- 完整流程测试(需要本地 Vivado)
- 错误处理测试