TpgNode

class TpgNode : public TpgObjBase

DRUID 用のノードを表すクラス

基本的には一つのゲート(セル)に対応しているが, もとのゲートが組み込み型でない場合には複数の TpgNode を組み合わ せてもとのゲートを表す.

参考

TpgNetwork

参考

TpgMFFC

参考

TpgFFR

参考

TpgNodeList

そうする理由は side input の値に対する controlling value, non-controlling value が定まっていたほうがバックトレースが やりやすいから.SAT に関しては complex タイプでも問題なく 処理できる.

そのため,場合によってはファンインの故障を表すための仮想的な ノードを挿入する場合もある.

Public Functions

TpgNode() = default

空のコンストラクタ

不正な値となる.

inline explicit TpgNode(const std::shared_ptr<NetworkRep> &network, SizeType id)

値を指定したコンストラクタ

パラメータ:
  • network -- [in] 親のネットワーク

  • id -- [in] ノード番号

~TpgNode() = default

デストラクタ

SizeType fanin_num() const

ファンイン数を得る.

TpgNode fanin(SizeType index) const

ファンインを得る.

パラメータ:

index -- [in] 位置番号 ( 0 <= index < fanin_num() )

TpgNodeList fanin_list() const

ファンインのリストを得る.

SizeType fanout_num() const

ファンアウト数を得る.

TpgNode fanout(SizeType index) const

ファンアウトを得る.

パラメータ:

index -- [in] 位置番号 ( 0 <= index < fanout_num() )

TpgNodeList fanout_list() const

ファンアウトのリストを得る.

TpgNode ffr_root() const

FFR の根のノードを得る.

自分が根の場合には自分自身を返す.

TpgNode mffc_root() const

MFFCの根のノードを得る.

自分が根の場合には自分自身を返す.

TpgNode imm_dom() const

直近の dominator を得る.

これが不正値の場合は MFFC の根のノードだということ.

bool is_primary_input() const

外部入力タイプの時 true を返す.

bool is_dff_output() const

DFF の出力に接続している入力タイプの時 true を返す.

紛らわしいが is_pseudo_input() でもある.

bool is_ppi() const

入力タイプの時 true を返す.

具体的には is_primary_input() || is_dff_output()

bool is_primary_output() const

外部出力タイプの時 true を返す.

bool is_dff_input() const

DFF の入力に接続している出力タイプの時 true を返す.

紛らわしいが is_pseudo_output() でもある.

bool is_ppo() const

出力タイプの時 true を返す.

具体的には is_primary_output() || is_dff_input()

SizeType input_id() const

外部入力タイプの時に入力番号を返す.

node = TpgNetwork::ppi(node->input_id()) の関係を満たす. is_ppi() が false の場合の返り値は不定

SizeType output_id() const

外部出力タイプの時に出力番号を返す.

node = TpgNetwork::ppo(node->output_id()) の関係を満たす. is_ppo() が false の場合の返り値は不定

SizeType output_id2() const

TFIサイズの昇順に並べた時の出力番号を返す.

SizeType dff_id() const

接続している DFF 番号を返す.

is_dff_input() | is_dff_output() の時に意味を持つ.

TpgNode alt_node() const

DFFに関する相方のノードを返す.

is_dff_input() | is_dff_output() の時に意味を持つ.

bool is_logic() const

logic タイプの時 true を返す.

PrimType gate_type() const

ゲートタイプを得る.

  • is_logic() が true の時はゲートタイプを返す.

  • is_ppo() が true の時は PrimType::Buff を返す.

  • それ以外の時は PrimType::None を返す.

Val3 cval() const

controling value を得る.

is_logic() が false の場合の返り値は不定 ない場合は Val3::_X を返す.

Val3 nval() const

noncontroling valueを得る.

is_logic() が false の場合の返り値は不定 ない場合は Val3::_X を返す.

Val3 coval() const

controling output value を得る.

is_logic() が false の場合の返り値は不定 ない場合は Val3::_X を返す.

Val3 noval() const

noncontroling output value を得る.

is_logic() が false の場合の返り値は不定 ない場合は Val3::_X を返す.

inline std::string str() const

ノード名を表す文字列(Node::id)を返す.