今までは、Post-Routeシミュレーション(タイミング・シミュレーション)をしたことがなかったが、ある目的でModelSim XE3 Starterでやってみることにした。シミュレーションは論理シミュレーションをしてTiming Analyzerで静的にタイミングを確認していたし、面倒で不定値になることがある遅延シミュレーションをしなくても動作していた。それにModelSim Starter で遅延シミュレーションをすると簡単に1万行の制限を越えて極端に遅くなってしまう。
とりあえずテストベンチがすでにあるDDR SDRAMコントローラのバーストテストでやってみることにする。
まずはISEからやる方法はというと、Project NavigaterのSourceウインドウのSource for : でPost-Route Simulationを選択する。

Sourceウインドウにテストベンチ(DDRtest_tb) が表示されるので、これをクリックする。下のProcesses ウインドウにSimulate Post-Place & Route Model が表示されるのでそれをダブルクックする。これでタイミング・シミュレーションが出来るはず。

これでよいのだが、今回はModelSim単体で遅延シミュレーションをすることにした。Implement Design -> Place & Route の下にあるGenerate Post-Route Simukation Model をダブルクリックして、Post-Route Simukation Model を生成する。

そうするとISEのプロジェクトがあるフォルダのnetgen\par フォルダにDDRtest_timesim.v とddrtest_timesim.sdf が生成される。

これをModelSimのプロジェクトを作成したフォルダにコピーする。

DDRtest_timesim.v にddrtest_timesim.sdf へのパスを書いてある部分を修正する。
initial $sdf_annotate("netgen/par/ddrtest_timesim.sdf");
があるので、パスの部分を消去する。
initial $sdf_annotate("ddrtest_timesim.sdf");
DDRtest_timesim.v とglbl.v, DDRtest_tb.v, ddr.v をAdd to Project -> Existing File... でプロジェクトに加える。

ちなみにglbl.v はXilinxのunisim_ver, simprims_verなどのライブラリに入っているプリミティブをシミュレーションするときに必要なファイルだ。glbl.v は、プリミティブのグローバル セット/リセット信号とグローバル トライステート信号を接続する。詳しくは
”6537 - シミュレーション、UniSim、SimPrim - Verilog シミュレーションで glbl.v モジュールを使用する方法 ”を参照のこと。
DDRtest_tb.v はテストベンチ。ddr.v はマイクロン社のDDR SDRAMモデル。
これで役者がそろったのでタイミング・シミュレーションをすることが出来る。
”ModelSimでタイミング・シミュレーション(Post-Routeシミュレーション)2”に続く
- 2009年01月30日 20:53 |
- シミュレーション
-
| トラックバック:0
-
| コメント:2