博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vivado中如何避免信号被优化掉?
阅读量:2028 次
发布时间:2019-04-28

本文共 1331 字,大约阅读时间需要 4 分钟。

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

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

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

如何解决这个问题呢?

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

(* keep = "true" *)

例如:

(* keep = "true" *) reg  [15 : 0] dataout_ii1;	(* keep = "true" *) reg  [15 : 0] dataout_ii2;	(* keep = "true" *) reg  [15 : 0] dataout_ii3;	(* keep = "true" *) reg  [15 : 0] dataout_ii4;	(* keep = "true" *) reg  [15 : 0] dataout_ii5;	(* keep = "true" *) reg  [15 : 0] dataout_ii6;	(* keep = "true" *) reg  [15 : 0] dataout_ii7;	(* keep = "true" *) reg  [15 : 0] dataout_ii8;	(* keep = "true" *) reg  [15 : 0] dataout_ii9;	(* keep = "true" *) reg  [15 : 0] dataout_ii10;	(* keep = "true" *) reg  [15 : 0] dataout_ii11;	(* keep = "true" *) reg  [15 : 0] dataout_ii12;	(* keep = "true" *) reg  [15 : 0] dataout_ii13;	(* keep = "true" *) reg  [15 : 0] dataout_ii14;	(* keep = "true" *) reg  [15 : 0] dataout_ii15;	(* 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;

不在话下。

 

转载地址:http://lmjaf.baihongyu.com/

你可能感兴趣的文章
guava学习--AsyncFunction
查看>>
guava学习--monitor
查看>>
guava学习--FutureCallback
查看>>
golang的数据类型之布尔类型
查看>>
golang的数据类型之字符类型
查看>>
安装MySQL
查看>>
golang简介
查看>>
golang的数据类型之整型类型
查看>>
安装go版本
查看>>
golang的数据类型之基本数据类型的默认值和转换
查看>>
golang的数据类型之浮点类型
查看>>
golang的数据类型之字符串类型
查看>>
标识符
查看>>
scala函数
查看>>
Scala集合
查看>>
defer
查看>>
init函数和匿名函数
查看>>
函数参数的传递方式和变量作用域
查看>>
字符串函数
查看>>
面向对象之方法1
查看>>