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
项目管理能力¶
- 交流沟通能力
其他¶
- 快速学习能力