0

我想在 Vivado HLS 中合成以下代码:

if (x == 1) regA = 1;

综合此代码后,相应的 VHDL 块如下所示:

if (not(x_synth = logic_0)) regA_synth = logic_1

这段代码的问题是,如果x不是逻辑 0 即即使它是UZ ,则regA被分配逻辑 1 。是否有任何其他方法可以重写原始if语句,以便以这样一种方式合成它,即如果x为逻辑 1,则仅将regA分配为逻辑 1?

4

1 回答 1

0

我不认为有办法做到这一点。您也许可以通过实验来实现这一点。

我确实同意应该通过U设计Z传播值,以保证它们在批处理模式模拟的输出中被捕获,但遗憾的是事实并非如此。由于这些值不应该来自您的 C 代码本身,您或许可以监视块的输入。我也不喜欢 Vivado HLS 将X值放在交易之间的总线上。这使得发现具有多个来源的电线变得更加困难。无论如何,我会将您的反馈提供给 Xilinx,以便他们改进该工具。

于 2018-05-11T13:02:25.823 回答