Calibre 工具的几何处理基础(11-1)

张开发
2026/4/7 21:50:48 15 分钟阅读

分享文章

Calibre 工具的几何处理基础(11-1)
目录一、核心基础概念二、层类型Layer Types2.1 原始层Original Layers2.1.1 Datatypes and Texttypes2.1.2 数据类型映射的具体处理逻辑2.1.3 图层映射的常见问题2.2 派生多边形层Derived Polygon Layers2.3 派生边层Derived Edge Layers2.4 派生错误层Derived Error Layers三、层定义Layer Definitions3.1 显式定义Explicit3.2 隐式定义Implicit3.3 重复定义Duplicate四. 图层类型总结一、核心基础概念Calibre工具采用基于边edge-based的处理方式。基础几何数据类型包括多边形polygons和多边形的边edges of polygons。这些工具的核心处理对象是多边形的边而非多边形区域本身尽管工具会对两者均进行操作。每条边都始终关联着其所属的多边形。只要建立了相应的电路连通性多边形和边还可以关联到某个电气节点electrical node。下图展示了边与多边形的关系每条多边形的边都具有外侧exterior side和内侧interior side。边的 “侧” 由以下规则定义边的哪一侧邻接多边形的外部区域哪一侧邻接多边形的内部区域。在当需要区分边的内侧与外侧时所有图示均会将边的内侧标记为阴影部分。在尺寸检查中对边缘对进行分析时Calibre 会为每条边缘构建一个区域该区域由落在该边缘指定距离内的所有点组成的半平面构成。♦ Calibre 会输出某条边缘与另一条边缘所对应区域相交的任何部分。半平面的构建由尺寸检查度量方式控制欧几里得、方形或反向。♦ Calibre 只会高亮显示与违例区域相交的边缘部分。♦ 有四种可用于构建违例区域的选项度量方式欧几里得默认方形反向反向扩展♦ 下面的示例会同时给出SVRF 代码和图形结果二、层类型Layer Types几何版图数据库由与芯片制造中所用材料相对应的图层构成。这些图层包含多种对象如多边形、路径、文本对象和属性信息。其中多边形和路径由边组成。Calibre工具本质上是基于边edge-based进行处理的但它可处理的图层分为以下四种类型。简单来讲layer 有四种1自己画的2抽取的polygon3抽取的edge 4抽取的error 层layer type和data flow在DRC系统中,从layout数据库中提取原始层,然后对层进行逻辑操作获取派生的polygon/edge/error层最终全部输出到DRC result database中。Calibre 支持 4 类层核心分为「原始层」和「派生层」具体如下层类型定义与用途语法示例SVRF原始层Original Layers又称「绘制层」对应芯片制造中的实际材料层存储原始布局数据多边形、路径等- 简单层LAYER m1 2层名 m1编号 2- 层集LAYER met 3 4 5层 3-5 合并为 met- 嵌套层集LAYER all_met m1 met合并 m1 和 met派生多边形层Derived Polygon Layers由层操作布尔、拓扑运算等生成的合并多边形可用于后续层操作或结果输出gate poly AND oxidepoly 和 oxide 的交集生成 gate 层派生边层Derived Edge Layers由层操作生成的多边形边 / 边段用于尺寸检查如边长、角度long_metal_edge LENGTH metal 5筛选 metal 层中长度 5 的边派生错误层Derived Error Layers存储 DRC 错误结果如间距违规、包围不足仅支持 DFM 相关操作后续处理min_ml_width { INTERNAL m1 0.08 }检查 m1 层内部间距 0.08 的错误2.1 原始层Original Layers原始图层或绘制图层是表示原始版图数据的图层。在规则文件中可通过Layer语句中的图层名称或编号来引用它们。验证系统还允许使用图层集layer set即给多个图层编号分配同一个图层名称。这种情况下图层集的作用等同于一个普通图层其包含的所有构成图层上的图形会被合并。与普通图层类似规则文件中可通过名称或别名引用图层集。以下是在 SVRF 规则文件中声明原始图层的示例LAYER m1 2 // 普通图层名称m1编号2 LAYER met 3 4 5 // 图层集名称met包含编号3、4、5的图层 LAYER all_met m1 met // 另一图层集名称all_met包含图层m1和图层集met在大多数图层操作中工具会先自动合并原始图层上的多边形数据再使用该图层。在合并数据表示中工具会将所有重叠或共享一条边的多边形合并为一个多边形。主要例外情况是单层布尔运算——这类运算会基于未合并的原始图层执行。通常与未合并数据相比合并数据能更准确地反映真实掩模的形态。2.1.1 Datatypes andTexttypes默认情况下Calibre的内部数据库图层不使用数据类型datatype或文本类型texttype。所有版图数据库图层无论是否包含数据类型或文本类型在Calibre数据库中均通过图层编号来表示。若版图数据库格式支持数据类型默认情况下某一给定图层的所有数据类型都会映射到单个Calibre图层。例如若版图中图层1包含数据类型1和数据类型2在Calibre内部这些数据都会映射到Calibre图层1且不区分数据类型。通过Layer Map指定语句可基于数据类型和文本类型处理绘制的几何图形与文本。与所有规则文件元素相同Layer和Layer Map指定语句的相对顺序不受限制。以之前的示例为例可在规则文件中按如下方式映射数据类型LAYER MAP 1 DATATYPE 1 1 // 将原始图层1的数据类型1映射到Calibre图层1 LAYER MAP 1 DATATYPE 2 2 // 将原始图层1的数据类型2映射到Calibre图层2 LAYER my_layer1 1 // 定义Calibre图层1的名称为my_layer1 LAYER my_layer2 2 // 定义Calibre图层2的名称为my_layer2在该示例中原始图层1的数据类型1被映射到Calibre图层1原始图层1的数据类型2被映射到Calibre图层2。①当Layer Map指定语句中包含DATATYPE关键字时该语句被称为数据类型映射datatype map当包含TEXTTYPE关键字时被称为文本类型映射texttypemap。②通过TEXTTYPE映射处理文本图层的方式与DATATYPE映射的工作原理类似。③文本类型映射适用于以下对象上的文本Layout Property Text版图属性文本、Layout Text版图文本、Text Layer文本图层在LVS中还适用于Port Layer Text端口图层文本、Device TEXT MODEL LAYER器件文本模型图层和TEXT PROPERTY LAYER文本属性图层参数其作用方式与数据类型映射对 “数据类型” 和 “Layer指定语句中定义的原始图层” 的作用方式一致。在整个Calibre流程中文本对象的文本类型属性会被保留。因此若某文本对象的图层在TEXTTYPE映射中被定义Calibre会保留其原始文本类型属性也可通过Layer Map语句将该文本类型映射为其他类型2.1.2 数据类型映射的具体处理逻辑当读取 “图层L上数据类型为D的几何图形G”时版图流读取器会按以下步骤处理检查是否存在任何数据类型映射格式为source_layers源图层、source_types源类型、target_layer目标图层。若图层L属于source_layers且数据类型D属于source_types则对于所有满足该条件的数据类型映射几何图形G会被视为位于target_layer上。若几何图形G被如此映射则它不再被视为位于原始图层L上除非图层L是该几何图形G所属某一数据类型映射中的target_layer。若几何图形G未包含在任何数据类型映射中则无论其数据类型如何都会被视为位于原始图层L上。2.1.3 图层映射的常见问题使用图层映射时一个常见问题是为映射而创建的目标图层编号实际上可能包含非预期的图形数据。例如LAYER metal 100 // 定义Calibre图层100的名称为metal LAYER MAP 6 DATATYPE 1 100 // 将原始图层6的数据类型1映射到Calibre图层100上述配置的意图是将原始图层6上数据类型为1的所有版图几何图形映射到Calibre图层100并命名为metal。但问题可能出现若输入版图数据库中的图层100本身包含无需使用的图形根据上述映射逻辑这些图形也会被归入Calibre图层100中。一个简单的解决方案是将输入版图中图层100上的对象映射到一个未使用的图层如下所示// 将输入版图中图层100的所有数据类型映射到未使用的Calibre图层999 LAYER MAP 100 DATATYPE 0 999 LAYER unused 999 // 定义Calibre图层999的名称为unused未使用 // 将原始图层6的数据类型1映射到Calibre图层100 LAYER MAP 6 DATATYPE 1 100 LAYER metal 100 // 定义Calibre图层100的名称为metal2.2 派生多边形层Derived Polygon Layers派生多边形层是指通过各类层操作生成的、经过合并处理的多边形集合这类层操作包括布尔运算、多边形拓扑运算以及部分采用多边形输出形式的尺寸检查运算。层定义中派生多边形层的示例如下gate poly AND oxide本示例中gate层即为一个派生多边形层。上述层的推导过程既可以写在规则检查语句外部此时该层为全局派生层也可以写在规则检查语句内部此时该层为局部派生层。无论该层被定义为全局层、局部层还是同时以两种形式存在数据库构造器都只会对其执行一次计算并在运行过程中按需调用。对于那些判定为完全相同的派生层即便它们的层名不同也仅会被计算和存储一次。派生多边形的运算结果可以直接输出至结果数据库。当以下层操作以独立形式写在规则检查语句中时其运算结果将被输出至结果数据库contact NOT INTERACT metal完整的规则检查语句结构如下bad_contact { contact NOT INTERACT metal }2.3派生边层Derived Edge Layers派生边层是指通过各类层操作生成的、合并后多边形的边或边段集合这类层操作包括边拓扑运算和边导向的尺寸检查运算。如果派生边层的运算以独立形式存在即运算结果未通过等号赋值给某个派生层名称其运算结果也可直接输出至结果数据库。派生边层的示例如下long_metal_edge LENGTH metal 5无论该层被定义为全局层、局部层还是同时以两种形式存在数据库构造器都只会对其执行一次计算并在运行过程中按需调用。对于那些判定为完全相同的派生层即便它们的层名不同也仅会被计算和存储一次。当以下独立层操作写在规则检查语句中时其运算结果将被输出至结果数据库LENGTH metal 5派生边拥有内侧和外侧之分。派生边的内侧是指向多边形内部的一侧外侧则是指非内侧的另一侧。Calibre 布局数据库会保留派生边的内外侧属性这一点对于那些需要依据内外侧属性确定测量标准的层操作至关重要。2.4 派生错误层Derived Error Layers派生错误层是由单个或两个图层中的一至四条边构成的边簇集合。这类图层主要用于承载错误导向型层操作的运算结果并将结果实例化至 DRC 结果数据库中同时也支持向其他类型的结果数据库输出内容。能够生成这类数据的操作包括包围度检查Enclosure、外部间距检查External、内部间距检查Internal、可制造性设计测量DFM Measure、可制造性设计属性分析DFM Property、时序驱动型设计规则检查TDDRC以及绘制锐角检查Drawn Acute、绘制角度检查Drawn Angled、绘制栅格偏移检查Drawn Offgrid、绘制歪斜检查Drawn Skew。当以下独立层操作写在规则检查语句中时会生成一个派生错误层并将结果输出至 DRC 结果数据库min_ml_width { INTERNAL m1 0.08 }以下语法会生成一个派生错误层并将其存储至x层中x INTERNAL m1 0.08注意由错误导向型层操作生成的派生层仅能作为输入层传递给可制造性设计分析DFM Analyze、可制造性设计属性分析DFM Property或可制造性设计结果数据库导出DFM RDB操作以进行后续处理。其他类型的层操作均不支持将错误导向型运算结果作为输入。在尺寸检查操作中可通过在图层参数外添加方括号[]或圆括号()的方式使运算结果生成派生边层而非派生错误层。例如以下语法会生成一个派生边层该图层可作为输入层参与任意其他类型的层操作y INTERNAL [m1] 0.08请注意本语法中对方括号[]的使用。包围度检查ENClosure、外部间距检查EXTernal和内部间距检查INTernal操作可通过使用以REGION开头的关键字使运算结果生成派生多边形层。有关尺寸检查操作的详细说明详见第 137 页的《尺寸检查操作》章节。三、层定义Layer Definitions层定义的作用是为派生层分配名称。当某个派生层通过层定义被命名后你就可以在规则文件的其他操作中通过引用这个名称来调用该派生层。layer_name layer_operation其中“layer_operation” 用于创建derived layer并将其命名为 “layer_name”。layer definition既可以存在于规则检查语句规则文件中的DRC检查结构内部也可以存在于其外部。位于规则检查语句内部的层定义属于该语句的 “局部定义”会覆盖同名的全局层且该局部定义无法在该规则检查语句外部使用。可以在不同的规则检查语句中重复使用相同的局部层名称但在同一条规则检查语句内部不能重复使用同一个局部层名称。在单个规则文件中或在通过Include语句引入的规则文件中不能对同一个全局层名称进行多次声明。在全局层定义所在的规则检查语句内部任何与该全局层同名的局部层定义都会取代覆盖该全局层定义。层定义用于为派生层分配名称支持显式、隐式、重复定义三种形式核心规则如下3.1 显式定义Explicit直接通过赋值生成可复用的派生层全局 / 局部svrf// 全局定义全文件可用 n_diff diffusion NOT p_dope // n扩散层diffusion减去p_dope p_diff diffusion AND p_dope // p扩散层diffusion与p_dope交集 // 局部定义仅在当前DRC规则内有效覆盖全局同名层 bad_contact { temp_layer contact NOT INTERACT metal // 局部层规则外不可用 REPORT temp_layer Contact not covered by metal }3.2 隐式定义Implicit隐式层定义无需为每个派生层都设置显式名称同时还能为层操作提供表达式级联的能力。隐式层定义的形式是用一对括号包裹单个层操作该操作的输入层也可以是其他隐式层定义。可以将隐式层定义作为任意层操作的输入层。隐式层定义支持层操作的表达式级联写法不必再为每一个中间派生层都创建名称。用()包裹层操作无需命名中间层简化复杂运算svrf// 生成tap层(p_diff与bulk-nwell的交集) 或 (n_diff与nwell的交集) taps ( pdiff AND ( bulk NOT nwell ) ) OR ( ndiff AND nwell )3.3 重复定义Duplicate当层操作和输入层均相同时这些层定义即为重复层定义。Calibre数据库的构建机制具有高效性对于重复的层定义其在内部仅会存储为单个图层。因此示例中Alias1和Alias2在Calibre内部实际上是同一个图层但您可以通过任意一个名称访问该图层。这种特性会对连通性等场景产生重要影响 ——因为针对同一层定义的所有别名其连通性模型是完全相同的。不同名称指向相同层操作 输入层时Calibre 内部视为同一层节省内存svrfAlias1 metal AND poly // 与Alias2是同一层 Alias2 metal AND poly注意重复层的连通性完全一致若分别 CONNECT 不同层会导致意外短路svrfCONNECT Alias1 layerC CONNECT Alias2 layerD // 错误layerC和layerD会被短路Alias1Alias2 // 解决方案给其中一个添加无关运算打破重复定义 Alias2 metal AND Alias1 // 此时Alias2与Alias1不再是同一层四. 图层类型总结综上所述派生多边形层和派生边层既可以直接输出至 DRC 结果数据库也可以写入层定义中作为后续其他层操作的处理对象。包围度检查ENClosure、外部间距检查External、内部间距检查Internal、可制造性设计测量DFM Measure、可制造性设计属性分析DFM Property、时序驱动型设计规则检查TDDRC、绘制锐角检查Drawn Acute、绘制角度检查Drawn Angled、绘制栅格偏移检查Drawn Offgrid、绘制歪斜检查Drawn Skew操作均会生成派生错误层。派生错误层通常会被输出至 DRC 结果数据库。三种派生图层派生边层、派生多边形层、派生错误层均可作为 Calibre 纳米级设计规则检查系统nmDRC的输出结果不过只有派生错误层会被明确归类为错误层。下图 以系统支持的图层类型为维度展示了数据在 Calibre 系统中的整体流转流程。

更多文章