Я пытаюсь разработать периферийное устройство AXI_master с помощью vivado. Я использовал генератор периферийных устройств axi в меню vivado и изменил сгенерированный код 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] превышен лимит циклов (65538)
Я попытался увеличить лимит циклов в vivado с помощью следующей команды tcl:
set_param synth.elaboration.rodinMoreOptions "rt::set_parameter max_loop_limit <X>"
Как объяснено здесь, но vivado синтезирует с бесконечным временем и никогда не заканчивает. Вы знаете, как решить эту проблему?