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(const Fsim &src) = delete

コピーコンストラクタは禁止

Fsim(Fsim &&src) = delete

ムーブコンストラクタは禁止

Fsim &operator=(const Fsim &src) = delete

コピー代入演算子は禁止

Fsim &operator=(Fsim &&src) = delete

ムーブ代入演算子は禁止

~Fsim()

デストラクタ

void set_skip_all()

全ての故障にスキップマークをつける.

void set_skip(const TpgFault &fault)

故障にスキップマークをつける.

パラメータ:

fault -- [in] 対象の故障

void set_skip(const TpgFaultList &fault_list)

複数の故障にスキップマークをつける.

fault_list に含まれない故障のスキップマークは消される.

パラメータ:

fault_list -- [in] 対象の故障のリスト

void clear_skip_all()

全ての故障のスキップマークを消す.

void clear_skip(const TpgFault &fault)

故障のスキップマークを消す.

パラメータ:

fault -- [in] 対象の故障番号

void clear_skip(const TpgFaultList &fault_list)

複数の故障のスキップマークを消す.

fault_list に含まれない故障のスキップマークは付けられる.

パラメータ:

fault_list -- [in] 対象の故障のリスト

bool get_skip(const TpgFault &fault) const

故障のスキップマークを得る.

パラメータ:

fault -- [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の値のビットベクタ

Public Static Attributes

static const SizeType PP_BITLEN = PV_BITLEN

ppsfp() で用いるバッファサイズ