0

私はいくつかの Verilog チュートリアルを調べ、トピックを数回見直しました。概念が最初に導入されて以来、いくつかの質問が頭に残っていました。誰かがそれらに光を当てることができれば、それは非常に役に立ちます.

  1. ネットの強さの目的は何ですか?
  2. 多くの場合、例ではパラメーターの正確な名前がレジスターの説明にも使用されています。例えば:

    module x (…,in1,…);
    …
    input in1;
    reg [7:0] in1; 
    …
    endmodule 
    

    これは入力ポートをデータのタイプとして宣言していますか、それとも別々ですか? 前者が真である場合、他にどのような種類の量 (整数、スカラーなど) でこれを行うことができますか? 後者の場合、モジュール内で「in1」と言うとき、どの項目を参照していますか?

  3. シミュレーション開始時の最初のブロックはすべて「並列」で実行されますが、ブロック内にいる場合、命令は連続して実行されます。使用しているシミュレーション ツールは、シリアルに実行される命令がどのような順序で実行されるかを決定しますか? たとえば、最初のブロックが 2 つある場合、最初に 1 つすべてを実行するか、前後にジャンプするか?

4 .シミュレーションの初期値が X なのはなぜですか? Verilog の仕事が実際の生活を表現することである場合、疑似ランダム エンジンがなく、最初にすべての値に対して同じランダムなビット順序を選択しないのはなぜですか? 固有のケース ステートメントの警告に関する多くの問題に遭遇しました。これは設計上の欠陥か、少なくともシステム Verilog と Verilog の間の不一致のようです。

4

2 に答える 2

0
  1. ネット上に複数のドライバーを配置して、結果の信号の値を決定できます。LRM の 7.10 を参照
  2. それらはすべて同じですin1-非常に冗長です。input reg[7:0] in1V-2001では、代わりにポート リストに1 つ書き込むことができます。これは、ポートを介して接続するものすべてに対して実行できます。
  3. initial は常に前に実行されることが保証されておらず、デザイン内の initial/always ブロック間の実行順序は保証されていないことに注意してください。実際には、シミュレーターはブロックを選択し、一時停止ポイント (タイミング制御) に到達するまでそれを実行します。その時点で、シミュレーターは別のイニシャルまたは常にスケジュールし、一時停止するまでそれを実行します。
  4. これは本質的に哲学ですが、なぜ何かに初期ランダム値を割り当てたいのでしょうか? これは、基本的に「不明」(X) (ネットの場合は Z) の意味です。開始時にすべてが X または Z である場合、それは初期化されておらず、何かを行うまでそのままであることがわかります。ツールが最初のランダムな有効な値をすべて与えた場合、それを知ることはできません。
于 2013-06-05T15:03:06.993 に答える
0
  1. 競合強度の場合、既知の値に解決するのに役立ちます。このようなデザインを最後に見たのは10年前です。それでも、それは悪い設計慣行であると考えられていました.

  2. EMLが言うように。

  3. いいえ、いいえ。初期ブロックなどの手続きブロック内のステートメントは、同じタイムスロット内で順次実行されます。初期ブロックは時間 0 で実行を開始します。シミュレーターは、verilog イベント キューに従って、初期ブロック内に表示される順序ですべてのステートメントを実行します。変数は、イベント キューによって指定されたスケジュールに従って更新されます。これらはすべて標準 (LRM 8.10) の一部です。Verilog イベント キュー、およびタイムスロットとシミュレーション時間の概念に慣れていない場合は、Cliff Cumming の論文が参考になります。シミュレーターがインターリーブされたさまざまな初期ブロックからステートメントを実行するか、他の方法で実行するかは問題ではありません。シミュレーション時間は進まず、変数はイベント キューに基づいて更新されるだけです。

    標準ではないのは、シミュレーターがどの初期ブロックから開始するかです。これは、変数が 1 つの初期ブロックで割り当てられ、同じイベント キュー内の他の手続きブロックで使用される場合、シミュレーターへの依存関係を作成するため、重要になります。上記で参照されているカミングの論文は、このシナリオを非常にうまく説明しています。

  4. それは、ネットの未解決の状態だけではありません。しかし、予測可能な状態からシミュレーションを開始することについても。したがって、設計への入力の解決された状態をランダムに選択しても、シミュレーターを毎回同じポイントから開始するという予測可能性は得られません。EML の提案に加えて、SystemVerilog で提供されている 2 状態データ型を使用できます。もちろん、これらは合成可能ではありません。ハードウェアを正確にモデル化するには、入力が不明な場合に出力状態を不明にする必要があるためです。

于 2013-07-31T21:22:59.307 に答える