做IP设计就是翻译官,做SOC设计就是连连看,芯片设计很简单。
呵呵🙂,别急,且听我唠唠。
做SOC才感觉自己做的是硬件
IP设计工程师每天的工作,编码,debug,接口定好了,时钟只给一个,内部不让分频。不用做过异步处理。按照公司的编码规范和flow,综合,fomal一把过,后端基本不会有你的问题。专注于算法协议,专注于代码设计,追求用比别人小30%的面积,快30%的速度来实现同样的功能。
协议、代码和波形,甚至有时候有股做软件的错觉。
做soc才感觉自己做的是芯片,做的是硬件。
时钟复位,子系统时钟方案设计,fullchip的时钟方案设计。
面向产品,根据市场需求,进行IP的选型和评估。
处理器选型,内存的容量与访问权限。整个SOC的地址规划,中断管理。
SOC的总线互联矩阵设计,性能优化评估。
memory资源的生成和管理。
综合sdc的编写或提供,综合约束和时序问题解决。
Power,整个芯片的PMIC供电,芯片内部各个power domain的划分,整个SOC低功耗设计,UPF的设计与验证。
Pinmap,芯片的布局,引脚规划,哪些可以做pinmux来复用。
后端出现的各种PR时序和约束问题支持解决,一直到Tape out。
看到了这些才有了做芯片、做硬件的感觉。
SOC整合
SOC工程师很经典的一个工作就是集成,集成各个IP成子系统,集成各个子系统成full chip,要么很多硅农自嘲做SOC就是连连看。
比起集成,其实叫整合更贴切,SOC整合,最主要的是整合人,集成代码是最简单的。各个IP的接口,时钟复位,memory的生成管理,地址的划分,中断的规划,互联总线的规划。把这些资源整合起来,才形成最终的产品。
接触的人就更多了,SOC验证出了问题先找你debug,完了发现是IP的问题。软件访问寄存器怎么都通不了,找你debug发现原来是偏移地址不对。加速器 EDA FPGA验证平台,找你要版本,不然阻塞进度。综合找你综合又不过,来分析timing。后端找你PR时序还是有问题,怎么能做前端做些优化。
做SOC主要是跟人打交道。时间碎片化。
文档和邮件写的比代码多
SOC设计工程师,相对于IP设计工程师,代码编写上确实少很多。主要是集成,代码量比较大的互联总线,有成熟的供应商ARM。更多的时间在于设计,比如互联总线的master和slave端口多少,如何分级,支持outstanding的能力是多少,是否支持out of order、interleaving、Qos。总线带宽的设计考虑,怎样设计才能保证性能最好。最终才生成一个bus matrix。然后花一点点时间集成一下。代码集成完编译lint通过,编码工作就完成了80%。
所以开会讨论,文档编写,邮件写得比代码多。每天在噼里啪啦的敲键盘,你以为在写代码,其实在写邮件、写文档。
脚本写得好,下班下得早
perl,makefile,甚至alias能用就用。但我还是要劝各位一句,人生苦短,快用Python。
至于编辑器嘛,嗯… Vim is the best txt editor!
做SOC,不用脚本是没法干活的。比如,一堆IP,每个端口都是几百上千行。你怎么手动inst。IP间的wire怎么手动写,效率极低,而且还容易出错。所以善用脚本,集成连线也不过是一键生成的事情。我写一个顶层,8000行代码,实际自己写的只有几百行,基本都是脚本生成。
做SOC第一原则就是不做重复的事情。比如几百个文件每一个文件都要对其中的一段代码进行修改,手动一个一个搞是不可能的,搞到明年了,手动还容易出错。一定要写脚本处理一劳永逸。
版本发布管理
SOC工程师需要承载代码管理发布职责,与IP设计不同,一个设计对一个验证,或者多个设计对多个验证。但都是用一个EDA平台,讲究的就是小步快跑,快速迭代。发现bug了,聊天软件说一下,改完立马上传进行回归。
SOC的级别要发布的代码规模最小也是一个子系统级别的,面向多个平台,EDA平台,加速器Zebu/Palladium,FPGA平台,综合等。多方面需求,代码库上的代码是时刻都会有人上传的,所以就需要切出一个稳定版本,保证多个平台在任意时刻取到的都是一致的。这就要用到Tags版本发布。
Tags代码版本管理,即研发到一定阶段的里程碑版本,需要包含release note,版本feature说明等。每一个IP,每一个子系统,层层流水发布版本,最后构成了一个full rtl的SOC版本给多个平台。也有一套方法学。
加班接力棒
SOC的Top肯定是最后一个freeze的,IP组的同事都休息一阵了,甚至都有时间准备开发下一版了。但是SOC的同事还在坚持擦屁股。
加班接力棒,算法加班-IP设计加班-IP验证加班-SOC设计加班-SOC验证加班-后端加班。
上游delay了,项目不能delay,时间就得往下游压缩。后端同事已经哭晕到厕所。
最后
关于SOC方向还有更多先说到这里,抛砖引玉。求点赞,求在看,求转发。
作者:硅农
文章来源:硅农
推荐阅读
- 除了PCIE,DDR,你还知道哪些IP?
- Verilog代码设计之时分复用
- PCIe 复位:FLR(Function Level Reset)
- 一文了解NLDM与CCS
- IC各细分领域公司简介以及薪资调研(CPU篇)~欢迎补充
更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。