encounter中nanoroute之后怎么修改布线规则?
我本来用的editDelete -net $net,然后用speaficyAttribute(具体这个命令什么样记不清了)修改了布线规则,然后再ecoRoute来重新布线,可是根本没效果,线就没换掉
后改用deleteNet $net删线,可是再ecoRoute就布不上去了,
到底该怎么搞啊?纠结死我了,急求!
NonDefaultRule, 在LEF里设最方便
要2倍间距 还是要一开始设置吧, route完了再2倍就不一定有空间了,
NDR(non default rule)的应用是写一个lef ,比如
NONDEFAULTRULE2xspaing_1xwidth
Layer M1
spacing2Xspacing ;
width1xwidth
LAYERm2
......
END
然后 loadleffilendr.lef
setAttribute-net @clock (或者别的net)-non_default_rulendr_rule
selectNetXXXor-clock
globaldetailrotue-select
如果只是单纯的 几倍间距 ,很简单,不用设这个rule也行,用
setAttribute -extra_preferred_spacing 2~X即可
删除物理(wire)连线用的是 editDelete-net XXX -type signal
deleteNet 是逻辑上删除,就是verilog里面删除,是要小心应用的
谢谢各位老大的回帖!迫不及待,立马去试
不过我有一个疑惑,规则什么的我早都早lef里加好了,问题是,在最终布线之后更改布线规则不是需要删掉原有的线然后重新布吗?如果editDelete -net后,就选不中被删掉的线了,globaldetailRoute -select就没法用了,我也这样试过的,行不通。
难道最终布线后该布线规则没必要删掉原有的线?
editDelete -net 只是删除wire吧,没有删除原来的net 关系,
selectNetXXX
globaldetailroute -select 当然是可以的啊, 只要逻辑上存在这个net就行
有些ecoroute如果太大,还是建议一开始做,比如2倍spacing这种,
在trailroute时做以前尝试过,因为跑完PT后在回去迭代周期太长,所以暂且先在si后做一部分试试。我的设计布线资源比较宽松,用globalroute工具好像会自动优化出合适的布线空间。
我尝试做一条时没什么问题,可是我写了个脚本,使用一个循环将所有的需要换的线都更改好布线规则,并选中后,统一做了一次globaldetailroute,结果换规则没有成功。这是什么原因?
难道非得做一条,就globaldetailroute一次吗?那样的话,换的线多了时间也太长了,我觉得工具应该不会这么笨才对,求教应该怎么做?
我的写法大致是
set nets [open vio_nets.txt r]
foreach net $nets {
setAttribute -net $net -non_defalut 3w3s.rule
editDelete -net $net
selectNet $net
}
globaldetailroute -select
close $net
注:vio_nets.txt 里放的是已经提好的要换的线
结果换规则没有成功,规则是写在lef里的,确信是没问题的,怎么才能有效率得成片换?
set nets [open vio_nets.txt r]
foreach net $nets {
setAttribute -net $net -non_defalut 3w3s.rule
editDelete -net $net
selectNet $net
}
z这个是tcl 语言没写好吧
一般是while {[get$nets line] >= 0} {
$nets 是个句柄吧, 不能直接 foreach的,
是tcl语言,是我没写清楚。因为vio_net.txt里的格式是所有的线名都在一行,以空格隔开的,所以用了foreach来循环。
你说的那个是按行提取,用于一行只有一个线名的格式。
这个脚本很简单,没什么语法问题,我本来是想问需使用的命令是不是有掉的。
不过今天已经搞定了,做法没什么问题,可能是人品问题,前两天怎么试都不行,今天下午莫名其妙得好使了,现在也没搞明白怎么回事。
呵呵,十分感谢您的解答!
祝贺你!, 呵呵
如果一条net有pre-routed wires, NR是不允许改变这条net的rule的(默认行为,新版本有hidden/private option来改变)。如果不需要保存这些pre-routed wires,可以更换脚本里的editDetele和setAttribute顺序。
----
editDelete -net $net
setAttribute -net $net -non_defalut 3w3s.rule
----
这样的, 有些脚本 是pdi XXX 这些命令是啥意思,
pdi set XX , nanoroute这种的
集成在EDI里的NR一般叫做native NR, 它的命令名风格和EDI里的其它命令名风格是一致的(setNanoRouteMode, setAttribute, globalDetailRoute)。一般EDI安装目录下还有一个单独可独立运行的NR,一般称为standalone NR(EDI跑super-threading的时候会自动调用),它的命令名风格还保留为最原始的风格(pdi = plato design interface, Plato Design开发了NanoRoute并被Cadence收购)。
一些常用的pdi command在EDI里也是可以用的(pdi set_option = setNanoRouteMode, pdi set_attribute = setAttribute, pdi global_detail_route = globalDetailRoute, etc.)
除非自己跑standlaone NR,一般还是用EDI风格的命令比较好。
哈哈,厉害, 我们这些不清楚encounter历史的人 就不知道了,
刚好在研究这个,来参考参考
谢谢,有用
你好,我想在做CTS时实现时钟信号线的双倍间距与宽度,参照说的及查看lef ug设置如下:
1.生成nondefaultrult lef
NONDEFAULTRULE CK_11
LAYER METAL3
SPACING 0.56;
WIDTH0.56;
END
LAYER METAL4
SPACING0.56;
WIDTH0.56;
END
END CK_11
2.在*.ctstch文件中设置如下:
RouteTypeName CK_11
....
END
AutoCtsRootPinclk_12
...
RouteType CK_11
LefRouteType CK_11
...
END
按照这样的设置进行时钟树综合,但是时钟不能实现双倍间距 及 宽度?
小编,我按照您说的做了一遍,enc提示non rule file里没有spacing或者spacingtable。难道要把spacingtable也加上吗。加时需不需要进行修改呢?
小编怎么改的,改过了吗?急求啊!@科普一下把
线宽怎么修改的呢?求教授啊。
我按照您讲的loadleffile之后线宽没有变。不知道什么原因。求指导啊、、、我查到lef文件格式必须正确,metal via层交替定义,是不是non default rule文件也得这么写?我跑起来后提示NDR错误.或者先读取STD cell的lef再读NDR的话会报M1 M2...等已经定义过,NDR再次定义metal层就被忽略了。显然两个lef文件冲突了。求指导
Loading Lef file /home/hujile/project/lef/non_default_rule.lef...
**WARN: (ENCLF-119):
the layer 'M1' has been defined, the content other than the antenna data will be ignored.
**WARN: (ENCLF-119):
the layer 'M2' has been defined, the content other than the antenna data will be ignored.
**WARN: (ENCLF-119):
the layer 'M3' has been defined, the content other than the antenna data will be ignored.
**WARN: (ENCLF-119):
the layer 'M4' has been defined, the content other than the antenna data will be ignored.
**WARN: (ENCLF-119):
the layer 'M5' has been defined, the content other than the antenna data will be ignored.
以前也用过后者,幸亏发现的早,经人指点躲过个雷
现在用啥没用过的命令,都要man一下,而不是只看命令字面意思来用,比如这种 deleteNet
您好,请问是写一个两倍间距和线宽的lef,在最开始进行导入吗?也就是最开始导入3个LEF文件?
那提取STAR-RC事也需要填写这个自己写的LEF文件?
求助
有那么麻烦吗,现在不是都有add_ndr命令了吗,还用写啥lef,
add_ndr
setAttribute -net * -non_default_rule *
routeDesign eco
还是没弄出来了,学习