Vivado综合 –  Vivado Synthesis是否支持非常数(动态)范围表达?-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Vivado综合 – Vivado Synthesis是否支持非常数(动态)范围表达?

描述

当Vivado Synthesis无法解析非常量(动态)范围表达式时,会显示类似于以下内容的错误。

错误:[Synth 8-561]范围表达式无法解析为常量。

错误:[Synth 8-27]不支持复杂分配。

Vivado Synthesis并不总是支持范围的两个边界上的变量。

目前,该工具仅解决了与静态值和一些非复杂动态范围相关的动态范围,以避免大型逻辑结构。

以下是支持内容的几个示例:

output_reg(v_high downto v_low)<= input_reg(v_high downto v_low);

output_reg(v_high downto v_high-15)<= input_reg(15 downto 0);

不支持这些结构:

if(data_reg(v_high-1 downto 0)= all_zeros(v_high-1 downto 0))然后

output_reg(63 downto v_low)<= input_reg(63-v_low downto 0);

data_reg(63 downto v_low)<=(其他=>’0’);

output_reg(v_high + v_low – 1 downto v_low)<= input_reg(v_high – 1 downto 0);

计划在2016.x中支持此构造:

output_reg(V_WIDTH * 2 -1 downto v_low * 8)<= input_reg(WIDTH * 2 – v_low * 8 -1 downto 0);

通常,对于动态范围的赋值,该工具将尝试确定范围是否达到相同的大小。通常,如果对两侧使用相同的索引,或者两侧都有一个索引的常量,则该工具将能够确定大小并综合设计。

但是,如果索引非常复杂,则该工具可能无法确定大小是否相同。我们建议不要尝试制作复杂的索引结构。

总的来说,如果您有动态范围表达式编码样式导致上述错误,请交叉检查避免这些复杂动态范围并用静态值替换它们的可行性。

请登录后发表评论

    没有回复内容