저는 10 진수의 자릿수를 계산하기위한 Verilog 코드를 작성하고 있습니다. 아래의 코드에서 나는 c의 값을 a와 같도록 초기화했다. 시뮬레이션 결과를 올바르게 얻을 수 있었지만 syntesise 할 수 없었고 오류는 '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 소프트웨어를 사용하고 있으며 왜 코드를 합성하기 위해 테스트 벤치가 필요합니까? 주로 시뮬레이션 용입니다. 맞습니까? –
질문에 적절하게 답변하지 않았다는 데 동의합니다. 그러나 FPGA/합성 피드백 디버깅에 소요되는 시간을 줄이기 위해 항상 RTL을 시뮬레이트해야한다고 지적하고 싶습니다. – Hida