3. 器件生成与版图实现

在 Virtuoso 版图流程中,真正把“电路意图”变成“可制造几何图形”的起点,是从原理图驱动生成器件版图。与手工从零摆放器件不同,Layout XL(Virtuoso Layout Suite XL)和 Layout EAD(Electrical Aware Design)强调版图与原理图之间的电气关联:版图里的器件、端口、网络都带有与原理图对应的连接信息,后续的连线、衬底连接和 LVS 检查都建立在这层关联之上。本节围绕“如何从原理图生成器件版图、如何放置与连线、如何完成衬底连接”展开,重点讲清实际操作中的输入、命令、参数与判断依据。

一、生成前的准备:原理图必须“可被驱动”

Layout XL 的器件生成依赖原理图侧的连接信息,因此原理图必须满足几个前提。第一,所有需要进入版图的器件都应有明确的 instance name 和 cell name,且器件模型(如 nch_mac、pch_mac、res_ppoly 等)已绑定到 PDK 的 CDF 参数。第二,关键网络应使用 wire label 或 pin 标注,尤其是电源、地、偏置和输入输出节点,否则生成后端口无法正确映射。第三,若使用 Layout EAD,还需要在原理图中启用“Electrical Aware”相关属性,使版图侧能读取 connectivity 信息。

实际操作中,通常先在原理图窗口执行 Launch → Layout XL,或在 CIW 中调用 layoutXL 打开版图视图。此时 Virtuoso 会弹出 Layout XL 的启动选项,要求指定“Source”为当前原理图 cellview,“Target”为新建或已有的 layout cellview。若选择“Create New”,工具会依据原理图器件列表自动生成对应的版图实例框架;若选择“Open Existing”,则把已有版图与原理图建立关联。

二、从原理图生成器件版图:Connectivity-Driven 的生成逻辑

生成的核心动作是“按原理图实例创建版图器件”。在 Layout XL 中,常用入口是 Connectivity → Generate → All From Source,或使用 Layout XL → Generate Layout。执行后,工具会遍历原理图中的每个 instance,根据其 cell name 和 CDF 参数,在版图中调用对应的 layout cell(如 nch_mac 的版图单元),并按原理图的 instance name 命名版图实例。此时版图中出现的是“有电气属性的器件”,而不是普通几何图形。

生成过程中需要关注几个参数。其一是“Generate”范围:可选择 All、Selected 或 By Name,实际项目中常先选关键模块(如差分对、电流镜)生成,再逐步补全。其二是“Placement”选项:若勾选“Auto Place”,工具会按简单规则把器件排成一行或网格,但通常只作为初始摆放,后续仍需手动优化。其三是“Boundary”与“Row”设置:对于需要匹配的器件,应关闭自动行对齐,避免打乱对称关系。

生成完成后,建议立即执行 Connectivity → Check → Against Source,检查版图实例与原理图实例是否一一对应。若出现“Extra instance”或“Missing instance”,说明原理图中有器件未被生成,或版图中存在多余器件,需要回到原理图或生成设置中排查。

从原理图驱动生成器件版图与衬底连接流程 原理图 (Schematic) • 器件实例:M1/M2/M3… • 网络标签:VDD / VSS / INP • CDF 参数:W/L、m、fingers • Pin / Port 定义 • Electrical Aware 属性 (示例:nch_mac W=2u L=0.18u m=4) Launch Layout XL Generate All From Source • 遍历原理图 instance • 调用对应 layout cell • 继承 instance name • 建立 connectivity 关联 (可选 Auto Place / Row) 生成 版图 (Layout) • 器件实例已放置 • 端口 / 网络已映射 • 飞线 (Flight Line) 显示 • 可执行 Check Against Source (示例:M1/M2 对称摆放) 连线 (Routing) • 飞线引导手动走线 • 金属层:M1 / M2 / M3 • 线宽按电流密度选取 • 差分对等长 / 对称 (示例:M2 走 VDD,宽 0.5u) 衬底连接 (Substrate) • 衬底 / 阱接触 (Tap) • P-sub → VSS,N-well → VDD • 接触孔阵列 (Contact Array) • 避免闩锁 (Latch-up) (示例:每 20u 放一排 Tap) 验证与判断 • Check Against Source • 飞线全部消失 = 连接完成 • DRC 检查几何规则 • LVS 比对网表一致性 (示例:LVS 报 0 error 为通过) 注:图中参数为教学示例,实际值以 PDK 与设计规则为准

三、器件放置:从“生成”到“可布线”

生成后的器件通常只是按默认位置排列,需要重新摆放。Layout XL 提供几种辅助手段。第一,利用飞线(Flight Line)判断连接关系:飞线越短、交叉越少,说明摆放越合理。第二,使用 Edit → Move 配合 Snap 到栅格,保证器件对齐。第三,对匹配器件(如差分对、电流镜)使用 Edit → Align 或 Symmetry 命令,保持共质心或轴对称。第四,对多 finger 器件,可在 CDF 中设置 fingers 数量,生成时自动拆分为多个 finger,再通过 Modify → Stretch 调整源漏共享。

放置时还要注意“方向一致性”。例如 NMOS 的栅极通常朝同一方向,便于后续走线;PMOS 放在 N-well 中,需预留 well 边界和 tap 位置。若器件方向混乱,会导致飞线交叉严重,增加寄生和串扰。

四、连线:从飞线到实际金属

连线阶段的核心是“按飞线走线,按规则选层”。在 Layout XL 中,飞线表示原理图连接关系,但飞线本身不是几何图形。实际走线需使用 Create → Wire 或 Create → Path,在指定金属层上绘制。常用策略是:短距离、低电流用 M1;较长或需跨器件用 M2;电源地可用 M3 或更宽金属。线宽根据电流密度和 EM 规则确定,例如 1mA 电流在 M1 上通常取 0.2~0.5μm 宽,具体以 PDK 的 current density 表为准。

走线过程中,Layout XL 会实时更新飞线状态:当某条飞线对应的两个端口被同一金属路径连通后,该飞线消失。全部飞线消失,说明连接关系已完整实现。此时可执行 Connectivity → Check → Against Source,确认没有遗漏或多余连接。

五、衬底连接:容易被忽视但必须做对

衬底连接是版图实现中不可省略的一步。对 NMOS,源极通常接 VSS,但衬底(P-sub)也必须接 VSS;对 PMOS,N-well 必须接 VDD。实际做法是在器件附近放置衬底接触(substrate tap)或阱接触(well tap),并通过接触孔阵列连接到对应电源网络。常见规则是:每个器件或每 20~30μm 放置一排 tap,tap 与器件有源区之间保持最小间距,避免闩锁。

在 Layout XL 中,可使用 Create → Contact 或 Create → Guard Ring 生成 tap 和保护环。生成后,用 Create → Wire 把 tap 连到 VSS 或 VDD 网络。注意:衬底连接也必须与原理图一致,否则 LVS 会报“substrate net mismatch”。

六、结果判断与常见问题

完成放置、连线和衬底连接后,建议按以下顺序检查:第一,飞线是否全部消失;第二,Check Against Source 是否无 error;第三,DRC 是否通过;第四,LVS 是否报 0 error。若 LVS 报“missing instance”,通常是原理图有器件未生成;若报“net mismatch”,通常是连线或衬底连接与原理图不一致;若报“parameter mismatch”,则需检查 CDF 参数(如 W/L、m)是否在版图中正确体现。

教学示例:某两级运放中,输入差分对 M1/M2 设为 nch_mac,W=2μm,L=0.18μm,m=4,fingers=2。生成后先按轴对称摆放,再走 M2 连接漏极,最后在差分对周围加 P-sub tap 接 VSS。执行 Check Against Source 后飞线全部消失,LVS 报 0 error,说明器件生成、连线与衬底连接均正确。

总结来说,从原理图驱动生成器件版图,关键是把“电气关联”贯穿始终:生成时继承实例与网络,放置时参考飞线,连线时按规则选层,衬底连接时保证电位正确。Layout XL 和 Layout EAD 提供的 connectivity 检查,正是判断这些步骤是否做到位的直接依据。