首页 > 代码库 > [Z]芯片设计经验
[Z]芯片设计经验
[Z]芯片设计经验 | 发布时间:2011-05-16 23:10:39 |
技术类别:CPLD/FPGA | ?? |
我们很幸运,在现在这个年代在这个专业方向开始自己的职业生涯。从过去的20年到未来的20年中,在微电子产业方向现在这个年代肯定是最好的黄金时代。尤其是在中国,我们现在几乎拥有这个行业所需要的一切要素,而且正在飞快的发展。
技术方面,5年前,我们所接触和了解的技术远远落后于整个产业的水平。设计工艺差距,EDA软件的差距,教科书差距,国内整体技术水平差距,等等。现在这些差距正在逐渐缩小,很多方面基本上已经消失。例如eda软件,拜托网络和linux所赐,普通的国内用户可以用到最新的eda软件和设计流程。未来的一段时间内,国内整体设计水平会进一步的提升,进一步的减少技术方面的差距。
市场方面,过去5年中,全球电子产业的加工中心加速向国内转移,国内消费电子市场逐渐崛起。由于和市场天然的贴近,国内芯片设计产业在市场方面有天然的优势。过去两年内,珠海炬力和北京中星微成功。
资金和产业环境方面,微电子产业方面的投资从2004年开始一直处于国内VC投资项目前3名。国内企业有着天然的成本优势,因此在产业的竞争中有很强的优势。过去几年中很多国外企业在国内成立设计中心,而且这方面趋势随着国内整体技术和产业链的完整会越来越明显。产业环境方面,国内基本上已经有非常完善的产业链。从foundry到封装,测试,失效分析,整个链条已经非常完善。未来几年,国内必将涌现出一批高水平的设计公司。
客观上来看,国内微电子产业发展所必需的客观条件已经基本具备,我们现在正处在产业高速发展的初期。正好现在,正好这个专业方向是我们的黄金时代。
2、自我的修炼(仅强调技术方面)
以我自己的经验,在这个不错的大环境中,在投身于这个产业前我们所需要的个人积累和修炼大致看起来,需要下面几个方面:
知识储备
知识储备,这方面首先是基本的基础专业知识。例如对于很多的具体工作方向,象信号与系统,数字信号处理,微电子工艺基础,基本的模拟/数字电子线路,这方面的知识是不可缺乏的,无论是从事数字或者是模拟方面工作。另外,对于不同的专业方向,也需要更为深入和广泛的不同方向范围内的知识储备。
例如对于一个优秀的CMOS模拟芯片设计工程师,除了需要知道几乎所有的基本模拟电路的工作原理和原型电路实现外,对于功率和高频电路的熟悉与了解,对于数字电路构成模块的熟悉和了解,对于通信系统熟悉和了解,对数字系统的熟悉和了解都不会是无用的。跨学科的知识会很大程度上增强一个工程师了解和解决问题的能力。尤其是在现在,CMOS技术主导了现在消费电子芯片设计领域,CMOS非常有优势的一个方向就是数字处理。那么在系统中合适的采用数字处理可以增强性能和减小代价。
在自己的专业方向,对相关模块和结构相关知识的积累是很重要的。这方面的积累就我个人的感觉就和背单词一样。我们设计的电路中,极少情况下才会用到原创的东西。和天下文章一大抄一样,天下芯片也是一样的。这样,在合适的时候选取合适的电路结构,并进行正确的裁减,就是我们大多数情况下需要做的事情。和写文章一样,只有自己拥有了大量的词汇量,那么才能在需要用到的时候挑选出最合适的那个。巧媳妇难为无米之炊,首先把材料备齐了,一桌盛宴才可能开始动工。
很多时候,对应于一个特定的功能模块,选取正确的电路结构折中是一条非常艰难并且充满风险的道路。需要强调的一点就是和很多人的看法不一样,芯片设计里面永远没有最好的电路,只有最合适的电路,合适就是恰如其分的满足设计个方面要求。包括性能(设计性能包括典型指标,噪声,功耗,电源工作范围,PSSR,温度范围,ESD等等),面积,良品率等,还包括设计风险,设计代价(时间,金钱,对其他模块性能指标的依赖性),可测试性,封装要求等等各个方面。在得到一个合适的设计的过程中,设计者的直觉将会起到非常重要的作用,一个优秀的设计工程师的直觉可以很大的加快设计速度,迅速得到合理的设计折中。
那么为了培养出良好的直觉,是需要长时间的付出艰苦的努力才能得逐渐得到的。主要需要在如下几个方面努力:
首先,深入的学习基础构成模块。深刻的理解一个模块,广泛了解不同的实现方法和取舍手段并比较差异,明白差异在不同系统中的折中。深刻理解,例如对于一个2级miller补偿的运放,那么需要从各个方面的折中来分析,例如每个晶体管对系统个方面性能的影响,包括功耗,增益,增益带宽积,压摆率,输出阻抗,噪声,面积,电源性能(过高和过低),PSRR,直流漂移,等等。首先是分析(仿真/手工计算)。然后再回头考虑对每个性能的调节如何通过修改电路来进行。这样才会真正的明白这个电路,下次用到时就可以信手拈来。这样学习的电路多了后,自然就会积累出足够的对电路模块直觉。对于数字方面也是一样,首先是基础实现模块,然后是协议和算法。我们分析的功能模块多了,明白各种协议自身的取舍原则和结果,自然下次碰到类似问题就胸有成竹。这样的学习开始困难,到后来,可能只需要花点时间看一看想一想,就能够明白电路背后的精义,和背单词很象。刚开始是单词本上的单词才背一背,再后来就是背词典,再往后就是所有不认得的都要背一背。
其次是广泛的了解相关的知识和系统。相关的资料大概都需要看一看,可以看看摘要,甚至也可以只记个名字,这样以后忽悠人的时候也会多一些谈资么。多了解这个方向的研究历史,现状和发展方向,以及这个方向在不同系统中的应用前景和特点。对于某一个具体的专业方向,我觉得了解过去10年20年中人们是如何研究和了解这个咚咚,现在的发展方向,和未来的应用前景方面是需要花费一些功夫的。和Google和图书馆可以找到很多这方面的资料。大量的阅读可以建立一个对整个方向的宏观概念,对于自己以后深入研究和了解某个专门方向会很有帮助。例如我们研究Delta SigmaADC,那么在了解基本的原理后,需要知道过去的时间中大家都在这个方向做了些什么,从80年代就已经成熟得到广泛应用的2级单bit,到现在多种多样的,高精度,高速,低电压,低功耗,包括passive的,多bit,连续系统,每一种子方向的发展都有其自身的驱动力,选择与自己相关的几个子方向进行详细了解,明白他们的应用背景和功能/性能限制是很必要的。
然后我们再回头从系统方面看看对电路和功能模块的折中。一个芯片的设计过程是反复的迭代的过程。无论是数字还是模拟,大致上都差不多。首先我们要从系统指标给出对各个模块的设计限制。很多情况下,系统指标本身就是不合理的。因为考虑到成本,性能,项目进度等各个方面来得到一个合理的系统指标分化,是需要很长时间的反复试验才可能的。那么从电路模块方面来讲,了解设计限制和系统整体指标以及和外围模块指标的关系,对于优化电路模块和系统性能是很有好处的。例如在射频接收机中的中频AGC和filter部分,噪声/增益/功耗/等各项指标会紧密地影响到后段的ADC(如果有ADC)和前面的混频器。那么当了解从系统外围指标到这几个电路模块的指标分划过程,以及这几个模块指标之间的依存关系,无论对于设计整个接收机系统,还是设计仅仅是filter中的一个运放,都是很有好处的。
通过平时在这几个方面的知识积累,我想应该是可以逐渐获得不错的设计直觉的。这里面很重要的一个就是兴趣,或者是其他的动机也可以(例如挣钱,甚至报仇,或者为了自由...),总之是需要强烈而持久的动机,因为这些过程虽然偶尔会有一些有趣的地方,但总体而言是是枯燥而且少有陪伴的。这样的知识积累和储备的过程是一种自我的修炼。这样的修炼会持续一个IC工程师的整个职业生涯,因为你先前所积累的知识会不断的被更新和替换。
技能储备
技能储备对于提高效率很有好处。工欲善其事,必先利其器。对于电路或者逻辑设计工程师而言,技能方面的储备主要涉及基本技能,专业技能,和职业技能几个方面。
基本技能和一些基础知识有时很难分清,但都是是我们容易忽视的地方。基本技能包括对各种基础的软硬件设备的熟悉。例如键盘指法就需要重视。托OICQ的福,很多人的基本指法都已经过关了,但是能够花20~30个小时认真进行一些指法方面的基础训练话,我相信在未来的工作中可以节省10倍或者上百倍的时间。对于基本的linux操作系统,基本编辑软件等,同样的花一些时间熟悉和了解都会是事半功倍的效果。基础硬件方面可能要求不会很高,示波器,频谱仪,信号源之类的,这些东西一到两天就可以熟悉了,所以问题肯定不会很大。基础知识的熟悉就相当的广泛了,例如简单的RC常数,dB到倍数转换,反相器延迟和延迟/负载特性,复杂一些的DFF的面积/功耗,不同工艺下晶体管特性的变化等等不一而足,这些方面的常识一个是需要熟悉,一个是用心积累,时间长了就都会了。
专业技能和职业方面,涉及到一些基本专业软件的使用和了解。例如matlab,一门高级脚本语言(典型的TCL)可以在以后节省很多时间。例如典型的一个例子可以用awk写出无数个.measure语句用来在spice仿真结果中得到一个信号的jitter,更高级的,可以完成很多批处理的功能,节省人工交互。会的越多,碰到问题时方法就越多,把问题解决的可能性就大一些。
另外,对EDA软件的熟悉和了解也很重要。无论数字系统还是模拟系统,我们现在的芯片设计很大程度上依赖EDA软件。因此对他们的熟悉就显得很重要了,这里面我要说明一点,很多情况下,例如在某个速成班或者是自己照某个教程做一遍,只能说是大致了解。真正碰到问题时还是会抓瞎。这里面有两种熟悉方式,一个是自己碰到问题了解决了,或者看别人怎么解决问题。另外一个就是看软件说明书,一个是正向学一个是反向学,都很有用处。很多问题的都可以在软件说明书上找到解决方法。解决的问题多了,就会明白一些后面的道道。
初步的经验积累
经验可以分成成功的经验和失败的经验。成功的经验越多,那么个人就会越有价值,因为你知道路是怎么走的。基本的项目经验可以通过学习其他人的经验,或者是自己通过实践得到。在学校里面,课程项目和科研项目都是非常好的学习的地方。
学校在积累经验方面相对而言会在具体的工业实践方面欠缺一些。这是由于目前我们科研的价值趋向和工业界的价值趋向的小区别造成的。很多情况下,我们在科研方面是非常关注芯片性能的,偶尔关注功耗,其他方面基本上不考虑。例如成本,可靠性,电源,EMI,良品率等等其他很多东西。当加上这些限制后,我们对同样一个设计目标,选择的道路可能大相径庭。例如可能一个产品会为了能满足苛刻的工作环境,花费很大的代价甚至牺牲部分性能去换取好的电源抑制比,或者为了降低EMI(电磁干扰),而增加其他模块设计难度或者牺牲整体性能。一个低良品率的产品可能会被认为是完全失败的项目,而在科研过程中,哪怕良品率是1%,只要能找到一个芯片满足功能,就会是成功的。这样的结果就是很多情况下,我们在学校学到的是不完整的项目经验。
但是无论如何,在职业方向的项目经验会非常重要,基本上是很多公司招聘员工的必要条件。
基本素养
基本素养已经强调了很多遍了。大致列一下比较重要的:学习能力,沟通能力,协作精神。做所有的事情都需要的。
总结一下,作为一个合格的芯片设计工程师,大概需要这方面的一些知识和能力:基础的知识储备,基本的技能储备,基本的项目经验和良好的个性。
3、职业选择
前面说的是如何成为一个让公司满意的工程师,那么对一个合格的工程师,如何挑选自己满意的公司呢。
个人兴趣
首先是个人兴趣,你愿意从事这个事业,而且你喜欢你所从事的事业。在做出这个决定之前,我建议先具体的了解一下这个行业,包括同学/师兄他们在做什么。相对于现在的选择而言,在职业生涯中途放弃或者改行从事另外的方向会面临更大的风险和代价。因此在做出自己的决定之前,慎重的了解和选择,多听取他人的建议,比较多方的利弊是很有必要的一件事情。
对于芯片设计企业方向而言,可有的职业选择并不多,数字设计方面,算法,架构,设计,验证,和后端5类,模拟设计方面,基本上就设计和版图两类。另外就是应用和支持方面,包括测试电路板,电路原型设计等,这方面偏向板级的电路设计。还有一部分就是运营,包括物流链管理,芯片封装,测试流程的控制等。这部分员工需求量稍微少一些。
薪酬回报
薪酬回报包括两方面,一个是薪酬,这个是真金白银的报酬,包括工资,奖金,股票等等;另外一个是回报。回报包括了物资的(薪酬)和非物资的部分。非物资的部分含义非常广泛,包括个体所学到的经验,技能,包括建立人脉关系,包括所从事的公司的业内声望,甚至包括所从事的具体项目的机会。
一般而言,工作的唯一目的就是得到合理的回报。因此,合理的回报水平是选择公司的重要标准之一。
团队环境
工作环境很大程度上是由所在的团队所影响的。在一个开放,自由而且积极的团队中,知识和技能的积累要快速的多,讨论和交流是互相学习公共进步的必备条件。一个人的力量在我们这个行业是极其渺小的。在选择一个公司之前,花一些时间和你的领导沟通和了解工作环境,气氛,并且中肯的评价你的领导的个人能力眼界和个性在这方面会比较有帮助。
大公司/小公司
再评价一下小公司和大公司的选择。
这方面对比在其他行业已经很多了。总结一下,一般情况下,大公司风险低,回报适中,门槛略高;小公司风险高,回报高。具体的选择和个人的风险倾向很有关系,例如有人喜欢存钱到银行,有人喜欢买股票,也有人喜欢买彩票。每个人都会根据自己不同情况有自己的取舍。
对于芯片行业而言,我认为小公司相对而言是更好的选择。芯片行业在国内正在高速发展的一个产业。现在新成立的很多小公司在技术上都相对而言比较先进,因此能够得到比较好的训练。另外,因为整体而言,有丰富经验的员工还是很缺乏的,所以竞争导致新兴小公司的薪酬水平要稍微高于行业平均水平。在新兴小公司中,很多都是处在急速的成长期,因此个人发展空间比较大。所以在目前国内整体行业迅速发展的大背景下,考虑到风险和回报的折中,新兴小公司相对而言应该是比较有利的选择。
??
来自 <http://bbs.ednchina.com/BLOG_ARTICLE_2044583.HTM>
??
[Z]芯片设计经验