2. ディジタルHDL記述のシミュレーション |
vlsi> setlic 2 (ディジタル設計ツール用の環境設定スクリプトなので覚えておこう) vlsi> cd ~/d/sample/verilog3/ vlsi> verilog +gui -s tb_ddsm2_16.v ddsm2_16.v &
以上で、波形表示ツールSimVisionが起動する。verilog (製品名はVerilog-XL)は、Verilog HDLシミュレータである。+gui オプションは、GUIツールを起動するオプションであり、自動的にSimVision のConsoleウインドウとDesign Browserウインドウが起動する。HDL記述の検証段階では、+gui をつけないで起動し、CUIベースで使用したほうが使い勝手がよい場合が多いが、シミュレーション結果を標準出力するコマンドをテストベンチに追加する必要があるので、ここでは、GUIモードを使用する。CUIベースでの方法は、4年生の集積回路設計及び演習で学ぶ。-s オプションは、verilogをインタラクティブ・モードで起動するオプションであり、シミュレーションの前に一時停止して、コマンド待ち状態となる。-s オプションをつけないと、バッチ処理モードとなり、シミュレーションを最後まで実行して、テストベンチのシステムタスク($で始まるコマンド)に応じて停止または終了する。
SimVision Design Browser
SimVisionのDesign Browser左側の欄にツリー構造が表示されているので、+マークをクリックして、階層を展開する。インスタンスのリストが表示され、さらに下の階層があれば、インスタンスに+マークが表示される。テスト対象のインスタンス名(プリントのとおりにテストベンチを打ち込んだ場合はuut)が表示されるので、これをクリックして選択する。選択したインスタンスに属するreg, wire, integerなどの変数や parameterが右側の欄に表示される。
インスタンスを選んで、回路ブロック図のような回路トレーサ・ボタンをクリックすると、その階層以下のHDLの記述内容がブロック図として表示される。ブロックをダブルクリックすると下の階層が表示される。まだ論理合成をしていないので、論理回路図は表示されない。 さらに、動作を調べたいインスタンスを選択した状態で、ディジタル波形のような波形ウインドウ・ボタンをクリックすると、Waveform という波形表示ウインドウが表示される。まだ波形は表示されていない。先ほど選んだインスタンスに含まれる信号や変数がWaveformウインドウに表示されていることを確認すること。
SimVision Waveform
シミュレーション開始ボタン(三角ボタン)をクリックすると、シミュレーションが実行され、波形が表示される。ツールバーの「=ボタン」は、波形全体の表示、「+−ボタン」は、時間軸の拡大、縮小ボタンである。適当に時間軸の長さを変えて、ディジタル波形が表示されることを確認すること。信号、変数名を右クリックして、Radix/Mnemonic を選択すると、表示される数値の基数を変更することができる。ここでは、HDL記述の細部は、分からなくても問題ない。ddsm2_16.v は、16bitディジタル-デルタ-シグマモジュレータである。用意したテストベンチでは、in = 8000H (2の補数の最小値)から7FFFH(2の補数の最大値)へと近づき、8000Hに戻る三角波を入力として与えている。outの波形は一見ランダム・パターンのように見えるが、入力値に比例して'1'の出現率が増加するパルス密度変調波形となるはずなので確認しよう。
[注意] SimVisionの終了は、メニューで[File] → [Exit SimVision] を選ぶ。ウインドウの閉じるボタンを使用しないこと(他のツールでも同じ)。
~/d/sample/verilog3/ ディレクトリの中には、下記のファイルが保存されているので、時間があれば内容を確認しよう。
回路モジュールのファイル名 | テストベンチのファイル名 | 内容 |
---|---|---|
fifo16.v | tb_fifo16.v | FIFOバッファ(一定速度でDACへデータを受け渡すメモリ) |
cic_ipf3.v | tb_cic_ipf3.v | 補間フィルタ(128倍オーバサンプリング3段構成) |
ddsm2_16.v | tb_ddsm2_16.v | 2次デルタ-シグマ・モジュレータ |
dco_tri16.v | tb_dco_tri16.v | 三角波を出力するディジタルオシレータ |
Copyright (C) 2009- Akio Kitagawa, Kanazawa Univ.