Fsim¶
-
class Fsim¶
故障シミュレーションを行うクラス
意味的には対象回路に対して故障シミュレーションを行う関数のみを実現できればよく, 内部に状態を持つ必要はないが,効率化のため故障シミュレーションに特化した回路構造 を表すクラスと故障シミュレーションに特化した故障の情報を表すクラスを持つ. 対象の回路を initialize() で設定すると内部で故障シミュレーション用のデータ構造 に変換される. 対象となる故障も毎回のシミュレーションの際に指定すると効率が悪いので一旦全故障を set_fault_list() で登録しておく. 各故障に'スキップフラグ'を持たせておき,スキップフラグが立っていない故障を対象に 故障シミュレーションを行う. スキップフラグのオン/オフは set_skip()/clear_skip() で行う.
Public Types
-
using cbtype1 = std::function<void(const TpgFault&, const DiffBits&)>¶
SPPFP故障シミュレーションで用いるコールバック関数の型定義
1番目の引数は検出された故障
2番目の引数は出力ごとの伝搬状況
-
using cbtype2 = std::function<void(const TpgFault&, const DiffBitsArray&)>¶
PPSFP故障シミュレーションで用いるコールバック関数の型定義
1番目の引数は検出された故障
2番目の引数は出力ごとの伝搬状況
Public Functions
-
Fsim(const TpgNetwork &network, const TpgFaultList &fault_list, const JsonValue &option = {})¶
コンストラクタ
- パラメータ:
network -- [in] ネットワーク
fault_list -- [in] 対象の故障のリスト
option -- [in] オプション
-
~Fsim()¶
デストラクタ
-
void set_skip_all()¶
全ての故障にスキップマークをつける.
-
void set_skip(const TpgFaultList &fault_list)¶
複数の故障にスキップマークをつける.
fault_list に含まれない故障のスキップマークは消される.
- パラメータ:
fault_list -- [in] 対象の故障のリスト
-
void clear_skip_all()¶
全ての故障のスキップマークを消す.
-
void clear_skip(const TpgFaultList &fault_list)¶
複数の故障のスキップマークを消す.
fault_list に含まれない故障のスキップマークは付けられる.
- パラメータ:
fault_list -- [in] 対象の故障のリスト
-
bool spsfp(const TestVector &tv, const TpgFault &fault, DiffBits &dbits)¶
SPSFP故障シミュレーションを行う.
- パラメータ:
tv -- [in] テストベクタ
fault -- [in] 対象の故障番号
dbits -- [out] 出力ごとの伝搬状況を表すビットベクタ
- 戻り値:
true -- 故障の検出が行えた.
false -- 故障の検出が行えなかった.
-
bool spsfp(const AssignList &assign_list, const TpgFault &fault, DiffBits &dbits)¶
SPSFP故障シミュレーションを行う.
assign_list は外部入力の割り当てでなければならない.
- パラメータ:
assign_list -- [in] 値の割当リスト
fault -- [in] 対象の故障番号
dbits -- [out] 出力ごとの伝搬状況を表すビットベクタ
- 戻り値:
true -- 故障の検出が行えた.
false -- 故障の検出が行えなかった.
-
bool xspsfp(const AssignList &assign_list, const TpgFault &fault, DiffBits &dbits)¶
SPSFP故障シミュレーションを行う.
assign_list は任意の位置の割り当てでよい.
3値のシミュレーションのみ可能
- パラメータ:
assign_list -- [in] 値の割当リスト
fault -- [in] 対象の故障番号
dbits -- [out] 出力ごとの伝搬状況を表すビットベクタ
- 戻り値:
true -- 故障の検出が行えた.
false -- 故障の検出が行えなかった.
-
void sppfp(const TestVector &tv, cbtype1 callback)¶
ひとつのパタンで故障シミュレーションを行う.
- パラメータ:
tv -- [in] テストベクタ
callback -- [in] コールバック関数 1番目の引数は検出された故障 2番目の引数は出力の伝搬状況
-
void sppfp(const AssignList &assign_list, cbtype1 callback)¶
ひとつのパタンで故障シミュレーションを行う.
assign_list は外部入力の割り当てでなければならない.
- パラメータ:
assign_list -- [in] 値の割当リスト
callback -- [in] コールバック関数 1番目の引数は検出された故障 2番目の引数は出力の伝搬状況
-
void xsppfp(const AssignList &assign_list, cbtype1 callback)¶
ひとつのパタンで故障シミュレーションを行う.
assign_list は任意の位置の割り当てでよい.
3値のシミュレーションのみ可能
- パラメータ:
assign_list -- [in] 値の割当リスト
callback -- [in] コールバック関数 1番目の引数は検出された故障 2番目の引数は出力の伝搬状況
-
void ppsfp(const std::vector<TestVector> &tv_list, cbtype2 callback)¶
複数のパタンで故障シミュレーションを行う.
- パラメータ:
tv_list -- [in] テストベクタのリスト 要素数の最大値は PV_BITLEN
callback -- [in] コールバック関数 1番目の引数は検出された故障 2番目の引数は出力の伝搬状況
-
SizeType calc_wsa(const TestVector &tv, bool weighted)¶
1クロック分のシミュレーションを行い,遷移回数を数える.
外部入力以外は無視する.
時刻1の割り当ても無視する
- パラメータ:
tv -- [in] テストベクタ
weighted -- [in] 重みフラグ
false: ゲートの出力の遷移回数の和
true : ゲートの出力の遷移回数に (ファンアウト数+1)を掛けたものの和
-
SizeType calc_wsa(const InputVector &i_vect, bool weighted)¶
1クロック分のシミュレーションを行い,遷移回数を数える.
- パラメータ:
i_vect -- [in] 外部入力のビットベクタ
weighted -- [in] 重みフラグ
false: ゲートの出力の遷移回数の和
true : ゲートの出力の遷移回数に (ファンアウト数+1)を掛けたものの和
-
void set_state(const InputVector &i_vect, const DffVector &f_vect)¶
状態を設定する.
- パラメータ:
i_vect -- [in] 外部入力のビットベクタ
f_vect -- [in] FFの値のビットベクタ
-
void get_state(InputVector &i_vect, DffVector &f_vect)¶
状態を取得する.
- パラメータ:
i_vect -- [out] 外部入力のビットベクタ
f_vect -- [out] FFの値のビットベクタ
-
using cbtype1 = std::function<void(const TpgFault&, const DiffBits&)>¶