0

私は次のコードを使用しています。

    `timescale 1ns / 1ps
module program_counter
    (
    input        clock,
    input       reset,
    input [31:0]     in,
    output reg [31:0] out
    );
        initial 
            begin
                out <= 32'b00000000000000000000000000000001;
            end
    always @(negedge clock)
        begin
            if(reset)
                begin
                    out <= 32'b00000000000000000000000000000001;
                end
            else
                begin
                    out <= in;
                end
        end
endmodule

示されているようにエラーを示しています

「エラー:0 ps:反復制限10000に達しました。ファイル「C:/dewesh/latest_bkup/Program_counter.v」の12行目で信号を安定した値に解決できないため、シミュレーションを時間内に進めることができない場合に、ゼロ遅延発振が検出された可能性があります。 。現在のシミュレーション時間を超えて進むには、このコードを修正してください。」

何が問題なのかわかりません。

4

1 に答える 1

0

問題は、初期の最初の行がゼロ遅延であることです。これは時間 0 で駆動する必要があります。初期 (#1) に遅延を設定してみてください。

また、1 つのモジュールに合成可能なコードと合成できないコードを混在させているようです。これはおそらくあなたが望むものではありません。

このモジュールから最初のブロックを取り除き、適切な遅延で、タイム スケールを持ち、このモジュールへの入力を駆動するテスト ベンチでこのモジュールをインスタンス化します。

于 2012-11-01T07:22:10.520 に答える