サーチ…


例のコンパイルと実行

ソースファイルと仮定hello_world.vとのトップレベルのモジュールhello_world 。このコードは、さまざまなシミュレータを使用して実行できます。ほとんどのシミュレータはコンパイルされたシミュレータです。コンパイルと実行には複数のステップが必要です。一般的に

  • 最初のステップは、Verilogデザインをコンパイルすることです。
  • 第2のステップは、設計を精緻化して最適化することです。
  • 3番目のステップは、シミュレーションを実行することです。

ステップの詳細はシミュレータによって異なる場合がありますが、全体的な考え方は変わりません。

Cadence Simulatorを使用した3つのステップのプロセス

 ncvlog hello_world.v
 ncelab hello_world
 ncsim hello_world
  • 最初のステップncvlogはファイルhello_world.vをコンパイルすることです
  • 2番目のステップであるncelabは、トップレベルのモジュールhello_worldを使用してコードを精緻化することです。
  • 3番目のステップncsimは、トップレベルのモジュールhello_worldを使用してシミュレーションを実行することです。
  • シミュレータは、コンパイルされ最適化されたすべてのコードをワークライブラリに生成します。 [INCA_libs - デフォルトライブラリ名]

Cadence Simulatorを使用してシングルステップ。

コマンドラインは、内部的に必要な3つのステップを呼び出します。これは、古い解釈済みシミュレータ実行スタイル(単一のコマンドライン)を模倣するためです。

irun hello_world.v   
or 
ncverilog hello_world.v

こんにちは世界

プログラムはHello World!を出力します。標準出力に出力します。

module HELLO_WORLD(); // module doesn't have input or outputs
  initial begin
    $display("Hello World");
    $finish; // stop the simulator
  end
endmodule

ModuleはVerilogの基本ビルディングブロックです。これは要素の集合を表し、モジュールとエンドモジュールのキーワードの間に囲まれています。ここでhello_worldは一番上の(そして唯一の)モジュールです。

初期ブロックはシミュレーションの開始時に実行されます。開始および終了は、初期ブロックの境界をマークするために使用される。 $displayはメッセージを標準出力に出力します。メッセージに「\ n」行を挿入して終了します。

このコードは合成することはできません。つまり、チップに入れることはできません。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow