浅谈Calibre的编程语言及其在后端设计上的具体应用

2017-06-07 14:53张卓先
科技创新导报 2017年8期
关键词:编程语言

张卓先

摘 要:Calibre是业界流行的验证工具,它提供了各个方面的验证方法来确保芯片能顺利流片。Calibre所具有的编程语言不仅仅是其规则文件的重要组成部分,更能提供很多优化验证流程和效率的解决方案。该文以对Calibre编程语言的简介开始,讨论了一些能有效提高后端工作效率的语句编写。

关键词:Calibre 编程语言 后端

中图分类号:TP391 文献标识码:A 文章编号:1674-098X(2017)03(b)-0120-02

Calibre是美国mentor公司开发的一款深亚微米集成电路验证工具,它分为DRC(design rule check,用于检测版图图形是否符合代工厂的工艺要求),LVS(Layout Versus Schematic,用于对比版图和电路的一致性),ERC(Electronics Rule Checking,用于提取版图中的寄生参数以便进行仿真),ANT(Antenna,用于检查版图中的天线效应),DFM(Design for Manufacturer,可制造性设计)等若干模块,Calibre工具的验证文件使用其独有的编程语言编写而成,这是一种具有高度函数化功能的语言,该文将从DRC和LVS规则验证文件入手,介绍它们的一般框架结构以及对于验证很有用处的一些语句的编写。

1 Calibre验证文件的基本框架结构

通常情况下,DRC与LVS的验证文件是各自独立编写的,但也有极少数的工艺厂从方便角度考虑会将这两种验证功能集中于同一个文件之上。

在验证文件的开头,一般是开关定义语句,格式为:#DEDINE与#IFDEFINE。

如:#DEFINE mimcap_1p0,这个开关定义了是否使用某种电容,而如果后面将使用这种电容,则由#IFDEFINE mimcap_1p0语句来完成这项功能。

接下来是环境参数设置语句和DRC,LVS的一些特有设置,前者定义了参与验证的文件类型、路径,电容电阻度量单位等,而后者则规定了验证过程中需要遵守的一些基本运行法则,如版图是否检查格点大小与锐角图层,是否保证端口名称与大小写的精确匹配,是否滤去版图中的DUMMY器件等。这之后,是定义版图原生层次与产生衍生层次的语句。

整个验证规则文件中最重要的检查版图绘制规则(DRC)和进行版图与电路比较(LVS)的主体程序则在此之后编写。

规则文件的最后是检查版图电气连接的语句。

2 Calibre编程语言的命令简介

Calibre具有一些高度函数化功能的命令,它的编程命令大致可以分为3类:命令型语句,如LVS FILTER,这条语句定义了在验证过程中可以滤去的器件类型;逻辑运算语句,AND,OR,XOR,NOT,它们利用逻辑运算来生成图形;图形描述性语句,如length layer,它选定了长度符合要求的相应图形的边缘。Calibre利用后两种命令语句的组合来产生衍生图层或是进行复杂的图形运算,这其中最常见的命令定义如下:

INT,EXT,ENC。

3 若干Calibre DRC和LVS验证语句的编写

大部分工艺厂提供的规则文件只有最基本的验证命令,但很多对于提高电路流片成功率非常重要的的语句却并不包含在内,接下来该文就将介绍一些能提高验证效率和流片可靠性的语句编写方法。

3.1 检查悬浮线的语句

悬浮线指的是芯片上没有与电源或地形成直流通路的悬空部分,一般分为两种,金属悬浮线以及多晶硅悬浮线,但不论是哪种悬浮线,在进行离子刻蚀的过程中,它们都可能吸引大量的电荷积聚其上,这样就会产生很多危害,比如改变周边器件的电学特性甚至击穿栅氧结构。因此,在LVS文件中添加检查悬浮线的验证语句就显得十分重要了,它既可以查找所有的悬浮线,又可以分门别类地查找各个图层,命令如下:

PATHCHK !LABELED //查找一切悬浮线(包括为补充金属密度而添加的DUMMY金属)。

PATHCHK !LABELED poly //查找悬浮的多晶硅。

PATHCHK !LABELED m1 //查找悬浮的第一层金属。

PATHCHK !LABELED m2 //查找悬浮的第二层金属。

PATHCHK !LABELED NOFLOAT //查找不包含DUMMY金属在内的其他一切悬浮线。

3.2 检查金属线宽度的语句

宽金属线在各个工艺厂定义不尽相同,但一般认为宽度超过10 μm的金属线就可以被视作宽线,这些线需要在沿着电流流动的方向上开槽,这些槽也被称为SLOT。过宽的线一般存在几个危害,一是增大了局部金属的密度,容易造成刻蚀不干净;二是宽线在进行平整化工艺时会比其他地方更易形成凹陷的区域,這样就会改变线路寄生电容和电阻参数,影响芯片性能;三是电流具有趋肤效应,SLOT所形成的槽更容易分散电流,这样也在某种程度上减小了电迁移发生的可能性。检查宽金属线的语句示例如下:

X = Metal WITH WIDTH > 10 //这条语句用于找出一切宽度大于10 μm的金属线。

3.3 添加金属DUMMY的语句

需要添加金属DUMMY的场合一般发生在芯片中金属密度不足的情况下。金属密度不足是可能造成平整化工艺后芯片表面不平坦的原因之一,这种问题带来的直接后果就是电路寄生电容和电阻电学参数的漂移。一般情况下,添加金属DUMMY的工作是在提交了版图数据之后由工艺厂代为完成的,不过,如果设计公司从电路性能考虑,对于芯片金属密度有着更为特殊的要求,那么由自己完成金属DUMMY的填充将是非常理想的。该文将以金属层为例,介绍添加金属DUMMY的语句。

Layer map layer1 [datatype] type1 layer2 // 映射語句layer map用来给gds或者database文件中的图层号在验证文件中分配一个新的层号,以方便后续的图层运算,其中,layer1和type1分别是gds或database中的图层号与数据类型号,layer2则是验证文件中新生成的图层号,比如:

Layer map 42 datatype 0 6163 //在验证文件中给金属层分配新的层。

Layer metal 6163 //号。

Layer map 64 datatype 0 8357 //给生成层分配层号,在此层次覆盖Layer area 8357 //的区域内,DUMMY阵列将会产生。

//Variable命令用于定义变量,其格式为variable name value,该文用它来规定DUMMY金属矩形的大小和间距。

Variable metaldummyW width //用于定义DUMMY矩形的宽度。

Variable metaldummyL length //用于定义DUMMY矩形的高度。

Variable offdummyX x //用于定义偏移量,以此来调整。

Variable offdummyY y // DUMMY阵列的松散度。

//最终芯片中生成的DUMMY将是依照上述各变量定义而成的金属矩形所组成的阵列。阵列的定义由shift和rectangle命令共同完成。

//shift命令用来产生相对原图层具有特定偏移量的新图层,其格式如下:

Shift layer by x y //x y即为规定的偏移量。

//rectangles语句用于生成矩形阵列,它的定义如下所示:

Regtangles width length widthspace lengthspace inside of layer area_name

//width和length分别是生成的矩形的宽度和高度,widthspace和lengthspace则分别定义了阵列中矩形与矩形之间的横向及纵向间距。利用之前variable命令所定义的各个变量和图层映射命令定义的生成层,最终产生DUMMY阵列的语句如下:

Dummy = shift(Rectangles metaldummyW metaldummyL metaldummyW+ offdummyX metaldummyL+ offdummyY inside of area) by metaldummyW metaldummyL

//最后,利用copy和drc check map命令将之前生成的矩形阵列转变为gds格式的数据并最终输出。

Dummy{copy dummy}drc check map dummy 42 0 aref metaldummy metaldummyW metaldummyL

//copy命令的作用是把计算后的图型转变为gds格式,drc check map则规定了gds数据的输出结构。上述命令中,42 0再次表明了金属层在gds格式中的图层号和数据类型号,aref是一种能有效减少数据占用空间的输出格式,metaldummy则是最终输出gds的文件名称。

//利用DRC验证的运行方式,将上文所述语句作为规则输入,就能得到最终包含DUMMY金属阵列的gds文件。

4 结语

该文介绍了mentor公司验证工具Calibre所使用规则文件的组成结构和语言特点,提供了若干能有效提高后端工作效率和流片成功率的验证语言的编写方法,希望能对广大后端工程师有所帮助。

参考文献

[1] (美)黑斯廷斯.模拟电路版图的艺术[M].2版.张为,译.电子工业出版社,2007.

[2] Standard Verification Rule Format[Z].Mentor Graphics,2009.

猜你喜欢
编程语言
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
压力-体积转换在CFC编程语言中的实现解析
计算机应用软件开发中编程语言的选择研究
计算机软件开发的JAVA编程语言及其实际应用分析
Java编程语言的特点与应用
软件开发中JAVA编程的应用探究
Java编程的现状与发展前景
计算机应用软件开发中编程语言的选取
常用计算机编程语言的分析及选用技巧
浅谈不同编程语言对计算机软件开发的影响