时间:2021-05-12 已阅读:10113次
模拟集成电路设计能力的提升,需要和武学境界的升级一样,只有在正确的方法之上,再加以漫长时日的勤学苦练,可能还同时需要自身天赋或者神奇际遇,才有可能逐步做到。下面,笔者就自身体验,做了一个总结,大体从初学者到有大成者,分成四个等级。之所以不愿意分成更细的等级,比如所谓九层境界等,就是让每一级有明显差异,使不同层次的设计师高下立判。
一:初级工程师,初窥门径
在这个阶段,工程师要建立基本知识体系,正确的工作方法,具有一定的技能,可以完成初步设计。这个阶段是打基础的阶段,是从0到1的过程,工程师通常在这个阶段非常兴奋,因为觉得自己已经是模拟集成电路设计师了,能够设计一些电路了。但是恰恰是因为过于激动才导致急功近利,不愿意在很多基础领域做实做细,为未来继续提升埋下了隐患。大部分所谓中级工程师觉得提升乏力,最后都发现是基础没打好,还是要退回到初级工程师阶段继续打好基础,才能继续进步。因此也可以说,即便有些工程师能做一些具体电路设计,甚至做了几年,也在这些模块上有了一些所谓的经验,但是实质上他还是一个初级工程师。
1:知识
具有集成电路设计的基本知识,并且知道集成电路的物理实现。很多人对于后一部分知识极度欠缺,缺少从设计到实现的具体直观感觉,也就是对于设计的物理基础很薄弱。
● 模拟集成电路设计。
● 熟练掌握工艺文件细节,熟知各类器件的俯视图/切面图/工艺步骤,各类器件的差异,寄生参数的来源等 。
● 熟练理解并能改写DRC/LVS 的rule文件。
● 可以自己生成PCELL或者自己根据定义从layer开始画管子。
2:设计能力
正确的设计方法学就是需要从初级工程师开始建立。很多这个阶段的工程师仅仅认为自己的工作就是原理图和仿真,这是极端片面的认识,这也就是所谓的“spice monkey”的来源。这些工作仅仅是设计工作的一部分,甚至可以说都不是最重要的一部分,因为仿真不能保证一个电路工作,仿真工具可以有无数的手段去欺骗初级设计师。如果仿真都work就代表电路都work,那么就不存在不工作的电路了,因为谁也不会把仿真不过的电路去流片。因此,正确的方法学是在自己理解的基础之上去设计电路,不要做不知其所以然的工作。
● 行为模型设计一定要先行,因为这可以让你清楚你到底要做什么,要实现什么目的,要达到什么指标,只有数学清楚了,才能说具体物理实现不至于偏太远。这部分工作很多初级设计师不愿意去做,一是不会使用VA或者simulink之类的设计工具;二是很多刚开始设计的简单电路都有所谓的参考设计,只要根据工艺调调管子参数即可。这就是典型的从一开始就让自己做“spice monkey”的做法。初级工程师要为未来打好基础,急功近利,投机取巧的做法也许可以让你完成一些简单的工作,但是也限制了未来的发展。更何况,行为模型还有另一个作用,那就是在更高层的仿真的时候,只有底层的行为模型才可以有效率地进行仿真,否则服务器的硬件资源根本不够让所有电路都是在管子level进行仿真。
● 熟悉先用纸笔进行物理设计,这个设计的准确程度要可以做到八九不离十,电路性能/功能的主要问题都可以在这个阶段进行论证分析。事实上,所有关于电路的书,主要讲的就是这个阶段的能力提升。这是让自己不做“spice monkey”的另一个重要环节。
● 熟悉主要设计的testbench及设定,顾名思义就是要全面,dc,ac,tran,noise,pss等等。这里需要强调的是,模拟电路核心需要观察的信号是电流不是电压(数字电路也许看看电压多半就够了)。大部分细节问题体现在电流里面。也就是说电压是表象,分析解决问题靠电流效率更高。
● Layout能力,当然这里面也包括了DRC/LVS/后仿。这和前面提到的行为模型设计一样,是初级工程师极度排斥的一项工作,但是恰恰是模拟集成电路工程师的一项重要基础。如果layout只是一项简单labor的工作,那就不会存在不同的layout会影响最终实现的性能差异这类事情的发生了。另一个初级工程师的误区就是,layout工程师画版图的能力比我强,他肯定应该能实现更好的版图。版图工程师只是在熟练程度上好一些,但是多半没有对于电路的分析能力(这里不是说经验),否则版图工程师为什么不去做所谓的“设计”?!如果说原理图设计是第一次设计的话,那么版图设计就是第二次设计,哪个设计不好都会影响电路的性能。更何况好的版图就是艺术,更好地体现出设计师的设计美感,通常不好看的设计,性能也不够理想。因此,设计师需要有极好的版图设计能力,有了这个能力,至于说是自己画版图,还是指导版图设计师来画版图,那是工作分工的问题;这和自己不会画,让别人来画是两回事。笔者的感受是,如果是一个好的设计师,到最后可能都不能容忍别人来画他的电路的版图,因为不论别人怎么画,都不一定能实现他的诉求;或者当他有时间把所有诉求和版图工程师都说明白了,自己也画完了。
● 熟悉一些和可靠性,成品率有关的知识,并在设计中加以考虑,如ESD,天线效应,EM等。
● 可以按照一定的流程规范进行工作。从symbol,原理图,testbench,layout可以体现出整洁和美感,形成自己的风格或者公司要求的风格。设计文档可以做到充分,清楚;原理图的注释可以做到简单,明了等。
3:测试,分析/解决问题
初级工程师的另一大误区就是认为流片是自己工作的终点,实际上这仅仅是工作的一半,我们需要让工作形成闭环,从设计到验证,发现问题后再改进设计,螺旋式上升。
● 有意识的在设计中加一些测试结构。设计师在这个阶段所加的测试结构通常效率不是太高,不讲究优化,不是加的太多就是覆盖性不够。通常是所加的结构的测试方式和testbench差不多。不过影响不大,但是需要开始建立这方面的意识。
● 分析问题,需要具有一定的直接分析问题的手段。初级工程师通常只能依赖自己的测试结构的直接观察才能确定问题所在,如果没有测试结构就手足无措。对于观察到的问题,都只有简单的问题,且通常是已经很严重且很明显的程度,才拥有一定的直接分析能力;然而,对于有关性能的问题,分析能力则远远不够。
● 解决问题,也是通常对于简单的问题,可以提出一些改版方案。
二:中级工程师,登堂入室
在初级阶段把各方面的基础都打好,再加以更全面的学习,同时有了举一反三的能力,假以时日,就可以在中级工程师的道路上成长了。客观地讲,99%的模拟IC工程师穷其一生,也只是在中级的道路上走得或远或近而已。一方面在这个阶段的学习,本身就是很大的工作量,即便有举一反三的能力,所需要学习的内容也还是很多,而且需要带着问题反复学习;另一方面,要突破中级需要很多电路以外的知识,需要更高更广的视野,这也是很多所谓的“专业”人士不愿意自我突破的地方。笔者对很多人说的所谓“专业“报以鄙视的态度,这多半是”狭隘“的另一种说法而已。
1:知识
全面掌握和电路设计有关各方面的知识。
● 半导体器件,材料,工艺。如果说初级工程师仅仅知道管子的几种工作模式及IV表达式就可以进行设计,那么中级工程师必须要知道更底层的机理才有可能进行更合理的设计;如果说初级工程师就分析到电流这个层面基本就够了,那么中级工程师需要有能力分析到电子的层面上。更何况,新材料/新器件也会不断在新的工艺中实现,所以为了可以随时掌握和使用先进技术,也需要对于物理有更深的理解。
● 模拟集成电路设计。这需要一直学习。
● 电路分析。其实我们在模拟集成电路分析中用到的知识和方法,大部分来自大学阶段学习的电路分析,把电路分析的普遍知识应用到集成电路这一具体领域而已。因此,把更底层的且有直接联系的知识熟练掌握,对于上层应用有很多好处。
● 数字集成电路设计。一方面和模拟集成电路设计太近了,必须要懂;另一方面,通常的芯片都是mixed-signal或者SOC,为了和数字工程师更好地在一起工作,也需要在知识上有交集,这样才好分工协作。
● 信号与系统。麻雀虽小五脏俱全,再小的一颗芯片,也是一个系统;更何况任何一颗芯片也是要用于更大的系统之中。所以,从信号与系统的角度去看一个具体模块的设计,通常会更宏观。
● 电磁学,微波电路等。很相关,特别是做射频的时候,也需要一直学习。
● 电路方面的论文/专利。严格来讲,这不是知识,是学习方法。很多论文/专利有很精巧的设计,可以说是奇技淫巧,需要利用我们上面提到的知识,仔细分析加深理解。也就是说不需要死记硬背一个具体设计,需要理解里面的设计思路,方便以后灵活应用。
2:设计能力
中级模拟集成电路设计师需要具有设计各种电路的能力,尽管有些电路可能没有直接的设计经验,但是可以根据自己的知识和方法很快找出设计的关键点,并且找到合理的结构加以设计。这个阶段和初级工程师比,设计动态范围明显更大,比如能设计电路种类多了,会考虑更多的细节了,且参与更广泛的设计工作等。
● 各种常用模拟电路的设计。通常模拟电路按照功能和性能,分为基带,射频,电源管理等三大类。最通常的一个误解就是,所谓“专业”就是设计某种电路,这样理解的专业太狭隘。其实电路设计的基本思路是一致的,只是根据具体设计需要做trade-off的折中点不同而已。在这三类电路中,对于性能要求较低的是电源管理,它关注的重点是效率,当然次之就是在动态负载情况下的时间响应。因此它重点关注工艺,器件,大电流通路上的layout,及各种条件下的环路稳定性和时间响应。基带电路的重点就是一定的功耗/面积情况下,优化信噪比,非线性,速度,等指标。因此需要对于各类电路、各类结构的非理想因素的来源非常清楚,知道如何在速度,精度,功耗,面积之间做折中。射频电路对于高频信号的波形的对称性和噪声要求极高,所以从原理图到版图,需要对mismatch,寄生参数(包括LCR),噪声都非常清楚。说到版图,好的射频电路的设计如果对于寄生参数和对称性要求特别高,这部分电路最好不要用PCELL进行layout,自己还是根据物理意义对于每个管子一层一层地画比较好。
● 建模的工作。初级工程师只是对于单一模块进行简单地建模,中级工程师可以做到下可以给器件建模,上可以给系统建模。给器件建模,一个很好的例子就是管子的BSIM模型,这是需要学习的。如果自己设计一个新的器件,不论是二极管,还是在芯片上用金属走线画一个环形电感(比如某些射频电路中需要用到的电感,这里面的Q值损耗不仅来自于金属电阻,还有在外延片和空间磁场的损耗),是不是也可以建立尽量真实的模型呢?不要以为模型应该是代工厂来提供,有些先进工艺或者自己独特的设计,代工厂提供不了帮助;即便代工厂提供一些支持,自己也要理解代工厂的模型和我们实际关注的重点是不是相符。因为一个模型都是在一定条件下的近似,不会在各种条件下都是吻合的,所以需要明白适用范围。
● 参与系统和顶层设计工作。模拟模块尽管很重要,但也是一个系统的一部分。通常一个系统的前后两端是模拟模块,中间的处理,整个系统的控制,还有端口,大部分都是数字设计。尽管这个阶段的模拟集成电路设计师觉得模拟设计的好坏对于系统设计至关重要,但也要有开放心态,和系统工程师一起对于整个系统进行建模,分析各个子模块的指标折中点,论证最合理的设计方案。
● 整体布局和规划的能力。从设计,版图,到顶层仿真,中级设计师要不断要求自己从一个具体小模块的设计师沿着设计hierarchy 往上层走,不断要求自己具有更高更广的视野。
● 能够写整个设计文档,指导应用工程师做应用开发,甚至帮助市场部门做一些技术支持。
3:测试,分析/解决问题
中级工程师对于设计闭环的理念已经融入到日常的工作实践中了,同时也有了很好的风险控制的设计思想和“未虑胜先虑败”的思想。
● DFT的设计,已经可以兼顾效率和全面的要求。
● 测试和分析方式,有直接的,有间接的。特别是对于突发问题,没有测试结构的问题,不能做FIB直接观察的问题,需要原位进行测量的问题,都可以灵活运用合适的直接和间接测量方式,并进行问题分析。
● 对于问题的解决方式也更灵活,不仅可以用改版的方式,也可以在系统端、应用端想到一些更高效的解决方式。
三:高级工程师,炉火纯青,摘叶飞花
这个阶段的工程师已经在各方面都有相当的造诣,电路设计仅仅是实现目的的一个手段,但绝不是唯一手段,甚至都不一定是最重要的手段。高级工程师已经可以做到“草木竹石,皆可为剑;摘叶飞花,皆可伤人”的程度。
1:知识
不仅是电子学方面的知识,创造出电子学的各类基础学科,和以电子学为基础的各类学科,高级工程师都很擅长。
● 高等数学若不好,别的也都学不好。
● 概率论,数理统计,随机过程,至少对于我们分析各类噪声有帮助。
● 线性代数,对于我们描述一个复杂的系统有帮助。
● 逻辑学,对于分析各类问题都有帮助。
● 物理学,力,热,光,电,在模拟IC设计中,特别是在传感器设计中都会用到相关知识。光,电,就不说了;力学在做芯片的应力分析时候需要用到;热学在做芯片的热分析的时候需要用到。
● 材料学,半导体材料科学。
● 量子力学,在材料学中和一些探测机理研究中需要用到。
● 各类电子学知识。
● 信号与系统,各类信号变换方式,各种系统的描述方式。
● 通信,调制/解调,无线通信,激光通信。
● 信息论,让我们知道我们能力上限。
● 编码学,信息论的一个具体应用。
● 控制论,基本上任何系统都需要在控制论下进行分析,可观察性,可控制性,鲁棒性等。
● 图像处理。
● 人工智能,从SVM到CNN。
● ……
2:设计能力
由于高级设计师在知识端有了更深更广的储备,所以对于问题的理解也会更深更广,而且可以从多个角度去理解同一个问题,进行交叉验证。
● 更多地参与顶层,全局的设计。
● 更多地参与各个模块的指标制定和方案的选取。
● 更多地参与和应用部门,和客户的论证工作。
3:测试,分析/解决问题
这个层面的工程师,手段相当丰富,可以到不论谁设计的电路,出现什么问题的电路,都有办法进行测试,分析和解决的程度。
四:顶级设计师,随心所欲,无剑胜有剑
这个层面的设计师已经无所谓是什么专业的设计师了,他在各个方面的知识都有很深的造诣,用什么样的手段去解决问题,都无所谓了,但是一定会对问题给出最优解。这类人可以用第一性原理去看待,分析和解决问题,往往可以给出超过一般人认知的划时代的方法。