FPGA/IC设计入门5-前端
上一篇 /
下一篇 2007-04-28 19:03:25 / 天气: 晴朗
/ 心情: 高兴
/ 个人分类:IC Design
asic设计入门(前端)
asic设计前后端是如何分的呢?asic设计的前后端就如FPGA设计的Implementation之前之后(Xilinx)的区分,前端负责综合网表之前的所有事情,而后端负责Netlist到GDSII的过程。注意这也不是绝对的,现在前端也可以用Physical Compiler做一些后端做的事情(物理综合),随殴ひ盏姆⒄梗昂蠖说姆纸庀咴嚼丛侥:恕5比籄SIC的前端还考虑到很多关于Power,DFT等等方面因素;后端呢,在这里粗略介绍一下,Floorplan,版图规划,主要指Macro的放置还有PG ring等的规划;Place-布局,主要指standard cell的放置;Route,布线;其中还涉及到DFT,DRC,LVS还有STA。这些东西了解一下就可以了。
ASIC前端设计入门,这个流程幸好没有忘记。不像FPGA那样(和器件关系太多),数字前端都应该是一样的。
1 系统规划需求分析----制定Specification
2 模块划分-----根据Secification,开始划分模块,具体到接口时序和功能,最后书写详细设计文档。
3 模块编码输入----注意符合Coding Style
4 模块级仿真验证---行覆盖率应该达到99%(default语句是覆盖不到的)
5 系统集成和系统仿真验证----验证平台应该在Specification确定之后和代码编写并行进行。
6 综合----得到网表
7 STA-----验证时序
8 形式验证--验证网表和RTL的等效性
若是Netlist2GDSII的话这些就应该可以了,象DFT之类的估计后端人员都可以帮助你实现。看起来挺简单的,其实花时间最多的还是在前面,也就是综合之前的步骤是最费时间的,包括制定Specification,模块级的详细设计方案还有验证,一旦得到一个goden RTL,从RTL到GDSII是很快的。所谓garbage in garbage out,到了综合之后的步骤基本上不是对功能的修改,而是按照特定功能的实现,所以一个好的RTL是非常重要的。
在系统规划方面,复位,时钟方案是最重要的因素,其次是DFT;在模块编码的时候就是要注意这些要求了,比如不要内部私自生成时钟和复位信号,防止出现不必要的latch等等。模块级验证应该是系统验证关键部分,原来我们做TDSCDMA手机终端芯片的时候,Viterbi验证的是好几个步骤组成的,在模块级就验证做得非常完善,后来系统验证,FPGA验证到最后tapout回来都没有问题。当然大家都关心综合如何处理,STA如何处理,形式验证如何实现,因为这几个步骤不是所有人都可以接触的,毕竟这些工具都价格不菲;一个公司可以随便找几个人一起开发FPGA,但是说要随便找几个人做ASIC,估计Tool的费用就要砸掉好几百W--这里指的是商用软件,假如你说其实D版的也可以用,^_^ 那就算你用了,流片的费用也不少啊。
下面我就一部分一部分给大家介绍asic前端设计的各个部分。
在没有介绍综合之后的流程之前,我先介绍一下从系统规划到综合前的流程,前面FPGA和这里的ASIC在这方面介绍的都不多,在这里补过,希望对大家有帮助。 系统规划当然是系统人员制定的,假如你想知道如何制定,大体上是系统功能,性能,系统接口,系统的时钟方案,复位方案,DFT方案;系统采用了多少Memory,是否使用DSP,MCU,架构如何,最后die size和power大约多大等等;作为一名设计人员多数你会分到一个模块的设计,一般情况下在系统方案制定好之后就是模块划分了,很多情况下是根据功能来划分;模块划分之后,设计人员会不断讨论实现方案和关键问题的解决方法,开始是模块之间的接口,接着是模块内部的实现方案和时序,经过详细的讨论之后,这些都要写成详细设计方案。三年前自己的第一个设计是画了几个图就做设计的,小小的一个东西,没有文档,看草图,做了一个月;在积累了经验之后,改变了开发流程,也是大公司采用的方法,先写详细设计方案,再写代码;你会发现可能详细方案花了1个月,代码半个月就可以写完了。因为思路理清楚了,写代码当然简单了,千万不要一边写代码,一遍写设计方案,到了最后,问题一个都没有解决,代码改来改去,还是不能用。
再之就是调试,现在很多公司都在服务器上写代码,网络连接速度很慢,更加不用说调试了。我原来的习惯,也是现在的习惯就是在本机做设计,第一书写快,第二仿真快,对于模块设计应该是设计完一个模块就调试一个模块,而不是等系统集成的时候再测试模块。所以仿真调试的速度很重要,而在服务器上用VCS调试小模块,还不如在本机上用Modelsim快。刚入新公司,做模拟设计,人家一个月要完成的设计,我用了两个星期,道理很简单,我有一个代码书写和调试的平台,十分钟内就可以把一个代码调试n次。当然这个环境也不是大家都有,都会用,这也是我三年积累下来的东西^_^
导入论坛
收藏
分享给好友
管理
举报
TAG: