很多人学习FPGA后,接下来进入进阶提升技术环节,一个专业优秀的FPGA工程师,需要学习哪些知识,如何提升这方面的能力?上篇我们讲述了入门FPGA的学习路线,这篇文将讲述进阶FPGA的路线学习,希望对小伙伴有所帮助。
进阶学习FPGA主要分为四方面,分别是高级开发技巧、领域专用知识、职业工作技能、沟通与协作。
在进阶学习FPGA,我会建议小伙伴们关注一线厂商对FPGA工程师的招聘需求,了解自己细分领域的所需知识,对自己的未来有一定的规划。
1、高级开发技巧
这类知识主要以FPGA和数字集成电路为主,以设计验证、FPGA约束优化等为重点,其中的“设计”是指逻辑设计,用RTL语言实现复杂模块或系统,打个比方,面试通常会大量提到信号的跨时钟域处理。这种问题基本上是FIFO设计及它的一系列变种问题。这也极大地考验我们的思维方式和设计习惯,虽然在实际开发中我们无需从头到尾写出一个,但了解一定的高级开发技巧,在面试中在项目开发中都有极大的帮助,并且也能提高工作效率,减少失误。而“验证”是一个非常复杂的领域,在芯片的开发制造过程中,起码有超过一半时间花在验证上,大部FPGA工程师基本上是靠验证调试度过工作,验证不仅耗时还费精力,因为它要求我们尽可能多地检查到所有可能的设计功能和状态,找出改正其中的“Bug”。
一般来说,很多工程师难以做到全面验证,这就考验工程师的科学制定验证计划配合进阶的验证方法学,构建更加高效的验证环境,如业界常用的随机约束UVM、形式化等。
除此之外,FPGA的优化和约束也是重要内容,其中包括对时序、面积、功耗的约束和优化。
若是想更了解FPGA时序约束,可以来看看这篇《FPGA时序约束视频教程》。
2、领域专用知识
FPGA通常来说不是单独的存在,得益于诸多特性,它经常应用在多种不同的领域,举个例子,近年来大火的智能网卡,是FPGA在数据中心的应用,原理可以概括为把部分在CPU里运行的应用卸载到FPGA里执行,这一过程需要涉及到多个领域的专业知识,如网络协议栈、接口协议、AI等。
所以小伙伴们进阶学习FPGA,需要联系到目标职位和项目需求,有目的有计划地去学习相关领域的专业知识。
3、职业工作技能
在企业里,几乎全部的开发环境是在Linux完成,而Linux也是FPGA工程师需要学习的职业工作技能之一,除了常用的EDA软件外,还需要我们熟练掌握Linux系统基本量、相关的脚本语言,如Perl、Python等,学习这些也有利于提高我们的工作效率。
除此之外,还有原理图设计、硬件测试、网络分析也是需要学习的职业技能之一,小伙伴们可关注下企业招聘需求,参考自己需要学习什么的工作技能。
4、沟通与协作
FPGA工程师除了硬实力,也不能忽略软实力,这包括沟通、时间管理、团队协作、自学能力等。很多项目是由多个团队协作组成的,因此如何和不同的团队来沟通项目的内容、制定项目的流程、掌握项目的进度、如何解决项目难题等都是工程师常遇见的问题。
暂无评论