Я пишу код Verilog для вычисления количества цифр в десятичном разряде. В приведенном ниже коде я инициализировал значение c, равное a. Я смог правильно получить результаты моделирования, но не смог синхронизировать, и ошибка вызвана «c = a». Как я могу избавиться от ошибки? Есть ли другая логика для вычисления числа цифр?Использование цикла For всегда в блоке
Error: [Synth 8-3380] loop condition does not converge after 2000 iterations
Код: -
module numdigits(a,b);
parameter n=100;
input [0:n-1] a;
output reg [0:n-1]b; //THIS MODULE COUNTS THE NUMBER OF DIGITS IN DECIMAL FORM
reg [0:n-1] d,c;
always @(*)
begin
d=0;
for(c=a;c>0;c=c/10)
begin
d=d+1;
end
b=d;
end
endmodule
У меня нет проблем с вашим модулем. Возможно, это тестовый тест или проблема с инструментом? Смотрите: https://www.edaplayground.com/x/24e3 – Hida
@Hida Я использую программное обеспечение vivado и почему нам нужен тестовый стенд для синтеза кода? Это в основном для симуляции, не так ли? –
Я согласен, что не ответил на ваш вопрос. Однако я хотел бы отметить, что вы всегда должны имитировать RTL, чтобы сократить время отладки на FPGA/синтеза обратной связи. – Hida