Skip to content

Scenario_Description

Takashi Nakamura edited this page Sep 12, 2017 · 2 revisions

シナリオの記述方法について説明します。

必須記述は以下の2つです。

  • シナリオヘッダのインクルード #include "scenario.h"
  • シナリオ関数 void scenario()

シナリオ関数の中にテストベンチとしての処理を記述します。 シナリオ関数のリターンでテストベンチが終了します。

1.論理がマスタとしてデータを要求して来る場合 データ要求を処理する関数を以下のように設定します。 ret = func_setup( ID, FN, END_FLAG, FUNC_PTR );

ID : テストベンチ側の論理信号ドライバに設定したID番号 FN : ドライバ毎の関数識別用のFN番号 END_FLAG : データ要求に対する応答関数ですべてのデータ要求を転送したい場合(すぐに終了したくない場合)は"1"、それ以外は"0" FUNC_PTR : 関数ポインタ

関数ポインタの示す関数定義制約

(1)int型の関数であること。返り値は正常終了ならば0であること。 (2)引数はs2cif_pkt_s型のポインタであること。

s2cif_pkt_s型変数 typedef struct { uint32_t id; uint32_t fn; int ret; uint32_t data[S2CIF_DATA_SIZE]; } s2cif_pkt_s;

先頭のID番号とFN番号は変更不可。リターン時にどこに戻されるかの判定で使用するため。 int型のretは論理側への返り値を設定する。返り値の設定値は、ドライバ側の仕様に合わせること。 unsigned int型の配列data[]は要求データの格納に使用する。(最大数はマクロ定義)

2.シナリオがマスタとなってデータ投入を行う場合 (1)書き込み write_packet()関数で転送指示 ret = write_packet( ID, FN, ADDR, SIZE, DATA[] )

ID : テストベンチ側の論理信号ドライバに設定したID番号 FN : ドライバ毎の関数識別用のFN番号 ADDR : 論理上でのアドレスに使用(未使用の場合は0指定要) SIZE : 書き込みデータ数(0以上最大数まで) DATA[] : データ用のunsigned int型の配列(最大数はマクロ定義)

ret : 返り値の仕様はドライバ側と合わせること。

(2)読み出し read_packet()関数で転送指示 ret = read_packet( ID, FN, ADDR, SIZE, DATA[] )

ID : テストベンチ側の論理信号ドライバに設定したID番号 FN : ドライバ毎の関数識別用のFN番号 ADDR : 論理上でのアドレスに使用(未使用の場合は0指定要) SIZE : 読み出しデータ数(0以上最大数まで) DATA[] : データ用のunsigned int型の配列(最大数はマクロ定義)

ret : 返り値の仕様はドライバ側と合わせること。