# Vivado TCL 命令参考：工程管理

> 来源: UG835 (v2018.3 / v2025.2)
> 两版本语法完全相同

## create_project

创建新的 Vivado 项目。

```tcl
create_project [-part <part>] [-force] [-in_memory] [<name>] [<dir>]
```

| 参数 | 说明 |
|------|------|
| `-part` | 目标器件型号，如 `xc7z020clg400-2` |
| `-force` | 覆盖已存在的同名项目 |
| `-in_memory` | 创建内存中项目（不写磁盘） |
| `<name>` | 项目名称 |
| `<dir>` | 项目目录，默认当前目录 |

示例:
```tcl
create_project my_design D:/projects/my_design -part xc7z020clg400-2
```

## open_project

打开已有项目。

```tcl
open_project <file>
```

| 参数 | 说明 |
|------|------|
| `<file>` | .xpr 文件完整路径 |

## close_project / save_project

```tcl
close_project
save_project_as <name>
```

## add_files

添加源文件到项目。

```tcl
add_files [-norecurse] [-fileset <fileset>] <files>
```

| 参数 | 说明 |
|------|------|
| `-norecurse` | 不递归添加子目录 |
| `-fileset` | 目标 fileset: `sources_1`, `constrs_1`, `sim_1` |
| `<files>` | 文件路径列表 |

示例:
```tcl
add_files -norecurse -fileset [get_filesets sources_1] {D:/src/top.v}
add_files -norecurse -fileset [get_filesets constrs_1] {D:/xdc/pins.xdc}
```

## update_compile_order

更新编译顺序:
```tcl
update_compile_order -fileset sources_1
```

## set_property

设置对象属性（通用命令，极其重要）:
```tcl
set_property <property> <value> <object>
set_property -dict [list <prop1> <val1> <prop2> <val2> ...] <object>
```

## get_property

获取对象属性:
```tcl
get_property <property> <object>
```

## 常用属性

| 对象 | 属性 | 示例 |
|------|------|------|
| project | `PART` | `set_property PART xc7z020clg400-2 [current_project]` |
| project | `BOARD_PART` | `set_property BOARD_PART xilinx.com:zc702:part0:1.4 [current_project]` |
| run | `STATUS` | `get_property STATUS [get_runs synth_1]` |
| run | `PROGRESS` | `get_property PROGRESS [get_runs impl_1]` |
| run | `DIRECTORY` | `get_property DIRECTORY [get_runs impl_1]` |
