Upload
eze
View
58
Download
0
Embed Size (px)
DESCRIPTION
VLSI 設計工学 2. 2分決定グラフ( Binary Decision Diagram, BDD ) 論理関数の計算機上でのコンパクトな表現と効率的な処理を実現するデータ構造 VLSI 用 CAD のうち、論理関数処理を行うものには広く利用されている CAD 以外への応用も進んでいる. 論理式の記法. 論理変数は、基本的にアルファベット1文字か、アルファベット1文字に数字を付加したもの 論理積は、省略する 論理和は「+」 否定は、否定を取るべき式の最後に「‘」を付けるか、アッパーラインを引く 排他的論理和は「@」であらわす. - PowerPoint PPT Presentation
Citation preview
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 )と
は?
X1
X2
X3 X3
X2
X3X3
10 0 1 0 1 1 1
X1
X2
X3
X2
X3
0 1
X1
X3
X2
0 1
Rem ova l o f eq u iva len t nod es
Rem ova l o f red und a n t nod es
順序付 BDD と Free BDD
• 根から葉へのすべてのパスで同じ変数順ではなく、パスごとに異なる変数順→ Free BDD
• どのパスでどういう変数順を使うかを前もってきめていれば、論理関数の正規形という性質は保存される
0 1
X2
X3
X4
X5
X4
X3
X2
X3
X4
1
X10
0
1
0 10 1
0 1
11
0
0 1
0
1
01
0
0 1
X2
X3
X4
X5
X3
X2
X4
1
X10
0
1
0 1
0
1
01
0
1
01
10
OBDD FBDD
BDD の例
x
x
x
2
3
4
0 1
(a) And
x1
x x x x1 2 3 4
x
x
x
2
3
4
0 1
(b) Or
x1
x + x + x + x1 2 3 4
x
x
x
2
3
4
0 1
(c) Ex-Or
x1
x + x + x + x1 2 3 4
x2
x3
x4
セレクタ関数に対応する BDD
s
s s s
dd
dd
d
1
0 0 0
2
3
4
5
6
0 1
d0d0
d1d1
d7
d7
Out
s0
s0
s1
s1
s2
s2
BDD 間の論理演算( apply 演算)• h = f g = v’(f◇ v=0 g◇ v=0) + v(fv=1 g◇ v=1)1. f か g が定数の時や f=g, f=g’ の時は、対応す
る演算を実行する 例: f ・ 0 = 0, f + f = f, f @ 1 = f’, …
2. f の変数と g の変数が同じならば、新しいノードを生成し、 h0←f0 g◇ 0, h1←f1 g◇ 1 とする
3. F の変数が g の変数よりも順序が先ならば、新しいノードを生成し、 h0←f0 g, h◇ 1←f1 g◇ とする
Apply 演算の例
0 1
x1
x1
0 1
x2
x2
0 1
x3
x3
0 1
x x1
x1
x2
2
0 1
x x + x1
x1
x2
2
x3
3
ANDOR
複数の論理関数で BDD を共有:共有2分決定グラフ( Shared
BDD )
X2X2
X1
10
X1
X21
0
0 01
1
0 0
1 1
x1x2 x1@x2 x1’ x1’+x2
否定エッジ
x x
xx
0 1
2 2
1 1
0 1 01
1
0
1
0
x 2 1 x 2 1
0
10
x2 1 x 2 1
x2
x11
0
xxxx
BDD の大きさは、使用する変数順に大きく依存
0
1
0
0
1
1
0
0
0 1
1
3
2
4
5
6
0 1
0 1
0
0 1
1
0
0
0
1
6
0 1
1
33
5 5 5 5
44
2 2 2 2
0 1
0 1 0 1 0 1
000
11
1
1
1
0 1
Best
Worst
X 1X 2X 3X 4X 5X 6
BDD の変数順決定最適変数順決定は、 NP 完全問題• ヒューリスティックにおける基本的な
考え方– 互いに関連する変数は近づける– 制御系の変数は前にもってくる
s
s s s
dd
dd
d
1
0 0 0
2
3
4
5
6
0 1
d0d0
d1d1
d7
d7
Out
s0
s0
s1
s1
s2
s2
s0, s1, s2 は制御変数
BDD の変数順決定• 回路から変数順の決定のためのヒュー
リスティックの考え方– 回路を深さ優先で出力から入力へ辿る– 入力数の多いゲートを優先する– ファンアウト数の多いゲートを優先する
x0
x1
x2
x3
x4
Depth first traversal:x0, x1, x2, x3, x4 orx2, x3, x0, x1, x4(with fanout consideration)
変数順の改良• 隣り同士の変数の交換はそこだけつなぎかえれ
ばよい
• これを繰り返せば、任意の変数順へ変更できる• よく使われるヒューリスティック
– 隣同士の2,3,4変数間での交換– 各変数を最初から最後まですべて移動し、最適なと
ころに置く( sift ヒューリスティック)
i-1 i-1 i-1
i+ 1i+ 1i+ 1i+ 1
i i i i
(A) (B) (C) (D)
f1 f3 f2 f4
i-1 i-1 i-1
i+ 1i+ 1i+ 1
i i i(A) (B)
(D)
f1 f3f2 f4
(E)
回路から BDD の生成
X2
X1
X2
X1
X2
X1
X2
X1
X2
X1
0 1 0 1 0 1 0 1 0 1
X10 1
0 10 1 0 1
01
01 01
X2
X1
0 1
0 1
01
0 1 1 0
BDD の計算機上での表現
ー ー ー
ー ー ー
1 0 1
1 1 0
2 0 3
2 2 3
2 2 1
← 0← 1← x1← x1’← x2x1’← x1 @ x2← x1’ + x2
変数 0エッジ 1エッジ
0123456
回路から BDD を生成するもう1つの方法
• BDD を入力から出力へ順に作っていくと、途中で BDD が大きくなりすぎることがある
• そこで、ある程度大きくなったら、そこで回路を仮に切断し、そこから先は新たな変数を導入して、 BDD を作っていく
• 回路の出力の BDD が作れたら、先ほど導入した変数を compose 演算で取り除く
• Apply でうまくいかない時でも、 BDD を作成できることも多い
回路から、 apply に基づく BDD の生成
X2
X1
X3
X4
X5
X3
X4
X5
0
X1X3
X4
X5
0 1
0 1
X3
X4 X2
1
X3
X4
X5
1
X1
0
X3
X4
X5
1
X1
X2
0
新規中間変数の導入
X2
X1
X2
X1
X2
X1
X2
X1
X2
X1
0 1 0 1 0 1 0 1 0 1
X10 1
0 10 1 0 101
01 01
X2
X1
0 1
0 1
01
01 1
0
X3
X4
X5
X
Cut here and introduce an intermidiate var: t
Compose 演算の実行
X2
X1
t
01
X3
X4
X5
1
X1
X2
0
0 1
X3
X4
X5
composed with =
t
宿題
• 次の関数の2分決定グラフ( BDD )を作成して、図示せよ。ただし、変数順は x1, x2とする– F1 = x1 ・ x2’ + x1’ ・ x2– F1 = x1’ ・ x2’ + x1 ・ x2
• 次の関数を2分決定グラフで表現したときに、ノード数が最大となる変数順と、最少となる変数順の例を示せ。– F3 = x1 ・ x2 ・ x3 ・ x4 + x5’ ・ x6’ ・ x7’ ・
x8’