基于NCTU布局布线(解释说明文档)

  • 格式:pdf
  • 大小:5.31 MB
  • 文档页数:34

基于cell-based APR Design Flow注释文档基于标准单元的设计流程基于标准单元的设计主要分成如下5个部分:1.定义系统级模型,即体系结构的设计通过verliogC或systemC来做最顶层的系统设计。

2.系统设计完成后就需要RTL代码进行门级数字电路前端设计,并通过一系列前端验证工具进行前端设计验证,比如Modelsim、VCS等。

3.前端RTL代码完成后就进入代码综合流程,该流程把一些比较抽象的硬件语言转换成门级网表,门级网表的单元是使用的标准单元库组成。

该步需要进行门级的时序验证、功能验证及一致性验证。

4.RTL代码综合后就进入布局布线流程,通过该流程把有具体单元又有具体连接关系的门级网表变成物理版图。

该步需要进行版图级的时序验证、功能验证及一致性验证。

5.布局布线完成后最终生成tapeout的GDSII,该步的结果通过流片后进行实际的软件测试及硬件测试。

如上图所示为在各流程中可以使用的一部分工具的名称。

传统的布局布线流程在布局布线流程中需要前端RTL代码综合后门级网表数据,布局布线本质就是把门级网表变成满足时序的物理版图。

所以需要进行预布局过程,通过预布局可以把硬宏模块放置在指定的位置,也可以把由标准单元组成的模块放置在指定的区域中。

预布局后就要进行电源地网络的设置,电源地网络的设置需要满足防止电压降及电迁移的要求。

基本框架设置后就进行标准单元组成的模块的实际布局及时钟树综合,该流程中同时需要进行时序验证及优化。

布局达到时序要求后就进行细节布线过程,同样该步骤需要进行时序验证。

布线后就进行寄生参数提取后最精确的时序分析,该寄生参数的提取数据并不能做为sign-off的数据,最后的数据时GDSII的寄生参数数据做sign-off时序分析。

如上图右边所示为布局布线各个流程中的图形显示。

线延时问题随着制造工艺的越来越先进,连线的延时已经成为主要影响时序的一个部分。

由于金属连线的电阻大导致新的时序问题:比如时序收敛性,信号完整性,功耗问题。

现在考虑时序收敛性问题的综合工具有PKS与physical compiler。

分析或解决信号完整性问题的工具有nanoroute与celtic。

分析或解决功耗问题的工具有voltage storm。

Soc encounter工具介绍Soc encounter是一个半定制流程下的工具平台也可以说它是层次化物理实现环境。

Soc encounter由如下一系列工具组成:First encounter,该工具主要完成虚拟布局、实际布局、时钟树综合及版图生成。

Nanoroute,该工具主要完成考虑信号完整性及时序收敛的布线工作。

PKS,该工具主要是对门级网表进行优化的工作。

Fire&ice QX,该工具主要是进行寄生参数提取的工作,用于做精确的时序分析。

V oltagestorm,该工具主要是进行电压降与电迁移分析的工作。

基于soc encounter环境的设计流程如上图所示,先通过综合工具把RTL代码转换成门级网表,再通过First encounter工具完成虚拟布局、实际布局、时钟树综合。

接着通过Nanoroute工具完成考虑信号完整性及时序收敛的布线工作。

布局布线基本完成后进行芯片空间空隙的填充过程,主要是把物理版图的层连接起来,填充单元有I/O填充单元与标准单元填充单元。

在前面的过程到最后都需要进行时序分析及优化。

当时序达到要求后就需要进行功耗分析确定无电迁移及电压降问题,最终导出GDSII进行最终的物理验证后tapeout。

实验开始数据准备:工艺信息及物理版图库数据:包括物理视图工艺库信息,标准单元、IO单元与宏单元物理视图,天线效应信息。

时序信息库数据:包括基本的最快、最慢、典型三种时序库数据包括宏单元的时序信息。

噪声分析数据:进行信号完整性分析需要该数据进行噪声分析。

时序约束信息:该数据时前端综合工具提供的,即为时序约束文件。

实验开始数据准备:设计网表,在门级网表中加入I/O单元。

为整个芯片加入相应的输入输出I/O、足够的电源I/O(电源I/O包括I/O自身电源供电IO与芯片内核供电I/O),4个拐角I/O单元。

需要多少电源I/O才可以使满足要求将在下面讨论。

如图右下角为I/O单元的使用后的图形显示界面。

实验开始数据准备:唯一化后的设计网表,网表必须所有参考名称是一一对应的,这样才可以进行时钟树综合,扫描链插入及优化。

通过执行命令来对门级网表进行唯一化操作:uniquifynetlist –top topmodulename unquified_netlis design_netlist。

实验开始数据准备:I/O位置定义文件:在设计网表中加入I/O单元后就需要把I/O单元的位置信息确定下来,I/O 位置定义文件包含该信息。

其基本内容包括:Iopad的实例名,该实例名对应设计网表中的实例名。

IO管脚的位置方向,通过该设置定义具体I/O在芯片上下左右的哪边。

IO管脚的类型,该设置主要是针对I/O填充单元及拐角I/O单元来设置的。

实验开始数据准备:如图所示为IO位置定义文件的内容说明及实际放置后的具体视图。

实验开始数据准备:如图所示是启动后布局布线工具soc-encounter的视图界面。

工具界面包括工具栏、快捷键栏、视图栏、图层栏、命令栏及视图类型栏组成。

设计数据导入在encounter图形界面的工具栏中点击Design—>Design import出现如上图的Design参数设置界面。

在该设置界面需要导入以下数据:门级网表同时定义网表的顶层模块名。

物理视图库LEF文件,该文件保存有标准单元,宏单元以及IO单元的物理信息。

时序信息文件,布局布线是基于时序收敛来工作的,所以需要各个单元模块的时序信息进行延时分析。

时序信息可以导入最坏、最好、典型三种时序数据。

各种基本优化单元的信息,通过该设置工具从指定的单元里选择需要的单元进行时序优化,该设置可以通过类的形式(footprint)导入一类同类型单元。

基本优化单元包括:缓冲单元、延时单元、反相器驱动单元。

I/O单元位置信息文件,通过该文件的信息定位各种I/O单元在芯片周围的具体位置、I/O单元之间的邻接关系即电源地I/O的设置。

数据导入在Design栏中导入基本的数据后,还需在Timing、Power及Misc栏中导入必要的时序分析、功耗分析及噪声分析相关的数据。

上图左边所示,在Timing设置栏中需要导入前端综合代码时的时序约束文件,工具通过该时序约束文件进行时序分析、优化及指导时钟树综合。

上图右上所示,在Power设置栏中需要设置整个设计中电源地全局名称,工具在做电源地分布时使用该设置数据。

上图右下所示,在misc栏中导入用于噪声分析的CDB数据信息,工具在做基于信号完整性布局布线及串扰优化时使用该数据。

对数据导入的基本数据输入完毕后,可以点击SA VE,把基本的设置信息保存起来,在后续的设计中可以通过直接导入.Conf数据来减少重复性的数据导入。

该步骤对于提高工作效率比较实用,因为布局布线工作是一个迭代过程很多的流程,基于同样的数据可能需要不断的重新操作,该步骤就是提高输入同样数据的效率,减少迭代时多余的操作。

数据导入数据导入工作完成后,点击OK。

如上图所示为工作界面的可视化视图即为芯片形式的显示结果。

芯片外围为I/O管脚,中间位内核单元放置的区域。

由于现在还没有进行详细的布局布线工作,所以芯片视图内部是空的,在芯片左边红色模块代表标准单元组成的模块,芯片右边将会显示宏单元模块。

预布局设计在原始数据导入以后,首先第一步就是需要设置芯片的内核大小,前提是在I/O管脚组成的面积小于需要的面积。

设置芯片的内核大小可以直接设置芯片的内核长宽尺寸决定,也可以通过设置芯片内核利用率让工具自动计算出芯片内核的大小。

芯片利用率一般大于85%,所以先设置利用率为85%来计算芯片大小的原始数据。

计算公式是标准单元的总面积比上内核利用率的值即为内核大小,如上图中公式所示,其中内核利用率是所有模块包括(标准单元、宏模块、隔离带halo)面积与芯片内核面积的比值。

一般推荐芯片的形状为正方形,所以在core aspect ratio参数中设置为1。

因此芯片内核的长宽值就通过芯片面积开根号计算出来了。

由于电源连线与宏模块要占用面积的不确定性,所以芯片内核的面积应该比利用率为85%的内核面积要大,所以通过增加长宽的尺寸来设置真正理论上合适的值。

举个例子:标准单元组成的面积为2000000,芯片内核利用率为85%,没有宏模块,那么根据计算公式为2.352941,那么宽长为1534,最终实际宽长设置应该大于该计算值。

预布局设计芯片内核面积余量设置在进行预布局设计时,需要提供多余区域来设置电源地环,电源地环的设置将在电源地规划中讨论。

如图右上所示。

基于芯片内核与基于I/O PAD的面积区别当I/O PAD组成后的长宽值大于内核根据利用率计算出来的长宽值,那么该芯片面积最终是基于I/O PAD的。

当I/O PAD组成后的长宽值小于内核根据利用率计算出来的长宽值,那么该芯片面积最终是基于内核的。

如果是基于芯片内核的面积,那么I/O PAD之间会出现间距。

由于I/O PAD 之间不能留有空隙,就需要进行空隙的填充来使各I/O PAD连接起来。

空隙的填充通过I/O填充单元来实现,如图右下所示。

预布局设计通过点击floorplan->specify floorplan具体设置预布局参数,如上图所示。

对于基于I/O PAD的面积设置:设置core width and height参数为一个比较小的值,比如100。

设置core to IO boundary参数为合适的值,这个值主要是用来提供布置电源地环的空间及连接I/O PAD时走线通道空间。

设置完成后点击apply。

对于基于内核面积的设置:设置core width and height参数为一个实际需要的值。

设置core to IO boundary参数为合适的值,这个值主要是用来提供布置电源地环的空间及连接I/O PAD时走线通道空间。

设置完成后点击apply。

预布局设计宏单元的布局设置,如果设计中没有硬宏单元,那么在芯片显示的右边将不会出现绿色的模块,就不需要进行宏单元的布局。

如果有宏单元则通过点击移动图标,把对应的宏模块放入到芯片内核的指定位置上。

如上图所示。

预布局设计通过预布局参数的设置及宏单元布局后得到最终预布局的结果,如上图所示为没有宏单元的设计,主要参数的设置决定芯片内核的长宽尺寸及内核与I/OPAD的间距。

电源规划电源影响的问题主要是两个部分电迁移问题:当在大电流下,高速电子不断碰撞金属原子导致金属连线移位变形,最终金属连线短路或开路使芯片失效。