RTL プロジェクト
"RTL_counter.vtakprj" (/samples/altera/counter/)
を開いてみてください。
RTL ソースは、8ビットカウンタです。
テストベンチは、以下です。
Quartus の設定
New Project with Quartusで作成します。
Simulation は、カスタムVerilogを選択します。
合成対象の "counter.v" を選択します。
デバイスの選択は自由です。.(Cyclone,Stratix, Stratix2,Cyclone2)
最終的に次のようになります。.
設定が終わったので、合成です。
コンパイル完了後、次のようなファイルが生成されているはずです。
*.vo は、ゲートシミュレーション用のファイルです。
*.sdo は、遅延時間のファイルで、" $sdf_annotate(... )" で*.vo
ファイルが読み込みます。
合成が完了したので、ゲートシミュレーション用のプロジェクトを作成します。
ゲートシミュレーションプロジェクトは、SDFを読み込む関係で、*.vo ファイルの位置に作ります。.
合成したファイルをAddします。.
テストベンチをaddします。
プリミティブライブラリファイルをAddします。(ここでは、Cycloneです。.)
最終的にプロジェクトは、次のようになります。Save Projectするのを忘れないでください。
ゲートシミュレーション
Load Verilog Project "couter_gateprj", Go.
次のようなエラーが出ます。Power On時にFFは、0に初期化されるということでしょう。.
ゲートシミュレーションでは、遅延している様子がわかります。下図の場合、RTLでは、0nsだった遅延が5.3nsになっているということです。ただし、この遅延は、パターンによって変わることに注意してください。
ビットごとに見ると遅延がビットで違う様子が分かります。
SDF ファイルでは、遅延値がMIN/TYP/MAXの3種類あります。XILINXとAlteraに関しては、今のところ、全て同じ値なので、どれを選んでも同じですが、プロジェクト設定ー>SDFで、TYP を選択しておきましょう。。