很多人想要转行FPGA,但不知道该如何选择岗位,也不了解这些岗位的具体工作内容以及需要哪些技能?选择合适的岗位对职业发展至关重要,尤其是在FPGA行业,选择时需要根据自己的条件和兴趣来定位岗位。
前端设计工程师
- 读文档,写文档:数字前端设计工程师需要阅读大量的协议文档,如PCIe、Ethernet、USB等,文档内容涉及到硬件协议、设计需求等。工作中,文档的编写和理解是非常重要的,比如Function spec和Design spec是前端设计工程师的必备文档。
- 编程写代码:主要使用Verilog或VHDL来编写RTL代码,有时也需要用到C语言或C++。代码写作是将设计转化为硬件电路的关键步骤。优秀的工程师会注重代码风格,因为最终代码会生成硬件电路,对硬件实现有很大的影响。如果从事SoC设计的工程师,还需要对CPU架构有所了解。
- 各种Debug:调试是前端设计工程师工作中非常重要的部分,通常80%的时间都会用于调试和修复问题,而不仅仅是编写代码。调试贯穿整个开发流程,包括设计、仿真等各个阶段。
- Support:前端设计工程师需要支持从设计到验证的各个环节,甚至到FPGA原型验证和测试阶段,确保设计的正确性和实现性。
验证工程师
- 读文档,写文档:验证工程师需要编写Verification spec和Test plan等文档,确保设计符合需求并可以验证。
- 编程搭建验证平台:验证平台的搭建通常采用SystemVerilog/UVM等技术。如果是做SoC设计,还需要掌握C或C++。此外,验证工程师也会使用Python、Perl等脚本语言进行工作。
- Debug:编写测试用例,进行仿真,确保设计在实际运行中没有缺陷。验证工程师需要对设计进行深入测试,发现潜在的设计问题,并进行调试。
- Support:验证工程师需要密切配合前端设计工程师,进行代码的功能验证,确保设计无误,并支持在后续的硬件测试阶段发现并修复问题。
核心能力:
- 熟悉硬件描述语言,如Verilog或VHDL
- 良好的编程能力和脚本语言知识
- 高效的调试能力
后端设计工程师
后端设计是FPGA设计流程中的重要环节,涉及到从RTL代码到最终芯片的布局布线,确保芯片可以在物理层面实现预期的功能。
- 逻辑综合:将编写的RTL代码转换为网表,并进行优化,确保设计的时序和功能符合预期。
- 自动布局布线:根据网表,进行布局布线,将设计转化为芯片的物理版图。
- 静态时序分析(STA):时序分析是后端设计的核心部分,如何修复时序问题、确保时序收敛是后端设计工程师的重要任务。
- 物理验证:确保设计的物理版图满足设计规则检查(DRC)和版图与原始设计的一致性检查(LVS)。
- 功耗分析:对芯片进行功耗估算,并分析IR-drop、EM等物理问题,确保芯片能在预定功耗范围内正常工作。
核心能力:
- 熟悉EDA工具,如Cadence Innovus、Synopsys IC Compiler等
- 精通TCL、Verilog、Perl等脚本语言
- 良好的分析能力和调试技能
如何选择岗位
FPGA前端设计
FPGA前端设计对学术背景要求较高,通常要求本科及以上学历,专业方向包括电子信息、微电子、通信工程、计算机等。如果你有强烈的硬件设计兴趣且具备一定的编程能力,前端设计是一个不错的选择。
FPGA验证工程师
验证工程师适合那些拥有理工科背景且有一定编程基础的人,如计算机、自动化、物理、电子工程等专业。该岗位的需求量大,工作内容主要是验证FPGA设计的正确性,需要掌握Verilog或VHDL等硬件语言,并能够使用仿真工具进行功能验证。
FPGA后端设计
FPGA后端设计对工程师的综合能力要求较高,尤其是在EDA工具使用和时序分析方面。如果你有较强的数学和物理背景,并且对芯片物理设计有兴趣,后端设计将是一个不错的选择。
总结
转行到FPGA行业需要根据自己的学历、背景和兴趣选择适合的岗位。如果你是从零基础开始,可以先从FPGA验证工程师入手,因为该岗位对编程能力的要求相对较低。对于具备更强设计能力和学习能力的人,前端设计和后端设计工程师则是更好的选择。选择时,要结合自己的实际情况做出最合适的判断。