2. Virtuoso设计环境搭建与工程管理
在开始画第一根管子之前,先把“地基”打好,是模拟版图与电路设计里最容易被低估、却最影响后续效率的一步。本节以一颗典型的 LDO(低压差线性稳压器)为例,走完从创建库到工程目录落地的完整初始化过程。目标不是把环境配得花哨,而是让后续的电路图、符号、版图、仿真状态和版本历史都能被稳定地找到、复用和回溯。
一、先想清楚工程要装什么
LDO 工程通常包含几类对象:顶层电路(如 LDO_top)、子模块(误差放大器 EA、功率管驱动 PassDrv、反馈分压 FB、基准与偏置 Bias)、符号视图、版图视图、仿真测试平台(testbench)以及工艺库。它们分属不同库(Library),但共享同一套工艺设计套件(PDK)与技术文件。因此初始化的核心是:库结构 + PDK 绑定 + 技术文件 + 变量与参数化单元 + 目录与版本约定。
建议在动手前先确定命名规范,例如库名统一用 LDO_ 前缀,单元名用下划线分隔功能层级。命名一旦定下,后续所有引用都依赖它,改名的代价远高于一开始多想两分钟。
二、创建库与挂接 PDK
在 Virtuoso 的 CIW(Command Interpreter Window)中,通过 File → New → Library 创建库。关键一步是“Attach to an existing techfile”:新建库时必须选择目标工艺的技术文件,否则该库内的版图视图没有层信息,后续 LVS/DRC 无法进行。典型做法是:
Library Name : LDO_TOP
Attach to : smic180_techfile (示例工艺,实际以项目 PDK 为准)
PDK 导入一般由工艺厂提供安装脚本或压缩包,解压后需在 .cdsinit 或 .cdsenv 中设置库搜索路径,使 Virtuoso 启动时能自动识别 PDK 库。常见做法是在 cds.lib 中登记:
DEFINE smic180 /project/pdk/smic180
DEFINE LDO_TOP /project/ldo/LDO_TOP
INCLUDE smic180/models/cds.lib
技术文件(techfile)决定了层定义、显示优先级、器件参数默认值等。若同一工程需要多工艺,应通过不同库分别绑定,而不是在一个库里混用,否则版图层号冲突会非常难排查。
三、设计变量与参数化单元
LDO 的性能对器件尺寸敏感,因此把关键参数抽成设计变量(Design Variables)是必要的。例如在 LDO_top 的 ADE 状态中定义:
W_pass = 2000u ; 功率管宽度
L_pass = 0.5u ; 功率管长度
I_bias = 10u ; 偏置电流
R_fb1 = 100k ; 反馈上分压
R_fb2 = 100k ; 反馈下分压
C_out = 1u ; 输出电容
参数化单元(pcell)则用于把“尺寸可变”的器件封装成可复用模块。例如把误差放大器的输入对管做成 pcell,通过参数 nf(指状数)、m(并联数)控制,调用时只需改参数而不必重画。这样在后续做 corner 扫描或尺寸优化时,只需改变量值,电路自动更新。
四、版本控制与目录结构
Virtuoso 的库本质上是目录树,直接对库目录做版本控制是可行的,但要注意:cdslck 锁文件、仿真产生的临时数据不应入库。推荐把工程根目录纳入 Git,并在 .gitignore 中排除锁文件与仿真缓存:
*.cdslck
simulation/*/psf/
*.log
目录结构建议按“设计对象”而非“文件类型”划分,便于定位。例如 schematic/ 放电路与符号,layout/ 放版图,simulation/ 放 ADE 状态与结果,doc/ 放设计说明与变更记录。每次提交前用 git status 确认没有把临时文件带进去,提交信息写清“改了什么、为什么改”,例如“调整 PassDrv 偏置电流,改善轻载稳定性”。
五、初始化后的自检
环境搭好后,不要急着画电路,先做一次最小闭环验证:新建一个空单元,调用一个 PDK 器件,检查其参数是否可编辑、层是否正常显示;再打开 ADE,确认设计变量能被识别、仿真器能启动。若这一步通过,说明库、PDK、技术文件、变量四条链路都已打通。反之,若器件参数灰显或层缺失,多半是 techfile 未正确挂接或 cds.lib 路径有误,应优先排查这两处。
至此,LDO 工程的“空壳”已经具备可扩展性:库结构清晰、PDK 绑定正确、变量与 pcell 可复用、目录与版本约定明确。接下来就可以在这个基础上,正式进入 LDO 核心电路的搭建与仿真。