FC2カウンター FPGAの部屋 ISimハードウェア協調シミュレーション1(キャラクタ・ディスプレイ・コントローラ)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ISimハードウェア協調シミュレーション1(キャラクタ・ディスプレイ・コントローラ)

ツイッターで@Vengineer さんに教えてもらったISimハードウェア協調シミュレーションをやってみることにした。

まずは、ISimユーザーガイド(UG660 (v13.2) 2011 年 7 月 6 日) の139ページの”第 11 章 ISim ハードウェア協調シミュレーションチュートリアル”を参考にすることにした。

上のマニュアルから引用すると、

ISim のハードウェア協調シミュレーションでは、現段階でロジック ベースのデザイン向けモデルとハイブリッド デザイン向けのモデルの 2 つのモデルがサポートされています。


ということだ。
ロジックベースのモデルは、LUT、フリップフロップ、ブロック RAM、および DSP プリミティブのみで構成されていて、このままでISimハードウェア協調シミュレーションができるようだ。
ハイブリッド デザイン向けのモデルは、ハード IP ブロック、DCM/PLL、および MGTを使用したモデルで、この場合は、外部入力を使用したフリーランニングのクロックを使用するブロックと、ISimから供給されるエミュレートクロックを使用するブロックに分かれるため、カスタム制約ファイル (UCF) を供給する必要があるそうだ。(146ページ、ハイブリッド協調シミュレーション フロー)

使用できるボードも決まっているようだ。Spartan-6では、SP605、SP601。Spartan-3Aも”ザイリンクス Spartan-3A スターター キット”がサポートに入っているが、後から述べるProject NavigatorのSource PropertiesのHarware Co-Simulation Properties のTarget Board for Hardware Co-Simulation から選べなかった。これは、サポートしていると言っても、コマンドラインからやる必要があるのかもしれない。
なお、ボード サポート ファイルは結構簡単に書くことができるようだ。、ISimユーザーガイド(UG660 (v13.2) 2011 年 7 月 6 日)の150ページ、”ボード サポート ファイル”参照。

さてそれでは、SP605のキャラクタ・ディスプレイ・コントローラで、ISimハードウェア協調シミュレーションを初めて見ようと思う。(ISE13.2使用)
SP605のキャラクタ・ディスプレイ・コントローラのプロジェクトは下のような構成になっている。
ISim_Co_Sim_1_110712.png

テストベンチのあるのは、ピンクの四角で囲ったCharDispCtrlerTest_SP605.v とCharDispCtrler.v だ。そのうちのCharDispCtrlerTest_SP605.v は下にDCMのインスタンスがあって、ハイブリッド デザイン向けのモデルに分類されてしまうはずで、UCFを用意しないとハードウェア協調シミュレーションを行うことは出来ないはずだ。
CharDispCtrler.v の方はロジックのみで、ロジック ベースのデザイン向けモデルとなり、そのままハードウェア協調シミュレーションを行うことができるはずだ。

1.DesignウインドウでView:をSimulation に変更する。

2.CharDispCtrler_tb の下のUUT - CharDispCtler を選択して、左のEdit Source Properties アイコンを選択する。
ISim_Co_Sim_2_110712.png

3.Source Properties ダイアログが開く。CategoryペインからHardware Co-Simulation を選択する。Enable Hardware Co-Simulation にチェックを入れる。Clock Portにclkを入力し、Target Board for Hardware Co-Simulation でSP605(JTAG) を選択する。OKボタンをクリックする。
ISim_Co_Sim_3_110712.png

4.UUT - CharDispCtler にアイコンが表示される。シミュレーショントップのCharDispCtrler_tbを選択する。ProcessesウインドウからSimulate Behavioral Model をダブルクリックして、シミュレーションをスタートする。
ISim_Co_Sim_4_110712.png

5.インプリメントを行っているようなので、時間がかかる。その間にSP605の電源をONする。

6.20msのシミュレーションに約8分かかった。
ISim_Co_Sim_6_110712.png

restartして、runすることもできる。普通にシミュレーションをしている感じだ。
SP605の電源をOFFしたら、runしても波形が表示されなかったので、ハードウェアを使用しているということがわかる。

7.Enable Hardware Co-Simulation のチェックを外して、ソフトウェアのシミュレーションを行った。run 20ms でかかった時間は17秒だった。
ISim_Co_Sim_7_110712.png

相当差が出てしまったが、今回は簡単なロジックだったので、JTAG通信のオーバーヘッドがボトルネックになっていると思われる。今度はもう少し複雑なシミュレーションをしてみようと思う。

なお、DCMをインスタンスしているCharDispCtrlerTest_SP605の Enable Hardware Co-Simulation にチェックを入れて、ISimハードウェア協調シミュレーションをONして、CharDispCtrlerTest_SP605_tbを選択して、Simulate Behavioral Modelをダブルクリックしてみた。
やはり、エラーが出てシミュレーションができなかった。
ISim_Co_Sim_8_110712.png

これは、ハイブリッド デザイン向けのモデルでシミュレーションする必要がありそうだ。
  1. 2011年07月12日 05:55 |
  2. ISim
  3. | トラックバック:0
  4. | コメント:2

コメント

H/W アクセラレータ みたいな使い方 と感じました
1msあたり24sec はなかなか早いと思います
  1. 2011/07/12(火) 10:03:16 |
  2. URL |
  3. アプロ #-
  4. [ 編集 ]

とても簡単な回路だったのでソフトウェアシミュレーションの方が速いという結果になりました。もっと、時間のかかるシミュレーションで確かめてみたいです。
  1. 2011/07/12(火) 18:30:17 |
  2. URL |
  3. #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/1850-8003d071
この記事にトラックバックする(FC2ブログユーザー)