systemverilog には、次のように使用できるさまざまなデータ型があります。
reg [31:0] data;
logic [31:0] data;
bit [31:0] data;
それらの3つはどのように異なりますか?
systemverilog には、次のように使用できるさまざまなデータ型があります。
reg [31:0] data;
logic [31:0] data;
bit [31:0] data;
それらの3つはどのように異なりますか?
reg
そしてwire
元のタイプでした。ワイヤは常に割り当てられ、レジスタは特定のポイントで評価されます。ここでの利点は、シミュレータが最適化を行うことです。
wire w_data;
assign w_data = y;
// Same function as above using reg
reg r_data;
always @*
r_data = y ;
Verilog を学習する際によくある間違いは、a reg 型がハードウェアのレジスタを意味すると想定することです。シミュレーターの以前の最適化は、その使用状況のコンテキストを通じて行うことができます。
logic
これは、ワイヤーとレッグの代わりに使用できるものを紹介します。
logic w_data;
assign w_data = y;
// Same function as above using reg
logic r_data;
always @*
r_data = y ;
0 または 1 の x または z のない 2 つの状態のみを保持できる型bit
および型も作成されています。を意味します。これらのタイプを使用すると速度がわずかに向上しますが、初期化されていない値や重大なリセットが検証で見落とされる可能性があるため、RTL では使用しないことをお勧めします。byte
byte
bit [7:0]
との使用はbit
、byte
テストベンチ コンポーネントでより一般的ですが、データの破損と回復を刺激するために x を駆動する必要がある場合、問題が発生する可能性があります。
アップデート
これを書いている時点ではlogic
、トライステートには使用できないという印象を受けていましたが、これに基づいた元の論文を見つけることができません。今後の更新、コメント、または編集が行われるまで、ロジックを使用してトライステート ラインを作成することはできないという私の主張を取り消します。
tri
トライステート ラインを明示的に定義するために、タイプが追加されました。のプロパティにwire
基づいています。logic
のプロパティに基づいていますreg
。
tri t_data;
assign t_data = (drive) ? y : 1'bz ;
後方互換性 Verilog をサポートする必要がなくなった場合は、 and の使用logic
に切り替えることをお勧めしtri
ます。を使用するlogic
と、リファクタリングが容易になりtri
、トライステート ラインの設計意図が反映されます。
名前の選択はreg
間違いであることが判明しました。代わりに、割り当ての実行方法に基づいてレジスタの存在が推測されるためです。このため、 の使用は、実際には同じ型である をreg
支持して、本質的に推奨されません。logic
logic
1 ビット、4 状態のデータ型です
bit
よりも高速にシミュレートできる 1 ビット、2 状態のデータ型です。logic
logic
が としても宣言されている場合、wire
複数のドライバーをサポートする追加機能があります。デフォルトwire
では と同等であることに注意してくださいwire logic
。wire
)tri
が最適です。実際には、RTLreg
では通常、 、 またはlogic
、 または で宣言するかどうかは問題ではありませんwire
。ただし、4 状態型の明示的な宣言を行う必要がある場合 (そうしない場合とは対照的に)、通常はそれを選択する必要がありますlogic
。これは、言語が意図していることだからです。
関連記事:
コメントを追加できないので、新しい回答のように見えるがそうではないものを書く必要があります。はぁ!
@ e19293001、@ Morgan はlogic
とは異なり、4 状態の変数を定義しているbit
ため、logic
変数を使用して保存1'bz
できるため、次のコードは有効でコンパイルされます。
logic t_data;
assign t_data = (drive) ? y : 1'bz ;
しかし、デザインの意図を反映するには、これらの場合tri
の代わりに使用する必要があることに同意します (ただし、 /の代わりにlogic
使用する人はあまり見かけません)。tri
logic
wire