gpt4 book ai didi

vhdl - vivado 生成的函数 clogb2() 无法合成,出现循环限制错误

转载 作者:行者123 更新时间:2023-12-02 22:19:11 28 4
gpt4 key购买 nike

我正在尝试使用 vivado 设计 AXI_master 外设。我使用了vivado菜单中的axi外设生成器并修改了生成的vhdl代码。

在 vhdl 代码中,有一个函数 clogb2 使用以下代码声明:

function clogb2 (bit_depth : integer) return integer is
variable depth : integer := bit_depth;
variable count : integer := 1;
begin
for clogb2 in 1 to bit_depth loop -- Works for up to 32 bit integers
if (bit_depth <= 2) then
count := 1;
else
if(depth <= 1) then
count := count;
else
depth := depth / 2;
count := count + 1;
end if;
end if;
end loop;
return(count);
end;

这在模拟(GHDL)中有效,但在综合中失败并出现错误:

[Synth 8-403] loop limit (65538) exceeded

我尝试使用以下 tcl 命令增加 vivado 中的循环限制:

set_param synth.elaboration.rodinMoreOptions "rt::set_parameter max_loop_limit <X>"

如上所述here ,但 vivado 的合成时间无限长,永远不会完成。你知道如何解决这个问题吗?

最佳答案

您也可以尝试不同的路径。虽然逻辑上不支持浮点(尽管支持正在增加),但允许进行内部计算等。 (至少由 Xilinx 和 Altera/Intel 提供)。

试试这个:

use ieee.math_real.all;

function ceillog2(input : positive) return natural is
begin
return integer(ceil(log2(real(input))));
end function;

关于vhdl - vivado 生成的函数 clogb2() 无法合成,出现循环限制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com