【原创】vivado之信号保持
2赞
发表于 2015/12/19 15:53:41
阅读(8905)
有时候,我们会发现,一个设计电路的某些信号在vivado中进行综合实现之后被优化掉了,导致不能在线调试这些信号。那怎样才能将这些信号在综合实现之后不被优化掉呢?下面举个简单的例子就清楚了。
假设设计实现的是与门和或门的功能,而或门的结果没有作为引脚输出,电路实现代码如下所示:
module logic_gate ( input dina, input dinb, output and_out ); //--------------------- wire or_out; assign and_out = dina & dinb; assign or_out = dina | dinb; endmodule
综合之后,网表和原理图分别如图1和图2所示。
图1 or_and信号被优化
图2 或门被优化掉
从网表和原理图中可以看出,或门已经被优化掉了。所以我们不能在线调试或门的功能。
有什么办法可以避免或门被优化呢?方法很简单,在或门信号or_out定义之前加上(*keep = "true"*)就OK了。设计代码修改之后如下所示:
module logic_gate ( input dina, input dinb, output and_out ); //--------------------- (*keep = "true"*)wire or_out; assign and_out = dina & dinb; assign or_out = dina | dinb; endmodule
综合之后,网表和原理图分别如图3和图4所示。从网表和原理图中可以看出,或门(或or_out信号)保持,从而可以对或门进行在线调试。
图3 or_out信号保持
图4 或门保持