1

サイズがわからない場合、SystemVerilogのレジスタを無効にするにはどうすればよいですか?たとえば、私が持っている場合:

reg [DATA_WIDTH-1:0] data_stack;

モジュールにいくつかのパラメータDATA_WIDTHが与えられています。レジスタにゼロを割り当てることは可能data_stackですか?

ゼロに似たものを初期化するだけで十分であることに注意してください。そうすればreg、ビット単位で2つの間を実行し、nullifyを実行できますdata_stack

4

3 に答える 3

5

IEEEStd1800-2009はゴールデンリファレンスです。以下は、すべてのビットを0に設定します。

data_stack = '0;

「整数リテラル定数」のセクションを参照してください。

サイズ変更されていないシングルビット値は、シングルビット値の前にアポストロフィ(')を付けることで指定できますが、基本指定子は指定しません。サイズ変更されていない値のすべてのビットは、指定されたビットの値に設定されます。自己決定のコンテキストでは、サイズ設定されていないシングルビット値の幅は1ビットであり、値は符号なしとして扱われます。

于 2013-03-14T19:02:16.860 に答える
4

data_stack私があなたの質問を理解しているなら、あなたは?と同じ幅でゼロ値を生成する方法を知りたいです。

その場合は、レプリケーション演算子を使用してください。

data_stack = {DATA_WIDTH{1'b0}};

DATA_WIDTHこれにより、ゼロの数が生成されます。

于 2013-03-14T19:02:37.133 に答える
1

nullifyではなく、初期化レジスタを検索した方が、検索結果が良くなると思います。

これがテストベンチ変数の場合は、次のようにします。

initial begin
  data_stack = {DATA_WIDTH{1'b0}};
end

フリップフロップで使用する場合は、リセットする必要があります。

always @(posedge clk or negedge reset_n) begin
  if (~reset_n) begin
    data_stack <= {DATA_WIDTH{1'b0}};
  end
  else begin
    //<=nextvalue;
  end
end
于 2013-03-14T19:08:31.220 に答える