FPGA领域一个被忽视了几十年的问题:HDL 到底算不算软件?

作者:爱上FPGA的娃娃

FPGA 行业里,存在一个延续了很多年的奇怪现象,软件工程师普遍不愿碰 HDL,而 FPGA 工程师则长期坚持一种观点:HDL不是软件。

双方仿佛默认隔着一道墙。

于是,一个本该在 AI、机器人、边缘计算时代大规模爆发的技术方向,始终停留在相对封闭的小圈子里。但真正值得讨论的问题,其实并不是软件工程师为什么学不会 FPGA,而是另一个更底层的问题:HDL 到底算不算软件?

这个问题看似像哲学争论,但它实际上决定了 FPGA 行业过去几十年的发展路径。

因为一旦行业默认 HDL 不是软件,就意味着 FPGA 开发天然被隔离在现代软件工程体系之外。工具链、语言设计、协作方式、开发体验,也因此长期停留在上世纪。而今天,问题已经开始变得越来越明显。

很多人之所以认为 HDL 不是软件,本质上是因为他们把“软件”狭义地理解成了 Python、C++、Java 这样的通用编程语言。这些语言建立在图灵机逻辑之上,强调顺序执行、动态调度和通用计算能力。但 FPGA 从来不是为通用计算设计的,它真正擅长的是确定性,这是 FPGA 与 CPU 最根本的区别。

CPU 的世界里,任务什么时候执行、什么时候结束,很多时候并不确定。线程调度、中断响应、缓存命中、DMA 传输,这些机制共同构成了现代软件系统的复杂性。于是,为了让软件世界适应真实世界,人们不得不一层层堆叠系统架构。

但 FPGA 的逻辑完全不同,它并不是运行程序,而是在直接构建电路。状态如何变化、信号如何流动、时钟如何驱动系统,全部是提前确定好的。从这个角度看,HDL 本质上其实就是一种行为描述,它描述系统该如何工作。而对行为进行形式化描述本来就是软件最核心的定义之一。

问题在于,FPGA 行业几十年来,一直没有真正用现代软件语言的思维重构 HDL。今天的 VHDL 和 Verilog,依然充满了上世纪硬件设计时代的痕迹,很多 FPGA 工程师已经习惯了这些东西,以至于忘了它们本身有多反人类。

最典型的例子,就是时钟与触发器。在很多 HDL 写法里,开发者必须显式理解寄存器锁存、上升沿触发、时钟域切换等大量硬件背景,否则一个看似正常的逻辑,就可能埋下时序问题。

行业长期默认这些知识你本来就该懂,但放在今天的软件世界,这种逻辑其实非常荒谬。现代编程语言的发展方向,早已经不是让开发者更理解底层,而是让开发者尽量少碰底层,因为语言存在的意义,本来就是抽象复杂性。问题在于,FPGA 世界过去几十年几乎没有真正完成这种抽象。

软件行业早已从汇编走向高级语言,从手工内存管理走向自动化框架,从单线程时代进入 AI 辅助开发。但 FPGA 开发者今天依然需要花费大量时间处理:
• 时钟域;
• 时序约束;
• 复位逻辑;
• 寄存器行为;
• 底层综合细节。

这些东西并不是 FPGA 的核心价值,却占据了大量开发成本。更尴尬的是,行业过去也不是没有尝试改变。

过去几十年,大量所谓高级 HDL都试图降低 FPGA 门槛,希望让它更像软件开发,但绝大多数尝试最后都失败了。因为很多人搞错了方向,他们试图让 FPGA 更像 CPU,但 FPGA 从来不该变成 CPU。FPGA 真正重要的不是能不能写得像 Python,而是能不能把时序表达得足够清楚。因为 FPGA 最大的价值,本来就不是通用计算,而是确定性实时处理。这也是 AI、机器人、工业自动化、卫星系统、边缘计算越来越依赖 FPGA 的原因。

真实世界是实时的。传感器同步、数据流处理、高速接口控制、低延迟响应,这些问题都不是 CPU 最擅长的领域。传统软件为了处理这些问题,不得不引入越来越复杂的架构:
线程、锁、中断、DMA、实时操作系统……
系统复杂度不断膨胀。

而 FPGA 最大的优势,恰恰是可以直接绕开这些软件层,它用硬件逻辑天然解决实时性问题。

但问题来了:当实时计算需求正在爆发时,FPGA 的开发方式却还停留在几十年前。

年轻开发者第一次打开 HDL,看到的不是现代开发体验,而是一种充满历史遗迹感的语言体系,这也是为什么 FPGA 行业始终很难真正扩大开发者规模。问题不在于 FPGA 太复杂,而在于它的表达方式太古老。今天的行业,其实正处在一个微妙节点,一边是 AI 和实时系统正在快速增长,另一边却是 FPGA 工具链越来越脱离现代软件开发习惯,这会导致一个非常现实的结果:越来越多公司,宁愿接受更高功耗、更低实时性,也要继续使用 CPU 或 GPU。原因很简单,软件开发更快,协作更成熟,人才更多,工具更现代。FPGA 并不是输给了性能,它输给的是开发体验。

而“HDL 到底算不算软件”这场争论,真正的问题也从来不在定义本身,它真正影响的是 FPGA 行业究竟愿不愿意接受现代软件工程的演进逻辑。如果 HDL 始终被视为一种“特殊硬件语言”,那么 FPGA 工具链就会继续停留在小圈子文化里。

但如果行业开始承认:
HDL 本质上也是一种行为描述语言;
FPGA 开发本质上也是软件工程的一部分;
那么整个行业真正的变化,可能才刚刚开始。

* 本文为原创文章,转载需注明作者、出处及原文链接,否则,本网站将保留追究其法律责任的权利