微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 如何避免synplify综合时的信号名称变化

如何避免synplify综合时的信号名称变化

时间:10-02 整理:3721RD 点击:
一般在综合后的网表中的信号都会被打平,信号名称变化也很大,很难对应出RTL中的信号。
有哪些方法可以避免synplify或者quartus综合时的信号名称的变化?例如,是不是可以在sdc中加某些约束?
请教各位,谢谢!

同问这个如何设置哦?
从没有找到办法,MS是默认成这样的

这个应该没法设。
不打平或许会好一点,但基本上经过优化后的信号名都会改变。
不过改名大体上有个规律,会把原来的层级结构保留下来 signal_top_sub0_sub1_xxxx 之类,
只要名字不是取得非常难区分,比如abc之类,大部分是能找到的。

将该信号强制保留  用keep 命令



    感谢您的回复!
    因为我知道为了避免综合时对buffer的优化,可以用/* synthesis keep=1 */来告诉编译器不要对相应的语句进行优化。最近我又碰到类似的问题,就是上面的问题,因此我想,有没有类似的办法呢?可是,找了好久都没找到办法解决!至少好像synplify和quartus都没有直接的设置或约束来避免信号名的改变。而在quartus综合、布局布线之后的信号名虽然改变了,但是例化层次是不变的,只要认真找其实也不难。



    您是说的/* synthesis keep=1 */吗?但是,好像这个语句并不能保持住信号名吧?

我知道了!原来我以前一直搞错了!
/ *synthesis keep=1 */是用于QUARTUS的;而/ *synthesis syn_keep=1 */才是用于synplify的!
我刚才试验过了,信号名果然没变!

不会啊
你们是说RTL里面的信号名啊
我的什么都不加,和代码里面的名字一样啊,从来没有被改过啊,我用的是pro8.9版本

可以把想要看的信号放到端口中输出,这样就很直观的能看到了。
这个方法可行吗?



    是RTL的信号名!我说的综合是FPGA综合,就是综合后映射到FPGA内部单元的网表,信号名会变的!



    这样的话,在Synplify综合时,信号名倒是不会变化;但是在Quartus综合之后,又会优化的!
    而且,把信号拉到端口上,难免会增加电路资源,甚至会影响时序!
    其实,我不是单纯的想保持信号名。我主要目的是想怎么才能使得综合之后的信号能直接对应于RTL的信号,这样会更有利于进行分析和调试;
因此,避免优化也是一种办法;还有一种办法是,生成一个地址映射文件来记录RTL的信号与综合之后的对应关系,这样的话难度较大!
    希望,各位还有其他更简便的方法来实现!谢谢!

MARK~

   是啊,觉得这个问题很麻烦,有些模块,在别的地方还用了哪~

学习一下

verilog代码中:
(* syn_keep = "true", mark_debug = "true" *) wire [7:0] char_fifo_dout;
或者在SDC中:
define_attribute {n:char_fifo_din[*]} {mark_debug} {"true"}
define_attribute {n:char_fifo_din[*]} {syn_keep} {"true"}

VIVADO的userguide上有讲这个,应该是用DONNOT_TOUCH 语句吧

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

网站地图

Top