Hi,
刚好有要回答别人打到一半的文件,
趁这次整个打完,
根据我公司的SSD IC开发流程,
简单跟你说说需要哪些技能吧,
你就看看会不会做,不会的就是该学的.
(1) 规划阶段
这主要是主管,PM,和资深工程师的事,
先决定有哪些规格,
例如NVMe要支援到哪个版本,
有什么Optional能力
Flash要支援那些种类,
Performance要达到多少,
再来看看现有的IP够不够用,
不足的部分是要自己做,还是买新IP
这阶段需要的技能,
就是各domain的深度和广度,
靠持续的学习没捷径
(2) 前端阶段
就是撰写RTL code把整个IC实现,
建立开发环境,整合各个IP,
验证各项功能
这阶段是主要工作,需要的技能如下
(a) RTL coding
Verilog语法特性是基本常识,
(其他RTL像VHDL也一样)
请不要把写verilog当成写软件,
最好知道自己写的每一行,
会合成出什么电路,
进一步要懂跨clock domain怎么sync.
(b) verificaiton by simulation
用NCverilog或VCS之类的跑模拟,
建test bench来验证功能,
如果会用SystemVerilog,
或甚至UVM来加强/加速验证也不错
(c) verification by FPGA
把RTL烧进FPGA做功能性和大量验证,
因为速度上不了ASIC的速度,
所以只有功能性,
要上去得要超贵的emulator,
大量资料是因为simulation跑个1ms,
就要半小时一小时,
用FPGA burn in跑个三天三夜都可以.
要烧进FPGA,
使用的tool要看FPGA品牌,
我公司用的是Xilinx,
使用的就是它家的Vivado,
原本可以从头到尾都靠Vivado,
但为了更好的Synthsis结果,
我们有换Synplify.
(d)简单C语言能力
如果有和FW合作,
自己负责的IP有时总是要和FW debug,
所以要基本的看得懂他们在做什么事,
如果可以,能看懂assembly code更好,
因为那才是CPU真正做的事,
有时候因为笔误,
还是preprocesser directives,
会和C code要做的不一样.
(3) 后端阶段
RTL开发到一定程度,
就会开始走design flow,
(各公司有自己的名字)
先决定好SRAM的大小,数量,和形状,
然后进行LEC, synthesis, P&R, STA...
如果公司够大这些有另外的人负责,
数位IC工程师要做的,
就是当design flow的人在说timing不行,
像是进出SRAM的timing太差,
或是DFF a到DFF b的距离太长,
就要想办法加DFF,
或改设计让timing能过.
再来走到更后面,
当netlist的timing资讯抽出来了,
就要进行post-simulation,
和verificaiton by simulation差不多,
只是要在verilog描述挂sdf档,
这时候会遭遇通常不是行为错,
而是SRAM output或没reset的DFF,
所产生的unknown会传递到整个电路,
要从一片红的波形逐个往前追到源头.
(4) ASIC阶段
后端人员解完所有timing,
前端人员跑完各制程corner的post sim,
就可以送到晶圆厂投片,
大家开心放假了,
等wafer出来,要先做CP测试,
封装后还有FT测试,
这个都是前端阶段由比较资深的人加进去的基本测试电路,
可以刷掉因为制程或封装造成的损伤.
等Chip回到公司那天,
第一步先让chip能正常动,
板子上错件,接错线,
各种人类可以造成的错误都有可能,
再来就是FPGA跑过的各种unit test, burn in test都接着跑,
最后还有各种相容性测试,
各客户平的的问题,
都是见招拆招,和FW一起debug
(通常FW会先自己弄,他们比较辛苦).
大概就是这样,
硕班会有超大型积体电路设计的课,
记得要修,
实验室有规定要CIC投片才能毕业的,
可以学更多(应征面谈加分),
如果可以,硕班学历洗高一点,
应征第一份工作有帮助。