RTLシミュレーション例として、8ビットのカウンタ(モジュール名counter)を設計してみましょう。counterというフォルダを作ってその下で作業をするものとします。下記は8ビットカウンタソース(counter.v)です。これは、論理合成対象となります。endmodule次はテストベンチ(counter_test.v)です。別ファイルで記述します。endmodule注意する点は次の3つです。テストベンチと論理合成対象ハードウェアは、後々のためにファイルを分けます。テストベンチと論理合成対象ハードウェアの接続は、名前結合としてください。Quartusは順番結合だとうまく接続してくれないようです。テストベンチのタイムスケールは、xx/1psとします。これも後々のためです。以上二つのファイルでVeritakプロジェクトを構成し、動作が期待どおりに動くか確認します。CLOCKでインクリメント動作..うまく動いているようです。これで、RTLシミュレーションはおしまいです。Quartusによる論理合成まずプロジェクトを作成します。Wizardを起動します。先ほど作業したcounterフォルダを指定します。フォルダ名を合成対象のTOPモジュールにしておいたので入力の手間が省けます。次に合成対象のcounter.vを指定します。ページ4,5では、デバイスを指定します。ここでは、DWM誌の付録のデバイスを選択しました。以上の設定をまとめるとページ6になります。Compilationでコンパイルがスタートします。Fileという二つのファイルが生成されています。これが、各々ゲートレベル回路と、レイアウト後のバックアノテーションファイル(遅延情報)になります。Veritakによるポストレイアウト遅延ゲートシミュレーションRTLシミュレーションとは別にVeritakのプロジェクトを作成する必要があります。File位置に作成してください。(qualtas\eda\sim_lib下にあります。プロジェクトと同じドライブにないときは、コピーしてプロジェクトファイルと同じドライブ下としてください。Veritakプロジェクトでは、counter.sdo以外の上記ファイルを指定します。counter.sdoは、counter.voの中で$sdf_annotateで自動的に呼び出されるので指定する必要はありません。Projectを行います。Projectを行います。Project、Goで、シミュレーションが走ります。合成したH/Wからの信号で、counter_out_testは、RTLの記述です。両者一致するはずなのですが、時刻10nsでコンペアエラーが発生しています。CLOCKが入る前にxxのところ00ですから、CYCLONEは、REGを電源投入後00に初期化するということなのでしょう。合成した信号が遅れているのが分かると思います。図の黒赤カーソル間では、6698ps遅れています。counter_outは、REGの出力ですから、そんなにハザードはないかなと思いきや、3->4で発生している様子がわかります。以上で基本的なポストレイアウト遅延ゲートシミュレーションの仕方は終わりです。