原创 useful command of astro

2008-6-16 23:25 3041 0 分类: 模拟

AstroSynopsys?公司推出的,针对数字电路设计的平台,主要用于对设计进行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/logiczhaojy/godson2/lib/ Astro/pllzhaojy/godson2/lib/Astro/ramzhaojy/godson2/lib/Astro/regfilezhaojy/ godson2/lib/Astro/ict_cells_t。每次输入后按“apply”,输入结束后点“OK”
如果需要察看reference library加入是否正确,可操作如下:
Library > Show Refs…
cmShowRefLib
??
test

二、    Floorplan
1
   打开先前生成的librarygeOpenLib
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 floorplanaxgDumpFloorPlan??获取floorplan信息
??Output Filename
dump_file_1.dump(或任意其他名字)
??Type
:本例中选择io cell placementrowtrack三项
   Route Utility > Dump RoutingaxgDumpRouting??获取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-cellscomponents的摆放位置,编写完.scm文件后保存,在Astro Scheme界面中输入:
??Astro> load “/…/macro_loca.scm”

6
   对未在.scm文件中定义的macro-cellcomponent摆放位置。
注意,通常来说,我们不需要手工摆放这些macro-cellscomponents,因为在PCPhysical 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移动它们,我们需要固定住它们,具体操作为:
??
选定需要fixcell(按“p”后点击cell
??PrePlace > Set Fixed Status…
aprCmdFixCell
??Mark Object
:选择unfixedsoft fixedfixed
其中soft fixedfixed的区别在于:soft fixedcells有可能被PC优化掉,但如果PC决定采用它,就一定会将其放在用户fix它的地方;而fixedcells对于PC来说完全不可动,一定会调用它,而且一定会放在其被fix的位置,类似于.tcl文件中的set_dont_touch命令。

8
   创建groupregion
在某些设计中,我们希望将某些cell固定在一定区域(即region)内,而cell的具体位置又希望由PC来确定。这时我们可以建立一个group,将希望放在region内的cell加入group,并生成与group相关的region,摆放在合适的位置上。具体操作为:
   Design Setup > Add to Group by Names…aprCmdCreateHierGroup??根据cell name新建group
??Group Name
:推荐使用与这组器件相关的名称
??Pattern
:需要加入groupcells的描述,可使用通配符“.*”(注意星号前有点号)
   Design Setup > Create Region…axgCreateRegion??新建region
??Group Name
region对应的group的名字
如果设计比较简单,可以在cell view上比较容易的找到所需要的cell,也可使用以下方法创建groupregion
   Cell View上选出要组成groupcells
当然,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 BlockageSoft Blockage,操作如下:
??PrePlace > Create Hard Blockage
Create Soft Blockage
??
Cell View上拖出一个Blockage,对Blockage的操作和对其他cell一样,可以移动也可以改变其大小。
另外,在某些设计中,我们希望在Region中设置Blockage实现。Blockage有两种,分别叫做Hard BlockageSoft 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作为其进行物理综合的参考。在目前的设计流程中,AstroPC还是独立的两个工具,因此需要用pdef文件这种形式来进行交换,在下一代的工具中,Synopsys?公司将会把AstroPC的功能结合在一起,也就是说今后我们可以在一个工具中同时实现Floor PlanPhysical 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”
此步骤的原理为:dumpEverythingprocs.dump文件中定义的一个函数,其作用是将floorplanroutstechfileGatesAndCellsNetDataPinData分别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
testLibrary的名字)
2
   修改fetch.pdef文件:将文件中的“unit”改为“CSM13SITE”
以上两种方法均会生成一个名为fetch_0407.pdef的文件。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


 



 


1.       对于DRC,由于没有nwellSP等工艺信息在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 optimization
High-Fanout Collapse是指将fanout >throshed valuedefault is 10)buffer or inverter paris删除并rebuffer,以减少congestion.既然这样,netlist中就没有fanout>10buffer or inverter了, 更没有大于40的了,那Hign-Fanout synthesisdefault throshed is 40)的意义何在呢?确实如你所说 如果collapse buffer tree做完之后 不应该有 fanout大于thresholddriver,
目前我能想到的一个原因是

collapse buf
hfn是两个独立的atomic的命令,你可以都做也可以都不做也可以只做其一。
因此这两个threshold还是有其存在的价值。
比如,有的designer 希望在Preplace时候保留自己所有的buffer tree,而不做collapse
此时 hfnthreshold就要起作用了。


9 astro 中可以把指定的单元编成一个group,然后把该group再指定到一个 region上。 我以为这样做,在placement时可以把该group所包含的所有单元都限定在指定的region上。但实际的结果并不是这样
是不是我漏了什么设置,或是group region 的功能并不是我所理解的那样??placement commen option里有个选项是respect region,选中就可以了


10 后端drc/lvs,使用antenna ruleastro 里用axgInsertDiode
选项是hercules其它是默认,执行后加了Diode。我用的Astro加过Diode后不能自己repair,
加过Diode后还要让Astro自己repair一下!!
命令是:axgSearchRepair


请教在astro中,选择所有TEXT,命令!谢谢!

11.
我在astro中用第7metal,打了很多的TEXTPAD上,
请问我怎样选择这些text
如果一个一个的选择太多了,
请问astro中有没有什么命令能有这个功能,或者高手给个选择TEXTtcl
geNameSelect
setFormField "Name select" "Name" ".*"
setFormField "Name select" "type" ".*"
setFormField "Name select" "pattern match" ".*"
formOK"name select"



最简单的办法,在command window里面,输入functions + "关键词
比如查查关于SDC的命令,输入functions "SDC"可以查到56个相关命令,熟悉以后一般可以望文生义


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
0
关闭 站长推荐上一条 /3 下一条