第13章 EDA工具入门:Cadence ADE
前十二章我们一直在跟电路原理打交道。你学会了怎么算增益、怎么调偏置、怎么分析稳定性,但到目前为止,这些计算大多停留在纸面上。芯片流片一次的成本从几十万到上千万人民币不等,没有任何人敢把没经过仿真的电路直接送去制造。你需要的是一套可靠的虚拟实验台,这就是EDA工具。
13.1.1 EDA工具概述
EDA(Electronic Design Automation,电子设计自动化)工具,用计算机辅助你完成电路设计、仿真、版图绘制和验证。在模拟集成电路领域,EDA工具是设计流程中的核心环节。
13.1.2 为什么模拟IC设计离不开EDA
数字电路设计有很强的规律性,逻辑综合工具可以把Verilog代码自动变成门级网表。模拟电路不一样。每个晶体管的尺寸、每个电阻的阻值、每条走线的寄生参数,都会影响电路的性能。你没法用综合的方式自动生成一个运放,只能靠人工设计,再用仿真工具反复验证。
仿真工具能帮你做的事,举几个例子:
- 验证功能:电路画完了,先跑一遍瞬态仿真,看输出波形是否符合预期。
- 确定工作点:直流仿真告诉你每个管子工作在哪个区域,饱和还是线性,电流多大。
- 检查性能指标:交流仿真给出增益、带宽、相位裕度;噪声仿真给出等效输入噪声;蒙特卡罗分析告诉你工艺偏差下良率有多少。
- 排查问题:电路不工作,用直流工作点扫描定位是偏置问题还是连接问题。
这些工作靠手算和实验板是完不成的。手算只能估算大致性能,实验板上的寄生参数和芯片完全不一样。仿真虽然不是真实芯片,但好的仿真模型配合正确的仿真方法,结果和实测可以非常接近。前提是你得会用工具,也得知道工具在算什么。
13.1.3 主流EDA工具与选型
目前工业界主流的模拟IC设计工具,主要来自两家公司。
Cadence 的Virtuoso平台,核心仿真环境就是本章要讲的ADE(Analog Design Environment)。它集成了原理图编辑、仿真、波形查看、版图设计等完整流程,是国内集成电路设计公司使用最广泛的工具。
Synopsys 的Hspice,是历史最悠久的SPICE类仿真器之一。它的界面不如Cadence友好,但仿真精度高、收敛性好。台积电、中芯国际等工艺厂常用Hspice进行模型验证。有些工程师习惯用Cadence画原理图,然后导出网表用Hspice仿真。
选择哪个工具,往往不取决于个人偏好,而取决于你所在的公司或实验室用哪个,以及工艺厂提供的PDK(Process Design Kit,工艺设计套件)支持哪个工具。PDK是工艺厂提供的器件模型、设计规则、参数提取文件的集合,没有PDK,仿真工具就是空壳。好在主流工艺厂对Cadence和Synopsys都提供完善的PDK支持。
图1:ADE中包含的各种仿真器
除了这两家,还有Mentor(现在叫Siemens EDA)的Calibre用于版图验证,Agilent的ADS用于射频电路设计,MathWorks的MATLAB/Simulink用于行为级建模和算法验证。一个完整的芯片设计流程,往往要同时用好几个工具。
13.1.4 模拟IC设计流程中的EDA角色
一个典型的CMOS模拟IC设计流程是这样的:
flowchart TD
A[设计规格定义] --> B[原理图设计]
B --> C[前仿真<br/>(ADE: DC/AC/Transient/Noise)]
C --> D{满足指标?}
D -- 否 --> B
D -- 是 --> E[版图设计<br/>(Virtuoso Layout)]
E --> F[寄生参数提取<br/>(PEX)]
F --> G[后仿真<br/>(ADE + 寄生网表)]
G --> H{满足指标?}
H -- 否 --> E
H -- 是 --> I[DRC/LVS验证<br/>(Calibre)]
I --> J[流片]
图2:CMOS模拟集成电路设计流程
前仿真(Pre-layout Simulation)用的是理想器件模型,不考虑版图走线带来的寄生电阻和电容。后仿真(Post-layout Simulation)在版图完成后进行,寄生参数被提取出来加入网表,结果更接近真实芯片。后仿真不满足指标,就得回到版图甚至原理图修改,这也是芯片设计中最耗时的迭代环节。
ADE在整个流程中扮演的角色,是前仿真和后仿真的统一入口。你用它设置仿真类型、选择分析项目、查看波形、评估性能。从今天开始,你写的每一份设计报告里,性能数据都将来自ADE的仿真结果。
13.1.5 Cadence ADE环境
Cadence的模拟设计环境不是一个孤立的软件,而是一套协同工作的工具组合。初次接触时,界面上同时弹出好几个窗口,容易让人摸不着头脑。我们先理清这些窗口之间的关系。
13.1.6 启动与配置文件
在终端输入命令启动Cadence:
icfb &
(新版本中命令可能是 virtuoso &,取决于你装的版本。)
启动后弹出的第一个窗口是CIW(Command Interpreter Window,命令行窗口),它是整个Cadence环境的中枢。CIW包含菜单栏、输出信息区、命令行输入区,以及鼠标按键功能提示。
图3:Cadence IC的命令行窗口
启动之前,你需要确保几个配置文件就位。最重要的两个:
.cdsinit:启动时自动执行的SKILL脚本,配置快捷键、编辑器、仿真器默认选项等。找不到这个文件,快捷键会失效,界面行为也会异常。默认样本在 <Cadence安装目录>/tools/dfII/samples/local/cdsinit。
cds.lib:设计库配置文件,告诉Cadence去哪里找你的设计库和工艺库。最简单的写法是:
INCLUDE <Cadence安装目录>/share/cdssetup/cds.lib
DEFINE mylib ./mylib
第一行引入Cadence自带的库(包括analogLib基本元件库),第二行定义你自己的设计库路径。没有cds.lib,Library Manager里什么都看不到。
其他配置文件如.cdsenv(环境变量)、display.drf(版图显示颜色)等,初期用默认设置即可,等你有经验了再按需调整。
13.1.7 Library Manager:设计库管理
Library Manager是Cadence的文件浏览器,界面分四栏:Library(库)、Category(类别)、Cell(单元)、View(视图)。
- Library:一个设计库就是一个文件夹,包含一组相关的设计单元。通常一个项目建一个库。
- Cell:一个单元可以是一个器件、一个子电路或一个顶层模块。比如你设计的运放,就是一个Cell。
- View:同一个Cell可以有多种表示形式。原理图(schematic)、符号(symbol)、版图(layout)、网表(netlist)都是不同的View。画完原理图后,你需要创建symbol才能在其他电路中被调用。
- Category:给Cell分类的可选功能,库大了才用得上。
新建设计库的方法:CIW菜单 File → New → Library,按向导提示输入库名和路径,选择是否关联工艺库。关联工艺库这一步很重要,它决定了你能用哪些工艺的器件模型。
13.1.8 Schematic Editor:原理图编辑器
在Library Manager里双击某个Cell的schematic视图,就打开了原理图编辑器。这是你画电路的地方。几个最常用的快捷键必须记住:
| 操作 | 快捷键 | 菜单路径 |
|---|---|---|
| 调用器件 | i |
Add → Instance |
| 添加连线 | w(细线)/W(粗线) |
Add → Wire |
| 添加标签 | l |
Add → Label |
| 添加端口 | p |
Add → Pin |
| 查看属性 | q |
Edit → Properties |
| 删除 | Del |
Edit → Delete |
| 撤销/重做 | u / U |
Edit → Undo/Redo |
| 复制 | c |
Edit → Copy |
| 放大/缩小 | Ctrl+Shift+Z / Shift+Z |
View → Zoom |
调用器件时(按i),弹出的对话框里可以输入库名和单元名。最常用的库是analogLib,里面包含基本元件:nmos4(四端NMOS)、pmos4(四端PMOS)、res(电阻)、cap(电容)、vdc(直流电压源)、idc(直流电流源)、vsin(正弦电压源)、vpulse(脉冲电压源)等。
图4:添加模拟集成电路元件系列
放置器件后,按q查看属性。对MOS管,你需要设置模型名称(Model name,对应PDK里的器件模型,如nch、pch)、沟道宽度(Width)、沟道长度(Length)、指状数目(Fingers)等参数。对电压源,你需要设置直流电压值(DC voltage)、交流幅度(AC magnitude,交流仿真时用)等。
画完电路,按Check and Save(快捷键X)检查是否有连线错误或悬空引脚。检查通过后保存,原理图就完成了。
13.1.9 ADE窗口:仿真控制中心
在原理图编辑器中,菜单 Tools → Analog Environment → Simulation,打开ADE窗口。这是你设置仿真参数、运行仿真、查看结果的地方。
图5:ADE的仿真界面
ADE窗口的核心功能区域:
- Design:显示当前仿真的电路和工艺库。
- Analyses:列出已添加的仿真类型,如dc、ac、tran。
- Outputs:列出需要观察的输出变量,如某个节点的电压、某条支路的电流。
- Status:显示仿真状态(未运行、运行中、完成)。
菜单栏中,最常用的是Setup和Analyses两个菜单。Setup → Model Libraries用来添加PDK模型文件;Setup → Simulator选择仿真器(Spectre或Hspice)。Analyses → Choose打开分析类型选择对话框,在这里勾选你需要的仿真。
13.1.10 仿真类型概览
ADE支持的仿真类型很多,本章先做概览,第14章会详细讲每种仿真的设置方法和应用场景。
直流仿真(dc):计算电路的直流工作点。可以做直流扫描,比如把输入电压从0扫到VDD,观察输出变化。用于确定偏置点、传输特性、静态功耗。
瞬态仿真(tran):在时间域上仿真电路行为,类似虚拟示波器。设定仿真时长,观察波形随时间的变化。用于验证电路功能、大信号行为、建立时间等。
交流小信号仿真(ac):在直流工作点附近对电路做线性化,然后扫频分析增益和相位。用于得到幅频特性、相频特性、带宽、相位裕度。
噪声分析(noise):在指定频率范围内计算电路的输出噪声和等效输入噪声。用于评估电路的信噪比。
零极点分析(pz):计算传递函数的极点和零点位置,直接用于稳定性判断。
蒙特卡罗分析(monte carlo):根据工艺参数的统计分布,多次随机抽样仿真,输出性能指标的统计分布。用于评估良率。
参数分析(parametric):对某个设计参数(如电阻值、电容值、晶体管宽度)做扫描,观察性能指标的变化趋势。
每种仿真解决不同的问题。设计一个运放,你至少需要:直流仿真看工作点,交流仿真看增益和带宽,瞬态仿真看摆率和建立时间,噪声仿真看等效输入噪声。这些仿真在ADE里都是几个点击的事,但理解每个仿真在算什么,才是用好工具的前提。
13.1.11 仿真流程与实例
理论讲完了,现在走一遍完整的仿真流程。我们用一个最简单的例子:单管共源放大器。它只有一个NMOS管和一个电阻负载,但麻雀虽小五脏俱全,跑完这个例子,你就掌握了ADE的基本操作流程。
13.1.12 建立原理图
第一步,在Library Manager中新建一个库,命名mywork。然后在这个库下新建Cell,命名cs_amp,View选择schematic。
在原理图编辑器中,按i调用器件,放置以下元件:
analogLib库中的nmos4,模型名设为nch,W=10u,L=0.18u(假设用0.18um工艺)analogLib库中的res,电阻值设为10kanalogLib库中的vdc两个:一个作为电源VDD,电压1.8V;一个作为输入偏置VIN,电压设为0.6VanalogLib库中的gnd接地符号
连接方式:NMOS的漏极通过电阻接到VDD,源极接地,栅极接输入电压源VIN。输出从漏极引出。
按X检查并保存。然后创建symbol:菜单 Create → Cellview → From Cellview,按向导生成一个简单的方块符号。这样以后可以在其他电路里调用这个放大器。
13.1.13 设置仿真环境
回到原理图编辑器,菜单 Tools → Analog Environment → Simulation,打开ADE窗口。
第一步,添加模型库。菜单 Setup → Model Libraries,点击Browse找到PDK提供的模型文件。不同工艺库文件名不同,通常类似xxx.lib或xxx.scs。选中后点击Add,再OK。
第二步,选择仿真器。菜单 Setup → Simulator,选择spectre。Spectre是Cadence自家的SPICE类仿真器,收敛性好、速度快,是默认选择。
13.1.14 直流仿真:确定工作点
先跑直流仿真,确认管子工作在饱和区。
菜单 Analyses → Choose,在Analysis Type里选dc,勾选Save DC Operating Point。这个选项会把每个器件的直流工作点保存下来,方便查看。
点击OK后,ADE窗口的Analyses栏里出现dc分析。点击绿色三角形按钮(或菜单 Simulation → Run)运行仿真。
仿真完成后,怎么查看工作点?在ADE菜单 Results → Print → DC Operating Point,然后点击原理图中的NMOS管。弹出的表格里会显示:
region:工作区域,饱和区显示2,线性区显示1,截止区显示0vgs、vds、vth:栅源电压、漏源电压、阈值电压id:漏极电流
对共源放大器,NMOS应该工作在饱和区,即vds > vgs - vth。如果region显示1,说明管子进了线性区,你需要调整输入偏置电压或电阻值。
这里有个新手常犯的错误:输入偏置电压设得太高或太低,导致管子截止或进入线性区。直流工作点检查是每次仿真的第一步,养成习惯。
13.1.15 直流扫描:观察传输特性
工作点正常了,再做一次直流扫描,看放大器的传输特性。
在Analyses → Choose里,把dc分析的Sweep Variable设为Voltage,选Source,然后点击原理图中的输入电压源VIN。扫描范围设0到1.8V,步长1mV。
运行仿真。在ADE菜单 Results → Direct Plot → Main Form,在弹出的对话框里选择DC,Output选Voltage,然后点击原理图中输出节点(NMOS漏极)。波形窗口弹出,显示输出随输入变化的曲线。
图6:进行交流小信号仿真的ADE环境
这条曲线的中间段斜率就是小信号增益。你可以在波形窗口用Marker工具测量:菜单 Marker → Place → Vert Marker,在曲线斜率最大的地方放两个标记,读纵坐标差和横坐标差,相除就是增益。
13.1.16 交流仿真:频率响应
直流扫描确认了增益量级,现在用交流仿真看频率响应。
在Analyses → Choose里,添加ac分析。这里有个关键设置:输入电压源VIN的AC幅度。回到原理图,选中VIN,按q,在AC magnitude一栏填1。这样交流仿真时输入小信号幅度就是1V,输出幅度直接就是增益值。
AC分析的参数设置:Sweep Variable选Frequency,Sweep Range设1Hz到10GHz,Points per Decade设10或20。运行仿真。
用Results → Direct Plot → Main Form,选择AC,Output选Voltage,点击输出节点。波形窗口显示幅频和相频两条曲线。
从幅频曲线上,你可以读出:
- 低频增益:曲线平坦段的纵坐标值,单位dB
- -3dB带宽:增益下降3dB对应的频率
- 单位增益带宽(GBW):增益降到0dB对应的频率
对单管共源放大器,低频增益约为 \(A_v = -g_m R_D\),\(g_m\) 是跨导,\(R_D\) 是漏极电阻。你可以从直流工作点里读出 \(g_m\) 值,手算一下,再跟仿真结果对比。两者应该接近,但不会完全相等。仿真模型包含了沟道长度调制等二阶效应,手算公式忽略了它们。
13.1.17 瞬态仿真:验证大信号行为
交流仿真告诉我们小信号增益,但放大器处理大信号时会怎样?比如输入一个0.5V的方波,输出会不会失真?这需要瞬态仿真。
在Analyses → Choose里,添加tran分析。Stop Time设为10us,Accuracy Defaults选moderate。
瞬态仿真需要输入信号随时间变化。把输入电压源VIN从vdc换成vsin(正弦源)或vpulse(脉冲源)。以vsin为例,设置:DC voltage=0.6V(偏置点不变),Amplitude=50mV(小信号),Frequency=1kHz。如果你想看大信号失真,把Amplitude改成0.3V试试。
运行仿真,用Direct Plot选择Transient,点击输出节点,观察输出波形。小信号输入时,输出是放大了的正弦波,幅度约等于输入乘以增益。大信号输入时,输出波形会出现削顶或削底,这是管子进入线性区或截止区导致的。
13.1.18 参数扫描:观察器件尺寸的影响
最后一个常用功能:参数扫描。假设你想看负载电阻R从5k变到20k时增益怎么变化。
在ADE菜单 Tools → Parametric Analysis,打开参数分析窗口。在Variable栏选择R(原理图中电阻的变量名,如果没有变量名,需要先在原理图里把电阻值设为一个变量,比如R,而不是具体的数字),Values填5k 10k 15k 20k。点击Start运行。
仿真完成后,波形窗口会显示4条曲线,对应4个电阻值。你可以直观地看到增益随电阻增大而增大,但带宽会下降。增益增大时带宽下降,这是增益带宽积的典型权衡。
图7:在ADE中,仿真器根据工艺库提供的工艺和失配参数的高斯分布,对一个电路参数进行不同的统计性分析仿真。当仿真结束后,可以利用ADE的数据分析器分析工艺参数变化对所设计电路良率的影响,并及时进行改进,提高设计可靠性
13.1.19 常见问题与调试技巧
初学ADE,几乎每个人都会遇到下面这些问题:
仿真不收敛。这是最常见的错误。SPICE类仿真器用迭代法求解非线性方程组,迭代不收敛时会报错。解决办法:检查电路是否有悬空节点、是否有电压源直接并联电容、初始条件是否合理。在ADE里可以调整仿真器选项:Simulation → Options → Spectre,把Iteration Count调大,或者把Relative Tolerance从默认值放宽一点。但治本的办法是检查电路本身的问题。
模型库没加载。报错信息里出现unknown model或model not found,说明PDK模型没加对。检查Setup → Model Libraries里的路径是否正确,模型名是否和原理图里设置的Model name一致。
波形窗口空白。仿真跑完了,但波形窗口什么都没有。常见原因:输出变量没选对,或者Direct Plot时点错了节点。确认你点击的是原理图中正确的输出节点,且该节点的电压确实有变化。
直流工作点不对。管子不在饱和区,或者电流为零。用Results → Print → DC Operating Point逐级检查每个节点的电压,从电源开始往下排查,通常很快能定位问题。
13.1.20 本章小结
这一章我们走通了从原理图到仿真结果的完整流程。你学会了:
- 用Library Manager管理设计库,用Schematic Editor画原理图
- 在ADE中设置模型库、选择仿真器、添加分析类型
- 运行直流仿真确定工作点,用直流扫描看传输特性
- 运行交流仿真得到频率响应,读出增益和带宽
- 运行瞬态仿真验证大信号行为
- 用参数扫描观察器件尺寸对性能的影响
这些操作看起来琐碎,但每一步都有明确的工程目的。直流工作点是所有仿真的基础,交流仿真告诉你小信号性能,瞬态仿真验证大信号行为,参数扫描帮你做设计权衡。建议你反复练习本章实例,直到能独立完成仿真流程。
下一章,我们将深入每种仿真分析的原理和设置细节,包括如何设置仿真精度、如何处理仿真不收敛、如何用波形计算器做定量分析。仿真结果错误会导致设计指标不达标,浪费流片成本,这些内容会直接影响到你仿真结果的可靠性。