Astro是Synopsys?公司推出的,针对数字电路设计的平台,主要用于对设计进行Floorplan、加Timing Tree、加Power Grid等总体布局上的工作。其中的大部分软件由被Synopsys?收购的Avanti?开发。
在龙芯组中,Astro主要被用于做Floorplan,通常来说,每个模块的面积、形状、端口及Powergrid等子模块外部信息由一人总体完成,并制成db文件。各小组成员调用已经生成好的子模块外部信息,在此信息约束下,在子模块内对模块内部进行Floorplan。
对子模块中cell进行布局的一般原则为:对于存储器,一般都制成单独的macro-cell进行布局;对于其他cell是否要单独布局,则由DC中推时钟的结果判断,对于关键路径上的关键器件,根据需要将其fix在一个相对优化的位置。
以下将对龙芯组使用Astro的基本操作做一说明:
一、 新建library
1、 新建library
library > Create… ( cmCreateLib )
??Technology File Name:/…/csm13_8lm.tf(工艺文件,扩展名为.tf)
??Set Case Sensitive 选中(大小写敏感)
2、 加入reference library
Library > Add Ref…(cmRefLib)
??Library Name:test(也可自己取名)
??Ref Library Name:依次输入zhaojy/godson2/lib/Astro/logic,zhaojy/godson2/lib/ Astro/pll,zhaojy/godson2/lib/Astro/ram,zhaojy/godson2/lib/Astro/regfile,zhaojy/ godson2/lib/Astro/ict_cells_t。每次输入后按“apply”,输入结束后点“OK”。
如果需要察看reference library加入是否正确,可操作如下:
Library > Show Refs…(cmShowRefLib)
??填test
二、 Floorplan:
1、 打开先前生成的library(geOpenLib)
Library > Open…
??点击Browser之后在菜单里选择test,
2、 输入verilog网表文件(DC综合后的物理RTL)
① Tools > Data Prep ??第二行工具条转为数据准备状态
② Netlist In > Verilog In…(auVerilogIn)??输入verilog文件
??Library Name:test
??Verilog File Name:(之前由DC综合出的物理RTL)
③ Netlist In > Expand…(cmCmdExpand)??“展开”网表文件。此步的意义有二:其一,Astro要求objects in the netlist are broken down into component objects exist in the library;其二,通过展开网表,将global net连接起来。
??Library Name:test
??Unexpanded Cell Name:godson2_FETCH_module.NETL(“物理RTL中的顶层模块名”+“.NETL”)
??Expanded Cell Name:godson2_FETCH_module.EXP(可任意取,但一般情况下选择跟Unexpanded Cell Name一样)
??点“Global Net Options”
Net Name:VDD
Port Pattern:VDD.*
点“Apply”
Net Name:VSS
Port Pattern:VSS.*
点“Apply”
点“OK”
④ Tools > Astro ??第二行工具条转为Astro状态
⑤ Cell > Create…(geCreateCell)??新建cell
??Cell Name:fetch(该cell名任取,其为之后出现的schematic图的名称)
⑥ Design Setup > Bind Netlist…(axgBindNetlist)??将网表文件与schematic图绑定
??Net Cell:godson2_FETCH_module.EXP(之前生成的展开后的EXP文件)
⑦ Cell > Initialize Hierarchy Information…(astInitHierPreservation)??初始化层次信息,该步的意义在于:我们的constraints是按照层次化设计的思路编写的,而Astro中使用的网表已经“平坦化”,因此为了加入约束文件,我们需要把层次化信息从未expanded之前的top cell中提取出来,加入expanded后的cell中。
??Flattened Cell Name (.EXP .CEL):fetch.EXP(之前新建的cell名)
??Hierarchical Top Cell Name (.NETL):godson2_FETCH_module(包含有层次化信息的网表中的顶层模块的名字)
⑧ Cell > Mark Module Instances Preserved…(astMarkHireAsPreserved)
??Flattend Cell Name(.EXP .CEL):fetch.EXP
3、 从zhaojy处(已完成的子模块外部信息)获取信息:
① Design Setup > Dump floorplan(axgDumpFloorPlan)??获取floorplan信息
??Output Filename:dump_file_1.dump(或任意其他名字)
??Type:本例中选择io cell placement,row,track三项
② Route Utility > Dump Routing(axgDumpRouting)??获取Power Grid信息
??Output Filename:dump_file_2.dump(或任意其他名字)
4、 对步骤2-④中生成的cell load步骤3中提取的两个dump文件。具体操作为:在Astro Scheme界面中输入:
??Astro> load “dump_file_1.dump”
load “dump_file_2.dump”
5、 对cell进行Floorplan。
通常做法是编写一个.scm文件,该文件中包含了cell中各macro-cells和components的摆放位置,编写完.scm文件后保存,在Astro Scheme界面中输入:
??Astro> load “/…/macro_loca.scm”
6、 对未在.scm文件中定义的macro-cell和component摆放位置。
注意,通常来说,我们不需要手工摆放这些macro-cells和components,因为在PC(Physical Compiler)中会自动摆放它们,但有时PC摆放单元的位置并不是最优的,会导致路径过长,这时才需要手工摆放这些单元。摆放单元时常用的快捷键列表如下:
f 缩/放模块适应窗口大小 r redraw
z 放大选取的区域 Z 缩小2X
p Point-select,选择一点所在的对象 l Line-select,选择线所穿过的对象
w Window-select,选择框住的对象 t 旋转所选对象
m Move,移动所选对象 ←↑↓→ 移动视图
s Stretch,拉伸/缩小所选对象 d Delete,删除所选对象,慎用!!
除了上述快捷键,注意使用视图左侧的按键,需要执行其他操作(如在cell中选择component)时,可回到Astro主菜单下寻找。
7、 Fix宏单元或单元。
我们手工摆放的cell通常都是不希望被PC自动摆放的cell,为了确实做到不让PC移动它们,我们需要“固定”住它们,具体操作为:
??选定需要fix的cell(按“p”后点击cell)
??PrePlace > Set Fixed Status…(aprCmdFixCell)
??Mark Object:选择unfixed,soft fixed或fixed。
其中soft fixed与fixed的区别在于:soft fixed的cells有可能被PC优化掉,但如果PC决定采用它,就一定会将其放在用户fix它的地方;而fixed的cells对于PC来说完全不可动,一定会调用它,而且一定会放在其被fix的位置,类似于.tcl文件中的set_dont_touch命令。
8、 创建group和region。
在某些设计中,我们希望将某些cell固定在一定区域(即region)内,而cell的具体位置又希望由PC来确定。这时我们可以建立一个group,将希望放在region内的cell加入group,并生成与group相关的region,摆放在合适的位置上。具体操作为:
① Design Setup > Add to Group by Names…(aprCmdCreateHierGroup)??根据cell name新建group
??Group Name:推荐使用与这组器件相关的名称
??Pattern:需要加入group的cells的描述,可使用通配符“.*”(注意星号前有点号)
② Design Setup > Create Region…(axgCreateRegion)??新建region
??Group Name:region对应的group的名字
如果设计比较简单,可以在cell view上比较容易的找到所需要的cell,也可使用以下方法创建group和region:
① 在Cell View上选出要组成group的cells
当然,Astro也提供了通过查询来选定cell的方法:
Select > (De)select by Name…(geNameSelect)
??Name:需要选定或取消选定的cell名
??Type:一般选择cell instance
② Design Setup > Add to Group by Select Set…(aprAddGroupBySelSet)
③ Design Setup > Create Region…(axgCreateRegion)??新建region
??Group Name:region对应的group的名字
9、 设置Blockage
在某些设计中,我们希望在某些区域不放置任何cells,这可以通过设置Blockage实现。Blockage有两种,分别叫做Hard Blockage和Soft Blockage,操作如下:
??PrePlace > Create Hard Blockage或Create Soft Blockage
??在Cell View上拖出一个Blockage,对Blockage的操作和对其他cell一样,可以移动也可以改变其大小。
另外,在某些设计中,我们希望在Region中设置Blockage实现。Blockage有两种,分别叫做Hard Blockage和Soft Blockage,操作如下:
??PrePlace > Create Hard Blockage或Create Soft Blockage
??在Cell View上拖出一个Blockage,对Blockage的操作和对其他cell一样,可以移动也可以改变其大小。
通过以上的步骤,一个子模块的FloorPlan就基本完成了,保存cell
??Cell > Save!
三、 提取pdef文件
pdef文件中包含了设计中的各已定义的cell的位置、Power Grid及空余的可供Stand Cells摆放的位置,这些信息将提供给PC作为其进行物理综合的参考。在目前的设计流程中,Astro和PC还是独立的两个工具,因此需要用pdef文件这种形式来进行交换,在下一代的工具中,Synopsys?公司将会把Astro与PC的功能结合在一起,也就是说今后我们可以在一个工具中同时实现Floor Plan与Physical Compile。提取pdef文件有两种方法:
法一:
1、 load “/export/workspace/physical/liudong/astro/tcl/floor_plan_c/procs.dump”
dumpEverything “fetch_<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0407”
此步骤的原理为:dumpEverything是procs.dump文件中定义的一个函数,其作用是将floorplan,routs,techfile,GatesAndCells,NetData,PinData分别dump至“fetch_0407”即目标文件夹下的_FLOORPLAN_,_ROUTES_,_TECHFILE_,_GATEANDCELLS_,_NETDATA_,_PINDATA_目录下
2、 转到psch目录,运行:runSchemePdef.cmd fetch_0407 tmp fetch_0407.pdef
法二:
1、 Design Setup > PDEF Out…(aprPDEFOut)
??PDEF File Name:fetch_0407.pdef(需要输出的pdef文件的名字)
??Design Name:test(Library的名字)
2、 修改fetch.pdef文件:将文件中的“unit”改为“CSM13SITE”
以上两种方法均会生成一个名为fetch_0407.pdef的文件。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. 对于DRC,由于没有nwell,SP等工艺信息在FRAM里面,你觉得DRC只做到这种程度准确吗?
2. hard blockage: no cells can be placed inside it.
soft blockage: original cells can not be placed inside it. Timing optimized cells can be placed inside it.
3. 我布完了电源环
对Pad使用了axgPrerouteInstances
再加了PAD FILLER
请问之后还需要用axgCreatePadRings这个命令吗?
需要,因为filler不一定加全了,有可能pad中有缝隙,那么pad之间电源会断掉,需要pad ring来连接
4. How to balance non-gating clock branch and gating clock branch?
Sometimes, leaves numbers are different. Cell delay of inserted clock buffer and gating cells are also different.
The idea of astSplitClockNet is to use more smaller clusters (you planned) to get better skew.
It can be used for both clock-gating or non-clock gating cells.
Define instances names or net names.
You can use "help astSplitClockNet" to know detailed info.
5. 1、在做布局布线的时候,为了解决congestion 以及 setup hold time 问题,会不会引起标准单元的改变啊?
通过看资料,应该说 在 CTS 的时候,buffer 的大小及位置会变的,那 std cell 呢,会不会变呢?
2、preroute macro/pad 的时候,
有这样一个选项 connect PG 或者是 tie up/down ,请问这两个选项分别是什么意思呢?
我看 lab 一般都只选 connect PG,请高手指点,不胜感激!1.
axgAutoRoute - netlist won't be changed
axgRouteOpt - netlist won't be changed
astPostRouteOpt - netlist may be changed, depending on the options you specified
2.
Power/Ground and tie-up/tie-down are considered as different port types in Astro.
You can use help "dbSetCellPortTypes" to see the differences between them.
Roughly speaking, tie-up/tie-down ports are allowed to connect to normal signals in
the netlist. Instead, if they connect to nothing in the netlist, it means that they
must connect to power/ground signals.
The port type should be specified during library preparation.
6.
Astro can both recognize clf/lef (from encounter) and reference lib (from astro). They work the same, but not in the same format!
The libs of standard cells (including GDS) are provided by the Foundry!
7. 当芯片的PR基本完成,而又需要做小部分变化时,为节省时间,不需重新PR,只要做ECO就行.
8. 1. High-Fanout Collapse
Collapses all buffer and inverter-pair trees that have a fanout larger than the supplied value.
2. HFN threshold
number of fanouts on a net to trigger HFN optimizationHigh-Fanout Collapse是指将fanout >throshed value(default is 10)的buffer or inverter paris删除并rebuffer,以减少congestion.既然这样,netlist中就没有fanout>10的buffer or inverter了, 更没有大于40的了,那Hign-Fanout synthesis(default throshed is 40)的意义何在呢?确实如你所说 如果collapse buffer tree做完之后 不应该有 fanout大于threshold的driver,
目前我能想到的一个原因是
collapse buf 和hfn是两个独立的atomic的命令,你可以都做也可以都不做也可以只做其一。
因此这两个threshold还是有其存在的价值。
比如,有的designer 希望在Preplace时候保留自己所有的buffer tree,而不做collapse,
此时 hfn的threshold就要起作用了。
9 在astro 中可以把指定的单元编成一个group,然后把该group再指定到一个 region上。 我以为这样做,在placement时可以把该group所包含的所有单元都限定在指定的region上。但实际的结果并不是这样
是不是我漏了什么设置,或是group和 region 的功能并不是我所理解的那样??placement commen option里有个选项是respect region,选中就可以了
10 后端drc/lvs时,使用antenna rule在astro 里用axgInsertDiode
选项是hercules其它是默认,执行后加了Diode。我用的Astro加过Diode后不能自己repair,
加过Diode后还要让Astro自己repair一下!!
命令是:axgSearchRepair
请教在astro中,选择所有TEXT,命令!谢谢!
11.我在astro中用第7层metal,打了很多的TEXT在PAD上,
请问我怎样选择这些text,
如果一个一个的选择太多了,
请问astro中有没有什么命令能有这个功能,或者高手给个选择TEXT的tcl。
geNameSelect
setFormField "Name select" "Name" ".*"
setFormField "Name select" "type" ".*"
setFormField "Name select" "pattern match" ".*"
formOK"name select"
最简单的办法,在command window里面,输入functions + "关键词”
比如查查关于SDC的命令,输入functions "SDC"可以查到5,6个相关命令,熟悉以后一般可以望文生义
文章评论(0条评论)
登录后参与讨论