4

次のような警告が表示されます。

常にブロックの感度リストに1つ以上の信号がありません。

always@(Address)begin
  ReadData = instructMem[Address];
end

この警告を取り除くにはどうすればよいですか?

4

4 に答える 4

6

Verilogでは、感度リストに信号名は必要ありません。@*構文を使用してalways、入力信号のいずれかが変更されるたびにブロックがトリガーされる必要があることを示します。

always @* begin 
    ReadData = instructMem[Address]; 
end 
于 2010-04-22T01:17:26.417 に答える
1

感度リストにInstructMemを追加します。

于 2010-04-22T00:06:42.727 に答える
1

ReadDataregではなくwireとして宣言してから、alwaysブロックをassignに置き換えます。

assign ReadData = instructMem[Address];
于 2010-05-01T22:38:28.520 に答える
0

instructMemの宣言がどのようになっているのかわかりません。とにかく、ReadData = instructMem [address]は、アドレスが選択ロジックとして扱われ、一般的な合成ツールを使用してマルチプレクサのデータラインとしてinstructMemとして扱われるマルチプレクサになります。これが変更されるたびにReadDataも変更されるため、感度リストにinstructMemを追加する必要があります。

私はIcarusを試しましたが、とにかく常に@(instructMemまたはaddress)のようなことはできません。ここで、instructMemにはreg [7:0] instructMem [255:0]->メモリを意味する宣言があります。

注:この方法でVerilogメモリを合成しようとしないでください。通常、メモリIPをインスタンス化して、それらのポートに接続することになっています。ベンダーは、そのような目的のためにメモリモデルを提供しています。

于 2010-05-26T14:34:34.697 に答える