2. Vivado 工程创建:从零搭起你的第一个项目
好,咱们正式开始动手。上一章聊了 Vivado 是什么,这一章直接打开软件,把第一个 RTL 工程建起来。我见过不少新手在这步卡住——不是器件选错,就是综合选项没配好,回头仿真跑不通又得重来。别急,跟着我的习惯一步步来,稳得很。
2.1 创建 RTL 工程:两种路径,一个结果
打开 Vivado,你会看到欢迎界面。创建工程有两种方式:
- 快捷入口:点击 "Quick Start" 下的 "Create Project"
- 菜单路径:File → Project → New
我个人习惯用快捷入口,省两步点击。点完后会弹出向导,注意几个关键设置:
| 向导步骤 | 填写内容 | 我的建议 |
|---|---|---|
| Project Name | 工程名 + 路径 | 不要用中文路径,不要有空格。我吃过这个亏 |
| Project Type | RTL Project | 选第一个,最常用 |
| Do not specify sources | 勾选 / 不勾选 | 新手建议勾上,后面手动加更清楚 |
小技巧:工程名最好跟顶层模块名一致。比如顶层叫
top_led,工程就叫 top_led。找文件时一眼就能对上。
2.2 添加源文件:三种来源,一个目标
工程建好后,左侧 Flow Navigator 点 "Add Sources"。你会看到三种来源:
- Add or Create Design Sources —— 你的 RTL 代码文件(.v / .sv / .vhd)
- Add or Create Constraints —— 约束文件(.xdc)
- Add or Create Simulation Sources —— 仿真文件(testbench)
嗯,这里要注意:很多人把仿真文件和设计文件混在一起放。我建议分开目录管理,比如:
project_root/
├── rtl/ # 设计源文件
├── sim/ # 仿真文件
├── constraint/ # 约束文件
└── ip/ # IP 核(后面会用到)
添加文件时,Vivado 会自动识别文件类型。如果你用的是 SystemVerilog(.sv),记得在 Settings 里把 "Target Language" 改成 SystemVerilog,否则综合时会报语法错。
避坑指南:我曾经加完文件直接点 OK,结果发现文件路径是相对路径,工程挪到别的电脑就找不到文件了。建议在 Settings → General 里勾选 "Copy sources into project"。这样文件会被复制到工程目录下,搬家也不怕。
2.3 选择器件:别选错,否则白干
器件选择在创建工程向导的 "Default Part" 步骤。你可以按 Family、Package、Speed Grade 筛选。我一般这么选:
| 参数 | 说明 | 常见选择 |
|---|---|---|
| Family | 芯片系列 | Artix-7 / Kintex-7 / Zynq-7000 |
| Package | 封装类型 | clg484 / fbg676(看板子) |
| Speed Grade | 速度等级 | -1 / -2 / -3(数字越大越快) |
如果你用的是开发板,直接点 "Boards" 标签页,搜板子型号就行。比如 xc7a35ticsg324-1L 是 Artix-7 35T 的常见型号。
核心原则:器件型号必须跟你的开发板完全一致。差一个字母都可能导致管脚不匹配。我见过有人选了 xc7a100t 结果板子是 xc7a35t,综合能过,但布局布线时报错说资源不够。
2.4 综合选项:别用默认,调一调更好
综合选项在 Flow Navigator → "Project Settings" → "Synthesis" 里。默认设置能用,但不够好。我常用的调整:
- Strategy:默认是 Vivado Synthesis Defaults。如果追求性能,可以选 "Performance_Explore";如果追求面积,选 "Area_Explore"。
- -flatten_hierarchy:默认是 rebuilt。我建议改成 full,综合器会把所有层级打平,优化更彻底。
- -fsm_extraction:状态机提取。默认是 auto,如果状态机跑飞了,可以改成 "one_hot" 或 "gray" 试试。
- -keep_equivalent_registers:默认不勾。如果你有多个相同功能的寄存器,勾上可以保留它们,方便后期 ECO。
为什么会这样?说白了,综合选项就是告诉工具「你更看重什么」。是速度?是面积?还是功耗?没有万能配置,得根据项目调。
我的习惯:第一次综合用默认,看看资源占用和时序。如果时序不满足,再切到 "Performance_Explore" 重跑。别一上来就选最激进的策略,综合时间会翻倍。
2.5 知识体系:一张图看懂工程创建流程
下面这张图把整个流程串起来了。你跟着箭头走,就不会漏步骤。
2.6 实战小贴士:第一次综合前必查清单
在你点 "Run Synthesis" 之前,花 30 秒过一遍这个清单:
- ✅ 顶层模块名跟工程名一致吗?
- ✅ 所有源文件都添加了吗?有没有漏掉子模块?
- ✅ 器件型号跟开发板匹配吗?
- ✅ 有没有设置 top module?(右键源文件 → Set as Top)
- ✅ 综合策略选对了吗?
血的教训:我曾经忘了设 top module,Vivado 默认选了列表里第一个文件当顶层。综合没报错,但生成的网表全是空的。查了半小时才发现顶层设错了。所以每次综合前,一定看一眼 Hierarchy 窗口里顶层是不是你要的那个。