当前位置:文档之家› 数字集成电路 后端设计 APR流程 之Astro

数字集成电路 后端设计 APR流程 之Astro

Astro布局布线流程随着深亚微米工艺的应用,逻辑门间的连线主导了电路的时序性能。

在实际设计时,设计者不再只是完成简单的逻辑门摆放和连线工作,更重要的是要降低实际的连线延迟,使最后的物理设计时序性能满足设计要求。

Astro是由Synopsys公司开发的物理设计软件,适用于现在的主流设计。

Astro提供了一套完整的物理设计流程,布局布线同时还具有时序优化功能,可以在一次流程中使设计电路达到预设指标。

但Astro步骤繁多、设定复杂,本章将针对Astro的设计流程借助一个简单的设计实例,对Astro一次流程中的主要步骤进行简单说明,使读者短时间内可以了解Astro。

一.数据准备本流程中需要的输入数据包括:网表文件(Netlist File)、时序约束SDC文件(Timing Constraint File)、参考库(Reference Library)、定义PAD TDF文件(Top Design File)、工艺tf文件(Technology File)。

其中工艺文件和部分参考库文件由Foundry提供。

1.网表:网表文件由前端工程师提供,格式一般采用verilog(.v)格式。

布局布线用网表文件一般由Design Compiler(DC)综合得到。

从DC中输出网表时,需要在脚本中如下命令,以满足Astro的要求。

2.时序约束文件:时序约束文件由前端工程师提供,格式一般采用SDC(.sdc)格式,SDC文件也由DC中输出。

时序约束文件中所加的约束只能针对顶层端口,文件中时钟定义可能需要加以修改。

因为从DC中输出的时钟定义一般不指定具体的单元及其端口,Astro通常很难根据这样的时钟定义找到真正的时钟源,因此需要先在网表中找到真正的时钟端口,并据此在SDC文件中加以修改。

例如,原来的SDC文件中时钟的定义片段为:原来的时序约束文件是给予综合的DC用,而不是用来布局布线的。

所以综合用的SDC文件中只给出了一个“产生时钟(create clock)”的命令,根据上面这段时序约束文件中的片段,Astro一般无法找到clk_div/clk,因此需要将“get_pin”的目标修改替换为在网表中的一个实际的时钟产生的单元:clk_div/CK01D1/Z.。

修改SDC片段结果如下:3.参考库:参考库包括标准单元(STD)库、输入输出单元(I/O)库和IP库。

前两种都由Foundary提供,IP库可以由Foundary提供,也可以用户自己建立。

举一个简单的例子简要说明下IP库的建立。

在某些项目中,比较典型的用户自定义RAM IP模块。

使用Memory Compiler可以产生GDSII文件,需要自己建立Milkyway格式IP库以作为参考库代入Astro设计流程。

其具体步骤为:1.运行Memory Compiler,产生需要的Memory block,具体参考memory compiler的使用手册。

2.运行Astro,把GDSII文件导入,Smash,进行Blockage Pin Via Extraction后产生FRAM view。

3.在Astro中把memory compiler产生的lib文件转换成clf文件并读入,或者读入.db文件,生成TIM/LM view。

关于导入GDSII文件具体参考《milkyway database preparation》,需要注意两点:1.层号(Layer Number)问题,不同的工艺下的相同层的层号可能不同。

如若不同,需要写一个映射文件在读入GDSII文件转换。

2.特殊自定义模拟单元的IP库的,ib文件、clf文件等需要自己写,由Astro读入生成IP库的LM view,若仅由GDSII文件生成一个Fram view,IP库的Milkyway格式的库中没有TIM view,在时序驱动(Timing Driven)流程中处理到和这些模块相关的Net/Port的时候会有许多相关的Warning或Timing Error。

为了消除这些Warning和Timing Error,就需要把相应的.lib或者.db文件导入库中,以生成一个TIM/LM view。

这时可以简单地手工写一个lib文件,导入库中即可。

例如:4.TDF文件:这里用到的TDF文件定义了Pad的排列顺序。

需要注意的是:综合产生的网表中没有定义某些没有逻辑意义的Pad,如corner cell,split cell以及power cell的顺序,这些Pad和I/O Pad的摆放边和顺序都在该TDF文件中定义。

二.开始(Setup:Design Setup + Timing Setup)在Terminal中,引导到运行目录下内输入命令:启动软件后,很多布局布线步骤都可以写成脚本,直接载入运行即可。

这样既免去了一次次点鼠标提高工作效率,也减少手工操作可能会带来的失误。

该命令“Astro”也包括“-logd、Astro,随后章节中多采用基本的步骤是:1.建立库(cmCreateLib)Library→Create在弹出“Create Library”窗口中,填上“Library Name、Technology File Name”相应的表格。

“Library Name”是设计库的名字,库是设计单元的集合。

“Technology File Name”即为第一节数据准备中提及的工艺tf文件和文件引导路径。

一般前端综合DC输出网表是对大小写敏感的,因此建立库的时候要注意把“Set Case Sensitive”选项选上(默认)。

图2-1点击“OK”按钮,Library建立成功。

Astro启动目录下会产生一个以“Library Name”命名的文件夹,随后的单元的设计数据都将会保存在本目录下。

图2-22.读入Verilog(auVerilogToCell)1.在Astro的主窗口内输入命令这条命令集合了旧版Astro设计流程中的加上参考库(cmRefLib)、读入网表(auVerilogIn)和打平网表(cmCmdExpand)等几个个步骤。

图2-32.在弹出窗口中填入“Library Name、Cell Name、Verilog File Name”。

“Library Name”是刚刚建立的设计库名。

“Cell Name”单元名即随后具体的设计对象。

“Verilog File Name”是第一节数据准备中提及的网表文件和文件引导路径。

3.点击“Reference Library”按钮,顺序添加几个参考库后,点击“Hide”按钮隐藏窗口。

“Reference Library”是第一节数据准备中提及的参考库文件。

参考库可以是一个或者多个,如STD、IO、IP等。

图2-44.点击“Global Net Options”按钮,“Net Name、Port Pattern”分别都设置为“VDD、VSS”,并且“Apply”一下,点击“Hide5.点击“OK”按钮。

网表将被参照参考库或Astro默认的库读入,在设计库文件夹下产生一个以“Cell Name”命名的文件夹,其中包含几种设计观点cell view。

图2-53.打开库(geOpenLib)Library→Open在弹出窗口中填入“Library Name”,点击“OK”按钮。

图2-64.打开单元(geOpenCell)Cell→Open打开本节第2步中生成的单元,图2-7为弹出的窗口视图。

图2-7为使图片清晰,截图中,笔者将结构视图内容部分进行了反色处理。

可以发现,该部分由一些大小不一的方框“堆积”而成,这些方框就是STD、IO、IP单元的Fram view。

由于设计尚未进行布局规划(floorplan),它们都被“堆积”在视图的左下角(low-left)。

若网表是层次化的,还需要使用(astMarkHierAsPreserved)命令来标记保留层次化,至此设计启动部分(Design Setup)流程结束。

5.装载SDC文件(ataLoadSDC) Timing→Load SDC1.在Astro的主窗口内输入命令:推荐在装载SDC文件前移除设计中所有的时序相关的约束。

2.在弹出窗口中“SDC File Name”表格中填入,SDC文件名极其引导路径。

SDC文件是第一节数据准备中提及的时序约束文件。

图2-83.点击“OK”按钮载入SDC文件。

图2-96.时序设置(atTimingSetup)Timing→Timing Setup在弹出窗口中,根据需要选择相应的选项,设置相关环境参数、优化目标。

注意!这些设置选项在流程的后面可能会有改变。

另外本流程中部分选项设定使用系统默认,设定不作改变部分不在图2-10中作图示方式列出。

图2-10 7. 保存单元数据(geSaveAs )Cell →Save As填入自定义单元名称,阶段性保存设计数据。

图2-11补充说明:综合产生的网表一般不包含电源、地的Pad 、Corner 、Split 、Power 等单元,可以利用(geAddCell )Create →Cell 命令在设计单元中建立这些单元。

笔者个人偏好在DC 输出的Verilog 网表中手动修改网表,以引用Reference Library 中的单元的方式在网表中加入这些Cell 。

三.布局规划(Floorplan)Floorplan在整个流程中处于十分重要的地位,Floorplan不单指Astro中的axgPlanner命令,还包括macro的放置,电源布线设计(Power Plan)。

因为Floorplan一旦确定,则整个芯片的面积就已经确定了。

Floorplan的质量也与整个设计的timing和布通率有着密切的关系。

流程中的反复主要是发生在这一步中,如果这本步骤开始就规划得比较好,则随后的以便通过一步流程通过的几率就较高;反之,很可能出现完成了随后若干步骤后,发现设计无法通过修正继续布通的情况,那时只能返回到这一步,造成很大时间人力的浪费。

1.载入TDF文件(axgLoadTDF)Design Setup→Load TDF将设计单元名称和TDF文件以极其路径填入弹出表格中的“Cell Name、TDF File Name”,此处TDF文件即为是第一节数据准备中提及的TDF文件。

图3-12.全局的Floorplan(axgPlanner)Design Setup→Set Up Floorpan图3-2如图3-2中的参数来完成设置,并且点击“OK”完成初步的布局规划。

本设计流程中包含了一些的macro单元,不能简单地通过指定根据core的利用率(Aspect ratio)来让Astro决定设计的尺寸,而只能通过指定宽/长(width/hight)来确定。

相关主题