从具体的应用来看,FPGA工程师确实有不可或缺的独特优势,而它最核心的竞争力就是全栈能力,这里的全栈,指的是系统级的软硬件全栈能力。它既包括了在系统层面的架构设计、芯片开发的前后端流程,也包括了软件设计的全栈流程,甚至还有后期的项目维护、技术支持、与客户的沟通等等软技能。它可以看成是综合多种技能的技能树。
先说说FPGA的前端,前端包括设计、验证、建模,设计又分为模块设计、接口设计、系统整合三个部分,模块设计又有着RTL-Verilog和systemVerilog,以及协议。验证包含了随机化覆盖率、形式化方法、脚本与回归测试。建模又包含了抽象和实现。
再来说FPGA硬件测试,这就分为芯片级调试、系统级调试和测试仪器使用,芯片级调试包含signal tap,系统级调试包含驱动和API,测试仪器使用包含信号发生器、网络流量生成器和pcle分析仪。
最后说说FPGA软件开发,FPGA软件开发包含嵌入式处理器-soc,驱动、SDK使用与脚本。
这种全栈能力确实是只有FPGA工程师能够做到,只有FPGA工程师能做到一人成团,在短时间内将想法落实到高质量的软硬件系统实现。这是其他系统架构师、ASIC工程师、单片机工程师、软件工程师等等都无法单独完成的。与这些工程师相比,FPGA工程师有着很强的单兵作战能力。当然,技能树过于庞大也是为什么很多人认为FPGA难学的本质原因。