IC设计经验总结
一、芯片设计之前准备工作:
1) 根据具体项目的时间要求预订MPW班次,这个可以多种途径完成。
(1):一方面可以跟中科院EDA中心秦毅等老师联系,了解各个工艺以及各个班次的时间。半导体所是EDA中心的会员单位,他们会很热心的帮助完成。
(2):另一方面可以和具体项目合作的单位如清华等,根据他们的流片时间来制定自己的流片计划。
2) 仔细核对设计库的版本更新情况,包括PDK、Spectre Model以及RuleDecks。这些信息可以直接可以从中科院EDA中心获得,或者从相应的合作单位进行沟通统一。这一点对后续的设计很重要,请务必要引起重视。
3) 得到新的工艺库必须整体的熟悉一下,好好的查看里面的Document以及Userguide之类的,里面的很多信息对实际设计很有帮助。安装工艺库的过程会根据具体设计要求做出一些选着。如TSMC65nm工艺库在安装过程中会提示是否选着RF工艺、电感是否使用厚层金属、MIM电容的单位面积电容值等之类的。
4) 制定TapeOut的具体Schedule. 这个Schedule的制订必须请相关有经验的人来核实,第一次TapeOut的人往往缺乏实际经验,对时间的安排可能会不合理。一旦Schedule制订好后,必须严格按照这个时间表执行。当然必须赶早不赶晚!
二、芯片设计基本系统框图一
图一
三、模拟IC设计基本流程
3.1) 设计框图如下图二
电路样式选择
电路结构确定
参数的选定
以及仿真
优化以及可
靠性仿真
图二
3.2电路的式样确定
这个主要是根据系统设计结果,分析和确定模拟电路的详细的式样。
3.3电路的结构确定
根据单元模块电路的功耗、代价等各个指标的折中分析,确定各个单元模块的具体实现电路形式,如滤波器是无源滤波器还是有源滤波器,有正交VCO产生I/Q信号还是通过/2分频器来实现I/Q信号,用差分形式还是用单路形式等等。在具体电路的选取过程中,我们需要查阅了大量的IEEE文献,从中选取了比较成熟的,应用较广的电路结构来进行我们的设计工作。有时候可能会发现所确定的结构很难或者根本不可能满足技术指标的要求,这就需要改进结构或者查阅文献,设法满足要求。
3.4参数的选取和仿真
电路参数的选定与电路的仿真是分不开的。在比较重要的设计任务中,手算可以在20%的时间内完成80%的设计工作量,剩下的20%却需要花80%的时间来做。通过手算确定的参数是近似的,有时候会引错方向。但是它可以了解到参数的变化对设计会有多大的影响,是很有必要的。而采用计算机的反复迭代会使设计者对设计体会不深,不是明智的办法。
俗话说“公欲善其事,必先利其器”。目前,在公司内部可以使用多种EDA工具进行电路仿真。对于EDA工具的使用不在于多,能够精通常用的一类或者几类就行。最主要的时候能够灵活的进行仿真规划,知道什么样的电路适合用什么样的仿真工具。
-HSPICE;对于低频电路设计来说,HSPICE是一种最灵活方便的工具,而且其仿真精度也比较高,后来被SYNOPSYS收购,好像也正是因为这个原因使得如今的Hspice仿真速度以及精度都可以跟Cadence产出的仿真器相媲美了。业界使用Hspice作为仿真软件的也挺多,原先是avanti公司的,
-Spectre;是Cadence的仿真器,由于其是图形界面,所以很直观。
-SpectreRF:对于射频电路设计,SpectreRF是一种不错的选择。
-UltraSim:相比于Spertre而言,在仿真精度损失3%的情况下,可以加速10~100倍的仿真速度。而且进行整体芯片后仿真时候,我们可以根据其不用的精度要求来设置各个模块的仿真精度。UltraSim Full-Chip Simulatorfor faster convergence on goals andsignoff of post-layout designs at thechip level.
具体UltraSim的使用可以参考《Virtuoso? UltraSim Simulator User Guide》、《ADE/UltraSim Integration Tutorial》等。在网上相关资料很多,可以根据要求自己下载学习。
-APS:Accelerated Parallel Simulatordelivers high-precision SPICE andscalable multi-core simulationperformance for complex and large preandpost-layout of analog and RF ICdesigns.
这种仿真器是现在业界最快的仿真器,如今实验室已经成功启动APS进行大规模的是芯片整体验证仿真。在整体芯片规模越大,越能体现出优势。
(对应的Cadence版本5.10.41.5,安装相应的MMSim72)
-SpectreVerilog:能够进行数模混合仿真的工具。
-UltraSim-Verilog:进行数模混合仿真的工具,仿真速度比SpectreVerilog快。实验室在使用中较多的用在数字模块的后仿验证。
-StarSim:高于HSPICE10倍的速度,对于大规模的晶体管级的仿真是不错的选择,可以进行tran分析。
-ADS:对于系统级的仿真,ADS是最好的选择。对于电路级的仿真,功能也很强大,而且如今已经有一个RFDE环境,可以将ADS嵌入在Cadence中,很方便的进行使用。
在电路参数的选定及电路仿真的工作开始之前,最好能够阅读一遍厂家提供的Model库及其文件,从中可能会得到意想不到的东西。
电路参数的选定及电路的仿真需要有良好的IC设计的基本知识。而这些知识的获得则需要个人的不断努力,不断的积累。
3.5优化和可靠性仿真
由于实际工艺的都存在不确定性,会偏离设计的初衷,如器件尺寸的偏离,参杂浓度的改变等,都会影响到电路的性能,所以设计的时候应具有一定的鲁棒性,因此需要可靠性仿真,确保芯片在工艺偏离的情况下,性能仍然符合要求。
对各种参数要求较严格的电路,需要做蒙特卡罗分析,以前章琦做过简单的蒙特卡罗分析仿真方法的仿真,,希望大家能够相互学习这种方法,做芯片电路设计的全面仿真。还有工艺Corner分析至关重要,另外敏感性分析和温度分析也应该引起重视,特别是对某些特定电路的设计。
我们对工艺角Corner分析应至少包括:全部模型的SS,TT,FF角。如有时间的话,可以进一步细化,如N型晶体管和P型晶体管趋向于两种不同的工艺角SS和FF等,晶体管和其他的电阻和电容等的工艺角不同等。总而言之,应使用组合的方法,尽可能的涵盖一切可能出现的工艺角情况。
就应用的温度而言对其进行温度范围的仿真,一般而言,应该覆盖-20~100的温度,取特征值如-20,27,100度等三个温度点进行仿真即可。温度应配合工艺角联合进行仿真,比如仿真在100度,SS工艺角的情况下芯片的性能。
分析可能的失配情况,尤其是匹配的对管,人为的进行失配调整,如对管的尺寸失
(1) S: Spice
(2) A: Analog
(3) AMR: Analog Multi Rate
(4) DA: Digital Accurat
(5) MS: Mixed Signal
(6) DF: Digital Fast
(7) DX:
一般其中DF/DA模式适用于数字电路(数字逻辑电路、门电路、触发器、ROM、RAM等)仿真,不要把这两种模式用于模拟电路仿真。
如果在option没有设置,默认是MS模式,兼顾精度与速度。AMR模式不能“本地化”(local)使用,就是说AMR模式只能用于整个电路而不能针对某一个模块使用。
公差容忍度设置:
speed可以设置总的公差容忍度tol(tol也可以单独设置),tol包括电压、电流等所有的公差容忍度之和。
.usim_opt speed=2 设置tol=0.001,比较高的精度!
.usim_opt speed=1 #vco 对vco cell使用0.0001的tol
speed=1,2,3,4,5,6,7,8对应的tol分别是0.0001 ,0.001,0.0025,0.005,0.02,0.02,0.04,0.07,精度以此降低。
通常,如果精度要求不是很高,可以采用默认设置,而无需设置这一项。tol还与解矩阵方程的收敛性有关,然而,我还从来没有碰到ultrasim不收敛的时候!!
再强调一点:精度设置的越高,相应的速度越低!
Simulation Modes
Virtuoso UltraSim Simulation Modes Overview
一般使用过程中我们比较多的关注仿真模式、仿真速度、仿真精度的设置。其余一些详细的设置可以参考《Virtuoso? UltraSim Simulator User Guide》
下面以使用Ultrasim仿真PLL的例子简单熟悉Ultrasim的设置
PLL模块中既有高频模块VCO,Divider,也有低频模拟模块Charge-Pump,LPF,还有数字模块Digital,所以这是比较复杂的系统,包含了数字、模拟、射频。往往这样的系统仿真速度和精度个大问题。VCO的仿真需要小的步长,较高的精度,但是数字模块可以采用较大的仿真步长,精度要求不高。如果整体系统都是按照VCO的仿真精度来设置的话,仿真速度会很慢,特别是有模块进行后仿真的时候,速度就会成为更大的问题。而UltraSim的仿真可以分模块很好处理这个问题,加快仿真速度,但也不损失仿真精度。
1) 启动Cadence icfb&,打开已经建立好的Config(这样的仿真务必建成Config形式)
2) 设置各个模块的仿真模式以及仿真精度。有两种方法可以使用:第一直接所提取网
标中加入命令形式:如usim_opt sim_mode=a speed=2 subckt=[vco2phase]
usim_opt sim_mode=a speed=2 inst=[I19.I19.I0]
以上说明第一个是以子电路形式表示,vco2phase的仿真模式为a,仿真速度为2,第二个是以instances形式表示的。
多列举两个理解一下:
.usim_opt sim_mode=da xi1 xi2 #dff
.usim_opt sim_mode=a xi5 #driver @pmos2
.usim_opt wf_format=wdf
.usim_opt作为options,前面的3个option分别表示:把子电路xi1 xi2 和cell(名称为dff的所有子电路) dff设置为DA仿真模式; 把xi5、cell driver、model pmos2(用到模型名称为pmos2的的mos管)设置为a模式;而生成的波形文件格式wdf。 usim_opt sim_mode=a speed=2 maxstep_window=[0 10p 10n 1e20] subckt=[vco2phase] 设置vcophase的最大仿真步长。
另外一种通过界面化操作。
打开Hierarchy Editor window如下
可以在vco2phase一栏处右击来设置相应的仿真模式、以及仿真速度。
设置完成后点击File >>>Save按钮。
3) [Cadence hierarchy editor window] View >>>>>Tree
可以设置各个instance的view to use.(如veriloga/schematic/av_RC/extracted)
。
选定相应的view后[Cadence hierarchy editor window] View >>>Update(必须)。 更新后点击Design>>>Hierarchy>>>>Return to Top.
这个设置就相对很灵活,对模块选着性的进行后仿真处理!!!!
4) 点击:[Analog Circuit Design Environment] Simulation>>>>Options >>>Analog
进行仿真设置:
Simulator选着UltraSim;
瞬态仿真,设置仿真时间长度(如400ns);
下面的设置是后仿真情况下给出的:(不同的仿真可以设置不同模式)
Simulation Mode:Mixed Signal (MS);
Speed=4;
DC method:Complete DC (1)
post-layout method : (Liberal RCR(3)
)
点击 Browse,弹出Choose the Top Cell 对话框,然后选中schematic,点击OK。
New Configuration 变成如下图示。
然后点击Use Template…
Name 中选中 spectre(只进行模拟仿真验证),或者选中spectreVerilog(进行数模混合仿真验证),选中后点击OK,回到New Configuration再点击OK就完成了Config的建立。
(2) 进行仿真验证
在Library Manager的View中打开Config
在hierarchy editor中,View to Use 栏中点击右击相应模块的仿真模式(一般后仿真选中calibre,前仿真的话是选择schematic)。
设置完后,进入ADE仿真环境。(点击Tools----Analog Envirment)
在ADE仿真环境中点击 Setup---High-Performance Simulation…
.
弹出High-Performance Simulation Options对话框:
Simulation Performance Mode 一栏包括Spectre、Turbo以及APS
对于规模比较大,而精度要求不是很高的电路来说,第二栏 Override Accuracy(Errpreset) Defaults 可以设置为Liberal,而对于高精度的设计则需要设置为moderate 或者conservative
The default settings for Multithreading for Spectre, Turbo and APS simulators are as given below:
在仿真过程中根据电路规模(Device 的多少) 设置合理的仿真器
Cells marked with the symbol√ in the above table indicate the recommended tool to use
for designs of a particular size. The following general rules apply:
■If the design is very small, say with less than 100 devices, Spectre L or Spectre Turbo
single thread are the best choice. There is no additional performance gain using Spectre
Turbo multi-thread or APS.
■In designs with up to 5K devices, Spectre Turbo becomes the tool of choice and
additional performance gain can be obtained by enabling multi-threading with Spectre Turbo.
■As the device size continues to grow, APS provides additional value with its multithreading option.
■For designs with more than 50K devices, APS provides significant performance gain
using both single-thread and multi-thread.
■APS is recommended for any post-layout design (dominated by parasitic elements).
APS is targeted at transient, DC, AC and RF analysis including interactive features like alter,
altergroup, sweep, and Monte Carlo. In case of AC analysis, the simulation is fully
parallelized, resulting in significant performanance gain on large and post-layout designs.
Typically AC analyses are not long simulations. Other analyses are not supported.
The following recommendations allow you to achieve best performance with APS:
■APS with the +errpreset=liberal command line option provides sufficient accuracy
for the majority of designs. Only high precision designs may require the use of
Output Library 为输出电路的library,自动生成。
Cellmap File 一般库中已经存在,可以找到其相应的路劲加入。
Calibre View Name 可以自己随便命名,只是在后仿真时候应该调用相应的名字。下面会讲到。
我们需要特比注意的是RF 器件与一般的MOS 器件不同,这类器件的模型是代工厂经过实际测量得到的参数,在spice model 中通过子电路表示。因此,它的模型中已经包含了器件的寄生信息。而且,由于这类器件的面积通常较大,其中的寄生电容和寄生电阻值是相当可观的。比如,在设计中,所示的每个RFMOSFET 的宽和长分别为50um 和0.24um,每个器件包含10个finger。如果工具对RF 器件的内部也进行提取,将会对导致器件的寄生电容和电阻重复提取。为了确保提取正确,Calibre xRC 提供一种称为“黑盒”提取的方法,可以将指定的器件(通常是RF 器件)看作理想器件。对其内部的节点之间的寄生电容和寄生电阻不再提取。
具体步骤如下:首先,先定义xcell 文件,例如;
pmoscap_rf* pmoscap_rf
moscap_rf18* moscap_rf18
moscap_rf18_nw* moscap_rf18_nw
moscap_rf25* moscap_rf25
nmos_rf* nmos_rf
nmos_rf_18* nmos_rf_18
nmos_rf_18_nodnw* nmos_rf_18_nodnw
nmos_rf_25* nmos_rf_25
nmos_rf_hvt_nodnw* nmos_rf_hvt_nodnw
nmos_rf_lvt* nmos_rf_lvt
nmos_rf_lvt_nodnw* nmos_rf_lvt_nodnw
nmos_rf_mlvt* nmos_rf_mlvt
nnmos_rf_nodnw* nmos_rf_nodnw
pmos_rf* pmos_rf
??????????
左边是版图单元的名称,右边是电路图单元的名称。其中所指定的器件版图和电路图必须是单独的单元。通过这种方式定义版图和原理图单元的对应关系,以及提取寄生时所需要屏蔽的版图单元。其次,在XRC rule 中添加PEX IDEALXCELL YES 语句。最后,采用gate level 的方式进行寄生参量提取,确保工具将RF 器件识别为一子电路。如果采用GUI 的方式,选择gate level 提取,而不是transistor level 级提取。同时在input 选项中的已经建立的xcell文件
在设置好以后点击RUN PEX,接下去和没有使用xcell时候一样。
【4】Monte Carlo仿真(简称MC)
参考<
基本步骤:
“Specifying the Characteristics of a Statistical Analysis” on page 86 “Selecting Signals and Expressions to Analyze” on page 88 “Defining Correlations” on page 98
“Starting and Stopping the Analysis” on page 99
“Saving and Restoring a Statistical Analysis Session” on page 101 具体:打开ADE仿真环境,点击Tools----Monte Carto
出现Analog Statistical Analysis对话框
1. Specify the Number of Runs for this statistical analysis.
2. Specify the Starting Run #.
3.Choose the type of Analysis Variation.
?Process Only
?Mismatch Only
?Process Variation and Mismatch
4. Choose a parameter to sweep in an inner loop
5. Selecting Signals and Expressions to Analyze 在ADE中产生netlist:
然后根据要求加入统计分析的内容。上例中加入了工艺参数dtxo_n_18
的
点击Results---Print---Iteration vs. Value….:
点击Results—Plot—Histogram:查看变量的直方图分布。
以上Analysis Variation {Process Only},也可以设置为 {Mismatch Only} 如下:
定义器件之间相关性:Simulation---Define Correlations…..
还可以选择Analysis Variation 为{Process & Mismatch}进行仿真