FC2カウンター FPGAの部屋 2007年01月14日
fc2ブログ

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

FPGAの部屋

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

Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション2

いやーVerilogのシミュレーションてなかなか大変なんですね。
今度はまたStart Simulation...でのようなエラーが出てしまった。
# ** Error: (vsim-3043)C:/Xilinx/verilog/src/unisims/FDDRRSE.v(39): Unresolved reference to 'glbl'.
# Region: /DDRtest_tb/DDRtest_inst/ddr_sdram_cont_inst/dcm_module_inst/genblk1[0]/DDRCLK_INST

え?glbl? こんなのまったく知らないし、こういうモジュールも作ったことない?
おかしいのでXilinxのアンサー・サーチで調べてみるとありました。
シミュレーション、UniSim、SimPrim - Verilog シミュレーションで glbl.v モジュールを使用する方法

それによると、

glbl.v モジュールは、デザインのグローバル セット/リセット信号とグローバル トライステート信号を接続します。 Verilog シミュレーションでデザインを正しくリセットするには、glbl.v モジュールをデザインと共にコンパイルし、読み込む必要があります。 glbl.v モジュールは、$XILINX/verilog/src/glbl.v にあります。


自分のデザインと一緒にコンパイルして読み込まなくてはいけないらしい。次に論理シミュレーションのやり方のアンサー・サーチを見つけた。
ModelSim (MXE, SE, PE) - How do I run a functional (behavioral) simulation with ModelSim stand-alone? (VHDL, Verilog)
それによるとsimulationのコマンド列の最後にwork.glblをつけなくてはいけないらしい。それはそうかglbl.vをコンパイルしただけで、どっかでインスタンシエーションしてないから。。。それでsimulationコマンドはこうなった。

vsim -t ps work.DDRtest_tb work.glbl


まだ他のエラーが出ているのでバグ取り続行中。いろいろ出てくるので楽しみながらやっています。技術論文のバグ取りも並行してやっているので歩みがのろい。
しかし、いろいろ楽しませてくれるぞ、Verilog。なんか面倒くさい。

2006.01.14追記:PicoBlaze本体(kcpsm3.v)をプロジェクトに追加するのを忘れていた。プロジェクトに入れたらやはりプリミティブが見つからないと言われた。やはり自分で作った以外のVerilogファイルは`uselib lib = unisims_ver を追加することが面倒だし、自動生成するVerilogファイルは直すのが面倒なためvsimのコマンドラインでライブラリを読むように追加するのが良いようだ。つまりこうなる。

vsim -t ps -L unisims_ver work.DDRtest_tb work.glbl



Verilogのバグ取りをしていると、インスタンシエーションしたサブモジュールから出力する信号をregで宣言してしまった。wireで宣言しなくてはいけないようだ。これはシミュレーション開始する時しかわからないのでエラーをクリックしてもエラーの番号に飛べない。これは不満だ。
VHDLならばコンポーネント宣言しているので宣言と違っていればすぐわかる。といってもVHDLはsignal宣言( variableもあるけど)しかないのでこういう間違いはない。Verilogもあらかじめ呼び出すサブモジュールのプロトタイプ宣言しても良いのじゃないだろうか?
  1. 2007年01月14日 05:19 |
  2. 入門Verilog
  3. | トラックバック:0
  4. | コメント:0