1、版图设计规则检查(DRC)
1.1 设计规则检查概述
IC设计逻辑电路最终需要以GDSII等版图文件格式交于Foundry厂商进入工艺生产线,版图是一组相互套合的图形,各层版图对应各自光刻工艺下的掩膜版图形,不同工艺水平下光刻掩膜版的设计规则也不尽相同。DRC文件即综合考虑电学性能与可靠性限制,按照工艺过程所要求的复杂限制来描述版图几何图形关系的规则文件。线宽、间距和覆盖规则是DRC文件中的基本规则,最小线宽可防止工艺制造中断裂造成电路开路,最小间距避免图形制造过程中发生接触而短路。
图1 基本DRC规则图例
1.2 DRC规则文件格式
电路设计师希望电路设计尽量紧凑,而工艺工程师却希望是一个高成品率的工艺。设计规则是使他们都满意的折衷。Mentor的SVRF语言成为验证界的标准,DRC规则文件可分为三大模块:
(1)描述块
描述版图的模块名称,存放路径,数据格式,输出结果名称等基本信息。
(2)层定于块
定义层与相连层的编号。
(3)操作命令块
主要通过对已定义的层进行逻辑操作, 如AND、OR等以进行器件的识别,此外, 还定义规则计算操作并对出现的错误进行标记。
2、DRC检查方法
传统DRC检查基于打散(Flatten)方式,各层版图所有几何图形参与设计规则检查的基本计算,此方式内存消耗大,效率较低。改进后的DRC检查基于层次(Hierarchical)方式。层次结构将整体版图划分成不同的单元数据块,单元内部是一种打散的方式来进行,各单元的计算可以并行分布式计算,节省存储空间的同时,可以减少重复报错。
在版图实现中,单元与单元之间很可能存在数据的重叠,或者单元之间的距离可能不满 足设计规则的要求,因此基于层次的DRC不能只着眼于单元内部,需要增加单元间数据操作。
3、扫描线法在DRC中应用
无论是传统打散或者改善后层次DRC方式,都需要大量的基本多边形设计规则检查计算,
扫描线法可将大规模几何运算局部化,将二维几何运算问题转化为一维问题,降低每次处理几何图形的粒度与密度,是高效的DRC验证算法。接下来基于简化的版图DRC规则检测实例说明扫描线法的实现方案:
问题简述:
两层版图,每层矩形最小线宽为W1,LAYER1层间最小间距为W2,LAYER1与LAYER2层间最小间距为W3,以Y轴与X轴分别采用线性扫描法确定Layout是否符合简化后设计规则。
扫描线法基本实现思路:
(1)扫描线法站点为线段的左右端点以及线段间的交点;
(2)垂直扫描线从左向右运动,在每一个站点处停留.起始于当前扫描线的所有线段进入当前工作表,终止于当前扫描线的所有线段从工作表中删去,跨越当前扫描线的线段仍然保留;
(3)在当前扫描线状态下,工作对象都在当前工作表中,所有对象依据版图规则配对计算图形尺寸与线间距离;
4、算法设计
多边形: Poly[num][poin-records] ;Poly[0]:layer;Poly[1]:count ofpoint;
线段矢量:Class VedgeList/HedgeList
{
private:
class listnode
{
public:
int flag; // 与版图规则相关属性
float Ybegin; // 坐标点
float Yend;
float Xbegin;
float Xend;
int layer; // 版图层
int num; //多边形编号
listnode*next;
}
Listnode*head;
};
以垂直扫描为例,算法实现逻辑如下: