很多同学会遇到两类典型困惑:
- 一类: Verilog 语法看了一遍,感觉都看得懂,一上手写项目脑子空白,不知道从哪下手;
另一类:刚学完 Verilog 基础,就到处看到 SystemVerilog、UVM,担心不学就落后,焦虑要不要直接冲。
先给核心结论:
做工程项目、电赛、FPGA 岗位,优先把 Verilog‑2001 吃透,就可以动手做项目。SystemVerilog 分场景,普通 FPGA 开发不用急于上手;做 IC 验证才必须深度掌握。
一、Verilog 学到什么水平,才具备做项目的能力
不是把语法全部看完就叫学会,分为「可以做小型项目」「可以做中型复杂项目 / 电赛」「可以对接企业工程」三个等级。
- 等级 1:可以上手小型项目(LED、串口、SPI 驱动,新手入门项目)
必须掌握知识点:
模块 module、端口定义,assign连续赋值;always@(*)组合逻辑、always@(posedge clk)时序逻辑,分清 wire 与 reg。 会写计数器、移位寄存器、简单分频;能区分组合逻辑、时序逻辑,理解无意生成 latch 锁存器的原因,会规避。
- 状态机: 两段式、三段式状态机,熟练手写,看得懂状态跳转逻辑。
会编写简单 Testbench 仿真激励,看得懂波形,能够通过波形定位简单逻辑 bug。
- 熟悉工程完整流程: 源码、管脚约束、综合、实现、下载;看得懂基础告警。
- 达标判断: 不给参考例程,自己独立写 UART 串口收发,仿真跑通,上板调试成功。
- 没到这个程度不要硬啃大项目,硬抄例程只能跑现象,无法排错。
- 等级 2:可以做电赛、中型 FPGA 工程(大部分同学的目标)
在等级 1 基础上,必须吃透:
单比特打两拍,理解亚稳态;理解异步 FIFO 工作原理,会调用、会看懂 FIFO 接口时序。
PLL 时钟 IP、FIFO IP,看得懂 IP 手册,理解输入输出信号含义,不是直接复制例程。
建立时间、保持时间,看懂基础时序报告,能识别简单时序违例。
会用 ILA 在线抓波形,上板和仿真不一致时,有基本的排查思路。
- 模块化拆分思维: 一个大功能懂得拆分成多个小 module,而不是全部堆在一个 always 块里面。
达标判断:可以独立完成多通道采集、图像缓存这类电赛典型题目;遇到 bug 可以定位是逻辑问题、时钟问题还是时序问题。 到这个阶段,绝大多数电赛、应届生 FPGA 岗位笔试面试的 Verilog 基础要求就满足。
- 等级 3:企业级大型工程(求职进阶,高速接口、国产 FPGA 项目)
在等级 2 之上:
熟练写基础 SDC 约束,理解时钟约束、多时钟域约束,能够处理时序收敛问题。 熟悉资源优化,懂得如何裁剪逻辑,降低 LUT、寄存器占用。 熟悉 Xilinx 或者国产 FPGA 器件的 IP 差异,工程迁移的语法坑。 读懂大型工程的分层架构,看懂别人的大型 RTL 代码。 这个阶段不是看完语法就可以达成,需要大量真实项目调试积累。
❌很多人的误区
Verilog 所有语法都学完才做项目。 很多冷门语法(specify、specparam、primitive 原语)普通 FPGA 项目几乎用不到,不需要全部学完再动手。边做项目边补知识点效率最高。 看得懂代码 = 会写代码。 看别人 demo 看得明白,自己从零写就卡壳,这是典型的 “阅读能力>输出能力”,根源是手写练习太少。 教学提醒:不要直接复制 AI 生成完整 RTL 工程。AI 可以辅助查报错、给思路,但核心逻辑必须手写。硬件思维是写出来、看波形练出来的,不是看出来的。
二、要不要学 SystemVerilog?分场景讲清楚
很多资料会把 SystemVerilog 吹成必学,现实要区分FPGA 开发和IC 验证两个赛道。
先分清定位
Verilog‑2001:绝大多数 FPGA 工程、电赛、国产 FPGA 工具主流使用标准,兼容性最好,安路、紫光同创、复旦微工具链原生完美支持。 SystemVerilog (SV):在 Verilog 基础上扩展而来。两大用途:①用于 IC 验证 UVM;②少量高级 FPGA 工程使用部分 SV 语法。
- 场景 1: 你的目标:FPGA 开发、电赛、找 FPGA 岗位(绝大多数同学)
- 建议: 优先吃透 Verilog‑2001,SV 可以延后,选择性了解,不用系统深度学习。
哪些 SV 特性可以简单了解,遇到再学:
logic 类型、interface 接口。部分新工程会使用。
哪些暂时不用碰:
class 类、random 随机、assert 断言、cover 覆盖率、UVM 整套验证库。 原因: 国内大量国产 FPGA 工具对 SystemVerilog 完整特性支持有限,很多 SV 语法不能综合,写上去无法上板; FPGA 岗位面试,90% 重点考察仍然是 Verilog 基础、状态机、CDC、时序;不会拿 UVM 来考 FPGA 开发工程师; 盲目学 SV,会分散精力,Verilog 基础没打牢,学 SV 只会越学越乱。
- 场景 2: 目标:数字 IC 验证,未来想做芯片验证岗位
- 建议: Verilog 基础扎实之后,必须系统学习 SystemVerilog,后续学习 UVM。
SV 是 IC 验证的主力语言,class、随机激励、断言、覆盖率都是工作高频使用。
- 场景 3: 做 HLS、FPSoC、高端海外 Xilinx 项目
可以适度接触 SV 的可综合子集,但依然不能完全依赖,国产器件兼容性是现实问题。
三、学习顺序建议(直接照做)
吃透 Verilog‑2001,手写模块,做小型项目; 掌握 CDC、IP 使用、时序基础,完成电赛 / 中型项目;
根据自己未来方向选择:
了解少量 SV 常用可综合语法即可,重心放在时序、高速接口、实战项目;
再系统学习 SystemVerilog、UVM。
四、高频疑问总结
现在很多教程都在讲 SystemVerilog,不学会不会落后?
工具链有现实鸿沟。国内大量国产 FPGA 平台,SV 综合支持不完善。如果你的目标是国产 FPGA 开发,Verilog‑2001 依然是工程主流。SV 更多是 IC 验证赛道刚需。
Verilog 要背完所有语法吗?
不用。高频语法反复写自然就记住,冷门语法遇到再查手册。重点是建立硬件并行思维,而不是背诵语法。
Verilog 基础差不多,但是写项目无从下手怎么办?
学会模块拆分。把大项目拆解成若干小模块,逐个写、逐个仿真调通,再顶层例化拼接,不要试图一次性写完整个大工程。
我学完 Verilog,直接上手 SV 可以吗?
不建议。SV 是 Verilog 的超集,如果 Verilog 的时序、CDC、状态机还会出错,直接学 SV,只会掩盖底层理解漏洞。
简短总结
能独立手写 UART、状态机,会仿真看波形,就可以上手小型项目; 吃透 CDC、IP、时序基础,就可以做电赛、求职级项目; FPGA 开发优先 Verilog‑2001,SystemVerilog 不用急着系统学;做 IC 验证才必须深度学 SV。
