Abstract 提取LEF文件流程介绍

本文始于2024年12月,以Virtuoso Abstract Generator Version IC6.1.8 结合T家工艺,详细讲解提取LEF文件中常见的三大步骤(Pin Step、Extract Step、Abstract Step),并在文中以抽取”Block”类型的LEF文件为案例,演示其相关步骤。又在其中穿插讲解各个Step的主要功能和注意事项。其他工艺或抽取其他类型的LEF文件,亦可以参考本文。

LEF文件分为:”technology” LEF 和 “Cell library” LEF(IP LEF),前者由Fab提供;后者由Users自己生成。而本文所关注的是后者。



正式开始抽取LEF文件前的两点建议:

(1)请在抽取的layout中,请加入prBoundary层,从菜单栏Creat-P&R project-P&R Boundary创建;

(2)Layout中需要抽取pin的大小,请使用和线宽相同的尺寸(会影响抽取LEF文件中的某些数值)。

1. Abstract打开版图库的两种方式

1.1 直接打开(方法1)

1.11 首先打开Abstract软件,请从启动Virtuoso相同的路径下打开Abstract软件,这样可以共用.cdslib文件,方便查看和管理。然后直接点击“library”按钮(下图蓝框处),对应打开需要抽取LEF的库(建议提前在library manager中新建库,并拷贝需要抽取LEF的版图到此库中,以便和现有库做区分)。

提示:在Bin栏中,默认导入的版图会在Core下,请根据提取需求,选择合适的Bin类型(菜单栏Cells—Move…)。

1.2 通过GDS导入方式打开(方法2)

1.2.1 首先打开Abstract软件,请从启动Virtuoso相同的路径下,打开Abstract软件,这样就可以共用.cdslib文件,方便查看和管理。如下图。

1.2.2 新建一个新的库,并导入相关版图的gds文件和对应工艺的layer.map文件,如下图。

注意:如遇到如下错误,请尝试重新Attach对应工艺的Technology file。

1.3 方法1和方法2带来的区别

区别1:原版图中pin的属性被更改成shape类型,见下图;

区别2:抽取Bin的类型是Block时,在Pin Step中,方法1,无需指定”Map text labels to pins“栏的值,软件会默认pin的大小,做为实际生成pin的大小;而在方法2中,则需要在”Map text labels to pins“中指定有效语句(请参考下文Pin Step中相关的说明)。并且两个方法生成的pin的大小也会有不同。参考下图,黄色为生成的pin大小。

1.4 小结

方法1中生成pin大小的原则是:Abstract以terminal中实际pin大小来生成的pin大小;

方法2中生成pin大小的原则是:Abstract将label 下面对应的metal(shape)直接生成pin的大小。

(上述2个原则对signal和power的net均适用)

help手册中的一段话:

注意:上述生成的pin大小仅仅是Pin Step中生成pin的大小,最终Abstract生成pin的大小还会和Extract Step 和Abstract Step中的设置相关。☆

此处开始介绍详细流程和步骤;

下文将以Bin类型为Block为例,来抽取LEF文件,并以此来说明相关流程和注意事项。

总的来说抽取LEF文件主要分为3大步,分别为:

(1)Pins的相关设置

(2)Extract相关设置

(3)Abstract相关设置

2. Pin Step相关设置

2.1 Map 选项

Map text labels to pins“栏中,请根据正确的语法格式,填写想要抽取的pin信息,其语法格式如下:

(textLPP1 geomLPP1 geomLPP2)

其中:

textLPP1可以写成:(textLayer textPurpose)或者仅仅是textLayer;

geomLPP1可以写成:(geomLayer geoPurpose)或者仅仅是geomLayer。

请参考下图解释:

在此例中我们可以写成如下:此语句告诉Abstract Generator要将M1 pin层的labels映射到M1 drawing层上,以便在M1 drawing层上生成对应的物理pin。

((M1 pin)(M1 drawing))
((M2 pin)(M2 drawing))
((M3 pin)(M3 drawing))
((M5 pin)(M5 drawing)) ...

注意1:从上述语法格式中可以看出,这里有不同的格式写法,请根据需要书写即可。

注意2:不同工艺所识别的pin和lable,所在的layer purpose存在差异,请注意区分。

当抽取的Bin类型是Block时,并且以上述方法2导入相关库,那么Map选项中的其他设置,见如下图;

其他net类型的pin name 请根据需要进行填入即可。

2.2 Text选项

这里主要设置Label和Geometry搜索层次的深度(0:表示当前层;1:表示次当前层,以此类推。)和设置抽取LEF文件中pin的名称一样,一般我们保持默认即可。相关设置如下图;

当你想抽取自定义的NW作为pin时,”Restrict Pins to PR Boundary“这个选项可以让你将NW的pin控制在prBoundary以内,请参考下图;

2.3 Boundary选项

这里主要告诉Abstract如何生成prBoundary,此项体现在LEF文件中的SIZE栏,但SIZE中只能指定Rectangular形状,而如果要生成Rectilinear Polygon形状,需要在Abstract Step中对应设置”Overlap”相关参数,点这里查看。

Create boundary”这里有三个选项,分别解释如下:

  • off“:工具不生成prBoundary而直接使用版图中的prBoundary。如果版图中没有prBoundary,工具会报错;
  • as needed”:如果版图里有prBoundary,那么工具就使用这个prBoundary。如果版图里没有,工具会根据”Using geometry on layers“列表里的层次来自动生成;
  • always”:不管版图里是否有prBoundary,工具都会根据”Using geometry on layers“列表里的层次来自动生成prBoundary。

当抽取的Bin类型是Block时,此选项中的相关设置如下图。

2.4 Blocks选项

勾选”Preserve local blockages in routed blocks“,保留已有的blockages信息,典型的是从DEF文件导入到Abstract软件进行抽取;

同样,勾选”Create power pins from routing“,表示容许软件从导入DEF文件中的走线数据创建电源引脚。如果布局中没有明确定义电源引脚,可以通过此功能从走线数据中生成电源引脚,通常是在DEF文件的”SPECIALNETS“部分中定义的。

正常抽取LEF文件时,保持默认即可。如下图:

最后点击Run,可以看到对应的pin下有绿勾出现,至此Pin Step完成。

Pin Step完成后,可以实时查看Abstract对应生成的pin情况;(这里有两种方式)

方式1:在Abstract软件菜单栏点击Cells—Edit—Pins…即可;

方式2:回到Library Manager中,直接打开对应库中生成的abstract.pin的文件即可。

3. Extract Step相关设置

3.1 Signal选项

在此选项中,您可以指定Abstract软件想要提取Signal的层、要在哪些层上创建Pin以及设置提取的限制,并且当版图中出现虚连(同一个net,没有物理连接,通过Labels虚连一起)情况时,你还可以使用此选项卡中的”Create Must Join Pins If Required“功能,来产生具有”虚连”属性的LEF文件。

注意:当有使用”Create Must Join Pins If Required“功能时,“Extract signal nets”必须勾选,否则此功能将不起作用。

导出的LEF文件中,将带有”MUSTJOIN”字样,如下图;

当抽取的Bin类型是Block时,建议“Extract signal nets”不勾选(版图中没有”虚连”的pin存在);

注意:这里的相关设置会影响生成signal pin大小和范围。☆

当“Extract signal nets”勾选时,Abstract将”Layer Assignment for Signal Extraction“中的层或过孔转化为pin(当你每层都勾选”Create Pins“时);也就是此设置会覆盖Pin Step 中生成Signal pin的大小和范围。

当“Extract signal nets”不勾选时,Abstract将保持Pin Step中生成的Signal pin的大小和范围。

重重重点来了!

说明Signal Tab 和 Antenna Tab两个选项中存在的关系;它们相互关联并且影响整体提取数据;

下表旨在让Users理解Abstract在进行抽取Signal或者Antenna相关的数据时,它是通过哪些分配层数来进行抽取。

3.2 Power 选项

这里请直接参考Signal选项中的相关解释。

当抽取的Bin类型是Block时,“Extract power nets”可根据抽取的需要来勾选或者不勾选。如果你在Pin Step步骤中,已抽取了想要形状的Power pin,那么这里可以不勾选;反之,如果在Pin Step中,没有得到想要形状的Power pin,那么请勾选此选项。

另外,请根据需要,适当的对”Creat Pins” 进行设置;(对版图中power net的走线层中,设置哪些层需要生成pin,哪些层不需要生成pin)

注意:这里的相关设置同样会影响生成power pin大小和范围。☆

当“Extract power nets”勾选时,Abstract将”Layer Assignment for Power Extraction“中的层或过孔转化为pin(当你每层都勾选”Create Pins“时);也就是此设置会覆盖Pin Step 中生成power pin的大小和范围。

当“Extract power nets”不勾选时,Abstract将保持Pin Step中生成的power pin的大小和范围。

3.3 Antenna 选项

在此选项中,你可以让Abstract提取相关的Antenna信息;如果你需要提取,请打开相关设置。

然而在进行此步骤设置之前,站长强烈建议先学习本站相关文章,点这里 

进行Antenna的抽取前的相关设置;

(1)选择需要对应计算Antenna的选项,如下图;

(2)根据对应pdk中对有源区和栅氧区的描述,在”Layer Assignment for Antenna Regions“设置正确Antenna Regions;一般无需更改,默认Abstract软件会自动读取techfile中的相关信息;

(3)在”Layer Assignment for Antenna Extraction“中增加接触孔(CO)、栅级(PO)、有源区(OD)这三个层次,因为在计算Antenna时,需要用到这些层的数据。

(4)最后选中”Use different layer assignments for antenna calculations only“选项,以确保抽取antenna的数据是使用”Layer Assignment for Antenna Extraction“下的设置。可参考此处表格。

当抽取的Bin类型是Block时,Antenna选项中相关设置如下图所示:

3.4 General选项

在此选项中,检查每层金属的上下层连接关系是否都在列表中(格式:(M1 M2 VIA1)),并增加如下蓝色框中的内容。以确保提取Antenna数据的完整性。

最后点击Run,可以看到对应的Extract下有绿勾出现,至此Extract Step完成。

Extract Step完成后,可以实时查看extract生成pin的情况;(这里有两种方式)

方式1:在Abstract软件菜单栏点击Cells—Edit—Extract…即可;

方式2:回到Library Manager中,直接打开对应库中生成的abstract.ext的文件即可。

4. Abstract Step相关设置

4.1 Adjust选项

在此选项中你可以重新调整在Pin StepExtract Step中生成Signal和Power pin的大小和形状,也就是说,此步骤的设置,将最终决定你生成pin的大小和形状。

勾选”Create boundary pins“会将提取的pin调整为正方形,并放在Cell的边界处。如下示意图;

Tip1:”Create boundary pins“对Bin类型为”Core”是禁用的,对于其他的Bin类型默认均处于不勾选状态;

如果你想提取Power Nets中的ring pins,那么请勾选”Create ring pins“,并且在Extract Step的Power Tap中的”Extract power nets“也需勾选,以保证abstract能抽取到完整的power ring。

Tip2:Power Nets中的”Create boundary pins“和”Create ring pins“为互斥,只能选择一个,另外”Create ring pins“仅在Bin类型为Block中才起作用;

Tip3:”CORE/BUMP Ports“仅在Bin类型为”IO”时,才有作用。

当抽取的Bin类型是Block时,Adjust选项中相关设置如下图所示:

Power rail widths,offsets and shape“多用在Bin类型为Core中。

4.2 Blockage选项

在此选项中,你可以控制Abstract最终生成每层layer的blockage的形状和大小。

Blockage的类型有三种:

Cover:表示生成的blockage覆盖全部layer;

Detailed:表示仅有走线的地方将被生成blockage;

Shrink:表示生成的blockage的大小和Shrink Dist 与Shrink Tracks有关,一般情况下,在走线密集的地方会根据设定的值,全部生成blockage,而对于没有走线或版图中空白较大的地方,将不生成blockage。

勾选Pin Cutout:表示在生成blockage时,pin的部分将被暴露出来;反之,不勾选则pin的部分将被覆盖。

实际应用中,Pin Cutout将被勾选。

如下是三种blockage类型配合Pin Cutout的图示,请参考;

Corridor Cut:表示切开blockage,创建一个通道,使后续连线可以访问到内部pin;请参考下图;

Cut Same:表示根据对应层设定的值,将pin周围blockage切开相应的距离;

Cut Below:表示根据对应层设定的值,将pin位置对应的上下层的blockage切开相应的距离。

请参考下图;

Boundary:表示生成的blockage距离prBoundary边缘的距离;

请注意:Blockage Type与Pin CutoutMax SpaceCorridor Cut,存在组合关系,具体请参考下图。☆

4.3 Density选项

在此设置中,你可以将实际版图中的密度同步到LEF文件中,LEF文件中的信息可以降低内存需求,提高工具的验证速度。

无需设置,默认即可。有需要的Users请参考help。

4.4 Fracture选项

此选项中,你可以控制生成pin和blockage的图形是打散的还是合并在一起的,同时你也可以控制含45度的图形的生成方式(LEF5.8),请参考如下图。

4.5 Site选项

在此选项中,你可以为stdcell自定义一个Site name,以方便后续PR工具可以方便识别它们,来进行相关的布局布线。

Site选项在Bin类型为Block时,被禁用;而在Bin类型为Core时,则必须要有Site name被定义在LEF文件中。

当抽取的Bin类型是Block时,Site选项被禁用,默认即可。

4.6 Overlap选项

此选项中,你可以再次控制prBoundary生成的形状和大小。

让我们先回忆下,第一次生成的Boundary形状是在Pin Step中的Boundary选项中,但Pin Step中的Boundary只能是Rectangular形状,当我们想要生成Rectilinear Polygon形状时,就需要在”Overlap”中进行设置。

当你成功使用了此功能,那么在你导出LEF文件的结尾会出现“LAYER OVERLAP”字样;

Create boundary”这里有三种生成方式:

  • off”:工具不生成prBoundary而直接使用Pin Step中生成的prBoundary;如果Pin Step也没有生成prBoundary,软件就会报错;
  • as needed”:如果在Pin Step中已经生成了prBoundary,那就使用此prBoundary;如果在Pin Step中也没有生成prBoundary,那么工具就会根据”Using geometry on layers“列表里的层次来自动生成边界;
  • always”:忽略Pin Step中生成的prBoundary,工具会根据”Using geometry on layers“列表里的层次来自动生成边界。

Size factor to apply“:控制提取LEF缩放比例的一个系数;

Smooth factor to apply“:控制提取边界平滑度的参数。也就是它决定了在生成外边界时,是否对原始版图中不规则或角落的边界进行平滑处理。此数值越小就越能保持和原版图边界一样,数值越大则提取的边界就越简化。当设置为0时,表明提取不进行平滑处理,保持和原版图边界形状一致。请参考下图;

注意:当设置”Cteate overlap boundary“为”always“时,生成的prBoundary将由参数”Smooth factor to apply“决定,而与版图中是否绘制prBoundary无关。

当抽取的Bin类型是Block时(多边形边界),请按如下图设置。

最后点击Run,可以看到对应的Abstract下有绿勾出现,至此Abstract Step完成。

Abstract Step完成后,可实时查看最终生成的LEF视图;(这里有两种方式)

方式1:在Abstract软件菜单栏点击Cells—Edit—Abstract…即可;

方式2:回到Library Manager中,直接打开对应库中生成的abstract的文件即可。

至此Abstract抽取LEF文件的步骤全部完成,最后按下图步骤导出生成的LEF文件即可。

5. 问题与讨论

5.1 如何从techfile中提取tech.lef文件?

Ans:如下方法请参考;建议从fab获取tech.lef。

5.2 抽取LEF文件时,天线效应是必须的吗?

Ans:强烈建议抽取天线效应,因为它使得在后期的PR中,能够自动修复与优化相关长走线,避免出现Antenna错误,同时具有提高芯片可靠性和制造良率等优点。特别在当下先进工艺中,栅氧更薄,天线效应更加显著。

5.3 执行完Extract Step 出现错误信息时,如何解决?

Error1

Ans:请检查”Layer Assignment for Signal Extractio“、”Layer Assignment for Power Extraction“、”Layer Assignment for Antenna Extraction“中的层是否有按上述文章中正确设定,特别要注意有源区OD的语句设定。否则可能出现error信息。

或者尝试将”Layer Assignment for Power Extraction“中的过孔层取消生成Create Pins。

Error2

Ans:请在Abstract软件命令行中输入相关语句即可。

absSetOption("ExtractShapeLimit" "1000000000")

5.4 执行完Abstract Step 出现警告信息,如何解决?

Ans:这是因为abstract抽取pin的最终面积尺寸小于techfile里定义的最小面积尺寸,请将pin的面积调大即可解决。

5.5 相同的pin在抽取Antenna数据时,为什么会出现不同的Antenna数据?

Ans:那是因为设置不同才会出现不同的Antenna数据,请参考下图。

help里有这么一段话:

欲想更进一步了解ANTENNA相关语句的具体计算方法,请参考文档《LEF/DEF 5.8 Language Reference》中的附录C:Calculating and Fixing Process AntennaViolations小节。

5.6 Abstract软件Bin栏中的”Core”、 “IO” 、”Corner”和”Block”都有什么区别?

Ans:在Abstract软件中,”Core”、 “IO” 、”Corner”和 “Block”分别代表不同类型模块的IP,它们管理着抽取视图的类型,每个类型在后端PR时,会有对应不同的设计需求和结构。换句话说,不同类型模型的IP,在抽取LEF文件时,它们里面的内容是有区别的,比如:core 类型的抽取,关注内部逻辑和性能,所以它们会保留部分信号路径;而当抽取Block类型时,我们只关注它模块边界的接口,所以我们抽取它外部的pin,而内部怎样则不需要关心。其他类型以此类推。在LEF文件中,它们以”CLASS”关键字,作为类型区分。

5.7 Abstract如何将版图中(任意位置和任意层次)没有Label相连的地方提取成pin?

Ans:如正文中1.4小结处所写的两种生成pin 的原则,请手动将加上相关的信息即可。

请注意:在使用方法2打开相关库并提取相关pin时,别忘记在”Map text labels to pins“栏填写对应的有效语句;

Example:任意指定版图中NW层中的部分位置为pin;

– 当你使用方法1打开相关库时,请在你想要的位置和对应的层加上对应的terminal(Label和Pin)即可,如下图:

– 当你使用方法2打开对应的库时,请在想要的地方加上对应的Label和画上想要大小的pin(相关层的propose层可以自己指定),最后你需要在Pin Step中的”Map text labels to pins“栏中指定有效生成pin的语句即可。如下图;

5.84.2小节中,blockage选项中已经勾选了Corridor此选项,但内部的pin为什么没有生成相关边界通道?

Ans:那是因为此pin的周围被实际版图中的走线阻挡了,无法生成边界通道。要知道只有非走线的地方才会生成blockage。

5.9 抽取较大版图的LEF文件时,Abstract抽取模型花费时间太长,有什么设置可以有效减少软件提取的时间?

Ans:请参考如下几点:

(1)在Extract Step的Power Tap选项”Layer Assignment for Power Extraction“中,不勾选“Create Pins”选项;

(2)视提取lef的需要,在Abstract Step中的Adjust选项卡中,勾选”Create boundary pins”和”Create boundary pins”也可减少提取时间。

(3)按照上述文章方法2原理,在版图中提前在对应需要抽取power net上增加对应pin name,这样可以在Extract Step中省去”Extract power nets“。

5.10 使用Abstract软件抽取LEF文件和Cadence Virtuoso在CIW窗口自带的File—Export—LEF导出的方法有什么区别?

Ans:当然有区别,从设置的复杂度就能猜到,Abstract软件抽取的LEF文件内容更加丰富,但从CIW中导出的LEF文件内容比较单一仅包括Pin信息和prBoundary信息。像Antenna data、blockage data、Class、Site等信息只有Abstract才能抽取。

6. 参考

*以上内容仅供个人学习,切勿用于商业!!!

发表评论