TestVector¶
-
class TestVector¶
テストベクタを表すクラス
基本的には3値(0, 1, X)のベクタを表している.
参考
スキャン方式の縮退故障用ベクタと ブロードサイド方式の遷移故障用ベクタの共用となる. 縮退故障用の時は
外部入力(InputVector)
DFF(DffVector) の値を持つ.
遷移故障用の時は
外部入力[1時刻目](InputVector)
DFF[1時刻目](DffVector)
外部入力[2時刻目](InputVector) の値を持つ.
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 を返す.