C言語ファイルの出力と全数検査 |
出力先のディレクトリに、[top module]名でフォルダが作成されます。
次のファイルが生成されます
bsp_add.c | addモジュールのCコードです | |
---|---|---|
bsp_add.h | ヘッダです | |
main.c | QROQSであらかじめ設定されていた値を使用してとにかく実行してみたい場合に使用するものです。 これを参考にしてBSPモジュールを利用してください | |
Makefile | とにかくコンパイルします | |
QROQS.c | QROQSの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 |
#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