ic设计
项目策划完成,领导开始让工人们干活。首先就是高级工人,系统算法工程师,根据要求,搞一堆算法来,看看哪一个比较符合老大的项目策划书要求。系统架构工程师根据系统算法工程师提出的算法,想想怎么用详细的特定功能硬件实现,发现算法的硬件实现比较坑爹,就去找系统算法工程师理论。然后这两类系统工程师通过对系统的方案、设计、仿真跟各种撕逼之后(他们撕逼的内容听说有这些:浮点数算法,软硬件划分,IC++设计中数据的定点表示,定点算法表示,结构的并行性跟流水线,存储器分配,还有其他等...),达到平衡点(就是算法能够较好地使用良好架构跟电路的实现),一份系统设计规格书就出来了。至于系统设计规格书里面具体有什么,我们就不展开说明了。
2、模块设计(module design)
高级的系统工程师完毕,就到我们这些螺丝钉,进行模块设计了。模块设计也还是分等级,人家有高级数字ic设计工程师。而真正专门写模块的呢,就是螺丝钉级的一般数字IC工程师,别称”硅农”...透露一下,系统设计规格书里面就有进行模块划分的内容,这里就是进行设计模块了。一般,模块设计使用HDL语言进行输入,输入工具使用GVIM。写完一个模块了,(进行代码设计规则检查,这个靠检查工具来工作了,检查工具可以检测几百个设计规则,检查的内容主要有:标准规则检查、可重用性检查、竞争条件检查、可综合性、可测试性、时钟域、结构性、加速策略、用户自定义的规则等),然后进行功能验证,就是验证你写的这个电路是不是符合模块的功能要求,使用的工具是synopsys的VCS。仿真通过之后,就可以把模块提交上去了给上层负责管理顶层模块的高级数字IC工程师了。有兴趣的话,可以自己综合一下自己负责维护的模块。
3、顶层模块集成(top level integration)
底层的的模块写完之后,开始进行模块集成,新模块跟复用的旧模块集成,I/O,时钟等模块的基础,把系统集成起来,构成整个系统后,就完成了系统模块的集成。
4、顶层功能模块验证(top level verification)
顶层模块集成完毕后,检测集成之后模块是否还能正常工作,验证功能是否正确,各项指标是否完好等等。这里,数字IC验证工程师就可以放大招了。验证使用VCS进行。验证是一门杂活哇,各种方法学UVM之类的,还是我们硅农的小模块验证比较好。
5、逻辑综合(logic synthesis)
逻辑综合就是通过EDA工具把顶层的HDL模块,在一定的约束情况下,映射到制造厂家标准单元库元件的门级电路的过程。通过这个步骤,从HDL代码,得到了门级网表,也就是得到了电路。具体的有关综合的知识将在后文联合synopsys的综合工具design compiler进行记载。
6、形式验证(formal verification)
形式验证,就是对设计过程中不同阶段的输出结果进行逻辑功能一致性的对比,根据电路的结构,判断两个设计在逻辑功能上是否对等。有关形式验证的知识将在后文中记载。
7、静态时序分析(static time analysis,STA)
静态时序分析,就是通过EDA工具,提取电路中所以路径的延迟信息进行分析,计算出信号在路径上的延时,检查时序是否满足设定的时序约束要求。静态时序分析将在后文中结合synopsys的PT工具进行记载。
8、可测性设计插入(design for test,DFT)
可测性设计是指:在进行电路的前端设计时,就预先规划、设计出如何在样片中进行电路的测试方案和办法,并通过逻辑综合过程完成芯片内部专用测试结构的插入,一遍在芯片形成后能按照预先制定的方案进行相应的电路功能测试的一种设计方法。也就是进行可测性设计,就是在原有的电路中插入专门测试的电路(插入电路)。
===========================================
上面的部分基本前端设计的部分,是我后面内容主要涉及的内容,后面的主要是后端设计的部分,这后端设计就是专业名词特别多,而且还中英互联,很少让人讨厌。所以后端的部分知识按照常规来介绍了
============================================
9、版图物理规划(floor-plan)
这一步骤主要是通过对EDA工具进行输入标准单元库、标准I/O库、综合后的网表、各种约束文件等,规划好让EDA工具完成各模块的位置摆放、电源网络的设定、I/O信号出口位置、同时确定面积、封装、工艺、噪声、负载能力等参数。
10、功耗分析(power analysis)
在完成版图物理规划后,需要进行功耗分析。功耗分析可以确定电源引脚的位置和电源线的宽度是否满足要求。对整个版图进功耗分析,即要进行动态功耗分析跟静态功耗分析,找出主要的功耗单元或者模块,以供优化。
11、单元布局与优化(placement & optimistic)
根据floor-plan中的布局规划,摆放网表中调用的所以标准单元,EDA工具自动对时序约束、布线面积、布线拥堵等综合考虑标准单元的摆放,从而依靠EDA工具完成电路的布局设计跟优化。
EDA主要进行自动对floor-plan的具体工作的标准单元实现:确定各功能模块的位置和整个芯片的尺寸;确定I/O buffer 的位置,定义电源和地PAD的位置;定义各种物理的组、区域或模块,对大的宏单元进行放置;设计整个供电网络,基于电势降和电迁移进行拓扑优化;通过布局调整、约束修改、属性添加、密度、高速信号分析等手段达到优化的目的。
12、时钟树综合(clock tree synthesis,CTS)
要了解时钟树综合,那么就得中断什么是时钟树。时钟树就是分布在芯片内部的的寄存器跟数字的驱动电流构成的一种树状结构的电路。时钟树综合就是EDA工具按照约束,插入buffer,使时钟的源头(时钟根节点)到达各个需要时钟驱动的器件(各叶子节点,如触发器)的时间基本一致的过程。时钟树综合通常使用EDA工具自动进行。
13、布线(routing)
布线就是完成模块、节点的相互连线。EDA工具可以分成全局布线和详细布线。一般情况下先使用EDA工具布线,然后在人工干预的情况下局部自动或者手工进行连接一些比较关键地连线,进行修复连接上的问题和时序约束上的问题。注意,关键路劲跟时钟上的连接线要尽量最先连接,以免绕线,导致时序问题。
14、信号完整性分析(signal competition analysis)
信号完整性分析是通常是进行分析噪声。随着器件尺寸的下降,器件的供电电压、噪声容限均下降。也就是说,也许由于某一根导线可能电阻过大,带来的压降过大,导致器件的供电电压达不到而不能正常工作等等的一系列问题。对这些问题进行分析,是信号完整分析的一部分。
15、寄生参数提取(parasitic extraction)
根据布线完成得版图提前RC(电阻电容)参数文件。对EDA工具输入相应的工艺参数(厂家提供)后,EDA工具根据这些参数和版图实际几何形体的面积计算出RC值,然后通过存储从而提取出RC参数。提取出来的RC参数,可以直接用于静态时序分析,也可以在计算出相应的路径延时时,用于反标功能后仿真。
16、后仿真(post-layout simulation)
后仿真也叫门级仿真、时序仿真、带反标的仿真。它是通过采用外部激励和布局布线后产生的标准延时文件(*.sdf),对布局布线后的门级电路网表进行功能和时序验证,来检验门级电路是否符合功能要求。
17、工程更改命令(engineering change order,ECO)
在设计的最后阶段发现个别路劲有时序问题或者逻辑错误时,通过芯片内部专门留下的寄存器跟组合逻辑,对设计部分进行必要的小范围的修改和重新连线。
ECO在是在网表上做文章,在非必须的情况下(如时间充足,人员充足),不要进行ECO。
18、物理验证(physical verification)
物理验证主要是一个对版图的设计结果是否预定要求而进行的验证过程。
首先是通过DRC(design rule check,设计规则检查)对版图设计中的约束违规情况进行检查,以保证各层版图都符合设计的要求。然后是进行LVS(layout vs. Schematic,版图网表与电路原理图比较),进行版图网表跟原始电路图的一致性对比检查,即通过版图寄生参数提取工具得到一个有版图寄生参数的电路图,将它跟原理电路图进行比较,以确保版图设计与原要求的电路图的逻辑功能一致性。
此外还有一些需要进行ERC,即电气规则检查。这里不详述了。
我所知道流程大概就是这样了,参考文献:
《Soc设计方法与实现(第二版)》
《EDA与集成电路工程实践》
《数字IC系统设计》
《数字集成电路设计与技术》
相关阅读
苹果 MacPaint 和 QuickDraw 的源代码(2010)
价值 | 思考 |
程序设计与仿真电子琴VHDL程序包含有:顶层程序、音阶发生器程序、数控分频模块程序和自动演奏模块程序。1.顶层程序与仿真(1)顶层VHD
这篇文章的目的很简单:通过电商的实例,将业务流程图和任务流程图之间的关联和区别以及在产品中的应用,讲解清楚。流程和流程图首先来
每年都会有一波又一波的设计趋势流行起来,被设计师们追随和模仿着。大家总觉得迎合着趋势做的设计肯定不会差。比如,之前流行的卡片
大屏手机已经随处可见了,可是操作的用户体验并不如人意。发布会上的歌颂和叫嚣并没有解决所有问题,面对着优化大屏手机的界面和体验