期待値比較によるシミュレーション


先の例では、アセンブラによるプログラムを実行して実行結果の波形を表示し ました。しかし、この場合でも、どこに誤りがあるのかを見つけるのは至難の 技です。そこで、今度はシミュレータが出力した結果とシミュレーション結果 の期待値とを比較する方法について紹介します。


"testadd.asm" のアセンブル後の実行イメージである "testadd.hex" を KITE シミュレータ("kitesim")にかけると以下のような情報を得ることができます。


% kitesim testadd.hex

Start address = 000
  ---- acc=0000 ixr=000 sp=000 out=0000 pc=000     c108 ld      #0x08
  ---- acc=0008 ixr=000 sp=000 out=0000 pc=001     bc00 swp     
  ---- acc=0800 ixr=000 sp=000 out=0000 pc=002     9100 or      #0x00
  ---- acc=0800 ixr=000 sp=000 out=0000 pc=003     f004 mv      sp, acc
  ---- acc=0800 ixr=000 sp=800 out=0000 pc=004     c800 in      0x00
	中略		
  ---- acc=0037 ixr=7fd sp=800 out=0000 pc=008     cc00 out     0x00
  ---- acc=0037 ixr=7fd sp=800 out=0037 pc=009     f800 halt    
  ---- acc=0037 ixr=7fd sp=800 out=0037 pc=00a     f009 mv      ixr, sp

これは命令実行のトレースを意味します。すなわち、この命令実行トレースは 皆さんが作成したプロセッサをシミュレーションした際の実行期待値となるわ けです。論理シミュレータが、この期待値と同じ書式で実行結果を出力できれ ば、UNIX の "diff" コマンドにより一気に一致比較を行うことができます。

"kite_test.v" の記述の中には、この期待値と同じ書式で実行結果を出力できる ように記述されています。シミュレーションを行うと、シミュレー ション時のログである "verilog.log" の中に以下のようなログが出力されます。


	中略
  ---- acc=0008 ixr=000 sp=000 out=0000 pc=001     bc00
  ---- acc=0800 ixr=000 sp=000 out=0000 pc=002     9100
  ---- acc=0800 ixr=000 sp=000 out=0000 pc=003     f004
	中略		
  ---- acc=0037 ixr=7fd sp=800 out=0037 pc=009     f800
  ---- acc=0037 ixr=7fd sp=800 out=0037 pc=00a     f009
	中略

KITE シミュレータの出力と比較して見ればわかるように、KITE シミュレータ の出力からアセンブリ記述を省いた書式で出力されていることがわかります。

したがって、KITE シミュレータの出力からアセンブリ記述を省いた部分のファ イルを期待値ファイルとして用意し、また、"verilog.log" ファイルから期待 値に対応する部分だけをコピーして一つのファイルにしておきます。あとは、 この二つのファイルを比較するだけです。

期待値のファイルを作成するには、リダイレクトを使って画面への出力をファ イルへ保存すれば可能です。(途中 IN 命令の入力値を要求してきますが、シ ミュレーションで使用する同じ値を入力します。シミュレーションでは “000a”(10進数での10)としています。 )


% kitesim testadd.hex > testadd.sim

この "testadd.sim" ファイルから不必要な部分 (ニモニックなど) を取り除き期待値ファイルとします。

期待値のファイル名を "testadd.sim"、論理シミュレータのファイル名を "simout.tmp" としたとき、"diff" コマンドの実行結果は、


[panther]~/work/cadence/4bit[1413]% diff testadd.sim simout.tmp
[panther]~/work/cadence/4bit[1414]%

このようにファイルに違う部分がなければ、何もメッセージを出力しません。 この場合、設計したプロセッサが期待値通りの動作をしていることが確認でき ます。


以上で、KITE-1マイクロプロセッサの記述は完成です。

次は、論理合成を行います。


| Back | CAD Home |

My mail address is kuga@cs.kumamoto-u.ac.jp .
Last modified on