技能分类
| 技能详细描述
| 要求
| 补充说明和建议
|
电路基础知识
| 电路理论:理解基本的电路原理,包括直流和交流电路、模拟信号和数字逻辑。电子元件:熟悉常用的电子元件,如电阻、电容、电感、二极管、晶体管等。数字逻辑:掌握基本的数字逻辑概念,包括逻辑门、触发器、计数器和寄存器。微电子基础:了解半导体物理和CMOS技术的基础知识。
| 熟悉
精通更好
| 对EE专业也就是科班出身的同学来说可能读书时代就完成了;对于非科班的,需要在平时慢慢补充这些知识,这个是基础的基础
|
编程和脚本
| 硬件描述语言:熟悉至少一种硬件描述语言,如Verilog或VHDL,SV。脚本语言:了解至少一种编程语言,如Perl,Python,TCL,这有助于编写测试代码和自动化脚本。
| 精通
| 这是吃饭的技术,一定要精通,推荐使用verilog或者SV; VHDL在公司用的比较少;
可以买一本书或者Verilog的规范放在手边随时查看;
脚本学一个就行了,其他的都类似的,建议学python。可以学一下正则表达式,这个是所有工具都会用到的,受益无穷。
|
项目入门
| 时钟和复位:熟悉时钟和复位的基本知识,异步时钟,同步复位异步释放等;基本模块:多级同步,同步FIFO,异步FIFO,SRAM读写等计算机体系基础:现代计算机的结构和基本构成要了解,基本的I2C这些需要了解
| 熟悉
| 这是做项目的入门知识,并且贯穿整个职业生涯,必须静噪掌握,然后在后面的项目中逐渐精通。复位可以看一下我之前的文章,理解了基本就差不多了。
异步FIFO一定要掌握,从原理到能够从0写一个100%没有bug的异步fifo是优秀的初级工程师的基本要求。
|
工具使用
| Linux环境:熟悉Linux环境和命令。EDA工具:能够使用基本的电子设计自动化(EDA)工具进行电路设计和仿真。VCS/VERIDI必须熟悉;版本控制:了解版本控制系统,如Git,这对于团队协作和项目跟踪至关重要。git/svn;
| 熟悉
| Linux可以买一本经典的书学习一下基本命令和使用;
EDA工具先要学会自己使用VCS能建一个小环境,来验证自己写的RTL,至少能验证没有语法错误吧。
版本控制可以跟着公司使用什么就用什么,也可以提前学习GIT,现在GIT使用的比较多。
|
软技能
| 沟通能力:能够与团队成员有效沟通,理解项目需求。文档能力:能够把自己工作和设计,通过文档或者PPT完整的展现出来。做事方式:靠谱的做事,事情闭环,汇报得体。
| 了解
| 团队沟通是最重要的工作技能,一定要刻意的学习一些;
文档是工作的呈现;
做事是一个长期习惯;
软技巧其实决定着你职场的高度,这里先不展开。
|
关于掌握程度的说明如下:技能分类
| 技能详细描述
| 要求
| 补充说明和建议
|
文档能力
| 文档编写:能够清楚明白的把你需要设计的模块描述清楚:模块划分,功能描述,时序设计
| 精通
| 做IP设计的,在进行编写RTL之前一定要写一个设计文档的初稿,再开始进行RTL coding,然后在coding过程中去完善设计文档。
特别注意的是时序是设计出来的,不是看波形凑出来的。
做IP设计的,我认为设计文档编写能力比编程能力更重要,想清楚了,RTL就不会出大的偏差,请一定要重视。
|
编程能力
| 编程能力:编程能力其实不太好量化,除了能够写出复杂的模块和优秀的PPA的模块,我认为可以分解一下:
模块拆分。把大的模块拆分成合适的模块是一直能力。编程习惯。良好优美的编写习惯和代码风格其实是最重要的能力,公司都编码规则一定要follow,这是无数人总结的经验。有时间再去探究;优化和debug能力。这个其实是建立在扎实的基础,对模块的数学和分析解决问题的基础上的,如果不知道怎么培养,先把文档写清楚就是最快的方式。借鉴的能力。很多优秀公司,比如S家的代码写的最好,A家就差一点,其他小公司就更差了,所以尽量去找S/A家的源码研究学习一下,借鉴过来。
| 精通
| 提醒一下,借鉴不是抄,你要是能在项目上找一个一模一样的模块直接来用也是你的能力,但是基本不可能,每个项目需求是不一样的。
IP设计的精髓其实就是拆分,把复杂的IP拆分为一个简单的模块,然后用基本逻辑和FIFO,SRAM实现。
编程习惯一定要养成,这不仅仅是项目考虑,也是别人从代码就能看出你靠不靠谱的考虑。
优化和debug就慢慢积累经验吧。先把自己的东西完全搞明白想明白是基础。
|
项目知识
| 项目整体:对项目要有大概了解,了解需求才能把自己的事情做好。基本模块:基础总线APB/AHB肯定会用到,可能会用到AXI,ACE等复杂总线。然后不同项目用到的基础单元不同;后端基本库:至少要了解一下工艺,后端使用的库,为综合做准备。
| 熟悉
| 这是做项目的入门知识,并且贯穿整个职业生涯,必须静噪掌握,然后在后面的项目中逐渐精通。复位可以看一下我之前的文章,理解了基本就差不多了。
异步FIFO一定要掌握,从原理到能够从0写一个100%没有bug的异步fifo是优秀的初级工程师的基本要求。
|
脚本和工具
| EDA工具:VCS/VERIDI这些需要更加熟悉,从看波形到debug都离不开;还需要学习DC综合工具。版本控制:GIT/SVN的使用要熟练。项目的版本控制流程要完全掌握,可以自己搞个文档记录一下常用命令和流程。脚本:从0开始搭一个简单的VCS 非SVM的仿真环境是写RTL和debug的基本要求。你至少要保证你给出的模块没有语法错误,基本功能能跑吧。SDC: 这个阶段需要接触SDC了,进行数字综合了。这是新手和老手的分界点。RTL其实是软件,RTL+SDC才是硬件。时序分析:需要能分析和解决时序问题。
| 熟悉
| 工具和脚本的学习,建议先系统整体的学习一下,然后在项目中提高。
SDC建议找个课程系统学习一下,S家就有系统课程,不过很贵。网上也有。最好以S家文档为基础。
|
软技能
| 沟通能力:和设计的沟通,和架构的沟通和DV的沟通,做完一个项目可以总结一下;汇报能力:能够把自己工作和设计,通过文档或者PPT完整的展现出来,让别人清楚听明白,让领导知道自己的贡献。项目流程:IP设计验证流程要熟悉和总结,做了一次必须成为熟手。
| 了解
| 沟通是工作展开的基础;
汇报是升职的基础;
|
SoC设计技能要求:如果是自研模块,请按照IP设计能力要求,下面特指购买IP的集成工作。技能分类
| 技能详细描述
| 要求
| 补充说明和建议
|
阅读能力
| 文档编写:购买的IP模块,需要把IP文档都通读理解,然后再去编写集成设计文档。
| 精通
| 首先重点通读一次,把重点要标注出来
|
文档能力
| 文档编写:主要是时钟频率,和外部接口连接等等。要按照项目的规范文档尽可能写明白。
| 精通
| 在进行编写RTL之前一定要写一个集成文档的初稿,再开始进行RTL coding,然后在coding过程中去完善设计文档。
这个阶段需要充分和上层的负责人员沟通,确保时钟频率复位等不出错。
|
专业能力
| 专业能力:专业能力就是对应的专业知识。比如ISP你必须知道图像,GPU你必须知道图形处理,PCIE/DDR你要了解协议。这些专业知识才是IP的内核,而不是把代码集成就完事了。
| 精通
| 每负责一个IP就能搞懂一个方向,以IP的专业知识为抓手,发散出去,才能进阶到下一个阶段。不然,你做再多项目都是重复没有成长的工作。
|
项目知识
| 项目整体:对项目要有大概了解,了解需求才能把自己的事情做好。基本模块:基础总线APB/AHB/AXI一定要很熟悉,经常翻阅协议。SRAM这些基本模块要有一定了解。SoC设计流程:SoC的流程要了解,lint、cdc,综合流程需要会用。后端基本库:至少要了解一下工艺,后端使用的库,为综合做准备。
| 熟悉
| SoC项目的流程到每个阶段的工具使用,这些都是有比较明确的规定。写代码的时间其实比较少,流程反而比较重要,一定要注意总结和记录。
|
脚本和工具
| EDA工具:VCS/VERIDI这些需要更加熟悉,从看波形到debug都离不开;还需要学习DC综合工具,spyglass等工具。版本控制:GIT/SVN的使用要熟练。项目的版本控制流程要完全掌握,可以自己搞个文档记录一下常用命令和流程。脚本:从0开始搭一个简单的VCS 非SVM的仿真环境是写RTL和debug的基本要求。你至少要保证你给出的模块没有语法错误,基本功能能跑吧。SDC: 这个阶段需要接触SDC了,进行数字综合了。这是新手和老手的分界点。RTL其实是软件,RTL+SDC才是硬件。时序分析:需要能分析和解决时序问题。
| 熟悉
| 工具和脚本的学习,建议先系统整体的学习一下,然后在项目中提高。
SDC建议找个课程系统学习一下,S家就有系统课程,不过很贵。网上也有。最好以S家文档为基础。
|
软技能
| 沟通能力:和设计的沟通,和架构的沟通和DV的沟通,做完一个项目可以总结一下;汇报能力:能够把自己工作和设计,通过文档或者PPT完整的展现出来,让别人清楚听明白,让领导知道自己的贡献。
| 了解
| 沟通是工作展开的基础;
汇报是升职的基础;
|
芯片设计其实分为IP设计和SoC设计两个方向。IP设计偏重于RTL设计能力,SoC设计对某个方向的专业知识和流程的熟悉。这也是俩个职业选择方向,也可以互相转换。IP设计优点是编码比较多,能够不断锻炼自己的编程能力。SoC设计需要了解的知识面比较广,可以了解芯片生产的整个流程,容易扩展眼界。好的IP设计人员到后期一定是需要了解更多的SoC的知识,而好的SoC设计一定需要了解到IP内部。技能分类
| 技能详细描述
| 要求
| 补充说明和建议
|
阅读能力
| 文档编写:购买的IP模块,需要把IP文档都通读理解,然后再去编写集成设计文档。
| 精通
| 首先重点通读一次,把重点要标注出来
|
文档能力
| 文档编写:主要是时钟频率,和外部接口连接等等。要按照项目的规范文档尽可能写明白。
| 精通
| 在进行编写RTL之前一定要写一个集成文档的初稿,再开始进行RTL coding,然后在coding过程中去完善设计文档。
这个阶段你自己就必须去设计子系统的架构,然后和内部模块负责人进行沟通。
|
专业能力
| 子系统架构: 理解子系统的架构,包括处理器、存储器、外设接口等,并能够设计子系统的框架。
系统集成: 能够将不同的模块和IP核集成为子系统,并确保它们之间的兼容性和协同工作。专业知识:内部模块了解到越多越好。总线知识:APB/AHB/AXI达到精通级别低功耗技术:对低功耗技术和UPF要熟悉
| 精通
| 这个阶段系统方案是一个重点,比如低功耗技术,Harden的划分等等。这个在子系统的架构设计就必须考虑,并且不断优化和演进。
|
项目知识
| 项目整体:对项目要有完整了解,非常了解子系统的需求才能把自己的事情做好。基本模块:基本模块,sram都要比较熟悉。SoC设计流程:SoC的流程要熟悉,lint、cdc,综合流程需要会用。后端基本库:后端流程和支持都要掌握,包括综合和时序分析等。
| 熟悉
| 子系统的负责人对流程是直接负责的,这个阶段复杂的事情会比较多,责任也比较大。所以一定要能达到你指导别人的程度。
|
脚本和工具
| 工具和脚本:熟悉是基本要求,越了解工作越顺利。
| 熟悉
| SDC和CDC是重点。
|
软技能
| 沟通能力:和设计的沟通,和架构的沟通和DV的沟通,还有和子系统内部模块负责人沟通;汇报能力:能够把自己工作和设计,通过文档或者PPT完整的展现出来,让别人清楚听明白,让领导知道自己的贡献。
团队领导: 能够在团队中担任领导角色,指导其他设计师,并协调跨部门的工作。
项目管理: 具备项目管理能力,能够规划项目时间表,跟踪进度,并确保按时交付。
| 了解
| 子系统负责人事实上是这个方向的负责人,必须对内部一切负责。
也是对外接口,负责和软件,fpga,后端人员对接。
|
一般需要5年以上才能负责一个子系统,当然也有能力很强或者机遇很好的2~3年就开始负责子系统。这个阶段你需要掌握的了解到知识就非常多,需要处理的事情也非常多。不仅仅是对技术的考验也是对做人做事的考验。