FPGAer 转战 IC 需要学习哪些技能?

2020-11-11 12:19:26 浏览数 (1)

上图:

FPGA 开发经验也有助于求职 SoC 设计/验证相关的工作,而不是仅限于 FPGA 相关的工作。

个人观点:SoC /数字芯片类岗位需要两类技能:

1)概念与方法论

2)工具使用。这里以 FPGAer 转向 ICer 的思路分析。括号中的数字代表笔者认为的 FPGAer 普遍掌握的程度。

1)概念与方法论,包括:

  1. 数据芯片相关基础知识,比如数电,Verilog 编码,代码与电路的映射,典型模块与电路,模块级设计思想,测试平台搭建与逻辑功能验证。这部分可以说和 FPGA 开发经验是完全共通的(80%)
  2. 数字芯片进阶知识,比如低功耗设计,可测试性设计,跨时钟域、电压域设计,静态时序分析,形式验证,UVM 验证,综合等,这部分在 FPGA 开发中是不涉及的,或因为工具代劳或者 FPGA 开发中不重要而被忽视的。(30%)
  3. 数字芯片周边知识,比如内部与外部的总线原理或使用经历(DDR,serdes,PCIE,以太网,多媒体接口等),应用领域的相关知识(如图像处理,网络通信等)。由于 FPGAer 从事开发的领域大多是在通信或者图像处理,因此这部分有比较高的掌握程度。(60%)
  4. 团队合作,如果说 FPGA 开发单打独斗是有可能的,那么芯片的开发一定是团队合作的。FPGAer 在芯片岗位可能要适应更大,专业领域跨越更广的团队以及密切的团队合作需求。(50%)

2)工具,包括:

  1. EDA,IC 开发会使用许多 EDA 工具,这些工具显然是 FPGAer 没接触过的。但是工具的使用有一些共性,比如 Vivado 的约束语言 XDC 的语法来自 IC 业界通用的 SDC,据说 Vivado 的时序分析工具据说来自于 IC 业界常用的时序约束工具 PT 。尽管如此,工具还是需要去学习以及掌握(10%)
  2. 脚本语言,IC 过程中为了更高效地使用 EDA 工具,会使用和编写很多脚本。尽管当前 FPGA 工具对于基于 TCL 命令行的开发流程也有不错的支持,但大多数人包括笔者自己目前用的更多的还是 GUI 界面。脚本语言包括阅读已有代码和编写新代码两部分,目前“祖传脚本”大都是 Perl 编写的,而 EDA 工具对 TCL 有很好的支持,此为 shell 脚本也较为常用,Python 则是后起之秀。建议 FPGAer 结合自己的基础选择一门脚本语言进行修仙(10-90%,取决个人情况)
  3. 操作系统,也需要操作系统技能?是的,但仅限于掌握 Linux 的使用。由于 FPGA 的 EDA 工具基于 Java 开发,他们都提供体验一致的 Linux 版本。但笔者相信大家用的比较多的还是 Windows 版本,甚至有的朋友对 Linux 接触很少。IC 设计公司的合作工作模式,使所有 IC 公司都会使用支持多用户的 Linux 作为工作平台,而不是单用户的 Windows。所以有必要掌握 Linux 系统的基本使用(但不用你掌握如何安装与卸载软件,这一 Linux 上的困难工作^_^)。以及 Vim 等编辑器的使用,是的,因为后台系统是不能联网的,所以你不能安装你自己喜欢的编辑器,比如 VSCode ...(10-90%,取决个人情况)

插曲:这里用的是知乎热门公司的招聘启事,放大看下有一条描述:

唔,我只能说半导体行业对于学历和专业是有一些要求,但此时(2020)招聘市场相对比较紧俏,非科班或者名校出身的同学,如果有相关的项目经历或者有很好的自学基础,还是可以参与到这个在国内相对来说“火热”的行业的。

本文授权转发自知乎用户 ljgibbs 链接:https://www.zhihu.com/people/ljgibbs

0 人点赞