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"。你会看到三种来源:

  1. Add or Create Design Sources —— 你的 RTL 代码文件(.v / .sv / .vhd)
  2. Add or Create Constraints —— 约束文件(.xdc)
  3. 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 知识体系:一张图看懂工程创建流程

下面这张图把整个流程串起来了。你跟着箭头走,就不会漏步骤。

Vivado 工程创建流程 Vivado 工程创建核心流程 1. 创建 RTL 工程 2. 添加源文件 RTL 设计文件 约束文件 .xdc 仿真文件 testbench IP 核(可选) 3. 选择器件型号 4. 配置综合选项 5. 运行综合 💡 综合通过后,就可以进入实现(布局布线)和生成比特流了。但那是后面章节的事

2.6 实战小贴士:第一次综合前必查清单

在你点 "Run Synthesis" 之前,花 30 秒过一遍这个清单:

  • ✅ 顶层模块名跟工程名一致吗?
  • ✅ 所有源文件都添加了吗?有没有漏掉子模块?
  • ✅ 器件型号跟开发板匹配吗?
  • ✅ 有没有设置 top module?(右键源文件 → Set as Top)
  • ✅ 综合策略选对了吗?
血的教训:我曾经忘了设 top module,Vivado 默认选了列表里第一个文件当顶层。综合没报错,但生成的网表全是空的。查了半小时才发现顶层设错了。所以每次综合前,一定看一眼 Hierarchy 窗口里顶层是不是你要的那个。