简介:这份资源是面向集成电路设计初学者的Cadence Virtuoso版图教程,适合首次接触版图设计、需要完成课程设计或尝试流片的用户。教程以最简单的反相器为例,完整走通从原理图创建、元件放置、参数设置到瞬态仿真、版图绘制与后仿真的全流程,并详细讲解Library、Cell、View的树状管理结构及techfile工艺库链接方法,同时整理了i、w、q、x等常用快捷键的用法。资源包共1个PDF文件,大小约2.32MB,内容按操作步骤逐步展开,配有界面截图与参数说明,便于对照练习。目前已有2859人学习,读者可借此快速掌握原理图绘制、元件库管理与基本仿真流程,为后续更复杂的集成电路设计打下基础。
1. 从一条icfb &命令说起:这份 Cadence Virtuoso 版图教程到底能带你走多远
很多刚接触集成电路设计的同学,第一次打开 Cadence Virtuoso 时都会卡在同一个地方:终端里敲下icfb &,回车,然后盯着那个 Library Manager 窗口发呆,不知道下一步该点哪里。这份教程就是冲着这个场景来的。它不讲抽象的设计方法论,而是用一条最笨也最稳的路径,带你从零建库、画原理图、跑瞬态仿真,再一路走到版图新建,全程围绕一个最简单的反相器展开。适合谁?适合第一次做课程设计、第一次碰工艺库、第一次需要把原理图和版图对应起来的初学者。你不需要先懂半导体物理,只要跟着步骤走,就能把一整套流程完整跑一遍。关键词是“课程资源”,但它的价值不在于文件本身,而在于它把 Cadence 那套树状文件结构讲清楚了——Library、Cell、View 三层关系一旦理顺,后面所有操作都不会迷路。
2. 建库、建 Cell、挂工艺库:把文件结构先理顺再动手
2.1 为什么每个工程都要单独建一个 Library
Cadence 的文件管理是树状的:Library 是文件夹,Cell 是单元,View 是单元的不同表现形式。一个 MOS 管可以是一个 Cell,但它同时有 schematic、symbol、layout、hspice、spectre 等多个 View。如果你把所有东西都塞进一个默认库,后面找文件会非常痛苦。常见做法是每个独立工程建一个 Library,名字用项目缩写,比如教程里的inv。建库时最关键的一步是选择是否链接 techfile。如果只做原理图仿真,选Don't need a techfile就行;但只要你要画版图,就必须选Attach to an existing techfile,然后从列表里挑工艺库。教程用的是tsmc18rf,这是 0.18 微米工艺。选错 techfile 的后果是后面画版图时图层不对,改起来很麻烦。
2.2 新建 Cell 和 View 的具体操作
在 Library Manager 里选中刚建好的inv库,点 File → New → Cell。Cell name 填sche,View Name 填schematic,Tool 选 Composer-Schematic。点 OK 后,Library Manager 里就会多出sche这个 Cell,下面挂着schematic这个 View,同时原理图编辑窗口会自动打开。如果没打开,双击那个 View 就行。这里有个细节:View Name 不是随便填的,schematic对应原理图,symbol对应符号,layout对应版图。你填错 View Name,后面调元件时可能找不到对应模型。
2.3 从 analogLib 和工艺库里调元件
画原理图第一步是放元件。按i键调出 Add Instance 窗口,如果不知道库名和 Cell 名,点 Browse。电源和地这类理想源在analogLib库里:vdd、gnd、vdc、vpulse都在这里。MOS 管则在工艺库tsmc18rf里,教程用的是nmos2v和pmos2v。选中后 View 选symbol,关掉 Browse 窗口,元件就会悬浮在鼠标上,点一下放置。放完电源、地、信号源和两个 MOS 管后,按w开始连线。注意所有 NMOS 的 B 极接地,所有 PMOS 的 B 极接电源,这个别漏。连线时看左上角 Cmd 栏,它会显示当前命令,按Esc退出当前命令。
# 启动 Cadence Virtuoso 的典型命令 # 先进入工程目录,再执行启动命令 cd ~/project/inv icfb & # 注意:icfb 和 & 之间有一个空格 # & 表示后台运行,不占用当前终端逻辑说明:cd进入你存放工程的目录,icfb &启动 Cadence 的主程序。&是 Linux 后台运行符号,不加的话终端会被占用。参数方面,icfb是 Cadence 的启动命令,不同版本可能略有差异,但教程里用的就是这个。如果启动后没反应,先检查环境变量是否 source 过,常见做法是在.bashrc里配置好 Cadence 的路径。
3. 原理图参数设置与瞬态仿真:从 vpulse 到波形窗口
3.1 电源和方波信号源的参数怎么填
原理图画完后,按q键看属性。先点 V0 直流源,DC voltage 填1.8。注意 Cadence 里参数不带单位,填1.8表示 1.8V,填1.8V反而会报错。再点 V1 方波源,需要设的参数多一些:Voltage1 填0,Voltage2 填1.8,Delay time 填0,Rise time 和 Fall time 可以填10p或更小,Pulse width 填1n,Period 填2n。这样方波的高电平持续 1ns,低电平持续 1ns,周期 2ns。MOS 管的宽长比教程里没改,默认值就能跑。所有参数设完,按x检查并保存,这个快捷键会做简单的连线检查,比单纯s保存更稳妥。
3.2 瞬态仿真设置:tran、stop time 和 conservative
从原理图窗口点 Tools → Analog Environment 打开仿真窗口。点 Analyses → Choose,选tran。Stop time 填10n,因为信号周期是 2ns,10ns 能看到 5 个周期。Accuracy 选conservative,这是最高精度模式,仿真速度慢一点但结果可靠。勾选 Enabled 使能这个分析。然后点 Simulation → Netlist and Run。如果库没装好,信息窗口会报错;一切正常的话会看到仿真完成的提示。这里有个血泪经验:每次改完原理图,仿真前必须按x检查并保存,只按s保存有时不会触发网表更新,仿真结果还是旧的。
3.3 用 Results Browser 看波形和验证逻辑
仿真跑完后,点 Tools → Results Browser。在窗口里双击tran-tran,会列出所有网络节点,比如net18和net22。右键节点选 Append,就能把波形叠加到图形窗口。教程里net22是输入方波,net18是输出。观察波形:输入高电平时输出低电平,输入低电平时输出高电平,符合非门逻辑。输出跳变时能看到一个小尖峰,那是 MOS 管栅漏电容耦合造成的,把输入信号的上升下降时间设慢一些,这个现象会减弱。如果波形窗口里没显示节点名,点 Results → Annotate → Net Names 打开标注。
# 瞬态仿真典型设置(在 Analog Environment 的 CIW 里等效操作) # 以下为参数含义说明,不是直接执行的脚本 # analysis type: tran # stop time: 10n # accuracy: conservative # enable: true逻辑说明:tran是瞬态分析,stop time决定仿真时长,conservative控制精度。参数怎么改?如果周期改成 10ns,stop time 至少填 50n 才能看 5 个周期。精度模式从 conservative 改成 moderate 会快一些,但波形可能失真。失败时先看仿真日志里的报错行,常见的是模型库路径不对或元件参数单位写错。
4. 从原理图到 Symbol:封装、测试电路与全局变量 gnd!
4.1 删掉测试电路,加 pin,生成 symbol
原理图仿真通过后,下一步是把它做成一个可复用的 symbol。先把测试电路删掉,只留反相器本体。按p加引脚,Pin name 填in,Direction 选input,Attach net expression 选no,点 Hide 后放置。同样加out,Direction 选output。然后点 Design → Create Cellview → From Cellview,一路 OK,就会生成一个只有接口的 symbol。按q可以把 instance name 和 partname 改成inv。记得保存,而且既要按x也要按s,否则 symbol 可能不同步。
4.2 新建测试电路,调用 symbol 并加负载电容
新建一个 Cell,比如sche_test,View 选schematic。按i调元件,Browse 到inv的symbol,放进去。再加vdd、gnd、vpulse和一个负载电容。电容值填50f,f是飞法,10 的负 15 次方。仿真设置和前面一样。这里有个关键点:点连接gnd的线,按q看属性,Net name 显示的是gnd!而不是gnd。那个感叹号表示全局变量,只有带!才能和底层电路的gnd!连在一起。vdd!同理。其他普通网络名不带!。
4.3 用 e 和 Ctrl+e 进出 symbol 内部
选中inv的 symbol,按e再点 OK,可以进入 symbol 内部的原理图。按Ctrl+e退回上一层。这个操作在排查问题时很有用:如果测试电路仿真结果不对,可以进去确认 symbol 对应的原理图是不是最新版本。常见翻车场景是改了原理图但没重新生成 symbol,导致测试电路里跑的仍是旧电路。
| 快捷键 | 功能 | 使用场景 |
|---|---|---|
| i | 添加 instance | 放置元件 |
| w | 连线 | 连接网络 |
| q | 查看属性 | 改参数 |
| p | 添加 pin | 做 symbol 接口 |
| x | 检查并保存 | 仿真前必按 |
| e | 进入 symbol 内部 | 排查电路 |
| Ctrl+e | 退回上一层 | 从 symbol 返回 |
| Esc | 退出当前命令 | 防止误操作 |
5. 版图新建与常见报错排查:别让 techfile 和 View 选错
5.1 新建 layout View 的正确姿势
版图要和原理图放在同一个 Cell 里。在 Library Manager 里选中sche这个 Cell,新建 View,Tool 改成 Layout,View Name 会自动变成layout。点 OK 后,文件结构里就多了一个layoutView。注意不要新建一个单独的 Cell 来画版图,否则后面做 LVS 对比时对应关系会乱。版图编辑器的图层和工艺库直接相关,如果之前建库时没挂tsmc18rf的 techfile,这里图层列表会是空的。
5.2 避坑:五个常见报错与排查
现象一:启动icfb &后终端报 command not found。原因:Cadence 的环境变量没配置,或者路径不对。 解决:检查.bashrc里是否 source 了 Cadence 的 setup 脚本,常见做法是source /path/to/cadence/setup.sh,然后新开终端再试。
现象二:仿真报错说模型库找不到。原因:工艺库路径没挂对,或者tsmc18rf库没正确安装。 解决:在 Library Manager 里确认tsmc18rf能正常打开,检查 Analog Environment 的 Setup → Model Libraries 里路径是否指向正确的模型文件。
现象三:波形窗口里输出一直是平的。原因:仿真前没按x检查保存,网表没更新;或者vpulse的 Period 和 Stop time 不匹配。 解决:改完原理图强制按x,确认 Stop time 至少覆盖两个周期。再看vpulse的 Pulse width 是否小于 Period。
现象四:symbol 和原理图不一致。原因:改了原理图但没重新 From Cellview 生成 symbol。 解决:删掉旧 symbol,重新 Design → Create Cellview → From Cellview,然后按x和s双重保存。
现象五:版图图层全是灰的,画不了。原因:建 Library 时选了Don't need a techfile。 解决:只能重建 Library,这次选Attach to an existing techfile并指定tsmc18rf。已经画好的原理图可以复制过去,但版图得重画。
提示:每次关闭 Analog Design Environment 时会提示是否保存状态,选保存。关闭过程可能有点慢,等它走完再开新窗口。
6. 进阶技巧:用 x 和 s 的配合习惯把返工率压到最低
走到这里,你已经能把反相器从原理图仿真一路做到版图新建。最后分享一个我踩过多次坑之后养成的习惯:改任何东西之前先按x,改完再按x,生成 symbol 后按s再按x。听起来很啰嗦,但 Cadence 的网表更新和 symbol 同步不是完全自动的,只按s保存有时不会触发检查,仿真跑的还是旧网表。x会做连线检查并强制保存,比单纯s多一层保险。
另一个技巧是善用e和Ctrl+e在层次电路里穿梭。测试电路仿真结果不对时,不要急着改参数,先按e进 symbol 内部,确认里面的原理图是不是你最新改的那版。很多时候问题出在 symbol 没同步,而不是电路本身。
版图阶段还有一个容易忽略的点:gnd!和vdd!的全局属性。在原理图里它们是带感叹号的全局网络,版图里也要用对应的全局端口去接,否则 LVS 会报网络不匹配。这个在初学阶段不容易遇到,但一旦做完整流程就会卡住。
从那以后我每次新建 Library 都强制走一遍:确认 techfile 挂上、确认 View Name 没填错、确认x和s都按了。这三步花不了半分钟,但能省掉后面几个小时的返工。希望帮到你。
本文还有配套的精品资源,点击获取