ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Smic40nm PMOS器件识别:从版图层次到工艺剖面的完整分析方法

Smic40nm PMOS器件识别:从版图层次到工艺剖面的完整分析方法 在很多Smic40nm模拟项目中LVS 报错往往是晚上最磨人的事情。明明电路连接看起来没有问题DRC 也基本干净可 LVS 就是报出 instance mismatch要么是 property 对不上要么是器件类型识别错误。调试到最后很多人会发现自己对 PDK 器件的理解还停留在 symbol 层面根本没有深入到版图层次和工艺剖面中去。PDK 器件识别这件事在 40nm 及以下工艺节点会突然变得重要起来。原因很简单工艺层次越来越多器件类型五花八门同一个 pmos 可能因为阈值电压档位不同、是否有 DNW 隔离、是否用于 ESD 而分成好几个 cell。如果只会照着 schematic 里的 symbol 放器件一旦遇到 LVS 识别异常、参数对不上、或者想手动检查版图结构就会非常被动。这篇文章以 Smic40nm PDK 为例围绕 pmos 器件完整讲解器件识别的核心思路从工艺剖面理解层次堆叠从层次堆叠理解版图结构再从版图结构反查参数与连接关系。读完你会掌握一套可复用的层次查看与结构分析方法而不是只记住某几个 layer 的名字。1. 为什么 PDK 器件识别会成为第一个门槛很多初学者拿到 PDK 之后第一反应是打开 PDK library找一个名字带 pmos 的 cell 拖到 schematic 里然后开始画版图。看起来一切正常因为这个流程被 PDK 封装得太顺滑了symbol 帮你画好了CDF 参数帮你填好了Pcell 帮你生成了 layout。这也是 PDK 的意义所在它把工艺细节封装起来让设计者不需要每次从零画器件。但问题恰恰出在这里封装不等于透明。当 LVS 报错、当你想确认器件尺寸、当你想修改 finger 数、当你想验证某个 Pcell 生成的结构是否和工艺剖面一致时你必须要能“拆开”PDK 看内部。在 40nm 工艺节点器件识别有几个具体的难点第一cell 数量多。同样一个 pmos可能有普通阈值版本、低阈值版本、高阈值版本还可能有带 DNW 隔离的版本、用于 IO 的版本。每个 cell 对应的层次结构都有差异。第二层次数量多。40nm 工艺已经不是 180nm 那种“几层光罩就能讲清楚”的时代。Poly、Active、NWELL、PIMP、NIMP、DNW、Contact、Via、Metal 一层叠一层很多层次在版图里看起来只是一些矩形但它们的堆叠顺序决定了器件类型。第三识别规则藏在工艺剖面里。一个 pmos 之所以是 pmos不是因为它叫 pmos而是因为它在 NWELL 里放了一对 P 有源区中间被 Poly 隔开。理解这个“为什么”比记 100 个 layer 名字都重要。因此本文的核心观点是PDK 器件识别的本质是从版图层次反推工艺剖面结构的能力。掌握了这个能力你不仅能看 pmos也能看 nmos、看电阻、看电容甚至能排查很多 LVS 和 DRC 的疑难杂症。2. PDK 基础与 Smic40nm 器件认知2.1 PDK 到底是什么PDK 的全称是 Process Design Kit也就是工艺设计套件。它不是一个文件而是一整套工具链和模型库的集合。一个完整的 PDK 通常包括组成模块作用Pcell参数化单元根据 W/L/finger 等参数自动生成版图Symbol 与 CDF 参数schematic 中的器件符号和可编辑参数工艺文件techfilelayer、purpose、颜色、显示规则器件模型Model用于 SPICE 仿真的 MOSFET 模型验证规则文件DRC / LVS / RC 提取 rule标准单元库可选数字标准单元、IO 单元PDK 文档与示例使用说明、参数列表、迁移指南在模拟版图设计流程中我们打交道最多的就是 Pcell 和 CDF 参数。Pcell 的职责是你给它 W、L、mulitiplier、finger 等参数它按照工艺规则生成一层层几何图形。CDF 的职责是在 schematic 和 layout 之间同步这些参数保证 LVS 能对上。2.2 Smic40nm 工艺的基本特点Smic40nm 属于 40nm 逻辑工艺节点在摩尔定律的演进中处于“平面 CMOS 晶体管”的末期阶段。和更先进的 FinFET 工艺不同40nm 的晶体管仍然是在硅平面上水平工作的栅极从上方控制沟道。这意味着它的版图层次习惯与 28nm 以下的 FinFET 工艺有明显差别很多从 65nm、90nm 转过来的工程师会感到比较熟悉。40nm 工艺要特别注意几个点Poly 间距和 Active 间距较小版图设计对 DRC 规则比较敏感。部分金属层次可能需要考虑双重图形曝光DPT相关的设计规则也就是 40nm 节点的“金属层密化”策略。阈值电压档位较多器件级别会出现多个 VT 版本。模拟器件类型丰富有厚栅氧器件用于 IO也有薄栅氧器件用于核心逻辑。这些工艺特点会直接反映到 PDK 的器件列表里。打开任何一家 40nm 工艺的 PDK library你都会看到大量名称相近的 pmos 和 nmos cell。如果没有清晰的识别方法很容易选错器件。2.3 阈值电压档位与器件选择以常见的 40nm PDK 为例器件命名通常会包含类型标识和电压档位。比如 pmos 可能分成普通阈值、低阈值LVT、高阈值HVT等。不同档位的区别在于阈值电压的绝对值不同版图结构基本相同但注入层次可能有差异。这里要提醒一点具体 cell 名称和阈值电压数值不同 PDK 版本、不同代工厂差异很大不要凭记忆写死。正确做法是查 PDK 自带的文档或者 Release Notes确认每个 cell 对应的 Vth 和工艺层次。识别器件时除了看名称更要确认 CDF 参数里是否包含model、type等字段。这些字段会告诉你这个器件最终映射到 SPICE model 的哪个模型名。模型名才是仿真和 LVS 真正关心的东西。3. PMOS 与 NMOS 的结构差异与剖面分析3.1 从剖面理解两种器件要识别 pmos先要把 pmos 的剖面结构刻在脑子里。CMOS 工艺中pmos 和 nmos 是互补器件基本结构对比如下对比项PMOSNMOS导电载流子空穴电子所在阱NWELLN 阱PSUB/PWELL源漏注入PN衬底连接NWELL一般接 VDDPSUB一般接 GND导通条件Vgs VthVth 通常为负Vgs VthVth 通常为正开关应用常用作高边开关常用作低边开关这个对比表看起来简单但它背后对应着严格的工艺层次约束。pmos 必须做在 NWELL 里因为它的源漏是 P 区P 区必须嵌在 N 型区域中才能形成 PN 结隔离。如果把 pmos 的 P 直接放在 P 型衬底上源漏之间就没有反向偏置的 PN 结来隔离了器件根本不可能正常工作。3.2 pmos 的剖面结构文字拆解在 Smic40nm 工艺中一个标准 pmos 从下到上大致可以描述为P 型衬底PSUB之上先做一层 NWELL。NWELL 是整个 pmos 的“基座”它把 P 型衬底局部翻转为 N 型区域。NWELL 内部由 STI浅沟槽隔离划分出有源区Active Region。有源区里再进行 P 注入形成 pmos 的源极和漏极。两个 P 有源区之间横跨一条多晶硅Poly栅极。栅极下方的 NWELL 表面就是沟道区。沟道上方是栅氧化层再上面是 Poly。注意这里的层次堆叠顺序就是你在版图里看到层层图形的纵向关系。版图是俯视图剖面是侧视图。把两者对应起来才能从一堆 2D 矩形里读出 3D 器件结构。3.3 为什么要加 DNW对于普通 pmosNWELL 本身可以直接放在 PSUB 上。但是在某些电路里设计者希望把 pmos 的衬底和芯片全局衬底隔离开这时就需要 DNWDeep NWell深 N 阱。DNW 像一个“碗”一样埋在 P 型衬底里把局部 P 型区域包裹住再配合外围的 N 型环实现局部区域的隔离。如果你在版图里看到某个 pmos 周围多了一圈 NWELL 环并且层次列表里有 DNW那很可能是一个带隔离的 pmos 或一个带有独立衬底连接的“三阱”器件。识别 DNW 器件的方法很简单打开该 cell 的层次列表看是否有 DNW 层以及 NWELL 是否被拆成“有源区域中的 NWELL”和“隔离环 NWELL”。这个细节对 LVS 的衬底连接识别影响很大。4. Smic40nm PMOS 的层次堆叠与关键识别层4.1 核心层次清单在版图视图里一个 pmos 通常由下面这些关键层叠加而成。不同 PDK 的 layer purpose pair 命名可能不同但角色是通用的。层次名称作用备注NWELLN 阱pmos 的基底低压 pmos 和高压 pmos 可能不同Active / DIFF有源区源漏扩散区定义晶体管有源区域Poly / PO多晶硅栅极与 Active 交叉形成沟道PIMP / PSP / PP 型源漏注入标记该有源区为 PNIMP / NSP / NN 型注入在 pmos 中用于 NWELL 的 pickupDNW可选深 N 阱隔离隔离型 pmos 才会出现Contact / CT接触孔连接有源区/栅极和金属Metal1 等互连金属连接端口判断一个器件是不是 pmos核心是看三点有源区上方是否有 P 注入标识。整个器件是否处于 NWELL 区域之内。Poly 是否横跨有源区并构成栅极。如果这三点都满足那基本可以认定是 pmos。如果第一条变成 N或者器件处于 PSUB 区域那就是 nmos 或者其他类型器件。4.2 识别层与物理层的区别很多 PDK 里会单独设置“识别层”比如diff、pimp等。识别层未必是真实的光刻层它可能是为了告诉 LVS 工具“这里是一个 P 有源区”而添加的标记层。理解这一点非常关键。举个例子你在版图里看到一层psd它的真实作用是标记 P Source/Drain 注入区域。但 LVS 在识别 pmos 时可能并不直接读psd而是通过 Active 和 P 注入层的逻辑“与”来判断。这就是为什么有时候删掉或改错识别层会导致 LVS 完全认不出器件。因此在手工查看层次时不要只盯着图形好不好看而要问自己这一层是物理层还是识别层它参与不参与 LVS 的器件识别如果我在这一层上做了修改会不会破坏 Pcell 的可参数化能力4.3 用“层次列表”验证器件结构在 Virtuoso 中查看一个 pmos Pcell 时比较推荐的做法是把显示层次全部打开。这样可以看到这个 cell 到底用了哪些 layer 和 purpose pair。比如nwell drawingNWELL 的实际图形。active drawing有源区。poly drawing栅极。psd drawingP 源漏注入。nsd drawingN 注入这里用于 NWELL pickup 或 guard ring。pcut或类似层次可能用于 P 区域和 N 区域的选择性注入。把这些层次逐一和剖面图对照你会发现版图里每一个矩形都有物理意义。这种“层次清单 → 物理剖面”的对照训练是提升器件识别能力最快的方法。5. 在 Virtuoso 中做层次查看的完整操作5.1 环境与前置条件本文的层次查看操作以 Cadence Virtuoso 环境为例。Smic40nm PDK 的 Pcell 在 Virtuoso 中通常以layout视图存在schematic 视图对应 symbol。在开始之前确认以下几点PDK 已正确安装并能通过 Library Manager 看到 PDK library。techfile已加载版图编辑窗口能够正常显示 layer 颜色。PDK 自带的display.drf或layer properties文件已生效否则层次显示会混乱。如果打开版图后一片黑或者层次颜色和文档不一致优先检查 display 文件是否加载而不是怀疑 Pcell。5.2 打开 PDK 中的 pmos cell在 Library Manager 中找到 PDK library展开 cell 列表找到 pmos 相关的 cell name例如常见的pmos、pmos_lvt、pmos_hvt、pmos_dnw等右键选择Open并选择layout视图。打开后你会看到一个或多个 pmos 实例的版图。此时如果只看到一团矩形不要慌这很正常。按下 ShiftF 可以把显示切到全部层次或者通过菜单 View - Display Options将所有 layer purpose pair 都设为可见。5.3 用 Q 键和 Find 面板快速定位层次查看层次最直接的方式是选中某个图形。按键盘上的 Q 键或者菜单 Edit - Properties - Object。在弹出的属性框中查看该图形的 Layer 和 Purpose。例如你点击一个矩形Q 键显示Layer: NWELL Purpose: drawing说明这个矩形是 NWELL。再点另一个矩形看到Layer: PSP Purpose: drawing说明这里是 P 注入。如果你想查看整个 cell 用到哪些层次更推荐使用 Find 面板。按 ShiftF勾选「All」点击 Apply把所有层次的显示关闭再打开或者使用 Visibility 面板里的Layer标签逐个勾选层次查看。5.4 用 Skill 命令批量列出层次当 cell 比较大时手动点 Q 键逐个看太慢。可以在 CIWCommand Interpreter Window里执行一段简单的 Skill 代码列出当前 cellview 用到的所有 layer。; 在 Virtuoso CIW 窗口中执行获取当前版图 cellview 的所有层次 cv geGetEditCellView() ; 如果当前没有打开版图cv 会是 nil需要先打开一个版图 unless(cv error(请先打开一个版图 cellview\n) ) printf(Cellview: %s.%s.%s\n cv~libName cv~cellName cv~viewName) printf(--- Layer list ---\n) foreach(layer cv~layer1 printf(Layer: %s, Purpose: %s\n layer~name layer~purpose~name) )这段代码会在 CIW 中打印当前 cellview 上已经使用的所有 layer 和 purpose。执行后如果发现某个 cell 同时出现psd和nsd说明该结构里既有 P 也有 N 区域符合 pmos 加 pickup 的结构预期。5.5 对比普通 pmos 与隔离型 pmos如果把普通 pmos 和带 DNW 的 pmos 分别打开然后用上面的 Skill 命令列出层次你会看到明显的差异隔离型 pmos 多出了 DNW 层而且 NWELL 的图形可能会多一圈。这个差异用肉眼看是很直观的。建议把这个对比操作做成一页笔记记录每个 cell 的“层次签名”以后再拿到新 PDK 时可以用同样的方法快速归档整个器件库。6. Schematic 参数与版图层次的对应6.1 参数从哪里来在 schematic 里放一个 pmos双击 symbol会看到 CDF 参数表。常见参数包括 W、L、Mmultiplier、Fingers、S/D 宽度等。这些参数最终会写入 Pcell 实例的属性中并决定 Pcell 生成的几何图形。很多时候schematic 中的参数和版图 Pcell 参数显示方式不一致导致 LVS 报 property mismatch。比如 schematic 使用fingers而 Pcell 内部叫fing如果 PDK 没有做好映射两边就会对不上。此时不要直接改 CDF 文件名或乱改参数先打开 PDK 的 CDF 回调callback文件查看参数映射关系。Smic40nm PDK 的 Pcell CDF 里通常会有 callback 函数负责把用户填写的 W/L/finger 转换成 Pcell 实际接收的参数。6.2 查看实例属性的 Skill 脚本在版图编辑器中选中一个 pmos 实例然后执行下面这段 Skill 脚本可以打印实例的 cell 名和所有属性; 打印当前 cellview 中所有 pmos 实例的属性 cv geGetEditCellView() unless(cv error(请先打开版图 cellview\n) ) foreach(inst cv~instances if(inst~cellName pmos then printf(Instance: %s Cell: %s\n inst~name inst~cellName) foreach(prop inst~prop printf( prop: %s %s\n prop~name prop~value) ) ) )如果 PDK 的 pmos 实例命名不是pmos需要把代码里的pmos替换成实际的 cellName。执行结果会列出 W、L、M、Fingers 等所有参数方便和 schematic 中的 CDF 参数逐项对比。6.3 如何把参数显示到 symbol 上有工程师会问“怎么将 schematic 的 pmos 及 nmos 的参数弄到 symbol 上调整”。这个操作在 Virtuoso 中其实很常见。具体方法是选中 schematic 中的 pmos 实例。打开属性编辑框Edit - Properties - Objects。找到 CDF 参数中的Display或Show Name选项。将需要显示的参数如 W、L、M设置为可见。或者直接修改 symbol 文件里的 label但一般不推荐动 symbol尽量通过 CDF 的 display 控制。这样做的价值是在顶层 schematic 里不用每次双击进入 CDF就能直接看到并联管子的 W/L。对多级放大器这种需要频繁调整尺寸的场景很实用。6.4 用 openpyxl 读取 PDK 参数表很多 PDK 会把器件参数以 Excel 表格形式发布比如param_list.xlsx。在整理参数或核对选型时可以用 Python 快速提取表头和数据。下面这段代码使用 openpyxl 读取 Excel 表头、获取行列信息import openpyxl # 换成实际的 PDK 参数表路径 file_path smic40_pdk_parameter_list.xlsx wb openpyxl.load_workbook(file_path, data_onlyTrue) # 获取当前活动工作表 ws wb.active print(工作表名称:, ws.title) print(最大行数:, ws.max_row, 最大列数:, ws.max_column) # 读取第一行作为表头 headers [cell.value for cell in ws[1] if cell.value is not None] print(表头列表:, headers)如果你拿到一张全英文的 PDK 参数表先用这个脚本打印表头再对照关键字找参数列会比直接在 Excel 里拉滚动条高效很多。实际项目中我用这个思路快速核对过不少器件的 W/L 范围和阈值电压档位。7. 结构分析实战电流方向与寄生二极管7.1 从结构推导导通条件很多程序员背景的工程师刚接触模拟器件时记不住 pmos 导通条件和 nmos 导通条件的区别。根源在于没从结构上理解。pmos 的栅极下面是 P 型沟道但沟道本身是在 NWELL 里通过电场“感应”出来的空穴导电层。为了让沟道出现栅极电压必须相对源极低到一定程度也就是 Vgs Vth。由于 pmos 的 Vth 通常是负值所以栅极电压要明显低于源极电压才能开启。nmos 则相反栅极电压要高于源极电压把衬底中的电子吸引到表面形成反型层。所以记住一句话pmos 是低压开启nmos 是高压开启。这句话在模拟电路设计里非常实用。7.2 pmos 的寄生二极管方向从剖面结构看pmos 的源漏区是 PNWELL 是 N 型区域。P 和 NWELL 之间会形成一个 PN 结。这个 PN 结就是 pmos 的寄生二极管方向是从 P 区指向 NWELL。在电路图中这个体二极管通常表现为从源极/漏极指向体端bulk的二极管。由于体端一般接 VDD所以正常工作时寄生二极管反偏。一旦某个端电压高出 VDD 一个二极管压降寄生二极管就可能正向导通造成意料之外的漏电或电流路径。与 nmos 对比nmos 的源漏是 N衬底是 PSUB寄生二极管方向是 N 指向 PSUB体端接 GND。两者寄生二极管的“指向”正好相反。理解这一点后再看 pmos 防反接电路、pmos 防倒灌电路就会容易得多。7.3 电源管理场景中的结构判断在防反接电路里PMOS 经常被用作高边开关。当电源接反时PMOS 不导通寄生二极管方向会阻止反向电流从而保护后级电路。如果你能从版图层次里确认管子确实是 pmos、确认源漏连接正确、确认体端接法是 VDD 方向那这个电路的行为就能解释清楚。在防倒灌电路里PMOS 同样非常重要。利用 pmos 关断后寄生二极管反偏、以及源漏交换后的对称特性可以实现单向导通和防倒灌。分析这类电路时“看结构”比“背结论”可靠得多。所以在实际项目中结构分析不只是为了通过 DRC/LVS也是为了帮助你预判器件的寄生效应。当我们说“pmos 开关电路要注意方向”时本质上不是背电路口诀而是在心里默念那个剖面图P 源漏区、NWELL 体端、寄生二极管指向三者必须一致。8. 常见问题与排查思路问题现象可能原因排查方式解决方案LVS 认不出 pmosP 注入层缺失或识别层被误删用 Q 键查看有源区上的注入层恢复注入层重新生成 PcellLVS 报 property mismatchschematic 与 Pcell 参数名称不对应打印 instance 的 prop 列表修正 CDF 参数映射或统一参数名版图中看不到 NWELLDisplay 文件未显示该层检查 display.drf 加载情况重新加载 PDK display 文件普通 pmos 和隔离型 pmos 混淆选错 cellDNW 层未出现查看 cell 名称和 DNW 层确认电路需求后选正确的 cellpmos 和 nmos 混用导致 LVS 报错器件类型选错检查注入层是 P 还是 N替换为正确器件DRC 报 NWELL 密度或 spacing 错误guard ring 或 pickup 缺失对照 PDK 示例查看 NWELL 连接补全 NWELL pickup 和 guard ringQ 键看不到 object 属性对象被锁或选错 editable level检查是否选中 cell 内部层级选择合适的可编辑层或进入 cell排查的第一步永远是看 CIW 里的报错信息和 log 文件。不要盯着版图猜报错信息会直接指出是层次问题、参数问题还是连接问题。9. 最佳实践与工程建议9.1 建立器件层次档案每接触一个新 PDK建议花半天时间建立一个自己的“器件层次档案”。对每个常用 cell 记录cell 名称和用途关键剖面图可以手画或截图核心 layer 清单常规参数默认值该器件与其他近似器件的差异这个档案不需要很正式自己能看懂就行。但它的价值会在后续项目中反复体现。尤其是当你需要跨项目复用某个电路时快速翻档案比重新翻 PDK 文档高效得多。9.2 不要直接修改 Pcell 内部Pcell 的意义在于参数化。如果某个 pmos 的结构不满足需求比如需要特殊的 source/drain 结构正确做法是创建新的 derivative cell 或者在外部叠加图形而不是直接修改 PDK 的原始 Pcell。直接改 Pcell 会导致参数更新时图形被重建你的修改被覆盖更严重的是团队里别人拿到的库和你改过的库对不上。如果需要修改尽量在项目的库文件里做并记录修改内容。不要动 PDK 安装目录下的原始文件。9.3 层次查看要结合剖面图任何一次层次查看都应该带着问题去看这一层在剖面里对应什么它与其他层的纵向关系是什么如果只是“看到一层红色矩形”那这个信息基本没有价值。建议在显示器旁边放一张标准工艺剖面图。你可以从 PDK 文档里截图也可以自己画一张简化的。对照剖面图理解版图比纯靠记忆 layer 名称可靠得多。9.4 用显示层次控制提升效率大版图里所有层次全部显示时很难看清具体结构。Virtuoso 的 Visibility 面板支持自定义层次开关建议把常用组合存成不同的显示状态。例如“器件层”状态只显示 Active、Poly、NWELL、PIMP/NIMP。“互连层”状态只显示 Contact、Metal1、Via、Metal2。“确认层”状态只显示 LVS 识别层。在分析 pmos 结构时切换到“器件层”状态能清晰地看到 NWELL 边界、有源区边界和栅极交叉点这些是识别器件的核心信息。9.5 每次改版图后跑一遍 LVS 前先自检在提交 LVS 之前至少做一次简单自检每个 pmos 是否有 NWELL源漏注入是否是 P体端是否连接正确这些检查虽然看起来机械但能大幅减少 LVS 往返次数。尤其是当你手工修改过 Pcell 或者画了器件阵列时这种自检几乎必不可少。写在最后PDK 器件识别不是一个“记住 layer 名字”就能解决的问题。真正有效的做法是把工艺剖面、版图层次、参数属性三者统一起来。拿到一个陌生器件时先画剖面再对照版图再确认参数这套流程能帮你省下大量排错时间。这篇文章以 Smic40nm 的 pmos 为例核心方法完全可以迁移到 nmos、电阻、电容以及其他工艺节点。建议收藏备用下次遇到 LVS 认不出器件、或者不知道选哪个 pmos cell 时按文中的层次查看流程走一遍通常五分钟内就能定位问题。
返回列表