微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > encounter做metalchange时,生成新verilog文件时遇到的问题

encounter做metalchange时,生成新verilog文件时遇到的问题

时间:10-02 整理:3721RD 点击:
使用encounter做metalchange时,手动改写verilog网表文件,导回到encounter中做ECOroute,总是出现说线名A已经被某个instance或是wire调用,无法add new wire。
这个线名A原先是某个模块内的internal wire,是一个buffer的输出,连接到模块内其他器件的输入,现在我将这个线名A做了一个output,output直接使用了线名A,并在顶层模块调用这个output的新输出接到了其他模块的输入。
之后encounter就会提示上述错误~
论坛里有没有懂的帮个忙~
如果需要修改的话,应该怎么修改呢?

请问你是这样改的吗?module TOP
wire A_top;
XXX XXX (.A(A_top) .....);
XXX XXX (.IN(A_top).....);
endmodule

是哈~
我刚刚把我改的网表的verilog用modelsim跑了一下后仿真,结果和预期一样~
就是不知道为什么encounter总是认为是错的~

我写的详细点好了,方便大家帮我找错
比如原先是:
module B(...);
...//input or output
//internal wire
wire A;
我改成了
mudle B(...,A)
...//input or output
output A;
//internal wire
wire A;
在顶层
原先是module B_top(...);
B B_U(...);
C C_U(...
.C_port(C_port));
我改成了
module B_top(...);
wire A_wire;
B B_U(...
.A(A_wire));
C C_U(...
.C_port(A_wire));

还有我做了一下实验,如果只改
module B(...);
...//input or output
//internal wire
wire A;
我改成了
mudle B(...,A)
...//input or output
output A;
//internal wire
wire A;
encounter是可以进行改变的,可以看到它为我添加了一个output port
但是如果在B_top给这个output port给wire名时,即
原先是module B_top(...);
B B_U(...);
C C_U(...
.C_port(C_port));
我改成了
module B_top(...);
wire A_wire;
B B_U(...
.A(A_wire));
C C_U(...
.C_port(A_wire));
就会出错,为什么啊?

顶~

请把出错信息帖一下。

好,我一会贴出来,我昨天晚上实在没办法,按照我的想法用vitrisuo直接把版图改了,然后用我改的verilog网表,生成CDL网表,做LVS,也过了
现在就是纳闷为什么encounter不识别我的verilog网表,谁有什么修改意见~

Name FE_OFCN427_test_mode_start_r is already used by an instance or a net in cell half _band_filter1_0
Failed to add net 'xxxx_top_u/half_band_filter1_u/FE_OFCN427_test_mode_start_r',the routing on the net is discarded.

感觉网表修改的没问题呢。现在怀疑步骤上有错误。你是不是直接替换了原来*enc.dat里面的.v,然后重新restore Design出的问题?

同意楼上!
eco flow 的问题!

额~~flow的问题啊~~~
我是在gui的界面上有一个restore with ECO上操作的

选择的是postmask 然后规定修改的metal
选择之前保存的enc.dat的文件夹,以及我修改好的verilog文件,点击APPLY
好吧,那我上网搜搜eco的flow
如果你们有好的介绍网址的话,还请帮忙抄一份~~谢谢~~~

问题出在你之前保存的enc.dat里。你必须将有修改的那条线先删除,然后保存一份新的enc.dat。这样工具在restore route时,才会发现这条变动的线。比如 A_wire是你想eco的,那么在旧的设计中, deleteNet A_wire; saveDesign new.enc.dat;
然后,在新的设计中, ecoDesign -postmask ...new.enc.datnew.v

看懂了我试试~谢谢指点

太感谢你百忙之中,还来帮助我~

转bsbs525 ::
悄悄的告诉你,我当时候是怎么解决的。首先申明是非标准流程:
比如对A模块进行修改:
1.读入未修改过A模块的enc,然后导出A模块的route的DEF文件,只要route的。然后退出进入下一步
2.进入eco流程,导入enc、新网表,导入port的位置信息等等,这一步,工具会报错,说忽略了一部分线,忽略掉,然后导入开始的route.def
3.ecoroute ,如果只修改部分层,看ecoroute的选项。
4.非标准流程,完了后记得必须要做形式验证确保正确

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top