crazybird

【原创】vivado之信号保持

2
阅读(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所示。

网表被优化.png

图1 or_and信号被优化

或门被优化.png

图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信号)保持,从而可以对或门进行在线调试。

网表没有被优化.png

图3 or_out信号保持

原理图没有被优化.png

图4 或门保持

Baidu
map