私は10進数の桁数を計算するためのVerilogコードを書いています。以下のコードでは、cの値をaと等しく初期化しています。 私はシミュレーション結果を正しく得ることができましたが、syntesiseできず、エラーは 'c = a'によるものです。エラーを取り除くにはどうすればよいですか?数字の数を計算する他のロジックはありますか?Forループin alwaysブロックの使用
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