FC2カウンター FPGAの部屋 論理シミュレーション時のバグ
FC2ブログ

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

FPGAの部屋

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

論理シミュレーション時のバグ

”Chipscopeのクロックの配置について”でバグがあってChipscopeを入れてみたのだが、シミュレーション時のVHDL記述に問題があることがわかった。
論理シミュレーション時には、検証回路(FPGA)をテストベンチでSDRAMモデルやその他の外部回路と接続している。原因としては、SDRAMモデル(簡易モデル)からの出力を0ディレイで検証回路に結んだのが原因だったようだ。
論理シミュレーション時に最初のSDRAMのデータを受けるフリップフロップが、受けたデータをそのまま(1クロック遅延しないで)出力するようになってしまっていた。
検証回路をつないで論理シミュレーションした時に、あれ?1クロック早いんだっけとよくも考えないで1クロックディレイしてしまったので、インプリメント後のFPGAの動作は1クロック遅れてしまっていた。
原因としては、クロックはDCMを使っているので、デルタ遅延が大きいのかも?
データはそのまま0ディレイで入れちゃったので、データが出たクロックでラッチしてしまったのかな?
本当はテストベンチの方に遅延を入れるのだが、書き直すのが面度いので、SDRAMのデータを受けるフリップフロップに入れてしまった。こんな感じ。
data_delay <= data
-- pragma translate_off
after 100 ps
-- pragma translate_on
;

よくわからないが、入力データは遅延しておいた方がいいようだ。
でも同じようなテストベンチで大丈夫なのもある。何か、アドバイスがあったらお願いします。

2006/02/10追記:データとクロックが同時に変化するようだと上のような現象になることがあるそうである。データをクロックより明示的に少し遅らせなければならないそうである。
Xilinxのアンサーはここ
  1. 2005年12月27日 14:58 |
  2. シミュレーション
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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