如何成长为一个合格的FPGA工程师?
武林中,乾坤大挪移有七层的修炼境界,FPGA工程师技术修炼之路也是如此。
第一层:熟悉代码,能做仿真。
作为FPGA初级工程师,首先应该要会写veriog代码,会写testbench。会用modelsim或者VCS仿真工具。能够写模块级别的代码,能够仿真,算是精通第一层。
虽然第一层看似简单,但是修炼不好就会影响进阶之路,主要是verilog设计基本功,电路模块设计思想,而不是简单凑时序。代码编程质量以及设计的高内聚,低耦合的模块划分原则。这一层是后续修炼的基础。
第二层:熟悉架构,能写约束
对于FPGA内部资源如数家珍,能够有效利用FPGA内部资源,例如各种类型的RAM,LUT,BUG,serdes等等。通过熟悉这些知识,工程师可以进行FPGA选型。
根据需要约束设计:
(1)IO的约束:这个相对简单;
(2)时序的约束:这个需要对外部芯片接口时序非常熟悉;
(3)位置的约束:这个需要在布局布线不通时,或者时序比较紧张时,通过位置约束来满足设计需求;
精通此层的人,可以称得上算是会FPGA了,略窥门径,有所小成。
第三层:熟悉接口,能担项目
此层的工程师熟悉掌握XILINX等FPGA的IP。例如PCIE的IP,XDMA, SATA,rapid IO,Ethernet等等。
可以把XILILNX厂商的用例跑通,可以在用例的基础上,通过添加及修改实现用户需求及功能。
客户有需求,工程师可以很快接手,进行功能分解,完成代码开发,交付项目。
精通此层的人,可以成为FPGA项目负责人。
第四层:定位问题,解决问题
可以通过各种调试解决问题,熟悉使用各种硬件,软件,FPGA内部逻辑分析仪等调试手段。
解决包括且不限于硬件问题,软件问题,FPGA问题。一句话:解决别人解决不了的问题。
在公司里面,大家有FPGA解决不了的问题就找他解决。专业解决各种疑难杂症。
精通此层的人,通常在公司被称为大牛。
第五层:略懂算法,庖丁解牛;
此层境界,可以将某些算法协议,创造性实现在FPGA上。
这些算法协议经常的例子包括:
AI的inference。这种能力可以将AI的python程序变成verilog在FPGA上高效实现。
TCP的offload。这种能力可以将系统kernel级别的C程序,别人不知道如何下手,可以在FPGA上干净利索的实现。
核心指标是在FPGA上能够完成别人搞不定的算法,或者别人达不到的性能。(注意:这个复杂度是AI的性能指标比被人强或者TCP卸载并发数据流比别人多来衡量的,并不是一般的算法实现)
精通此层的人,经常被称为架构师或者技术专家。
第六层:体系结构,软硬划分。
修炼此层境界的人才精通体系结构,实现软硬件划分。熟悉例如kernel,虚拟化,容器,SRIOV,virtIO等。了解如何这些需求和FPGA的硬件能力配合,
精通此层的人,可以实现例如虚拟化OVS卸载,P4协议实现,裸金属云管理,云端AI加速等等。
此层大神可以通过FPGA实现类似DPU的卸载,目前的确也有很多公司做FPGA来实现做DPU。
的确FPGA挺合适来做DPU的,尤其是在DPU功能比较不确定的情况下。ASPLOS 2020阿里案例的裸金属云bm-hypervisor管理网卡,就是FPGA实现(见云端芯片之战-小乌云还是大风暴)。
精通此层的人,可以去技术创业,大公司做研究员,小公司可以做技术总监。
7:第七层:“日盈昃,月满亏蚀”。
乾坤大挪移的第七层,张无忌也没有练成过,
“原来当年创制乾坤大挪移心法的那位高人,内力虽强,却也未到相当于九阳神功的地步,只能练到第六层而止。他所写的第七层心法,自己已无法修炼,只不过是凭着聪明智慧,纵其想象,力求变化而已。张无忌所练不通的那一十九句,正是那位高人单凭空想而想错了的,似是而非,已然误入歧途。”
电影《苏乞儿》中,周星驰扮演的主人公苏乞儿最后一掌“亢龙有悔”解决掉大boss,悟到了第十八掌是前十七掌的组合。苏乞儿通过这些基本招式的组合成额外的一招,提升了掌法的威力,
通过上述案例,类比一下。
那么,FPGA的第七层,那就是能够融汇贯通前面6层的能力,实现的从顶层到底层全栈能力。
精通此层人,通常被称之为“大神”。
不过大神啥都做,容易累死!
“日盈昃,月满亏蚀”。
把握一个方向,勤于修炼,总能不断精进。
但行好事,莫问前程,心之所向,无问西东。