2、Virtuoso环境准备:启动Virtuoso、创建Library、创建Cell View、设置工艺库
好,咱们正式开始动手了。这一章我带你走一遍Virtuoso的启动流程,顺便把库和Cell View建好。说实话,很多新手在这第一步就栽跟头——环境没配好,后面全是报错。我当年刚入行时,光启动Virtuoso就折腾了一下午,后来才发现是.bashrc里少写了个路径。
嗯,咱们一步步来,别急。
2.1 启动Virtuoso
启动Virtuoso之前,先确认两件事:
- 你的Linux环境已经装好了Cadence IC工具套件
- .bashrc或.cshrc里已经source了Cadence的启动脚本
我个人习惯用bash,所以会在.bashrc里加这么一行:
source /opt/cadence/IC617/tools/dfII/cdsinit
然后打开终端,直接敲命令:
virtuoso &
注意后面的&符号,意思是后台运行。不加的话,终端会被Virtuoso占住,你啥也干不了。我记得第一次用的时候忘了加,结果终端卡死,我还以为电脑崩了……
启动后你会看到CIW(Command Interpreter Window)窗口。这个窗口是Virtuoso的大脑,所有操作日志、报错信息都会显示在这里。嗯,这里要注意:CIW窗口千万别关,关了就等于退出了整个Virtuoso。
virtuoso -64 &启动64位模式,处理大版图时内存更充裕。
2.2 创建Library
Library在Virtuoso里就是个项目文件夹。你想想看,一个芯片项目可能有几十个模块,每个模块又有不同的版本,没有Library管理的话,乱成一锅粥。
创建Library的步骤:
- 在CIW菜单栏点击 File → New → Library
- 弹出对话框,输入Library名称,比如
my_project_lib - 选择路径——我建议统一放在
~/cadence_libs/下,方便管理 - 关键一步:选择Attach to an existing technology library
- 从下拉列表里选你的工艺库,比如
tsmc18rf或smic13mm
为什么要attach工艺库?说白了,就是告诉Virtuoso:我这个项目要用哪套工艺规则。没有这一步,你画出来的版图连DRC都跑不了。
2.3 创建Cell View
Library建好了,接下来要在里面创建Cell View。Cell View就是你的版图文件,一个Cell可以包含多个View,比如:
| View类型 | 用途 |
|---|---|
| layout | 版图视图,画版图的地方 |
| schematic | 电路原理图视图 |
| symbol | 电路符号视图 |
| config | 仿真配置视图 |
创建步骤:
- 在CIW菜单栏点击 File → New → Cell View
- Library选刚才建的
my_project_lib - Cell Name输入模块名,比如
inv_1x - View Name选
layout - Tool选
Virtuoso - 点击OK,进入版图编辑界面
嗯,这里有个细节:View Name默认是layout,但如果你做的是顶层整合,我习惯用layout_top来区分。这只是命名习惯,不影响功能。
2.4 设置工艺库
工艺库的设置,说白了就是告诉Virtuoso:你这套版图用什么材料、什么规则、什么层次。工艺库通常由foundry提供,包含:
- 技术文件(techfile):定义金属层、通孔层、扩散层等物理属性
- 显示文件(display.drf):定义各层的颜色和填充图案
- 规则文件(rule deck):DRC、LVS、RCX等检查规则
设置工艺库有两种方式:
方式一:启动时自动加载
在.cdsinit文件中添加:
; 加载工艺库
libLoadTechFile("tsmc18rf" "/path/to/tsmc18rf.tf")
方式二:手动加载
在CIW中输入:
libLoadTechFile("my_project_lib" "/path/to/techfile.tf")
我个人更推荐方式一。为什么?因为每次启动Virtuoso都要手动加载的话,太容易忘了。我有个同事就因为这个,画了一周的版图,最后发现用的全是默认工艺——层次对不上,全部重来。
2.5 验证环境是否就绪
环境配好了,怎么确认没问题?我一般做三个检查:
- CIW窗口无报错——启动后看CIW里有没有红色的ERROR信息
- 版图编辑界面能打开——新建一个Cell View,确认能进入Layout Editor
- 按快捷键“Ctrl+E”能显示层次列表——如果层次列表是空的,说明工艺库没挂上
嗯,这三个检查做完,基本可以放心了。我记得有一次,CIW里报了个Techfile not found,我以为是路径写错了,折腾了半天才发现是环境变量CDS_TECH_LIB_DIR没设。所以,检查环境变量也很重要。
libgthread相关的报错。解决方案是在终端先执行export LD_PRELOAD=/usr/lib64/libgthread-2.0.so.0,再启动Virtuoso。这个坑我踩过两次,后来直接写进了启动脚本里。
好,环境准备就到这里。下一章咱们开始画第一个版图——一个简单的反相器。到时候我会教你如何用快捷键飞起来,而不是傻傻地一个个点鼠标。