当前位置:龙芯电子 >> 技术资料 >> 浏览文章

芯片top-dowm设计流程分析

时间:2012/11/7 10:16:19

 

  拿到一个芯片设计项目,首要做的事就是确定好系统功能、性能、物理尺寸、设计模式、制造工艺、设计周期、设计费用等等。芯片项目的总体规划确定好之后,接着就要从技术层面上设计芯片,芯片流程一般分为前端设计和后端设计连个过程。
  前端设计:
  1.设计输入
  确定芯片的具体逻辑功能,设计合理的算法(如有必要,可将芯片划分子模块),使用HDL语言(常用VHDL或Verilog)描述芯片(模块)功能,写出可综合级别的代码。HDL语言可以直接用各种文本编辑器编写(要注意后缀),也可以用仿真器自带的文本编辑器编写。如果逻辑结构不是很复杂,或者电路形式有特定的要求,不宜用HDL语言描述,这时可以考虑用原理图编辑器直接画出原理图,或者直接编写出电路网表。常用的输入工具有Cadence的Composer, Synopsys的Viewdraw等。
  2.前端仿真(RTL级)
  用仿真工具对HDL代码作前仿真,做理想状况下的功能验证,观察HDL仿真结果是否满足要求。
  仿真工具主要有Synopsys公司的V S S(VHDL)、V C S(Verilog),Cadence公司的NC-Verilog和Verilog-XL(Verilog),Leapfrog(VHDL),Mentor Graphics公司的Modelsim(Verilog&VHDL)。还有些FPGA公司的仿真软件也不错,比如Altera公司的Quartus。
  3.逻辑综合
  前仿真通过以后,就可以把代码拿去综合了,逻辑综合是指把HDL语言描述转化成电路门级网表,并进行逻辑和时序电路的优化。综合需要设定约束条件,还需要基于特定的综合库。不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。输出文件也可以有多种格式,常用的有EDIF格式(Electronic Data Interchange Format电子数据交换格式)。综合工具Synopsys公司的比较强,如DC(Design Compiler),BC(Behavior Compiler),Cadence的有Ambit,PKS。有些FPGA用的第三方综合工具功能也很强大,如Cadence的Synplify,Synopsys的FPGA-Express和FPGA-Compiler,Mentor的Leonardo Spectrum。
  4. 形式验证
  是从功能上对综合后的网表进行验证。常用的就是等价性检查方法,以HDL为参考,对比综合生成的网表功能,验证他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。形式验证工具有Synopsys的Formality,Mentor的FormalPro。这些都没有问题了就可以进入后端设计了。
  后端设计:
  5.数据准备
  后端设计需要foundry提供的和前端设计产生的一些数据。
  例如对于Cadence的SE(Silicon Ensemble)而言所需的数据主要有Foundry厂提供的标准单元(全定制设计也可由自己设计标准单元)、宏单元和I/O Pad的库文件,它包括物理库、时序库及网表库,分别以.lef、.tlf和.v的形式给出。前端的芯片设计经过综合后生成的门级网表,具有时序约束和时钟定义的脚本文件和由此产生的.gcf约束文件以及定义电源Pad的DEF(Design Exchange Format)文件。对synopsys 的Astro 而言, 经过综合后生成的门级网表,时序约束文件SDC 是一样的,Pad的定义文件--tdf, .tf 文件--technology file,Foundry厂提供的标准单元、宏单元和I/O
  Pad的库文件就与FRAM, CELL view, LM view形式给出(Milkway 参考库and DB, LIB file)标准单元版图。标准单元分为单元库和全定制两种。单元库一般是foundry给定的,全定制的话,版图是由自己公司专门的版图工程师画的,Layout工具有Cadence Virtuoso layout editor,另外还有Laker等使用也很广泛。版图画完后往往要做一下DRC验证(Design Rule Checking设计规则检查,检查连线间距,连线宽度等几何规则是否满足工艺要求),LVS验证(Layout Vs Schematic版图与逻辑综合后的门级电路图的参数对比验证),这要借助Cadence的Diva,Dracula或者Mentor公司的Calibre或者Synopsys公司的Hercules,LVS上Hercules功能尤显强大。
  6.自动布局布线(Auto place & route,简称APR)
  利用前面做好的网表和单元版图生成整块芯片版图。可用工具有Synopsys公司的Astro(Avant!的Apollo),Cadence的design framework,Silicon Ensembler,Envisia place &route DSM,DesignPlanner,Gate Ensemble。
  (1)布局规划,主要是标准单元、I/O Pad和宏单元(如IP模块,RAM等)的布局。I/O Pad一般是预先给定了位置的,而宏单元则根据时序要求进行摆放,标准单元则是给出了一定的区域由工具自动摆放。布局规划后,芯片的大小,Core的面积,Row的形式、电源及地线的Ring和Strip就都确定下来了。如果有必要,在自动放置标准单元和宏单元之后, 可以先做一次PNA(power network analysis)--IR drop(电压降) and EM(电迁移)。布局规划能直接影响芯片最终的面积。
  (2)Placement(标准单元放置)。布局规划后,宏单元、I/O Pad的位置和放置标准单元的区域都已确定,这些信息由SE(Silicon Ensemble)通过DEF文件传递给PC(Physical Compiler物理综合工具),PC根据由逻辑综合给出的.DB文件获得网表和时序约束信息进行自动放置标准单元,同时进行时序检查和单元放置优化。如果是用PC +Astro,则可用write_milkway, read_milkway传递数据。
  (3)Routing(布线)是指在满足工艺规则和布线层数限制、线宽、线间距限制和各线网可靠绝缘的电性能约束的条件下,根据电路的连接关系将各单元和I/O Pad用互连线连接起来,这些是在时序驱动(Timing driven ) 的条件下进行的,保证关键时序路径上的连线长度能够最小。基本流程是:Global route-- Track assign --Detail Dummy Metal的增加(详见第10步)。
  (4)布局布线中需要注意的是CTS(Clock Tree Synthesis,时钟树综合),简单点说就是时钟的布线。由于时钟信号在数字芯片的全局指挥作用,它的分布应该是对称式的连到各个时序单元,使时钟从同一个时钟源到达各个时许单元的延迟差异最小。而且有的时序单元,对时钟源来说负载很多,其负载延时很大也会造成不平衡,这是就需要插入缓冲器减小负载和平衡延时。从而因此时钟信号一般需要单独布线。这些时钟网络及其上的缓冲器构成了时钟树。一般要反复几次才可以做出一个比较理想的时钟树。CTS工具常用Synopsys的Physical Compiler。
  7.寄生参数提取及后仿真
  (1)由于芯片里面的导线等本身存在的电阻,相邻导线之间还有互感,耦合电容等,他们都会在芯片内部会产生信号噪声,串扰和反射。这些效应会产生信号完整性问题,导致信号的电压波动和变化,如果严重就会导致信号失真错误。因此从layout进行寄生参数提取(extract),反标到前面的网表中,再次分析验证信号完整性问题是非常重要的。常用的参数提取工具有Synopsys的Star-RCXT,Cadence的Nautilus DC,软件生成的带有完整的延时信息的设计文件格式一般有:*.vho,*.sdf文件。
  (2)STA(Static Timing Analysis静态时序分析)是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立时间(setup time)和保持时间(hold time)是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。因为时钟树插入后,每个单元的位置都确定下来了,工具可以提出Global Route形式的连线寄生参数,此时对延时参数的提取就比较准确了。例如SE把.V和.SDF文件传递给静态时序验证工具进行分析。而对Astro 而言,在detail routing 之后, 用starRC XT 进行参数提取,生成的.V和.SDF文件传递给PrimeTime做静态时序分析,那将会更准确。时序验证工具有Cadence的Pearl,Synopsys的Prime Time等。这些流程都没有问题后,就可以将.v和.sdf文件送去前端人员那里进行后仿真,即DTA(动态时序分析),再次验证逻辑功能,后仿真应做SI(信号完整性)分析。
  8. ECO(Engineering Change Order)
  针对静态时序分析和后仿真中出现的问题,对电路和单元布局进行小范围的改动。后仿真和前面的布局布线阶段可能需要反复的循环进行才能达到设计要求,这需要前端人员和后端人员的良好配合。
  9.芯片功耗分析
  实际的后端流程还包括电路功耗分析,功耗分析常用的工具有Prime power,Power Compiler等。
  10.Filler的插入(pad filler, cell filler)和Dummy金属的添加Filler指的是标准单元库和I/O Pad库中定义的与逻辑无关的填充物,用来填充标准单元和标准单元之间,I/O Pad和I/O Pad之间的间隙,它主要是把扩散层连接起来,满足DRC规则和设计需要。另外还因为Foundry对金属密度一般都有规定,使其金属密度不要低于一定的值,以防在芯片制造过程中的刻蚀阶段对连线的金属层过度刻蚀从而降低电路的性能,加入Dummy Metal就是为了增加金属的密度。
  11.整体物理版图验证
  主要包括LVS,DRC,ERC(Electrical Rule Checking电气规则检查,检查短路,开路等电气规则违例)。工具前面已经介绍,这一步的完成基本上就是是整个芯片设计阶段完成,下面的就是芯片制造了。物理版图以GDSII的格式交给掩膜版厂做掩膜,然后到芯片代工厂(Foundry)流片(tapeout),在晶圆硅片上做出实际的电路。流片出来后要对样片进行各种测试,满足要求后就可以批量生产了。
  附:
  DFT(Design For Test可测性设计)。IC设计时内部往往都设计为自带测试电路的结构,DFT的目的就是在设计的时候就考虑将来的测试。DFT的常见方法就是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元,DFT工具Synopsys的DFT Compiler,Mentor的FastScan等,需前后端设计员合作,并参与tapeout后测试。还有随着制造工艺不断进步产生的DFM(可制造性设计)问题等等。
  总结:
  Specification ->Architecture->RTL->SIM->DC->SIM->PT->DC->ASTRO->PT->DRC,LVS,ERC->TAPE OUT
  数字IC设计中常见文件格式:
  .alf:Advanced Library Format describing IC technology, cells and blocks
  .cif:Caltech Intermediate Format,纯文本的中间文件,主要用于版图的导入输出,不用于生产
  .ctlf:Compiled Timing Library Format
  .db:data base
  .def:design exchange format
  .dspf:寄生参数交互格式
  .edif:Electronic Data Interchange Format
  .gcf:General Constraint Format
  .GDSII: Graphic Design System II,Foundry最常用的最终版图格式
  .lef:Layout Exchange Format
  .lib:DC工具用的库文件格式
  .sdf:增量标准延时格式,用作静态时序分析模块Prime Time的输入
  .spef:标准寄生参数交换格式
  .tdf:工艺库对pad的定义文件
  .tf :Technology File format
  .tlf:timing library format
  .v:Verilog源代码
  .vhd:VHDL源代码
  .vho:带延时的门级网表文件,用于vhdl代码在第三方仿真tools下运行
 

微信扫描二维码咨询