# Vivado TCL 命令参考：综合、实现与导出

> 来源: UG835 (v2018.3 / v2025.2)
> ?? 硬件导出命令在两版本间有重大差异

## launch_runs / wait_on_run

```tcl
# 综合
launch_runs synth_1 -jobs 4
wait_on_run synth_1

# 实现
launch_runs impl_1 -jobs 4
wait_on_run impl_1

# 重置运行
reset_run synth_1
reset_run impl_1
```

| 参数 | 说明 |
|------|------|
| `-jobs` | 并行任务数，默认 1 |
| `-scripts_only` | 仅生成脚本，不执行 |
| `-to_step` | 执行到指定步骤 |

## write_bitstream

生成比特流:
```tcl
# 方式1: 直接调用
open_run impl_1
write_bitstream -force {output.bit}

# 方式2: 通过 launch_runs
launch_runs impl_1 -to_step write_bitstream -jobs 4
wait_on_run impl_1
```

## 状态查询

```tcl
get_property STATUS [get_runs synth_1]     # synth_design Complete
get_property PROGRESS [get_runs synth_1]   # 100%
get_property STATUS [get_runs impl_1]
get_property PROGRESS [get_runs impl_1]
get_property DIRECTORY [get_runs impl_1]   # 输出文件目录
```

## report_timing_summary

```tcl
report_timing_summary -max_paths 10
report_timing_summary -return_string      # 返回字符串而非打印
```

关键指标:
- **WNS** (Worst Negative Slack): ≥ 0 表示时序满足
- **WHS** (Worst Hold Slack): ≥ 0 表示保持时间满足

---

## ?? 硬件导出（版本差异）

### 2018.3: write_hwdef + write_sysdef

```tcl
# 步骤1: 生成 .hwdef
write_hwdef -force {export/system.hwdef}

# 步骤2: 打包为 .sysdef（包含比特流）
write_sysdef -force \
    -hwdef {export/system.hwdef} \
    -bitfile {impl_1/system.bit} \
    {export/system.sysdef}
```

`write_hwdef` 语法:
```
write_hwdef [-force] [-quiet] [-verbose] <file>
```

`write_sysdef` 语法:
```
write_sysdef [-force] [-hwdef <arg>] -bitfile <arg> [-meminfo <arg>] <file>
```

输出: `.sysdef` 文件，传给 XSCT `createhw -hwspec`

### 2025.2: write_hw_platform

```tcl
write_hw_platform -fixed -force -include_bit {export/system.xsa}
```

语法:
```
write_hw_platform [-fixed] [-force] [-include_bit] [-hw_emu] <file>
```

| 参数 | 说明 |
|------|------|
| `-fixed` | 固定平台（非 DFX） |
| `-force` | 覆盖已有文件 |
| `-include_bit` | 包含比特流 |

输出: `.xsa` 文件，传给 Vitis `create_platform_component(hw_design=...)`

### 版本对照

| 2018.3 命令 | 2025.2 命令 | 说明 |
|-------------|-------------|------|
| `write_hwdef` | ? 已删除 | 生成 .hwdef |
| `write_sysdef` | ? 已删除 | 打包 .sysdef |
| `launch_sdk` | ? 已删除 | 启动 SDK |
| ? 不存在 | `write_hw_platform` | 生成 .xsa |

### 版本自适应伪代码

```
if version <= 2019:
    write_hwdef  → .hwdef
    write_sysdef → .sysdef
else:
    write_hw_platform → .xsa
```
