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)と は? Removal of equivalent nodes X1 X2 X2 X3 0 X3 1 0 X3 1 0 X3 1 1 1 Removal of redundant nodes X1 0 X2 X2 X3 X3 1 X1 X2 X3 0 1 順序付BDDとFree BDD • 根から葉へのすべてのパスで同じ変数順ではな く、パスごとに異なる変数順→Free BDD • どのパスでどういう変数順を使うかを前もってき めていれば、論理関数の正規形という性質は保 存される X1 X1 0 1 0 X2 X2 1 0 0 1 1 1 0 X5 0 0 1 OBDD X3 1 1 0 X4 0 1 X4 0 0 X5 0 X3 0 X4 1 0 1 X4 0 0 X3 1 X2 1 1 X4 0 1 X3 0 0 X2 0 X3 1 1 1 FBDD 1 1 BDDの例 x1 x2 x3 x4 x1 + x2 + x3 + x4 x1 x1 x2 x1 x2 x3 x3 x4 x4 1 0 0 (a) And 1 (b) Or x1 + x2 + x3 + x4 x2 x2 x3 x3 x4 x4 0 1 (c) Ex-Or セレクタ関数に対応するBDD s2 s1 s0 s1 s0 s0 s0 d0 d1 d0 d1 d2 d3 Out d4 d7 d5 d6 d7 s0 s1 s2 0 1 BDD間の論理演算(apply演算) • h = f ◇ g = v’(fv=0 ◇ gv=0) + v(fv=1 ◇ gv=1) 1. fかgが定数の時やf=g, f=g’の時は、対応 する演算を実行する 例: f・0 = 0, f + f = f, f @ 1 = f’, … 2. fの変数とgの変数が同じならば、新しい ノードを生成し、 h0←f0◇g0, h1←f1◇g1 とする 3. Fの変数がgの変数よりも順序が先ならば、 新しいノードを生成し、 h0←f0◇g, h1←f1◇g とする Apply演算の例 x1 x1 x 2 + x3 x1 x1 x2 x3 x1 x 2 1 0 OR AND 0 x1 x2 x2 x3 0 1 x2 x3 0 1 0 1 1 複数の論理関数でBDDを共有: 共有2分決定グラフ(Shared BDD) X2 1 0 x1’+x2 x1’ x1@x2 x1x2 X2 0 X2 0 1 1 X1 1 0 0 1 X1 0 1 否定エッジ x2 x1 x2 x2 0 x1 1 x1 x2 x2 0 0 1 0 0 x2 x2 1 1 x1 1 x1 x1 0 0 1 1 0 x1 BDDの大きさは、使用する変数順に 大きく依存 X1 X2 X3 X4 X5 X6 Worst 1 0 Best 3 0 1 1 3 1 0 0 5 2 0 0 5 1 0 5 0 1 3 1 2 4 0 0 1 4 1 4 1 2 0 1 1 0 0 1 1 6 0 0 0 5 0 5 1 2 0 0 1 1 6 1 1 0 0 1 0 1 2 1 BDDの変数順決定 最適変数順決定は、NP完全問題 • ヒューリスティックにおける基本的な考え方 – 互いに関連する変数は近づける – 制御系の変数は前にもってくる s2 s1 s0 s1 s0 s0 s0 d0 d1 d0 d1 d2 d3 Out d4 d7 d5 d6 s0, s1, s2は制御変数 d7 s0 s1 s2 0 1 BDDの変数順決定 • 回路から変数順の決定のためのヒューリ スティックの考え方 – 回路を深さ優先で出力から入力へ辿る – 入力数の多いゲートを優先する – ファンアウト数の多いゲートを優先する x0 x1 x2 x3 x4 Depth first traversal: x0, x1, x2, x3, x4 or x2, x3, x0, x1, x4 (with fanout consideration) 変数順の改良 • 隣り同士の変数の交換はそこだけつなぎかえれば よい i-1 (A) i+1 (B) i+1 i f1 i-1 i-1 (C) i+1 i f3 i f2 i-1 (D) i+1 (A) i i i+1 f4 f1 (B) i-1 i i-1 i i+1 f2 (E) i+1 (D) f3 f4 • これを繰り返せば、任意の変数順へ変更できる • よく使われるヒューリスティック – 隣同士の2,3,4変数間での交換 – 各変数を最初から最後まですべて移動し、最適なところ に置く(shiftヒューリスティック) 回路からBDDの生成 X1 X2 X2 0 X2 1 1 X1 0 0 X2 X1 1 1 1 0 1 1 1 X1 0 0 0 0 X2 1 1 0 X2 0 0 X1 0 0 1 X1 1 0 0 1 0 1 1 1 X1 0 1 BDDの計算機上での表現 変数 0エッジ 1エッジ 0 1 2 3 4 5 6 ー ー ー ー ー ー 1 0 1 1 1 0 2 0 3 2 2 3 2 2 1 ← ← ← ← ← ← ← 0 1 x1 x1’ x2x1’ x1 @ x2 x1’ + x2 回路からBDDを生成するもう1つの方法 • BDDを入力から出力へ順に作っていくと、途中で BDDが大きくなりすぎることがある • そこで、ある程度大きくなったら、そこで回路を仮 に切断し、そこから先は新たな変数を導入して、 BDDを作っていく • 回路の出力のBDDが作れたら、先ほど導入した 変数をcompose演算で取り除く • Applyでうまくいかない時でも、BDDを作成できる ことも多い 回路から、applyに基づくBDDの生成 X1 X3 X4 X5 X2 X3 X4 0 X3 X1 X1 X4 1 X2 X5 0 X1 X3 1 X3 X4 X3 X4 X5 1 X2 X4 X5 0 0 X5 1 1 0 新規中間変数の導入 Cut here and introduce an intermidiate var: t X1 X3 X X4 X5 X2 X3 X3 0 1 X1 X4 X4 0 X1 X1 X5 t 1 1 0 X2 X2 t t 0 1 1 0 Compose 演算の実行 t X1 X1 X3 X2 X2 X4 = composed with t X3 X5 X4 1 0 0 1 X5 1 0 BDDの拡張 • Multi-Terminal BDD (MTBDD) • Binary Moment Diagram (BMD) • Hybrid Decision Diagram (HDD) • … (すべてのアルファベットから始まる□DDと いうものが提案されている!) Multi-Terminal BDD (MTBDD) • 定数ノード(葉)を0,1だけではなく、任意 の有限集合の要素を認めるようにする • BDDの基本的な性質(正規表現、apply演 算など各種アルゴリズム)は保存される x1 x2 1 x1 x2 0 1 x2 3 x2 5 6 ベクトルや行列のMTBDDによる表現 • ベクトルや行列のインデックスを0,1の2 値変数で表現する • 0からn-1までのインデックスは、 x1,x2,…,xlognで表現できる x1 x2 3 4 [3 3 3 4] MTBDDによる行列の操作 • x変数で行をy変数で列を表現する • 与えられた行例Mは次のように表現できる Mx1’y1’ Mx1’y1 M= Mx1y1’ Mx1y1 • Apply演算で行列の操作ができる x1 x1 + (plus) x2 3 4 [3 3 3 4] x1 x2 0 = 2 [0 2 2 2] x2 3 x2 5 [3 5 5 6] 6 内積の計算 • 各列ごとの内積(和)の計算 – Σy1y2…ymM(x, y1, y2, …, ym) = Σy1y2…ym-1ΣMym (x, y1, y2, …, ym) = Σy1y2…ym-1(M (x, y1, y2, …, 0) + M (x, y1, y2, …,1)) • ベクトルのソート – すべての定数は葉にある→葉の値をソート • 行列の掛算 – C(x, z) = ΣyA(x, y)・B(y, z) • すべてMTBDD上の演算として計算できる 応用例: 論理関数のスペクトル解析 • 論理関数解析の手法、フーリエ級数展開を論理関数上 で行う • Walshスペクトル – 定数0関数との差(真理値表で同じ値の要素数から異なる値 の要素数を引いたもの): 0次 – 関数x1との差: 1次 – 関数x1 @ x2との差: 2次 – ... • 閾値関数は、0次と1次だけのスペクトル値で判別でき る Walshスペクトル解析の例 • 例: x1 + x2x3 • 真理値表で0はそのまま 0、1は-1に置き換える 1 1 1 1 1 1 1 1 1 –1 1 –1 1 –1 1 –1 1 1 -1 –1 1 1 –1 -1 1 –1 -1 1 1 –1 –1 1 1 1 1 1 –1 –1 –1 -1 1 –1 1 –1 –1 1 –1 1 1 1 -1 –1 –1 –1 1 1 1 –1 -1 1 –1 1 1 -1 X3 0 0 0 0 1 1 1 1 x2 0 0 1 1 0 0 1 1 1 -1 1 -1 1 -1 -1 -1 x1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 -1 1 -1 1 -1 -1 -1 = -2 6 2 2 2 2 -2 -2 Walshスペクトル解析結果の意味 -2 6 2 2 2 2 -2 -2 ー ー ー ー ー ー ー ー 0次: 1次: 1次: 2次: 1次: 2次: 2次: 3次: 定数0関数との差 関数x1との差 関数x2との差 関数x1 @ x2との差 関数x3との差 関数x1 @ x3との差 関数x2 @ x3との差 関数x1 @ x2 @ x3との差 • 従来手法は、真理値表の要素ごとに1つずつ 計算 – 大きな論理関数には適用不可能 Walsh行列は再帰的に定義可能 • Walsh行列 Wn: W1 = 1, Wn = Wn-1 Wn-1 Wn-1 -Wn-1 xn yn Wn-1 -Wn-1 Walshスペクトル解析の例 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 X 1 -1 -1 -1 -1 1 1 1 0 0 0 0 -4 4 4 4 = x1 y1 x2 x2 y2 y2 y2 y3 -1 1 x3 x3 y3 y3 -1 y1 y1 1 -1 -1 y3 -1 0 y2 y2 y3 1 1 -4 4 4 Binary Moment Diargam (BMD) • 展開規則の変更 f = f0 + x fd ただし、fd = f1 – f0 • MTBDDでは大きくなる関数でもBMDでコン パクトになるものがある – 例: 掛算器 xi xi 0 1 0 fxi=0 fxi=1 fxi=0 MTBDD 1 fxi=1 - fxi=0 BMD MTBDDとBMDの比較例 • Σ2i=0 xi・2iという関数の表現 x2 x2 x1 x0 x1 x1 x0 x0 x0 x0 4 2 BMD 0 1 2 3 4 MTBDD 5 6 7 0 1
© Copyright 2024 ExpyDoc