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,建议用virtuoso -64 &启动64位模式,处理大版图时内存更充裕。

2.2 创建Library

Library在Virtuoso里就是个项目文件夹。你想想看,一个芯片项目可能有几十个模块,每个模块又有不同的版本,没有Library管理的话,乱成一锅粥。

创建Library的步骤:

  1. 在CIW菜单栏点击 File → New → Library
  2. 弹出对话框,输入Library名称,比如my_project_lib
  3. 选择路径——我建议统一放在~/cadence_libs/下,方便管理
  4. 关键一步:选择Attach to an existing technology library
  5. 从下拉列表里选你的工艺库,比如tsmc18rfsmic13mm

为什么要attach工艺库?说白了,就是告诉Virtuoso:我这个项目要用哪套工艺规则。没有这一步,你画出来的版图连DRC都跑不了。

避坑指南: 我曾经在创建Library时选了“Compile a new techfile”,结果手动配了一堆参数,最后流片时发现最小线宽设错了……从那以后,我老老实实选“Attach to existing”,直接用foundry提供的工艺文件,省心又安全。

2.3 创建Cell View

Library建好了,接下来要在里面创建Cell View。Cell View就是你的版图文件,一个Cell可以包含多个View,比如:

View类型 用途
layout 版图视图,画版图的地方
schematic 电路原理图视图
symbol 电路符号视图
config 仿真配置视图

创建步骤:

  1. 在CIW菜单栏点击 File → New → Cell View
  2. Library选刚才建的my_project_lib
  3. Cell Name输入模块名,比如inv_1x
  4. View Name选layout
  5. Tool选Virtuoso
  6. 点击OK,进入版图编辑界面

嗯,这里有个细节:View Name默认是layout,但如果你做的是顶层整合,我习惯用layout_top来区分。这只是命名习惯,不影响功能。

重要提醒: Cell Name不要用中文,不要带空格,不要以数字开头。我见过有人用“1st_inv”命名,结果LVS报错找不到器件——Cadence对命名格式很敏感。

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都要手动加载的话,太容易忘了。我有个同事就因为这个,画了一周的版图,最后发现用的全是默认工艺——层次对不上,全部重来。

经验之谈: 设置完工艺库后,建议先画一个最小尺寸的晶体管,跑一遍DRC。如果DRC通过,说明工艺库挂载成功。这一步只要5分钟,但能省下后面几天的返工时间。

2.5 验证环境是否就绪

环境配好了,怎么确认没问题?我一般做三个检查:

  1. CIW窗口无报错——启动后看CIW里有没有红色的ERROR信息
  2. 版图编辑界面能打开——新建一个Cell View,确认能进入Layout Editor
  3. 按快捷键“Ctrl+E”能显示层次列表——如果层次列表是空的,说明工艺库没挂上

嗯,这三个检查做完,基本可以放心了。我记得有一次,CIW里报了个Techfile not found,我以为是路径写错了,折腾了半天才发现是环境变量CDS_TECH_LIB_DIR没设。所以,检查环境变量也很重要。

注意: 如果你用的是IC617及以上版本,启动时可能会遇到libgthread相关的报错。解决方案是在终端先执行export LD_PRELOAD=/usr/lib64/libgthread-2.0.so.0,再启动Virtuoso。这个坑我踩过两次,后来直接写进了启动脚本里。

好,环境准备就到这里。下一章咱们开始画第一个版图——一个简单的反相器。到时候我会教你如何用快捷键飞起来,而不是傻傻地一个个点鼠标。