从个人角度,我把芯片工作的知识积累分为两个部分:场景浸入和理论深究。
1什么是场景浸入?
从大的方面来说就是实战经验。例如你在菊厂参与多个大型SOC项目,负责过多个模块的前后端多个环节的工作,这就是场景浸入,也就是实战经验。
从小方面来说就是一个一个的case和对应的solution。举个很简单的例子,我们修保持时间的时序违例时,在endpoint插buffer是通行做法,因为这样可以增加一级cell delay且不会影响除该path以外的其他path的时序。
2什么是理论深究?
就是不能受限于接触过的case和solution,而是要深入分析和扩展背后的原理,这样才能触类旁通。
还是举一个插buffer的例子,插buffer只能修保持时间违例吗?不是的,插buffer也可以修建立时间违例,背后的原理是合理的位置插buffer可以修max transition、修max fanout、修glitch和Cross talk,这些都能优化建立时间。
3为什么很多时候企业会要求科班出身?
因为接触了同样的case的工程师,预先具有理论背景的人更容易融会贯通,形成自己的知识体系和案例库。对企业来说,培养成本更低,培养收益更大。
4不要把场景中接触的任何经验和方法认为理所当然。
我曾经在面试中被问到两个问题让我记忆犹新。第一个问题:多周期路径中,是不是时序路径的slack是正的就行?答案当然不是,因为如果slack正的太厉害,那么信号可能就不是在多周期的最后一个周期被采集,电路就出现错误了;当然如果最后时钟源的频率直接降频到多周期对应的实际频率,这个问题就不会出现。第二个问题:你接触的power plan都是横竖交错的stripe吗?为什么不用全是横的或者全是竖直的stripe?这个问题留给各位思考。
5对于初学者如何提高自己的知识水平?
理论深究重点是理论背景和思维习惯。场景浸入重点是在在实战中练手。初学者最重要的是接触实际的场景,并在实战中证明或提升自己的思维习惯。