TestVector

class TestVector

テストベクタを表すクラス

基本的には3値(0, 1, X)のベクタを表している.

スキャン方式の縮退故障用ベクタと ブロードサイド方式の遷移故障用ベクタの共用となる. 縮退故障用の時は

  • 外部入力(InputVector)

  • DFF(DffVector) の値を持つ.

遷移故障用の時は

Public Functions

inline TestVector()

空のコンストラクタ

inline TestVector(SizeType input_num)

コンストラクタ(組み合わせ回路用)

パラメータ:

input_num -- [in] 入力数

inline TestVector(SizeType input_num, const BitVector &src)

コンストラクタ(組み合わせ回路用)

パラメータ:
  • input_num -- [in] 入力数

  • src -- [in] 内容を表すビットベクタ

inline TestVector(SizeType input_num, SizeType dff_num, bool has_prev_state)

コンストラクタ(順序回路用)

パラメータ:
  • input_num -- [in] 入力数

  • dff_num -- [in] DFF数

  • has_prev_state -- [in] 1時刻前の回路を持つ時 true

inline TestVector(SizeType input_num, SizeType dff_num, bool has_prev_state, const BitVector &src)

コンストラクタ(順序回路用)

パラメータ:
  • input_num -- [in] 入力数

  • dff_num -- [in] DFF数

  • has_prev_state -- [in] 1時刻前の回路を持つ時 true

  • src -- [in] 内容を表すビットベクタ

inline explicit TestVector(const TpgNetwork &network)

ネットワークから入力数などの諸元を取ってくるコンストラクタ

inline explicit TestVector(const TpgNetwork &network, const AssignList &pi_assign_list)

ネットワークから入力数などの諸元を取ってくるコンストラクタ

inline TestVector(const TestVector &src)

コピーコンストラクタ

パラメータ:

src -- [in] コピー元のソース

inline TestVector &operator=(const TestVector &src)

コピー代入演算子

パラメータ:

src -- [in] コピー元のソース

~TestVector() = default

デストラクタ

inline SizeType vector_size() const

ベクタ長を得る.

inline Val3 val(SizeType pos) const

値を得る.

パラメータ:

pos -- [in] ビット位置 ( 0 <= pos < vector_size() )

inline SizeType input_num() const

外部入力数を得る.

inline SizeType dff_num() const

DFF数を得る.

inline SizeType ppi_num() const

PPI数を得る.

= input_num() + dff_num()

inline bool has_aux_input() const

2時刻目の外部入力を持つ時 true を返す.

inline Val3 ppi_val(SizeType pos) const

PPIの値を得る.

パラメータ:

pos -- [in] PPI の位置番号 ( 0 <= pos < ppi_num() )

inline Val3 input_val(SizeType pos) const

1時刻目の外部入力の値を得る.

is_td_mode() == true の時のみ有効

実は ppi_val(pos) と同じ.

パラメータ:

pos -- [in] 入力の位置番号 ( 0 <= pos < input_num() )

inline Val3 dff_val(SizeType pos) const

1時刻目のDFFの値を得る.

is_td_mode() == true の時のみ有効

実は ppi_val(pos +

input_num()) と同じ.

パラメータ:

pos -- [in] DFFの位置番号 ( 0 <= pos < dff_num() )

inline Val3 aux_input_val(SizeType pos) const

2時刻目の外部入力の値を得る.

is_td_mode() == true の時のみ有効

パラメータ:

pos -- [in] 入力の位置番号 ( 0 <= pos < input_num() )

inline SizeType x_count() const

X の個数を得る.

inline std::string bin_str() const

内容を BIN 形式で表す.

inline std::string hex_str() const

内容を HEX 形式で表す.

注釈

X を含む場合の出力は不定

inline void init()

すべて未定(X) で初期化する.

void set_from_assign_list(const AssignList &assign_list)

割当リストから値を設定する.

assign_list に外部入力とDFF以外の割当が含まれている場合無視する.

パラメータ:

assign_list -- [in] 割当リスト

inline void set_ppi_val(SizeType pos, Val3 val)

PPIの値を設定する.

is_sa_mode() == true の時のみ有効

パラメータ:
  • pos -- [in] PPIの位置番号 ( 0 <= pos < ppi_num() )

  • val -- [in] 値

inline void set_input_val(SizeType pos, Val3 val)

1時刻目の外部入力の値を設定する.

is_td_mode() == true の時のみ有効

パラメータ:
  • pos -- [in] 入力の位置番号 ( 0 <= pos < input_num() )

  • val -- [in] 値

inline void set_dff_val(SizeType pos, Val3 val)

1時刻目のDFFの値を設定する.

is_td_mode() == true の時のみ有効

パラメータ:
  • pos -- [in] DFFの位置番号 ( 0 <= pos < dff_num() )

  • val -- [in] 値

inline void set_aux_input_val(SizeType pos, Val3 val)

2時刻目の外部入力の値を設定する.

is_td_mode() == true の時のみ意味を持つ.

パラメータ:
  • pos -- [in] 入力の位置番号 ( 0 <= pos < input_num() )

  • val -- [in] 値

template<class URNG>
inline void set_from_random(URNG &randgen)

乱数パタンを設定する.

結果はかならず 0 か 1 になる.(Xは含まれない)

パラメータ:

randgen -- [in] randgen 乱数生成器

template<class URNG>
inline void fix_x_from_random(URNG &randgen)

X の部分を乱数で 0/1 に設定する.

パラメータ:

randgen -- [in] 乱数生成器

inline TestVector operator&(const TestVector &right) const

マージする.

right がコンフリクトしている時の結果は不定

パラメータ:

right -- [in] オペランド2

戻り値:

マージ結果を返す.

inline TestVector merge(const TestVector &right) const

マージする(operator&の別名).

パラメータ:

right -- [in] オペランド

inline TestVector &operator&=(const TestVector &right)

マージして代入する.

パラメータ:

right -- [in] オペランド

inline TestVector &merge_int(const TestVector &right)

マージして代入する(operator&=の別名).

パラメータ:

right -- [in] オペランド

inline bool operator&&(const TestVector &right) const

両立関係の比較を行う.

パラメータ:

right -- [in] オペランド2

戻り値:

right が両立する時 true を返す.

inline bool operator==(const TestVector &right) const

等価関係の比較を行なう.

パラメータ:

right -- [in] オペランド2

戻り値:

right が等しいとき true を返す.

inline bool operator<(const TestVector &right) const

包含関係の比較を行なう

  • false だからといって逆に left が right を含むとは限らない.

パラメータ:

right -- [in] オペランド2

戻り値:

minterm の集合として right が left を含んでいたら true を返す.

inline bool operator<=(const TestVector &right) const

包含関係の比較を行なう

  • こちらは等しい場合も含む.

  • false だからといって逆に left が right を含むとは限らない.

パラメータ:

right -- [in] オペランド2

戻り値:

minterm の集合として right が left を含んでいたら true を返す.

Public Static Functions

static TestVector from_bin(SizeType input_num, SizeType dff_num, bool has_prev_state, const std::string &bin_str)

2進文字列からオブジェクトを作る.

  • 有効な文字は '0', '1', 'x', 'X'

  • bin_str が不適切な場合には長さ0のベクタを返す.

パラメータ:
  • input_num -- [in] 入力数

  • dff_num -- [in] DFF数

  • has_prev_state -- [in] 1時刻前の値を持つ時 true

  • bin_str -- [in] 元となる2進文字列

static TestVector from_hex(SizeType input_num, SizeType dff_num, bool has_prev_state, const std::string &hex_str)

HEX文字列からオブジェクトを作る.

  • 有効な文字は '0'〜'9', 'a'〜'f', 'A'〜'F'

  • hex_str が不適切な場合には長さ0のベクタを返す.

パラメータ:
  • input_num -- [in] 入力数

  • dff_num -- [in] DFF数

  • has_prev_state -- [in] 1時刻前の値を持つ時 true

  • hex_str -- [in] 元となるHEX文字列

inline bool is_compatible(const TestVector &tv1, const TestVector &tv2)

operator&& の別名

同じビット位置にそれぞれ 0 と 1 を持つ場合が両立しない場合.

パラメータ:
  • tv1 -- [in] オペランド1

  • tv2 -- [in] オペランド2

inline bool is_equal(const TestVector &left, const TestVector &right)

等価関係の比較を行なう.

パラメータ:
  • left -- [in] オペランド1

  • right -- [in] オペランド2

戻り値:

left と right が等しいとき true を返す.

inline bool operator!=(const TestVector &left, const TestVector &right)

等価関係の比較を行なう.

パラメータ:
  • left -- [in] オペランド1

  • right -- [in] オペランド2

戻り値:

left と right が等しくないとき true を返す.

inline bool operator>(const TestVector &left, const TestVector &right)

包含関係の比較を行なう.

false だからといって逆に right が left を含むとは限らない.

パラメータ:
  • left -- [in] オペランド1

  • right -- [in] オペランド2

戻り値:

minterm の集合として left が right を含んでいたら true を返す.

inline bool operator>=(const TestVector &left, const TestVector &right)

包含関係の比較を行なう

こちらは等しい場合も含む. false だからといって逆に right が left を含むとは限らない.

パラメータ:
  • left -- [in] オペランド1

  • right -- [in] オペランド2

戻り値:

minterm の集合として left が right を含んでいたら true を返す.