4. 原理图输入与符号创建

原理图输入是模拟IC设计流程中真正把“想法”变成“可仿真网表”的第一步。Virtuoso Schematic Editor(以下简称SE)的核心工作并不是“画图”,而是建立一个层次化的电路数据库:每个cellview保存器件实例、连线、端口和参数,最终由网表器(netlister)翻译成SPICE网表。本节以一个基础单级共源放大器为例,完整走一遍从建库、放器件、连线、设参数,到创建symbol、设置端口与参数、并通过层次化调用验证的流程。

一、库、cell 与 view 的组织

在Cadence中,一切设计对象都归入Library → Cell → View三级结构。Library是目录级容器,Cell是电路单元(如一个放大器、一个反相器),View是同一cell的不同表示形式:schematic是原理图,symbol是符号,layout是版图,spectre或auCdl是仿真/网表视图。层次化设计的关键约定是:一个cell的schematic与symbol必须同名同cell,这样上层调用symbol时,网表器才能自动展开到对应的schematic。

实操上,先通过 File → New → Library 新建一个库,例如 AMP_LAB,并attach到工艺库(如 gpdk180 或 tsmc18)。随后 File → New → Cellview,Type选 Schematic,Tool选 Composer-Schematic,创建 AMP_LAB / amp_cs / schematic。建议一开始就规划好命名:顶层用 _top 后缀,子单元用功能名,避免后期层次混乱。

二、放置器件与设置实例参数

按快捷键 i 打开 Add Instance 窗口。在Library栏选择工艺库,Cell栏输入 nmos4(四端NMOS),View选 symbol。此时窗口下方会出现该器件的参数列表,例如:

Model name : nch
Width      : 2u
Length     : 180n
Multiplier : 1
Fingers    : 1

这些参数直接决定仿真行为。以共源放大器为例,NMOS作为放大管,PMOS或电阻作为负载。若采用电阻负载,可放置 res 器件,阻值设为 10k;若采用电流源负载,则放置 pmos4 并设置其偏置。放置时注意:实例参数(instance parameter)只作用于该实例,而器件模型参数由工艺库的model文件定义,二者不要混淆。

放置完成后,用 q 键(Edit Object Properties)可以随时修改选中实例的参数。建议在原理图阶段就把W/L、M、fingers等关键参数设好,而不是留到仿真时再改,这样symbol的CDF(Component Description Format)参数才能正确传递到上层。

三、连线、端口与网络命名

连线用 w 键(Add Wire)。SE支持正交走线和任意角度走线,模拟电路建议统一用正交,便于阅读。关键节点应主动命名:用 l 键(Add Wire Name)给网络打标签,例如 vin、vout、vdd、gnd。命名后的网络在网表中会保留该名字,方便后续在ADE中直接选择节点观察波形。

端口(pin)用 p 键(Add Pin)添加。端口有方向属性:input、output、inputOutput。对于放大器,通常定义:

  • vin — input,小信号输入
  • vout — output,放大输出
  • vdd — inputOutput,电源
  • gnd — inputOutput,地

端口方向会影响symbol的引脚方向,也影响上层连线时的DRC检查。若端口方向设错,上层调用时可能出现“输出接输出”的警告。

四、创建symbol与层次化调用

原理图画完并保存后,执行 Create → Cellview → From Cellview,SE会根据schematic中的pin自动生成一个symbol。默认生成的是矩形框加引脚,可以手动调整引脚位置、添加图形、修改引脚名。symbol的引脚名必须与schematic中的pin名完全一致,否则层次化调用会报“pin mismatch”。

创建好symbol后,新建顶层cellview,例如 AMP_LAB / amp_top / schematic,按 i 调用 amp_cs 的symbol。此时可以看到symbol的引脚与内部schematic的端口一一对应。顶层再添加电源、信号源、负载等,就形成了一个可仿真的完整测试电路。

层次化设计的价值在于:修改子单元schematic后,所有调用该symbol的上层电路自动更新,无需逐个修改。这也是模拟IC设计中复用IP的基础。

五、参数传递与CDF配置

如果希望symbol暴露参数给上层,例如让上层可以修改放大管的W/L,需要在symbol的CDF中定义参数。操作路径:Edit → Properties → Cellview,在CDF Editor中添加参数,例如 w、l,并设置默认值和prompt。然后在schematic中,将NMOS的W/L改为 pPar("w") 和 pPar("l"),这样上层调用时修改symbol的w/l,就会自动传递到内部器件。

参数传递是模拟IC设计从“画图”走向“可配置IP”的关键一步。对于基础放大器,至少应暴露偏置电流、负载阻值、器件尺寸等关键参数。

六、检查与验证

原理图完成后,必须做两项检查:

  1. Check & Save:Check → Current Cellview,检查悬空线、未连接引脚、重复网络名等。
  2. Netlist:Create → Netlist → Create,生成网表并查看是否有错误。网表是后续仿真的输入,若网表报错,仿真一定失败。

此外,建议用 Hierarchy → Generate Hierarchy 查看层次结构,确认子单元被正确展开。若发现某个symbol没有对应的schematic,或pin名不一致,应回到对应cellview修正。

共源放大器层次化设计:从schematic到symbol到顶层调用 Library / Cell / View AMP_LAB ├─ amp_cs │ ├─ schematic │ └─ symbol └─ amp_top amp_cs / schematic M1: nmos4 W=2u L=180n R1: res R=10k Ports: vin, vout, vdd, gnd Nets: vin, vout, vdd, gnd 参数: w=pPar("w") l=pPar("l") amp_cs / symbol AMP_CS vin ● ● vout vdd ● ● gnd amp_top / schematic(顶层测试电路) amp_cs w=4u l=180n vin vout vdd gnd 参数传递(CDF) 顶层 w=4u → 内部 M1 W=4u pPar("w") 自动映射 验证闭环 Check & Save Create Netlist ADE 仿真 图例 库结构 原理图 符号

七、常见问题与排错

初学者在原理图输入阶段最常遇到三类问题:

  • Pin mismatch:symbol引脚与schematic端口名不一致。解决方法是重新执行 Create → Cellview → From Cellview,或手动核对pin名。
  • Netlist error: undefined model:器件模型名与工艺库model文件不匹配。检查 Model name 是否与库中定义一致。
  • 参数未传递:schematic中器件参数写成了固定值,而非 pPar()。需回到schematic修改为参数表达式。
建议在原理图阶段就养成“先命名网络、再连线”的习惯。网络名是后续仿真中选择节点、查看波形、编写测量脚本的基础,命名混乱会显著增加调试成本。

完成以上步骤后,一个基础共源放大器的原理图、symbol和顶层测试电路就建立完毕。此时应能通过 Check & Save 无错误,并成功生成网表。下一阶段即可进入ADE仿真环境,对增益、带宽、工作点等指标进行验证。