简介:这份课程资源面向初次接触集成电路版图设计的初学者,尤其是需要完成课程设计或首次尝试流片的用户,帮助其快速上手 Cadence Virtuoso 的基本操作。教程以最简单的反相器为例,完整串联原理图创建、元件放置与参数设置、瞬态仿真、版图绘制及后仿真等流程,并穿插 Library、Cell、View 的树状管理逻辑与常用快捷键说明,便于读者按步骤从头到尾走一遍。资源包为 1 个 PDF 文件,大小约 2.32MB,内容紧凑、步骤详细,适合作为随查随用的入门操作手册。目前已有 2872 人学习,说明其在入门群体中具有一定参考价值。读者可借此建立对 Virtuoso 设计流程的整体认知,掌握原理图绘制、工艺库链接与基础仿真设置,为后续更复杂的电路设计打下基础。
1. 从一条icfb &命令说起:为什么新手第一次装 Cadence 总卡在启动这一步
装 Cadence Virtuoso 这件事,最反直觉的地方在于:软件装完了,不代表你能用。我见过太多人把安装包解压、环境变量配好,兴冲冲在终端敲下icfb &,结果要么提示命令找不到,要么界面弹出来但 Library Manager 里空空如也,要么建库时选不到工艺库。这套环境在高校课程设计和初次流片场景里极其常见,装不好直接导致原理图画不了、仿真跑不动、版图无从下手。这篇笔记面向刚接触集成电路设计、需要跑通「原理图—仿真—版图—后仿」全流程的开发者,把版本选择、启动方式、库结构、参数配置和常见翻车点一次讲清,照着走能从头到尾跑一遍反相器。
2. 装前把环境列清:版本、工艺库与目录结构
2.1 先确认三样东西:Virtuoso 版本、工艺库、启动脚本
Cadence 这套工具不像普通软件双击安装就完事,它依赖一组环境变量和 license 配置。动手之前,先把下面三样确认清楚,缺一样后面都会卡住。
第一是 Virtuoso 主程序的版本。教程里用的是经典icfb启动方式,对应的是较早期的 Virtuoso 版本(IC 5.x / 6.x 早期)。如果你手上是 IC 6.1.7 之后的版本,启动命令通常变成virtuoso &,icfb可能仍然保留但行为有差异。判断方法很简单,在终端里试:
# 先看命令是否存在,不要直接带 & 后台跑,方便看报错 which icfb which virtuoso # 确认版本信息,输出里会带版本号 virtuoso -version 2>/dev/null || icfb -version 2>/dev/nullwhich用来确认命令在不在 PATH 里,这一步能排掉一半「命令找不到」的问题。-version用来确认你装的到底是哪一版,因为后面建库时 techfile 的挂载方式、菜单位置在不同版本间有差异。我一般会先把版本号记在笔记里,出问题时对照版本查,比盲目搜快得多。
第二是工艺库。教程用的是tsmc18rf,也就是 0.18μm 工艺。这个库不是 Virtuoso 自带的,需要单独安装并让工具能找到它。工艺库通常放在一个固定目录下,通过环境变量或cds.lib文件引用。常见做法是在工程目录下维护一个cds.lib,里面写清楚库名和路径的映射:
# cds.lib 示例:定义工艺库和自定义库的查找路径 # 语法是 DEFINE <库名> <库所在路径> DEFINE tsmc18rf /path/to/tsmc18rf DEFINE analogLib $CDSHOME/tools/dfII/etc/cdslib/artist/analogLibDEFINE后面第一个参数是你在 Library Manager 里看到的库名,第二个是实际磁盘路径。analogLib是 Virtuoso 自带的模拟器件库,vdd、gnd、vdc、vpulse都在里面,路径一般用$CDSHOME变量拼出来,避免写死。这里最容易翻车的是路径写错或权限不够,导致 Library Manager 打开后库是灰的或者干脆不显示。
第三是启动脚本。很多环境把环境变量、license、cds.lib的加载都塞进一个source脚本里,登录后先执行它再启动软件。我一般会写一个自己的启动脚本,把常用变量固化下来:
# 启动前先 source 环境,再进工程目录启动 source /path/to/cadence_env.sh cd /path/to/project/inv icfb &注意icfb和&之间有一个空格,&表示后台运行,不加的话终端会被占住。这个空格是教程里特意强调的细节,看起来小,但新手照着敲漏了空格直接报错。
2.2 目录结构:Library、Cell、View 三层树状关系
在动手建工程之前,必须先把 Library、Cell、View 这三层关系吃透,否则后面文件放错位置,版图和原理图对不上,返工非常麻烦。
Library 就是一个文件夹,对应磁盘上的一个目录。Cell 是库里的一个单元,比如一个 MOS 管、一个反相器。View 是同一个 Cell 的不同表现形式,比如一个 MOS 管可以有原理图模型(schematic)、版图模型(layout)、HSPICE 参数模型、Spectre 参数模型等多个 View。三者是树状关系:一个 Library 下有多个 Cell,一个 Cell 下有多个 View。
我一般会保持一个习惯:每个工程单独建一个 Library,不要把所有东西堆在一个库里。教程里新建的库叫inv,对应磁盘上一个inv文件夹,后面所有文件都放在这个文件夹下。这样做的好处是迁移和备份时直接打包整个目录,不会漏文件。
| 层级 | 对应磁盘 | 示例 | 说明 |
|---|---|---|---|
| Library | 一个目录 | inv | 一个工程一个库 |
| Cell | 目录下的子目录 | sche | 一个单元,如反相器 |
| View | Cell 下的文件 | schematic、layout、symbol | 同一单元的不同表现形式 |
建库时会遇到一个关键选择:是否链接 techfile。如果只做原理图仿真、不画版图,选Don't need a techfile就行;要画版图且有工艺库,必须选Attach to an existing techfile,然后在 technology Library 里选tsmc18rf。这一步选错,后面画版图时图层、设计规则都用不了,只能重建库,血泪经验。
3. 建库、画原理图与参数配置:反相器从零到能仿真
3.1 新建 Library 和 Cell:techfile 挂载别选错
启动软件后,从 Tools 菜单进 Library Manager,这是文件管理的主窗口。新建 Library 的流程是:菜单里选 New Library,填名字(教程用inv),选目录,OK 后弹出 techfile 选择对话框。
这里再强调一次:要画版图就选Attach to an existing techfile,technology Library 选tsmc18rf。选完后 Library Manager 里就能看到inv这个库了。
接着在inv库里新建 Cell。Cell name 填sche,View Name 填schematic,Tool 选对应的原理图编辑器。OK 之后,Library Manager 里sche下面会出现schematic这个 View,同时原理图编辑窗口自动打开。如果没自动打开,双击那个schematicView 也能打开。
3.2 画反相器原理图:快捷键和元件放置
原理图编辑窗口打开后,先记住一批高频快捷键,这些是后面画图的基础:
| 快捷键 | 功能 | 快捷键 | 功能 |
|---|---|---|---|
i | 添加 instance | f | 合适显示全部 |
m | 移动 | w | 连线 |
q | 查看属性 | p | 添加引脚 |
s | 保存 | x | 检查并保存 |
e | 进入 symbol 内部 | Ctrl+e | 从 symbol 退回 |
[/] | 缩小 / 放大 | r | 旋转 90 度 |
Delete | 删除 | Esc | 退出当前命令 |
Esc特别重要,因为除非你切换到别的快捷键,当前命令会一直保持,经常按Esc退出能避免误操作。
放置元件用i键,弹出 Add Instance 对话框。不知道库名和 Cell 名就点 Browse。vdd、gnd、vdc、vpulse都在analogLib库里,View 选symbol。MOS 管在tsmc18rf库里,元件名是nmos2v和pmos2v。放完后按w连线,注意所有 NMOS 的 B 极接地、所有 PMOS 的 B 极接电源,这个别漏。
3.3 参数设置:单位别乱加,方波参数要算清
连线完成后设参数。单击V0按q,它是直流电压源,0.18μm 工艺电源电压是 1.8V,DC voltage 填1.8就行。这里有个坑:Virtuoso 参数框里不要带单位,填1.8对,填1.8V反而错。时间同理,10ns 填10n。
V1是方波源,参数多一些:
voltage1 = 0 # 低电平 voltage2 = 1.8 # 高电平 delay time = 0 # 延时 rise time = 1p # 上升时间 fall time = 1p # 下降时间 pulse width = 1n # 高电平持续时间 period = 2n # 周期这几个参数一起把方波完全确定下来。教程里 stop time 填10n,因为周期 2ns,显示 5 个周期足够看逻辑。MOS 管参数主要看宽和长,教程里不改,保持默认。
画完记得按x检查并保存,它会检查简单连线错误。每次改完原理图,仿真前都要x一遍,可以不s,但x不能省。
3.4 瞬态仿真:从 Netlist and Run 到看波形
从原理图窗口点 Tools 进 Analog Environment,这是仿真设置主窗口。点 Analyses 的 choose,选瞬态仿真tran,stop time 填10n,勾选conservative(最高精度)和enabled(使能),OK。
然后点 Simulation 的 Netlist and Run。如果弹出介绍性窗口点 OK 即可。顺利的话会出现仿真信息窗口;如果工艺库没装好,报错就出在这里。仿真完点 Tools 的 Results Browser,双击tran-tran,能看到net18和net22两个网络。右键选 append 把波形加到图形窗口,net18是输出、net22是输入。观察波形,输出和输入反相,符合非门逻辑。输入跳变时输出有个小耦合跳变,那是 MOS 管 gd 电容造成的,把输入上升下降时间设慢些就不明显了。
4. 封装 symbol 与画版图:模块化和图层对齐
4.1 把反相器做成 symbol:测试电路要分离
原理图仿真通过后,一般要把模块做成 symbol,再另建测试电路。原因很实际:做版图时测试电路不能画进去,必须把要流片的部分单独封装。
先把测试电路删掉,只留反相器本体,然后加输入输出引脚。按p弹引脚对话框,Pin name 填in,direction 选input,Attach net expression 选no,点 hide 后放置;同样放out,direction 选output。放完记得x和s都执行,否则 symbol 不一定同步。
然后点 Design 的 Create Cellview 的 From Cellview,一路 OK,生成只有接口的 symbol。按q可以把 instance name 和 partname 改成inv,保存。Library Manager 里就会多出一个symbolView。
新建测试电路 Cell(比如sche_test),在它的 schematic 里按i把inv的 symbol 加进来,再加个 50fF 负载电容(f是 10 的 -15 次方)。这里有个关键细节:连到地的线属性里 net name 是gnd!而不是gnd,感叹号表示全局变量,这样才能和底层的gnd!连在一起,vdd!同理。其他网络名不带感叹号。
4.2 新建 layout View:和原理图放同一个 Cell
画版图前先把其他原理图关掉并保存。新建版图 Cell 时,最好把版图和对应原理图放在同一个 Cell 里。操作是:Cell name 还是sche不变,Tool 改成版图工具,View Name 会自动变成layout,OK 后 Library Manager 里sche下就多了layout这个 View。
文件结构这时变成:inv库下有sche这个 Cell,里面有schematic、symbol、layout三个 View。这个结构保持住,后面做 LVS(版图与原理图一致性检查)时工具才能正确对应。
版图阶段的核心是图层和设计规则。tsmc18rf的 techfile 挂对了,图层选择器里才有正确的层。画的时候注意:版图里不要放测试电路,只画要流片的部分;器件摆放和连线尽量对齐网格,避免 DRC 报一堆间距错误。我一般画完一小块就存一次,版图操作比原理图更容易误删。
5. 避坑排查:五个装 Cadence 时最常翻的车
5.1 现象:敲icfb &提示 command not found
原因通常是环境变量没加载,或者 PATH 里没有 Cadence 的 bin 目录。解决:先source环境脚本,再which icfb确认;如果还是没有,检查安装路径下tools/bin是否在 PATH 里。别急着重装,九成是环境没 source。
5.2 现象:Library Manager 打开后工艺库是灰的或不显示
原因多半是cds.lib里DEFINE的路径写错,或者工艺库目录权限不够。解决:打开cds.lib逐行核对路径,用ls确认目录真实存在且有读权限。改完cds.lib后重启软件生效。
5.3 现象:建库时选不到tsmc18rf这个 technology Library
原因是建库时 techfile 选择那一步没挂对,或者工艺库本身没被工具识别。解决:重建库时选Attach to an existing techfile,确认 technology Library 下拉里有tsmc18rf;如果没有,回到cds.lib检查工艺库定义,必要时确认工艺库版本和 Virtuoso 版本兼容。
5.4 现象:仿真报错,信息窗口一堆库相关错误
原因是 MOS 管模型库没加载或路径不对。解决:看仿真信息窗口第一条报错,通常是某个 model 文件找不到。检查tsmc18rf的模型路径配置,确认仿真器(spectre)能读到对应模型文件。别一上来就改电路,先解决库。
5.5 现象:symbol 改了但测试电路里没同步
原因是只按了x没按s,或者 symbol 生成后没保存。解决:改完 symbol 后x和s都执行,回到测试电路里刷新或重新放置 symbol。这个坑很隐蔽,因为界面看起来没报错,但实际用的还是旧 symbol。
6. 装完怎么验证跑通:用反相器波形和版图对照收尾
验证这套环境是否真的跑通,不要只看软件能不能打开,要拿反相器走一遍完整闭环。我的验证顺序是这样的:
第一步,启动验证。终端里source环境后执行icfb &,Library Manager 能打开,inv库和tsmc18rf工艺库都正常显示,不灰不报错。
第二步,原理图仿真验证。打开sche的schematic,按x检查无错,进 Analog Environment 跑tran,stop time10n,Netlist and Run 无报错,Results Browser 里能看到net18和net22波形,输出与输入反相。
第三步,symbol 验证。sche下有symbolView,测试电路sche_test里能正常调用inv,按e能进 symbol 内部、Ctrl+e能退回。
第四步,版图验证。sche下有layoutView,能正常打开,图层选择器里能看到tsmc18rf的层,器件能放置、能连线、能保存。
把这四步做成一张对照表,每次装新环境都过一遍:
| 验证项 | 通过标准 | 失败先查 |
|---|---|---|
| 启动 | icfb &正常出界面 | 环境变量、PATH |
| 库加载 | inv和tsmc18rf都可见 | cds.lib路径、权限 |
| 原理图仿真 | tran 无报错,波形反相 | 模型库路径 |
| symbol | 可调用、可进出 | 是否x+s都保存 |
| 版图 | layout 可开、图层正确 | techfile 是否挂对 |
这里有个我踩过的坑值得说:有一次仿真怎么都报模型找不到,查了半天发现是cds.lib里工艺库路径末尾多了个斜杠,工具解析时拼出了双斜杠导致路径失效。从那以后我每次配完cds.lib都强制走一遍上面的四步验证,不靠「看起来能打开」判断。装环境这件事,能跑通一个最小反相器闭环,比任何界面截图都可信。希望帮到你。
本文还有配套的精品资源,点击获取