初入IC行业后端学习建议
很多同学毕业以后,能进到一个不错的公司,有大公司,有小公司,各有各的好,各有各的弊端。在小公司,可能事事亲历亲为,学习的东西比较多,但也有个问题,缺乏流程化管理,小公司带来的问题正是大公司不担心的;大公司每个人好比一个螺丝钉,在各自的岗位上做着自己的事情,公司的流程规范一大推,这样的好处在于规范,专业,而坏处在于局限,知识面狭窄。
那么怎样才能在一个大公司里,尤其是一个比较开放的大公司里扩展自己的知识面呢?我这里说的只是扩展自己的知识面,对于经验,大公司里很难让你多方面去尝试,毕竟公司追求的是利益,而不像学校还有育人的职责。
言归正传,当你进入一个大公司的时候,很可能由于你的知识局限性,公司人员配置安排,将你安排在一个业界并不很热的领域,但又是不可缺少的,这里我提出的建议都是针对IC Backend的,只是我自己身在其中,也是个过来人,其他专业可以触类旁通。
首先是我们怎么看待被安排的职位,怨天尤人不行,好不容易找到的工作,老板还要看performance的,唯有好好将本职工作做好,本着行行出状元的想法,本着专家的名头苦干。当你逐渐融入你自己的工作中,对自己的工作有一定的心得,得心应手以后,这个时候你应该觉得工作无法如此:非也非也,很大程度上是完善的项目管理和完备的流程在帮你的忙,想想看,在一个大公司,那么多人,那么多螺丝钉,大公司的管理就是要缺了谁都可以,利用完善的流程和管理模式来应对高质量的品控和频繁的人员流动。所以你自认为的得心应手完全是站在了巨人的肩膀上。下面一步该怎么办呢?脱离公司流程,了解工作本质,深入本职工作,对本职工作创新。对本职工作的创新这一点公司应该是欢迎的,当你在这一方面有所建树之后,那你可以关注我下面将会讲的对本职工作上游和下游的涉足。
本职工作的上游可能是更高level的建模,而下游可能是更具体的生产方面,软件方面的事情,所以就算是同在IC行业,只是不同的的分工也隔一做山。要爬山就要先准备工具,找向导,向导就是找到一个好的mentor,好的导师可以少走很多弯路。IC行业工具的重要性毋庸置疑,没有工具的进步,“大规模”集成电路也发展不起来,工欲善其事必先利其器,这句话到了这里特别的窝心。准备工作做好了,接下来呢?
熟悉工具的过程是比较痛苦的,很多公司有on-job training,这个成长的过程没有错,但是如果你不是专做比如STA的,而是偶尔做一下,简单的做一下,你的程度最多也就是个知晓(known),可能连熟悉(familiar)也谈不上,更不要说精通(specialize)了。在没有on-job training的机会的情况下,怎么权衡呢?这就要发回mentor的作用了,将mentor做过的比较复杂的东西拿过来做,不是纯粹的跑flow,run起来第二天看结果OK就没事了,将自己的flow去run一遍,和mentor的结果做对比,不足之处先找flow的不同,在找mentor看结果差异到底是什么导致的。这样不仅熟悉了工具,也熟悉了本公司的design,为将来做更多的事情打好基础。其次对资源的利用也很重要,有些间接经验可以在论坛,公司内部的wiki,小组内部的讨论组等地方获得,包括工具的manual和公司methodology文档。
当你碰过一两个相关的项目之后,你本职工作肯定会与相关你想学习的领域的人有共事,当有交叉的时候,你就有学习的机会了,特别是跨界的学习,首先是你的工作怎样才能给你的上下游更多的反馈与便利,其次你的上下游怎样能给你更多的反馈与便利,这个是你创新的一个很好的点。火花都是在交叉学科碰出来的比较多。
在公司内部打造自己的品牌,不要太突出,也不要太静默,有自己的专长,不在技术方面孤立自己,这样就会使得一方面你的工作不可替代,另外一方面使得不能替代而职业发展原地停滞。大公司的技术,流程希望是可复制的,所以你的创新必须要可复制,跟上公司流程,方便品控,方便后来人接手。
到此为止,你的精力如果够用的话,还可以往下发展,补习一些上游的上游,下游的下游,做一个更宏观的思考。或者可以跨出当前的职位,谋求一个更高的职位,除了技术,再发展管理,当前没有管理职位,可能当前的部门限制了你的发展,需要你去寻求新的机会了。
下面,我对自己从学校出来后到PR的4年的一个小小的总结,可能对一些不在从事PR工作,而想对PR有所了解的人做个参考。
PR是什么?Place and Route,其实如果身在PR的职位上,经历几个项目就对PR有所了解了,入门以后就是练功的过程了。那么先讲怎样入门,和很多学习一样,如果公司有现成的流程,不管怎样,一路run到底,将中间结果以及最终结果保存好,可以之后回头看。比较自动化的过程是Place,Route,比较考分析的是FP和CTS,其他的比如PostCTS或者PostRoute都是优化的过程。我以Q&A的形式对学习过程中比较关心和重要的问题逐一展开。
Q1. 读入数据这一步重要吗?
A1:很多人会忽略这一步,觉得就是读进网标,读入sdc,upf之类的,这一步也很重要,不同的design team给的数据是比较不同的,有些很顺利,后面不会有坑,有些不叫dirty,一开始没什么问题,后来一顿坑。所以要有一个意识,你拿到的东西将设是dirty的,为了我后面flow的顺利,需要做一个QoR的check,保证一些可能出问题的地方,在初始时就修正掉了。
Q2:PR除了Place,CTS,Routing还要关注什么?
A2:还要关注Physical Work,很多时候这些事情繁琐而不能避免,如果你是做PV的,肯定会意识到这些Physical Work的重要性,因为sign off还是要有很多DRC的check。这些还涉及很多面,Power,Floorplan等,环环相扣。
Q3:怎么看report,应该看那些report?
A3:report分很多种,比如你关注timing,那么timing report在你眼里是最重要的,如果你关注cell的placement,那么legaize的report是你需要的,如果你关注power,ICG和VT的相关report是你需要的,所以说report没有重要与否,只有关注与否。比如你是做physical work的,给top画PG和custom routing,Timing report对你来说一点都没有用,你可能要更关心DRC report等。
Q4:flow有问题怎么办?
A4:flow是人写的,经过验证适合大部分project,但不表示flow适合所有project。而且flow的学习需要拆开看里面的东西,你才能学到真材实料。除此之外,求助EDA的在线答疑系统比如synopsys的solvnet.synopsys.com,cadence的support.cadence.com等等。当然向mentor请教是最直接的方法。
Q5:怎么发挥自己的主观能动性?
A5:多参加Manager或者Top owner等剧集的会议,了解项目进度,顺利也好,阻滞也好,想想如果换做你会怎么解决,不要想自己一个项目经验都没有就不需要考虑这些问题。多参加Review等,这些是实实在在的间接经验。可以自己在某些已有的project上实验问题和思考解决方案。
其他很detail的问题比如,怎样才能做好CTS,估计可以开个Seminar了,可以找mentor细细聊聊相关经验。这里只是对没有做PR人而想学习PR的一些同志的简单建议,如果有问题,大家可以提出,我会将它加入到文中分享给大家。