首页 百科知识 ASIC自动布局布线

ASIC自动布局布线

时间:2024-10-15 百科知识 版权反馈
【摘要】:在逻辑综合获得的网表通过了综合后的仿真之后,即可进入ASIC物理设计阶段。ASIC物理设计包括平面布图规划、布局以及布线等。目前业界使用频率较高的ASIC 物理设计工具有Cadence 公司的Envisia Silicon Ensemble,简称SE。有了GCF文件我们就可以定义:要运行SE做自动布局布线,就必须先得到上述的三个技术文件,否则将无法使用SE进行数字电路的设计。业界内称这些东西为Library Data Requirements。通常时序信息是包含在GCF和TLF文件中的,但DEF也可以提供设计各个环节的物理约束。

12.3 ASIC自动布局布线

在逻辑综合获得的网表通过了综合后的仿真之后,即可进入ASIC物理设计阶段。ASIC物理设计包括平面布图规划(Floorplanning)、布局(Placement)以及布线(Rounting)等。

目前业界使用频率较高的ASIC 物理设计工具有Cadence 公司的Envisia Silicon Ensemble,简称SE。

平面布图规划器(Floorplanner)是设计工程师安排ASIC设计中的电路模块的工具,这个过程叫做平面布图规划(Floorplanning),它是APR一系列过程中的第一步。在Floorplanning的时候有很多地方需要我们注意:最小化连线长度以及模块之间的信号延时;合理地安排固定模块(Fixed Blocks)和调整可编辑模块(Flexible Blocks)的尺寸大小来获得最小的芯片面积;合理安排好模块之间的互连区域面积;规划power,clock以及I/O的分布。这其中一些工作可以自动地由EDA工具来完成,但还是有许多工作需要人工来完成。

布局(Placement)在SE中的对应工具是EnvisiaTM Ultra Placer,布局是在平面布图规划(Floorplanning)之后的物理设计步骤,它比Floorplanning自动化程度更高,它主要的功能是在Flexible Block中布置逻辑单元优化布局,根据设计的自身特点衡量优化的标准可以是最小的互连面积(由于现代工艺的芯片的大部分面积为互连线所占据)、最小的总互连线长度,或者是整个芯片的性能。由于互连延时在深亚微米CMOS工艺的逻辑单元延时中占了很大的比重,互连延时的影响比栅延时的影响大,因此互连的布局变得越来越重要。除了在开始APR之前用综合之外,还需要结合APR工具一起来估算出一个较为正确的时序以及延时。

布线器(Router)是用来完成ASIC物理设计最后一环——布线(Rounting)。布线是一个复杂的问题,我们最好把它分为两个部分来看待:全局布线(Global Routing)和细节/局部布线(Detailed Routing)。布线的算法要和布局的算法相匹配,时钟以及电源线要特殊对待,时钟网线的宽度和电源总线宽度必须手动设置等。最后在整个设计完成之前还需要进行DRC和LVS的工作,以确保设计与合作的Foundry的设计手册相吻合。

在运行SE进行APR之前,需要准备如下的一些东西:

首先是一些关于库(library)的东西,它们主要是用来描述Foundry提供的结合其自身工艺的标准单元的。这些文件是:LEF、TLF、GCF。

LEF的全称是Library Exchange Format,它是用基于ASCII的描述语言来描述单元库的工艺特征和宏单元的特征,例如,LEF可以用来描述门阵列、基本单元、规定好的基本单元的位置、逻辑宏单元的尺寸和连接信息、互连的层次和其他一些SE需要的数据信息,这些信息可以包含在一个文件中也可以分成几个文件。我们可以使用Abstract Generator来生成LEF文件,但如果没有单元库的情况下一般LEF是由Foundry提供的。它可以看成是standard cells,megacells和I/O的一种模型。

TLF是Timing Library Format,它包含了单元库中每个基本单元的时序信息,可以简单地将其看成是基本单元的延时模型。TLF有另外几种文件格式,例如ctlf,etlf,它们的作用都是一样的。

GCF的全称是General Constraints Format,它有点类似于批处理文件,其中包含了工艺、工作电压(阈值)和温度的要求,通过它可以指到包含时序的TLF文件那里。SE使用GCF和TLF文件中的信息来确定设计中最后要使用的信息。有了GCF文件我们就可以定义:

在不同的时钟信号边沿的输入、双向传输和输出信号的约束

驱动单元

输入的slew 值

信号的内部slew值

输出的寄生负载

要运行SE做自动布局布线,就必须先得到上述的三个技术文件,否则将无法使用SE进行数字电路的设计。业界内称这些东西为Library Data Requirements。它们一般都是由Foundry提供的。

当准备好了Library Data Requirements之后就可以着手下一步行动。每一个设计都是基于一种单元库/宏单元库,但是一个单元库却是可以被许多不同的设计使用。这样库和设计便会产生两种截然不同的Database,而这两种Database都会被载入SE这样的系统中。所以,除了上面介绍的Library Data Requirements之外,还需要准备如下一些东西:Design Exchange Format(DEF)Netlist 或Verilog Netlist,Standard Delay Format(SDF)Constraints File。

Design Exchange Format(DEF)和LEF一样都是ASCII的格式,就像LEF是描述库的信息一样,DEF描述的是设计的信息。DEF包含了设计的网表,也就是设计中所有单元的连接关系。通常时序信息是包含在GCF和TLF文件中的,但DEF也可以提供设计各个环节的物理约束。一般来说Verilog 网表和DEF 网表的作用是一样的,不过DEF网表可以提供更加多样的信息,比如,你可以在DEF中找到corner cell和I/O PAD的信息。当然,你也可以先使用Verilog网表然后再载入DEF文件来得到你所需要的信息。

Standard Delay Format(SDF)Constraints File,顾名思义,SDF 是用来描述延时的文件,但是在得到foundry提供的GCF 文件的情况下,还是推荐大家使用GCF 文件。毕竟GCF文件所提供的功能要大得多,使用起来也比较方便。

以上这些通常被称为Design Data Requirements。

准备好Library Data Requirements和Design Data Requirements后,包括从Foundry 处得到所需的LEF、GCF、TLF 和用户设计的Verilog网表、SDF文件等,即可运行SE进行APR设计了。

1.运行SE

运行SE 的命令是sedsm,seultra,sesi。他们分别有不同的含义,最常用的是sedsm。也可以在sedsm 后面加上特定的参数,例如:sedsm –m =600,意思是为SE 分配600MB的内存空间(物理加虚拟)。具体参数可以参考SE 的帮助。

在Solaris操作系统环境中的Terminal 或Console命令窗口中输入SE的启动命令(如:seultra &),如图12.22所示。

img503


图12.22 Solaris的Terminal命令窗口

打开SE图形化主界面,如图12.23所示。

img504


图12.23 SE的主界面

2.库文件导入

自动布局布线工具和综合工具一样,首先都必须导入库文件。该库文件也是由工艺厂商提供,而且布局布线的库文件和逻辑综合的库文件须来自同一个厂商,否则,在布局布线时会出问题。布局布线的库文件在业界称为Library Data Requirements,包括LEF、TLF、GCF等,它们一般都是由Foundry提供。

首先导入LEF库文件,通过菜单File→Import→LEF或者在命令窗口中输入命令“INPUT LEF;”,添加SE工具所需的LEF库文件(文件后缀为“.lef”)。如图12.24所示。

img505


图12.24 SE加载LEF的界面

再导入时序文件。时序文件详细列出了库文件中的各个单元的时序数据,每个输入到各个输出的时间延时等。打开File→Import→Timing Library,如图12.25所示。

接下来导入用户设计,即将ASIC逻辑综合输出的Verilog网表文件导入。打开File→Import→Verilog。当然,也可以通过导入DEF网表来导入用户设计,如图12.26所示。

img506


图12.25 SE加载GCF的界面

img507


图12.26 SE装载设计文件的界面

在这里我们要特别注意顶层模块(TOPMOUDLE),如果不确定哪个文件是顶层模块,最好打开综合结果文件看看,否则很可能不是通过顶层文件导入整个设计,而是仅仅导入了用户设计的底层模块。该情况下,SE不具备自动识别能力,不能给出报错信息。SE导入用户设计文件时指定顶层模块的界面如图12.27所示。

至此,库文件的导入完成,SE即可转入实质性的APR处理流程。

img508


图12.27 SE导入用户设计文件时指定顶层模块的界面

3.平面布图规划(Floorplanning)

Floorplan一词原指装修房间中的规划。在APR过程中也需要先规划布局,所以人们将其引用进SE。要做Floorplan就要有描述电路的Netlist,Netlist是ASIC 的逻辑描述,Floorplan是ASIC 的物理描述,Floorplanning是逻辑描述和物理描述之间的映射(mapping)。

平面布图规划的目标包括:安排芯片中block的位置、定义I/O PAD的位置、定义电源PAD的位置和数量、定义电源分布的形式、定义时钟分布的位置和形式等。

打开Floorplan→Initialize Floorplan初始化平面布图规划。平面布图规划大小是根据我们输入的设计文件的大小确定。布图规划区的边界条件及密度可以根据实际要求设定。完成设定后软件可以通过这些数据粗略计算出布图规划区的利用率。如图12.28所示。

img509


图12.28 初始化平面布图规划的界面

图12.29是初始化平面布图规划之后的实际图形。

img510


图12.29 初始化平面布图规划后的界面

由于电源、地在设计中的地位至关重要,所以初始化平面布图规划完成后,首先要添加电源保护环和电源线路。打开Route→Plan Power,如图12.30所示。

img511


图12.30 规划电源的界面

选择Add Rings,添加电源保护环,如图12.31所示。

img512


图12.31 添加电源保护环的界面

对保护环的属性进行设置,如图12.32所示。

img513


图12.32 对保护环的属性进行设置的界面

添加电源线路,选择Add Tribes,添加电源线路后的界面如图12.33所示。

img514


图12.33 添加电源线路后的界面

电源规划后的界面如图12.34所示。

img515


图12.34 电源规划后的界面

每个设计都需要IO来将信号引入引出,下面我们就来添加IO单元。IO单元必须写入一个文件中,然后通过调用该文件来生成我们所需要的IO单元。打开Place→IOs,加载IO单元,如图12.35所示。

img516


图12.35 规划IO的界面

选择IO Constraint File,输入IOC文件,如图12.36所示。

img517


图12.36 输入IOC文件的界面

加载IO文件后,其界面如图12.37所示。至此,我们已完成布图规划工作。

img518


图12.37 规划IO后的界面

4.布局(Placement)

在完成初始化Floorplan之后,接下来进行布局(Placement),即将设计所需要的基本单元放入我们设定好的网格中,打开Place→Cells,如图12.38所示。

img519


图12.38 放置单元的界面

之后对放置单元的条件进行约束,如图12.39所示。可选择默认值。

img520


图12.39 对放置单元的条件进行约束的界面

点击“OK”之后,耐心等待片刻,就得到了如图12.40所示的放置了单元的图形。

img521


图12.40 单元放置后的界面

5.布线(Rounting)

布线是在满足特定约束(工艺规则、电性能)条件下,完成给定的信号线网连接,并使得布线结果在某个目标函数下达到最优。

布局之后就要进行布线(Rounting)了,即将各单元根据网表的连接关系通过金属连线搭接起来,当然也包括了电源和地,而且要先处理一些特殊节点如电源、地、时钟等。先将电源线VDD、GND和保护环连接起来,实现第一步连线。打开Route→Connect Ring实现电源连接,如图12.41所示。

img522


图12.41 布电源线的界面

选择要连接节点名称,如“gnd”、“vdd”等,如图12.42所示。

img523


图12.42 选择连接节点的界面

点击“OK”后,出现如图12.43所示的界面。

img524


图12.43 连接电源后的界面

将该图放大后,可以看到单元的电源已经和电源保护环及电源线路连在了一起,如图12.44所示。

img525


图12.44 连接电源后放大的界面

完成电源布线后,我们将完成单元与单元之间的布线。打开Route→WRoute,在弹出的窗口中,选择我们需要的布线类型,实现最终的布线,如图12.45所示。

img526


图12.45 全面布线的界面

选择布线设置,一般选择默认设置即可,如图12.46所示。

img527


图12.46 选择布线设置的界面

点击“OK”后,全面布线开始,耐心等候几分钟将出现如图12.47所示的界面。

img528


图12.47 布线完毕的界面

图12.48是布局布线完成后的局部图。可以看到单元内部及单元之间都通过金属线建立了连接。

img529


图12.48 放大的布线完毕后的界面

6.数据导出

现在,将SE完成APR的数据导出,比较有用的数据包括:GDS版图数据(用于送到Foundry厂商加工芯片)、Verilog网表文件(用于后仿真)、SDF时延信息文件(用于后仿真)。首先导出版图数据GDS文件,打开File→Export→GDSII,如图12.49所示。

img530


图12.49 导出版图数据的界面

在弹出的对话框中输入文件名等信息,点击“OK”即可,如图12.50所示。

img531


图12.50 导出版图数据时对话框设置的界面

接下来导出Verilog网表文件,打开File→Export→Verilog,如图12.51所示。

img532


图12.51 导出Verilog网表文件的界面

在弹出的对话框中输入文件名等信息,点击“OK”,如图12.52所示

img533


图12.52 导出Verilog网表文件时对话框设置的界面

最后,导出时延信息文件(SDF文件),打开File→Export→SDF,如图12.53所示。

img534


图12.53 导出SDF文件的界面

在弹出的对话框中输入文件名等信息,点击“OK”,如图12.54所示。

img535


图12.54 导出SDF文件时的设置对话框界面

到此,我们已经完成了ASIC数字芯片实现的APR主要流程。利用导出的Verilog网表文件和SDF时延信息文件,可以对设计进行最后的后仿真验证。

7.后仿真验证

APR之后的后仿真,是在计入版图的寄生参数后对设计进行最后的仿真验证。通过后仿真,进一步检查时序的正确性,排查有可能由寄生效应而导致的时序错误。

SDF文件包含了芯片上所有单元和线路的延时信息,后仿真时,利用系统函数$sdf_annotate将SDF文件调入测试向量(Test Bench)仿真激励文件中,对布局布线后的Verilog网表进行仿真,仿真器将从SDF文件中读取单元和线路延时信息。

后仿真工具可以采用NC_Verilog、Modelsim等支持硬件描述语言的仿真器。

下面以一个3位的八进制加1计数器为例,介绍APR之后的基于NC_Verilog的后仿真。

首先,需要编写带SDF文件调用的测试向量(Test Bench)。

SDF调用命令格式为:

img536

带SDF文件调用的测试向量(Test Bench)文件如下所示:

img537

接下来,需要启动仿真工具NC_Verilog。在Linux或Solaris操作系统的终端窗口里输入NC_Verilog启动命令:nclaunch &,即出现如图12.55所示的NC_Verilog主界面。

img538


图12.55 NC_Verilog主界面

启动NC_Verilog后,把带SDF文件调用的测试向量(Test Bench)文件和SE导出的Verilog网表文件(*.v)导入NC_Verilog。该导入操作为:直接将*.v文件拖拽进图12.55中右边的Design子窗口即可,然后点击图12.55中的图标“img539”进行编译。

最后,在编译成功后弹出的窗口中运行仿真,查看仿真波形。如图12.56所示是3位八进制加1计数器的后仿真波形图。为了便于比较,图12.57给出了3位八进制加1计数器的前仿真波形图。

前仿真和后仿真的波形图中时间标记(图12.56和图12.57中的长竖线表示)均设在35ns处的clk时钟上升沿。从前仿真波形图(见图12.57)可以发现,计数值cnt在时间标记处立即发生变化,由001变成010;而后仿真波形(见图12.56)则不同,计数值cnt在时间标记处并没有立即发生变化,而是在39ns处才由001变成010,相对于前仿真延迟了4ns。这个时延正是由于后仿真的SDF文件包含的时延信息所致。

img540


图12.56 3位八进制加1计数器的后仿真波形图

img541


图12.57 3位八进制加1计数器的前仿真波形图

8.设计检查和验证

ASIC设计者在将自己的设计送去Foundry流片之前,需要做两个主要的检查。

第一个检查是Design Rule Check(DRC),设计规则检查。DRC有两个级别的检查,第一个级别的是Phantom-Level DRC,因为在SE中APR基本上使用的是Foundry提供的LEF文件所包含的逻辑单元,而这些单元都是没有底层信息的。如果我们能够得到真实的单元版图的话(GDS文件),那么我们就可以在SE中先使用Phantom Cells,然后再进行另一个层次的DRC检查——晶体管级DRC检查。

另一个检查叫做Layout Versus Schematic(LVS),版图与电路图对照检查。通过LVS检查,确保版图数据的正确性。

由于厂家拥有标准单元库的知识产权,单元的底层版图是保密的。所以最后的DRC和LVS的验证工作需要在工艺厂商的协助下完成。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈