Skip to content

CAD 工程师的技能要求

国内跟国外的工程师文化及CAD文化差别都巨大,国外CAD文化已十分成熟,有极细的分工。而国内大部分CAD还处在support design team的初级阶段。撇开这些差别,就这个职业自身而言,需要具备:

第一个层面:用软件工程的思维和能力,解决IC设计中几个方向的问题:自动化、流程构建、EDA工具深入了解。

第二个层面:对 IC 设计的各个环节,至少熟悉两三个领域。软件行业有个词叫领域驱动设计,意思就是你要具备你所服务的这个领域的领域知识,包括领域工具和领域设计,能够提供将 IC 相关工作自动化的能力,

第三个层面:要有产品思维,要有产品经理的思维模型。特别是在国内,你需要有主动的发掘用户痛点的能力和把解决方案产品化的能力。

CAD 和 EDA 工程师基本须知

1. 介绍

关于 CAD(Computer Aided Design)和 EDA(Electronic Design Automation)工程师职缺,两者可以说是一样的东西。主要是针对IC设计产业做辅助设计的程序开发,职缺相关科系为电机、电子、资工为主。

由于领域属于各科系的交集区域(或称灰色领域),因此该职缺较乏人问津,学术产业也较少资源培养相关人才,比较偏向企业中才能培养的人才。该职缺除了需具有软件设计的算法优化能力,还须了解硬件电路设计的基本知识,相关人才很难同时具备这些条件,因此组织常会将软件与硬件拆开来寻找人才。

2. 相关产业

目前全球 EDA 三大公司分别是新思(Synopsys)、益华(Cadence)和明导(Mentor),新思和益华两者竞争市占率第一名的位置。这三家公司在台湾称之为真外商的纯软件公司,员工年薪都非常可观(以台湾平均收入来说),但由于欧美硬件的实力普遍较弱,因此该产业在国外属于夕阳产业,主要专攻亚洲地区的市场(例如台湾、韩国),目前正积极往大陆市场发展,但由于中美贸易战的影响,恐怕不是那么好攻占。

除了外商之外,台湾普遍 IC 设计产业也都会有自家的团队,也就是 CAD 工程师,主要负责维护和二次开发向外商买进的EDA Tool。但 CAD 部门的职缺和规模相对于固件的职缺来说是明显较少的,因此网上也有不少人建议社会新鲜人不该以CAD 作为第一份工作。

3. 背景知识

CAD 或 EDA 工程师,最好需具有软硬体的相关知识,下列将列出所需知识的主题:

Verilog: 硬件描述语言,主要用于描述、设计数位逻辑单元的行为,在集成电路中是常见的语言。在层级中,Verilog 是属于较底层的语言,非常靠近晶体管和逻辑门单元,程序语法和指令集或组语较相似。

RTL:全名为(Register-Transfer Lebel),是一种同步数位电路的抽象模型,该模型是根据信号在寄存器间、组合逻辑装置和总线的逻辑单元之间的流动。和Verilog相比,层级较属于高层的语言,语法和C、Java较相似。

C/C++ 程序语言:是在Linux上开发EDA或基于EDA做二次开发的基本程序语法,对资工背景的工程师来说,应该是属于基本功夫。

Tcl/Tk:脚本语言,主要用于控制C/C++所开发的指令(执行程序),由于该脚本语言对文字传递、参数设定等有较为方便和强大的能力,在EDA或CAD中是不可或缺的角色。

C-shell:同Tcl/Tk。

Python:在CAD或EDA领域中,用于取代Tcl/Tk的程序语言,这是台积电作为先锋带领的趋势,未来不确定是否为主流。

GDSII Format:是一种集成电路版图的数据转换格式,供EDA以2D的方式来呈现各层级(Layer)电路设计的版图(Circuit of Layout)。

Netlist(SPICE Format):用基础的逻辑门来描述数位电路连接的情况,传递电路连接方面的信息。若需要包含更多的信息,通常会用硬件描述语言来描述。

Leaf Cell Library: Leaf Cell是电路设计的基本的单位,而Leaf Cell Library是一种标准元件库,横跨电路前端和后端的设计,涉及到设计流程中各步骤,甚至到各家厂商的软件。Leaf Cell Library分成两大类,一类是用来组成电路,另一类是在芯片实体布局(Physical Layout)时做辅助的功能,一般标准元件库会提供的信息有:

1.元件实体布局(Physical Layout)

2.逻辑(Logic)信息

3.时序(Timing)信息

4.功率(Power)信息

Layout Domain: Layout指晶体管和电路设计的版图,Layout Domain通常指的是电路版图设计相关的知识。

Yacc/Bison:是Unix/Linux用来开发编译器的编译器,全名为Yet Anther Compiler Compiler(Yacc)。

4. 参考来源

  • RTL
  • Verilog
  • Netlist
  • Netlist 2

个人总结

程序开发能力

  • 脚本编写
  • Web 开发
  • 大数据开发
  • 数据分析

IT 架构能力

运维管理能力

  • Linux/Unix系统
  • Troubleshooting

芯片设计能力

  • EDA工具和数据库管理
  • Troubleshooting

项目管理能力

  • 交流沟通能力

其他

  • 快速学习能力