ソース コードを行ごとにステップ実行し、低周波数の波形がどのように選択されているか、DDC Compiler 出力が正しいかどうかを確認します。
-
Vivado シミュレータのツールバー メニューで Step ボタン をクリックします。
シミュレーションは次の実行可能な行まで進みます。この場合は、別のソース ファイルに進みます。fsm.vdh ファイルはテキスト エディターで開きます。前回と同じ配置ですべてのウィンドウを表示させるため、テキスト エディターのウィンドウを別の場所に移動させる必要がある場合があります。
注記: Tcl プロンプトでstep
コマンドを入力することもできます。 -
sinegen.vhd の 144 行目にコードが戻るまで、ステップ実行を続けます。
これで回路全体をステップ実行できました。波形ウィンドウで、
sel
は 0 ですが、sine_l
は低周波数の正弦波として出力の sine に割り当てられている点に注目してください。また、sine_l
は初期化されていないままの状態です。 - 次のように、デバッグ目的で [Tcl Console] ウィンドウに
add_force
コマンドを入力し、sine_l
の値を初期化します。add_force /testbench/dut/U_SINEGEN/sine_l 0110011011001010
このコマンドにより、
sine_l
の値が特定の既知のコンディションになります。必要であれば、さらに徹底して信号を実行するため、値の繰り返しセットを作成することも可能です。add_force
の詳細は、 『Vivado Design Suite ユーザー ガイド: ロジック シミュレーション』 (UG900) を参照してください。 -
Run All ボタン をクリックしてシミュレーションを続けます。
波形ウィンドウで、
sine_l[15:0]
の値が add_force コマンドで指定されている値に設定されていること、また、sel
の値が 0 のままなので、sine_l[15:0] の値が出力信号sine[19:0]
に割り当てられていることに注目してください。HDL ソース ファイルで
sine_l
信号をトレースし、sine_l
の入力を特定します。 - テキスト エディターで右クリックして Find in files を選択し、
sine_l
を検索します。 - 次の図のように、Match whole word および Enabled design sources チェック ボックスをオンにし、Find をクリックします。
[Find in Files] の検索結果は Vivado IDE の下部に表示され、sinegen.vhd ファイルで検出された
sine_l
がすべて表示されます。 -
sinegen.vhd ファイルでの検索結果を表示させるため、表示スペースを広げます。
111 行目にある 2 番目の検索結果を見ると、デザインに問題があることがわかります。sinegen.vhd ファイルの 111 行目で、
m_axis_data_tdata_sine_low
信号がsine_l
に割り当てられています。111 行目はコメントアウトされているので、sine_l
信号は低周波数の DDS Compiler 出力には接続されていないか、または、ほかのどの入力にも接続されていません。 - sinegen.vhd ファイルの 111 行目のコメントアウトを取り消し、Save File ボタン をクリックします。
- [Tcl Console] ウィンドウで
sine_l
:remove_forces -all
を実行して、強制を解除します。