シミュレーション

このページでは、前頁で作成した論理をシミュレートする手順について解説します。

テストベクターの作成

論理をシミュレートする際に入力データとなるのがテストベクターです。QuartusIIでシミュレーションする際も、まず最初に入力信号が時間とともにどのように変化するかを記述する“Vector Waveform File”を作成します。

新たにファイルを作成する際は、FileのプルダウンメニューからNewを選択します。こうして現れるポップアップメニューで、Vector Waveform Fileを選択してOKを押します。


この操作により、波形データ作成画面が表示されます。これにまず、信号線を貼り付ける必要があります。

QuartusIIにはNode Finderというユーティリティがあり、必要な信号線を探し出してくれます。まずこれを使って、波形データ作成画面に信号線を貼り付けます。

Node Finderを起動するには、プルダウンメニューのViewからUtility Windowsを選択し、Node Finderをクリックします。


Node Finderのウィンドウの上部の窓には探すべきノードの名前(ワイルドカード“*”で可)、検索対象とする信号線の種類、検索範囲を指定します。通常はデフォルトのままでかまいません。

Listボタンを押すと検索が開始され、下のウィンドウに検出されたノードがリストアップされます。


Node Finderの検出リストにある名前をマウスでつかんで、波形編集領域のName欄に移動します。移動する信号線は、個々のビットに付けられた名前ではなく、幅を持つ信号線名、ina, inb, resultとします。


波形エディタは、単一の信号線の波形はグラフ表示し、幅を持つ信号線に対しては数値で表示します。数値の表現はデフォルトはビット表現ですが、16進表示や符号付、符号なしの10進表示とすることもできます。表示方式は信号線のプロパティで指定します。

信号線のプロパティを変更するには、信号線を選択して、マウス右クリックであらわ得るメニューの最下段のPropatyをクリックします。複数の信号線を選ぶ場合は、範囲で選択する場合はシフトキーを押しながらマウスを左クリックし、選択された信号線に一つずつ追加、削除する場合はコントロールキーを押しながらマウスを左クリックします。


ノードのプロパティ(属性)ウィンドウがポップアップしますので、Radixを選択します。ここではUnsigned Decimal(符号なし10進数)を選んでいますが、Hexadecimal(16進数)やSigned Decimal(符号付10進数)も良く使われます。


波形エディタの左側に表示されたツールバーには、波形を編集するためのさまざまな機能が表示されています。時計のマークはクロック信号を作るツールですが、一定間隔で変化する入力信号も、これを使うと簡単に作れます。

一定間隔で変化する信号を作るためには、まず、設定したい信号を選択(水色に)した状態で時計のマークをクリックします。こうして表示されるクロックウィンドウに必要な項目をセットします。


最上段のTime rangeはクロックの開始時刻と終了時刻で、デフォルトでは解析の全期間にクロック信号を与える設定となっています。解析終了時刻はプルダウンメニューのEditから変更することもできます。

Time period以下の部分でクロック信号の周期(単位はnsとなっていますがMHzに変更することもできます)、オフセット(ディレイ)、デューティー比(Hである期間の比率)を設定します。OKボタンを押すと、波形エディタに表示されている信号線の値が、設定した周期で、最大値と最小値を交互にとるようになります。

信号線の値を変更するには、ツールバーのアイコンをクリックします。この状態で、カーソルを波形エディタに表示されている数値に合わせてマウスクリックし、ついでキーボードより数値を打ち込み、最後にリターンキーを押すことで、その部分の数値が変更されます。(リターンキーを押さないと、画面の上の数値は変化しているようにみえますが、値が正しく設定されませんので注意してください。)


波形エディタ画面は、コントロールキーを押しながらスペースキーを押すことで拡大表示(ズームイン)、シフトキーとコントロールキーを押しながらスペースキーを押すことで縮小表示(ズームアウト)します。このキー操作はQuartusIIのすべてのグラフィック表示に共通しています。


数値の入力が完了したらコントロールSによりファイルにセーブします。初回はファイル名が決まっていませんので、ファイル名を入力するウィンドウが現れます。

シミュレーション

シミュレーションはプルダウンメニューのProcessingからStart Simulationを押すことで開始されます。


シミュレーションが終了すると結果が表示されます。この場合、一部の入力に対しては正しい結果が出ていますが、異常な値が散見されます。


この加算モジュールは、前頁に掲載したタイミングアナライザの結果をみると、入力信号が確定してから出力が確定するまで12ns少々かかっていました。今回のシミュレーションは入力を5nsごとに変化させていますので、正しい値が出力されないのも当然といえます。

そこで、ベクターウェーブフォームファイルに戻り、クロック周期を30nsとし、値が15nsごとに変化するようにして信号を再設定します。


シミュレーション結果は以下のとおり、正しい合計値が得られました。


このシミュレーションはロジックエレメントの遅れ時間も計算に含めています。入力が確定してから出力が確定するまでの遅れに注目してください。


最終更新日:Thursday, 11-Apr-2019 09:11:43 JST