Vivado中如何避免信号被优化掉?

举报
李锐博恩 发表于 2021/07/15 03:10:04 2021/07/15
【摘要】 刚写了一段 Verilog代码,辛辛苦苦花了很长时间综合,在debug的过程中,却找不到需要debug的信号了,查看网表发现没有? 这种情况是因为我们的某些中间信号被优化掉了。 被优化掉的原因有可能是你这个信号确实对后面的输出没用,我写的这个项目由于还在中间过程,功能还没有完善,所以不想把大量的中间信号作为输出,所以被优化掉了,以至于在debug过程中找不到这些信号。 ...

刚写了一段 Verilog代码,辛辛苦苦花了很长时间综合,在debug的过程中,却找不到需要debug的信号了,查看网表发现没有?

这种情况是因为我们的某些中间信号被优化掉了。

被优化掉的原因有可能是你这个信号确实对后面的输出没用,我写的这个项目由于还在中间过程,功能还没有完善,所以不想把大量的中间信号作为输出,所以被优化掉了,以至于在debug过程中找不到这些信号。

如何解决这个问题呢?

很简单,最常用的就是在变量定义的时候添加语句:

(* keep = "true" *)

例如:


  
  1. (* keep = "true" *) reg [15 : 0] dataout_ii1;
  2. (* keep = "true" *) reg [15 : 0] dataout_ii2;
  3. (* keep = "true" *) reg [15 : 0] dataout_ii3;
  4. (* keep = "true" *) reg [15 : 0] dataout_ii4;
  5. (* keep = "true" *) reg [15 : 0] dataout_ii5;
  6. (* keep = "true" *) reg [15 : 0] dataout_ii6;
  7. (* keep = "true" *) reg [15 : 0] dataout_ii7;
  8. (* keep = "true" *) reg [15 : 0] dataout_ii8;
  9. (* keep = "true" *) reg [15 : 0] dataout_ii9;
  10. (* keep = "true" *) reg [15 : 0] dataout_ii10;
  11. (* keep = "true" *) reg [15 : 0] dataout_ii11;
  12. (* keep = "true" *) reg [15 : 0] dataout_ii12;
  13. (* keep = "true" *) reg [15 : 0] dataout_ii13;
  14. (* keep = "true" *) reg [15 : 0] dataout_ii14;
  15. (* keep = "true" *) reg [15 : 0] dataout_ii15;
  16. (* keep = "true" *) reg [15 : 0] dataout_ii16;

这样即可,从网表中可以找到这些变量了。

 

当然还有其他办法,例如:

1、 信号前面将keep  hierarchy选择yes ,或者选择soft(在综合时保持层次),这样有利于你从模块中找到你想抓取的信号和信号名不被更改。

(* keep_hierarchy = "yes" *)module fre( a, b, c, d);

or

(* keep_hierarchy = "yes" *)fre fre_inst( a, b, c, d);

2、 信号前面使用(* DONT_TOUCH= “{TRUE|FALSE}” *),可以防止信号在综合,以及布局布线的时候被优化掉。

(* dont_touch = "true" *) wire a;

不在话下。

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/99550802

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。