-
Notifications
You must be signed in to change notification settings - Fork 101
jp synth simulation
Vivadoで合成した結果をもとに、QuestaSimでシミュレーションを行うことができます。 機能シミュレーションよりも実際の振る舞いに近いシミュレーションを行うことができるので、 機能シミュレーションと実機の動作が食い違う場合のデバッグに利用できます。
Vivado の初期設定を元に初期設定を行っておく
- 作成した.svソースコード群をSynplifyで合成してネットリスト(.vm)を作成する
- ネットリストをVivadoで合成してPost-synthesisシミュレーションモデル(.v)を作成する
- シミュレーションモデルをQuestaSimでシミュレーションする
これをバグが直るまで繰り返す
Vivadoの合成では、以下の2つのステップを順に行います。
- Synthesis
- Implementation (Place and Route)
どのステップまで終了したかに応じて、以下の2種類のモデルが存在します。
- Post Synthesis Simulation Model
- Post Timing Simulation Model
Post Timing Simulation Model は回路遅延を反映したモデルになっています。
これを使用すれば、タイミング付き検証を行うことができますが,まだやったことはありません。
(TODO: Post Timing Simulation Modelを使ったシミュレーション方法の追記)
Getting started か Built from scratch のどちらか1つだけで十分です
-
"$(RSD_ROOT)/Processor/Project/Synplify/"内にシミュレーションに使いたいプログラムのcode.hexを置く.
-
Synplifyで"$(RSD_ROOT)/Processor/Project/Synplify/proj_1.prj"を開く
-
[Project Files]内の"$(TARGET_BOARD)_post_synthesis"を選択して[Run]でコンパイル/合成
-
"$(RSD_ROOT)/Processor/Project/Synplify/"内にシミュレーションに使いたいプログラムのcode.hexを置く.
-
プロジェクトを作成し、ソースファイルを追加
- .svファイルを追加(Src/Verification/以下は除く)
- 先ほど設置した code.hex を追加
-
[Add Implementation]をクリックして Implementation Options を設定
- FPGAの型番情報を指定
- トップモジュールにMainを指定。モジュール・パラメータも適宜指定
- Implementation Results タブでImplementation Nameに"$(TARGET_BOARD)_post_synthesis"と設定
- Implementation Results タブでResult Base Nameに"rsd"と設定
-
画面下部のTCLコンソールで"set_option -hdl_define -set RSD_POST_SYNTHESIS"を入力する
-
[Project Files]内の"$(TARGET_BOARD)_post_synthesis"を選択して[Run]でコンパイル/合成
-
"$(RSD_ROOT)/Processor/Project/Synplify/$(TARGET_BOARD)_post_synthesis/"内に、RSDのネットリスト (rsd.vm) ができていることを確認する.
-
Cygwin上で"$(RSD_ROOT)/Processor/Src"にcdして"make post-synthesis"でPost-synthesisシミュレーションモデルの作成
-
Post-synthesisシミュレーションモデル "$(RSD_ROOT)/Processor/Project/Vivado/$(TARGET_BOARD)/Main_post_synthesis.v"が作成されていることを確認する
Vivado が生成した Verilog ファイルの中には、合成済のトップモジュールが定義されています。 この Verilog ファイルは、FPGA の各資源(LUTなど)に相当するモジュールをインスタンシエートしてそれらを接続するという形で記述されており、 算術演算子や論理演算子は一切使われていません。
この合成済のトップモジュールをインスタンシエートするテストベンチを書けば、通常通りQuestaSimでシミュレーションを行うことができます。 FPGA の資源というレベルで動作をシミュレーションするため、 機能シミュレーションよりも実際の振る舞いに近いシミュレーションを行うことができます。
$(RSD_ROOT)/Processor/Src/Makefileには、合成結果をシミュレーションするためのコマンドが存在します。
コマンド名 | 動作 | 備考 |
---|---|---|
post-synthesis | Post Synthesis Simulation Model を使ってテストをコンパイルします | あらかじめ上記の手順でPost Synthesis Simulation Modelを作成しておく必要があります |
post-synthesis-run | Post Synthesis Simulation Model を使ってテストを実行します | あらかじめPost Synthesis Simulation Modelをコンパイルしておく必要があります |
post-synthesis-kanata | Post Synthesis Simulation Model を使ってテストを実行し、Kanata形式のログを出力します | あらかじめPost Synthesis Simulation Modelをコンパイルしておく必要があります |