LastUpDate:16:32 2003/11/24 TOP
C言語ファイルの出力と全数検査
あなたはQROQS上でのグラフィカルなBSPシミュレーションが遅くていらいらしたことはありませんか? そして、設計したBSPをソフトウエア的に使用した上で動作検証したいと思うかもしれません。 そんな時、このC言語に出力機能を使用することで、より多彩な検証を行うことができるでしょう。

●環境設定

C言語なので、gcc、makeさえ使用できれば問題ないと思います。

●C言語ファイルを出力

メニューの[ファイル]-[C言語を出力]を選択し、出力先のディレクトリを指定します。

出力先のディレクトリに、[top module]名でフォルダが作成されます。

次のファイルが生成されます
bsp_add.caddモジュールのCコードです
bsp_add.hヘッダです
main.cQROQSであらかじめ設定されていた値を使用してとにかく実行してみたい場合に使用するものです。 これを参考にしてBSPモジュールを利用してください
Makefileとにかくコンパイルします
QROQS.cQROQSのBSP Sim Coreです
QROQS.hヘッダっす。

●実行

コンパイルして実行すればええです。


% make
gcc -o add main.c bsp_add.c QROQS.c -O2
% ./add
in0 : 10000
in1 : 11110
out0 : 00001
%

bsp_add.hを見れば分かりますが、

Input
	 0 : in_a
	 1 : in_b
Output
	 0 : sum_out
in0はin_aに、in1はin_bにそれぞれ対応しています。 表示されているinのデータは左のビットから入力され、outのデータは左から入力されたものです。 これは単に配列の内容を表示しているに過ぎません。

●全数検査とかやってみる

main.cを参考にして、add関数を使います。と、その前にBSP関数群の説明といこうか。 実際にmain.cとつき合わせながら見てください。

#include "bsp_add.h"
まずヘッダをインクルードしてください

BSPetri *bsp_add;
BSPの宣言です

bsp_add = bsp_add_init();
BSPの初期化です。初期化に失敗した場合はNULLが返されます

bsp_add_io( bsp_add );
入出力の初期化です。QROQS上で設定されていた値が使用されます。

bsp_in_print( bsp_add );
ウージに設定されている入力値を表示します

bsp_reset( bsp_add );
BSPをリセットし、初期マーキングを行います。初期マーキングがない(トークンが配置されていない)ならば 必要ありません。

bsp_run( bsp_add, 0 );
BSPシミュを実行します。第二引数が1ならリセットします

bsp_out_print( bsp_add );
ケムマキが記録した出力値を表示します

bsp_io_exit( bsp_add );
入出力用に確保されているメモリを破棄します

bsp_exit( bsp_add );
BSPを破棄します

全数検査を行う場合、QROQS上で設定されていた値は必要ありませんので、 bsp_add_io()は必要ありません。かわりに、bsp_addに対して入力値を設定する関数が用意されています
int bsp_io_data(BSPetri *bsp, int u_dmax[], int k_dmax[], char *in[]);
こいつは、入出力ビット数、入力値をあたえてやればメモリの確保とデータ設定をやりますが、 複数データの場合、毎回これを使用するのも気が引けます。そこで、
int bsp_io(BSPetri *bsp, int u_dmax[], int k_dmax[], int **input_data, int **output_data);
これを利用します。自前で確保したメモリ領域を入出力に結びつけるだけです。

全加算器addのテストコードは次のようになります。 main.c


Copyright(C)2002-2003 sakamoto All Rights Reserved.