尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

模拟IC设计必备:Cadence Virtuoso仿真与版图全流程解析

模拟IC设计必备:Cadence Virtuoso仿真与版图全流程解析 简介一套面向微电子与集成电路专业学生、以及自学Cadence IC设计工具的初学者的操作型教程合集。内容以CMOS模拟集成电路设计与仿真实例基于Hspice为主线重点覆盖电路设计仿真ADE与版图设计Virtuoso Layout Editing两大环节从原理图绘制、仿真环境配置到版图编辑与验证均有讲解能帮助缺少实验课指导的读者快速弄清Cadence常用操作流程。资源以zip格式提供大小约36.46MB内含作者在网上收集整理的多份图文教程与操作演示以界面步骤分解和关键参数设置说明为主适合零基础入门后按需翻阅。目前已有144人学习下载对希望熟悉Cadence环境、减少自行摸索时间的学生或工程师有较好的参考价值。1. 先分清 Candence IC 设计里的 ADE 仿真与 Virtuoso 版图这两条线很多人第一次搜“Candence 教程”实际要打开的是 Cadence Virtuoso 的两块界面一个叫 ADE负责跑电路仿真一个叫 Virtuoso Layout Editing负责画版图。两者共用同一个 library/cell/view 库但操作习惯、文件组织、报错方式完全不一样。我当年没开 Cadence 实验课捧着《CMOS模拟集成电路设计与仿真实例 基于Hspice》自学最卡人的不是运放原理而是 ADE 里选错了仿真器、模型库路径填错、版图里不知道哪一层是沟道DRC 报错改了一下午还在报。这篇按“仿真环境搭建 → 版图设计 → 结果查错 → 批量化跑仿真”的顺序讲适合自己在虚拟机或实验室服务器上复现模拟 IC 设计流程的人也适合从数字 IC 转过来补模拟 IC 操作基础的人。2. 搭好库结构和 ADE 仿真器Hspice 模型才能跑起来2.1 library/cell/view 三层结构先对齐Cadence 的 library 不是操作系统里随便建的文件夹而是由lib.defs、cds.lib这类文件登记的设计库。Library Manager 左侧看到的 library对应一个物理目录目录下每个 cell 是具体单元每个 cell 下又有多个 view常见的有schematic、symbol、layout、config。模拟 IC 设计常用的是analogLib和sample这类基础库再加上自己的worklib。需要特别注意analogLib只是符号库里面是理想电阻、理想电容、理想电源等符号不包含工艺模型。很多人把analogLib当成模型库在 ADE 里找了半天找不到 NMOS 模型原因就是把“符号库”和“工艺库”搞混了。真正的 Hspice 模型库是工艺厂给的.lib文件里面是nch、pch或者带tt/ss/ff角的名字。我把三层结构记成一句话library 决定用什么设计资源cell 决定画什么电路view 决定看电学还是看版图。后面所有 ADE 和 Virtuoso Layout Editing 操作都绕不开这个入口建议先在 CIW 的 Library Manager 里把这三个层级点开看一遍确认自己的 cellview 都能正常打开。2.2 在 ADE L 里切 hspiceD并把模型库接上电路打开后从 schematic editor 的 Launch 菜单进 ADE L。进去第一件事不是点仿真而是到Setup - Simulator/Directory/Host把仿真器从默认的spectre切到hspiceD。很多基于 Hspice 的教材例子里的.option、.lib语法只有 hspiceD 接口能直接兼容用 spectre 跑会报一堆不认识的控制行。接着到Setup - Model Libraries把工艺厂的.lib文件路径加进去。界面里有两栏要填路径和 section。路径要写绝对路径section 填TT、SS、FF之类的角名。同一套仿真配置里如果同时存在 spectre 模型和 Hspice 模型建议只在当前仿真器对应的栏里填避免 ADE 自动加载冲突模型。下面是一段 Hspice 网表的样子主要用来理解后面 ADE 参数表的对应关系* 差分输入级 DC 工作点检查 .option post2 runlvl6 .lib /home/ic/pdk/hspice/cmos018.lib TT .temp 25 VDD vdd 0 1.8 VIP inp 0 dc 0.9 VIN inn 0 dc 0.9 Itail vdd net_tail 40u M1 voutn inp net_tail vdd pch w20u l0.18u M2 voutp inn net_tail vdd pch w20u l0.18u R1 voutn vdd 10k R2 voutp vdd 10k .op .end这段代码里的post2表示把波形结果写到.tr输出文件runlvl6是 Hspice 的模型计算精度档位越高越接近原始模型但仿真也更慢。.lib后面的TT是工艺角选择不填会取文件里的默认角。w是栅宽l是栅长Itail是尾电流源40u表示 40 微安。ADE 里并不需要手工写这些模型参数但你需要在元件属性编辑界面把这些值填对否则生成的网表会带上错误尺寸。2.3 四种分析类型按什么顺序开拿到一个模拟电路我一般先开 DC 再开 AC最后才开 Tran。很多人上来直接跑瞬态波形跑出来乱七八糟往往不是电路问题而是 DC 工作点根本没建立起来。ADE 的Setup - Analyses里四种类型对应下面的设置方式分析类型关键参数用途dcsweep variable、start/stop/step找静态工作点、传输特性acsweep type、freq range、points看增益、带宽、相位transtop time、maxstep看时域瞬态响应noiseoutput node、input source、freq range看输出噪声、等效输入噪声DC 分析里最常改的是输入源的起始电压、终止电压和步长。比如做比较器翻转点我会把 sweep step 设到 1mV 甚至 0.1mV太粗会把真正的翻转电压跳过。AC 分析里要特别注意“AC 分析前必须先保证 DC 收敛”因为 AC 是在 DC 工作点上做小信号线性化DC 工作点不对AC 增益曲线就是一条错线。瞬态分析里maxstep不要设得无脑小。很多新手把 maxstep 设成 1ps跑 10us 的瞬态结果一天都跑不完。合理做法是先不设 maxstep让仿真器自动控制步长只在波形振荡或精度不对时再往小调。我一般先跑到原来速度的 1% 看一下波形趋势再决定是否收紧 maxstep。3. Virtuoso Layout Editing 版图设计层次、LSW 与 DRC/LVS 的配合3.1 从 Schematic 启动 Layout XL不要手摆器件Virtuoso 里有 Layout L 和 Layout XL 两种工作方式。Layout L 类似全手工画版图适合逆向分析或小规模单元正常模拟 IC 设计应该从 schematic editor 的Launch - Layout XL进入。这样启动后Virtuoso 会读原理图的连接关系自动生成器件的版图外形和飞线画完还能用 XL 的绑定关系反查每个版图层对应哪个电路节点。如果手头只有 Virtuoso Layout Editing 的裸窗口也可以通过Create - Cellview - From Cellview生成 Pcell但要自己手动打开Design - Import Netlist操作路径比 XL 麻烦。对初学来说舍不得这三分钟点菜单后面 DRC/LVS 对不上端口时才会真正浪费时间。用 XL 连线时还有一个容易忽略的点Virtuoso Layout Editor 里按P画 Path按CtrlP画 Polygon画互连线用 Path 更合适因为 Path 自带线宽和金属层属性Polygon 更多用于特殊图形填充。记得先看 LSW 当前选中的层是不是 Metal1经常有人画了半天才发现画的是 Metal3DRC 间距全报错。3.2 LSW 里真正要盯住的关键层LSW 是版图窗口右侧的图层选择窗口里面列的层来自工艺库的 techfile。这里不要背所有层先记住最基本的五类LSW 层名工艺含义常见画错状态DIFF/OD有源区没和 Poly 构成沟道就报不完整POLY1/POLY栅极栅极没有完全横跨有源区NWELLPMOS 衬底NMOS 被包进 NWELLCONT接触孔与 Metal1 或 DIFF/POLY 交叠不够METAL1第一层金属走线上留小缺口连通性报错画 MOS 管的本质很简单Poly 横跨 DIFF 的交叠区就是沟道Poly 两侧的 DIFF 就是源漏。实际画的时候先确认 LSW 的 valid layers 里DIFF和POLY都能选再画一个有源区再用 Rectangle 或 Path 画 Poly 横跨过去最后在 Poly 两侧源漏区各开一个 CONT再用 Metal1 把接触孔接出去。这样第一步至少能画出一根“看起来像 MOS”的版图。版图画完、连线也接完后下一步要跑 DRC。服务器上批量跑 Calibre DRC 时常见命令长这样calibre -drc -hier -turbo 4 \ -input gds/layout.gds \ -rulefile ${PDK}/rules/calibre/xxx_drc.cal 21 | tee drc.log注意实际用 pdK 提供的 runset 时rulefile 里已经写好了 GDS 路径和结果路径这条命令只是把必要参数补齐。GUI 里的 Calibre 菜单其实就是帮你生成这条命令。-hier表示按层次跑-turbo 4是开 4 个并行线程改大不一定更快机器核心不够时反而更慢。3.3 DRC 先清、LVS 再对网表很多人一上来就开 LVS结果 LVS 报一堆连线错误改了半天其实 DRC 还没过。正确顺序永远是 DRC 先清LVS 再对。DRC 管的是几何规则比如间距、宽度、覆盖、密度LVS 管的是电路是否和原理图一致。在 Virtuoso Layout Editing 里跑 DRC入口通常是Calibre - Run DRC或者Tools - DRC具体看装的是 Calibre、PVS 还是 Assura。跑完看结果有两种方式一种在图形界面上高亮错误层一种看 RVE 表格。我一般先用 RVE 按错误的 cellview 分组一条一条修改不要一次把所有错误全部高亮否则屏幕上一片绿根本分不清边界。LVS 报错里最常见的是端口名大小写不一致、电源地断线、把 source/drain 认反。跑 LVS 前先在 CIW 里Export CDL导出原理图网表再去 LVS 设置里把这个 CDL 文件作为 source netlist。如果 Virtuoso 里没有 Export CDL 菜单说明没有保存 schematic 的 CDF 属性回到原理图检查每个晶体管的 model name 和 terminals 是否完整。4. ADE 仿真结果检查与跑飞定位DC、AC、噪声和收敛参数4.1 先看 DC 工作点再看 AC/噪声曲线仿真跑完不要直接去看波形窗口。先看 DC operating point尤其是运放输出节点、尾电流源节点、输入对管栅极电压。一个简单的五管运放输出节点通常应该在 VDD 的一半附近输出完全顶到 VDD 或 GND说明反馈接反或偏置电流不对。检查 DC 工作点的方式在 ADE 里先把Outputs - To Be Plotted选成需要看的 net然后点 Run波形窗口会出现瞬态或 DC 曲线。如果只想看某个节点的静态电压可以在 ADE 的 Direct Plot 菜单选引脚或 net按住鼠标左键点到 schematic 上CIW 会直接打印电压值。再看 AC 曲线时重点看低频增益和单位增益带宽。低频增益不对优先查输出负载电阻、跨导管宽长比、以及 DC 工作点有没有让管子进入线性区。单位增益带宽和主极点半径相关不要拿一个跑飞的 DC 工作点去解释 AC 曲线那样只会把原因分析反。仿真现象优先检查所有节点电压都是 0VDD/GND 名字是否和模型一致输出顶到电源轨反馈极性是否接反、偏置是否给错AC 增益只有 0dB工作点是否在线性区、是否有输出短路瞬态波形震荡是否加了负载电容、环路相位裕度不够4.2 不收敛时的三个入口Hspice 仿真里最常见的是 DC 不收敛报错像no convergence in dc analysis。遇到这个错误有人直接改模型参数这是最危险的做法。我会按三个入口排查初值、迭代次数、仿真步长。先给关键节点加.nodeset让仿真器从一个合理电压开始迭代。比如输出节点期望 0.9V就写v(vout)0.9比较器的正端输入期望 1.2V也可以写。第二是加大迭代上限Hspice 里对应itl1和itl2前者是 DC 迭代次数后者是瞬态迭代次数。第三是检查gmindc这个参数控制 DC 分析时并联的最小电导太小会让矩阵病态。下面是常见的一组收敛兜底设置* 收敛兜底先加 nodeset再放宽迭代 .option itl1500 itl2400 .option gmindc1e-12 .option methodgear .nodeset v(vout)0.9 v(vip)0.9 v(vin)0.9 * 如果还不行检查是否模型库跑了错误角 .endmethodgear是齿轮积分法比默认梯形法更稳定但可能引入数值阻尼。gmindc1e-12表示最小电导是 1e-12 西门子数值已经比较小不要直接改成 1e-6否则相当于给每个节点挂一个大电阻工作点会被强行拉偏。.nodeset只是迭代初值不影响最终结果但收敛后要复仿一遍确认结果没变。4.3 状态文件和参数扫描的保存策略在 ADE L 里每次重新打开电路设置都会回到默认状态除非你把当前配置存下来。操作路径是Session - Save State。这里推荐存成单独的 state而不是存到 cellview 里这样同一个电路可以保留多个仿真配置比如dc_sweep、ac_corner、noise_check。参数扫描在 ADE L 里用Tools - Parametric Analysis。把原理图里某个元件属性比如w或load设成变量名然后在 Parametric Analysis 里填变量名和一组值可以一次性看不同尺寸对增益带宽的影响。要注意的是变量名不要带大写后缀和中文模型文件里对变量大小写敏感容易出问题。参数扫描跑完波形窗口会铺满曲线推荐把曲线的 legend 打开否则很难分清哪个颜色是哪个变量值。5. 用 ADE XL 跑工艺角与 Monte Carlo替代手动点按钮5.1 把 ADE L 的配置迁到 ADE XL做模拟 IC 只跑一个 TT 角往往不够。工作温度、工艺偏差、电源电压波动都要看ADE L 里手动切换模型库 section 虽然可以但一次要改一个地方容易漏。ADE XL 的价值在于把测试项、工艺角、统计条件集中在一起管理。迁移路径一般是先在 ADE L 把单个 DC/AC/Tran 跑通并保存 state然后在 Virtuoso 的 Launch 菜单里打开 ADE XL新建 test 时把 cellview 指向同一个 schematic。ADE XL 会读取 schematic 和模型库配置但不会自动带过来 ADE L 里的分析设置。我一般会重新在 ADE XL 里加一遍 dc 和 ac确认输出变量名再把模型库的 section 设置成变量。在 ADE XL 里定 corner 时不要把温度、VDD、工艺角全部混在一组里跑。更实用的做法是分成两组corner组跑 SS/TT/FF 和温度组合parametric组跑 VDD 从 1.62V 到 1.98V 的扫描。这样结果表格一打开就能一眼看出哪个组合最差。5.2 蒙卡不是把参数全撒开Monte Carlo 在 ADE XL 里叫 Monte Carlo analysis很多教程里叫“蒙卡”。跑蒙卡前先想清楚要验证什么。如果只验证失配就把匹配器件的 mismatch 参数打开不要同时把全局工艺角也拿来随机撒。如果验证全局偏差就只撒全局参数不撒 mismatch。两种都撒的话要跑很多样本才能分离贡献。我一般把样本数先设 50 跑一轮看 histogram 中心位置和 die area 有没有漂移再决定是否加到 200 或 500。输出不要直接 plot 所有波形而是设一个 measurement比如vout_slew、gbw、phase_margin最后只看统计表和直方图。这样 500 个样本也只是 500 行数据不会把波形窗口拖死。蒙卡设置项建议值说明samples50 起步先看趋势再决定是否加大random seed固定值固定 seed 才能复现不收敛样本mismatch按匹配对打开不要全局撒output variablegbw / pm / slew用 measurement不要 plot net 波形跑蒙卡时如果某一批样本不收敛先别急着调模型。打开不收敛样本的日志看是哪个节点先发散再用上一章说的.nodeset把关键节点初值固定。把 seed 固定住出问题才能复现。本文还有配套的精品资源点击获取
返回列表