240 likes | 664 Views
VLSI 設計工学 2. 2分決定グラフ( Binary Decision Diagram, BDD ) 論理関数の計算機上でのコンパクトな表現と効率的な処理を実現するデータ構造 VLSI 用 CAD のうち、論理関数処理を行うものには広く利用されている CAD 以外への応用も進んでいる. 論理式の記法. 論理変数は、基本的にアルファベット1文字か、アルファベット1文字に数字を付加したもの 論理積は、省略する 論理和は「+」 否定は、否定を取るべき式の最後に「‘」を付けるか、アッパーラインを引く 排他的論理和は「@」であらわす.
E N D
VLSI設計工学 2 • 2分決定グラフ(Binary Decision Diagram, BDD) • 論理関数の計算機上でのコンパクトな表現と効率的な処理を実現するデータ構造 • VLSI用CADのうち、論理関数処理を行うものには広く利用されている • CAD以外への応用も進んでいる
論理式の記法 • 論理変数は、基本的にアルファベット1文字か、アルファベット1文字に数字を付加したもの • 論理積は、省略する • 論理和は「+」 • 否定は、否定を取るべき式の最後に「‘」を付けるか、アッパーラインを引く • 排他的論理和は「@」であらわす
2分決定グラフ(Binary Decision Diagram, BDD)とは? • 真理値表は、2分決定木で表現できる • 2分決定木で、根から葉に至るすべてのパスで同じ変数順を使用する • 同型のサブ木を共有できる(グラフになる) • 論理関数の正規表現(Canonical form) • 論理関数が等価であれば、同型のグラフになる • 多くの実用的な論理関数をコンパクトに表現できる
2分決定グラフ(Binary Decision Diagram, BDD)とは?
順序付BDDとFree BDD • 根から葉へのすべてのパスで同じ変数順ではなく、パスごとに異なる変数順→Free BDD • どのパスでどういう変数順を使うかを前もってきめていれば、論理関数の正規形という性質は保存される
BDD間の論理演算(apply演算) • h = f ◇ g = v’(fv=0 ◇ gv=0) + v(fv=1 ◇ gv=1) • fかgが定数の時やf=g, f=g’の時は、対応する演算を実行する 例: f・0 = 0, f + f = f, f @ 1 = f’, … • fの変数とgの変数が同じならば、新しいノードを生成し、 h0←f0◇g0, h1←f1◇g1とする • Fの変数がgの変数よりも順序が先ならば、新しいノードを生成し、 h0←f0◇g, h1←f1◇g とする
複数の論理関数でBDDを共有:共有2分決定グラフ(Shared BDD) x1’+x2 x1@x2 x1’ x1x2
BDDの変数順決定 最適変数順決定は、NP完全問題 • ヒューリスティックにおける基本的な考え方 • 互いに関連する変数は近づける • 制御系の変数は前にもってくる s0, s1, s2は制御変数
BDDの変数順決定 • 回路から変数順の決定のためのヒューリスティックの考え方 • 回路を深さ優先で出力から入力へ辿る • 入力数の多いゲートを優先する • ファンアウト数の多いゲートを優先する
変数順の改良 • 隣り同士の変数の交換はそこだけつなぎかえればよい • これを繰り返せば、任意の変数順へ変更できる • よく使われるヒューリスティック • 隣同士の2,3,4変数間での交換 • 各変数を最初から最後まですべて移動し、最適なところに置く(siftヒューリスティック)
BDDの計算機上での表現 変数 0エッジ 1エッジ ← 0 ← 1 ← x1 ←x1’ ←x2x1’ ←x1 @ x2 ←x1’ + x2 0 1 2 3 4 5 6
回路からBDDを生成するもう1つの方法 • BDDを入力から出力へ順に作っていくと、途中でBDDが大きくなりすぎることがある • そこで、ある程度大きくなったら、そこで回路を仮に切断し、そこから先は新たな変数を導入して、BDDを作っていく • 回路の出力のBDDが作れたら、先ほど導入した変数をcompose演算で取り除く • Applyでうまくいかない時でも、BDDを作成できることも多い
宿題 • 次の関数の2分決定グラフ(BDD)を作成して、図示せよ。ただし、変数順はx1, x2とする • F1 = x1・x2’ + x1’・x2 • F1 = x1’・x2’ + x1・x2 • 次の関数を2分決定グラフで表現したときに、ノード数が最大となる変数順と、最少となる変数順の例を示せ。 • F3 = x1・x2・x3・x4 + x5’・x6’・x7’・x8’