22
VLSI 設設設設 設設設設設設設 2( Binary Decision Diagram, BDD – 設設設設設設設設設設設設設設設設設設設設設設設設設設設設設設設設 設設設設 – VLSI 設 CAD 設設設 設設設設設設設設設設設設設設設設設設 設設設設 – CAD 設設設設設設設設設設設設

VLSI 設計工学 2

  • Upload
    eze

  • View
    55

  • Download
    0

Embed Size (px)

DESCRIPTION

VLSI 設計工学 2. 2分決定グラフ( Binary Decision Diagram, BDD ) 論理関数の計算機上でのコンパクトな表現と効率的な処理を実現するデータ構造 VLSI 用 CAD のうち、論理関数処理を行うものには広く利用されている CAD 以外への応用も進んでいる. 論理式の記法. 論理変数は、基本的にアルファベット1文字か、アルファベット1文字に数字を付加したもの 論理積は、省略する 論理和は「+」 否定は、否定を取るべき式の最後に「‘」を付けるか、アッパーラインを引く 排他的論理和は「@」であらわす. - PowerPoint PPT Presentation

Citation preview

Page 1: VLSI 設計工学 2

VLSI 設計工学 2• 2分決定グラフ( Binary Decision

Diagram, BDD )– 論理関数の計算機上でのコンパクトな表現

と効率的な処理を実現するデータ構造– VLSI 用 CAD のうち、論理関数処理を行う

ものには広く利用されている– CAD 以外への応用も進んでいる

Page 2: VLSI 設計工学 2

論理式の記法

• 論理変数は、基本的にアルファベット1文字か、アルファベット1文字に数字を付加したもの

• 論理積は、省略する• 論理和は「+」• 否定は、否定を取るべき式の最後に

「‘」を付けるか、アッパーラインを引く

• 排他的論理和は「@」であらわす

Page 3: VLSI 設計工学 2

2分決定グラフ( Binary Decision Diagram, BDD )と

は?• 真理値表は、2分決定木で表現できる• 2分決定木で、根から葉に至るすべてのパス

で同じ変数順を使用する• 同型のサブ木を共有できる(グラフになる)• 論理関数の正規表現( Canonical form )

– 論理関数が等価であれば、同型のグラフになる• 多くの実用的な論理関数をコンパクトに表現

できる

Page 4: VLSI 設計工学 2

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

Page 5: VLSI 設計工学 2

順序付 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

Page 6: VLSI 設計工学 2

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

Page 7: VLSI 設計工学 2

セレクタ関数に対応する 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

Page 8: VLSI 設計工学 2

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◇   とする

Page 9: VLSI 設計工学 2

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

Page 10: VLSI 設計工学 2

複数の論理関数で BDD を共有:共有2分決定グラフ( Shared

BDD )

X2X2

X1

10

X1

X21

0

0 01

1

0 0

1 1

x1x2 x1@x2 x1’ x1’+x2

Page 11: VLSI 設計工学 2

否定エッジ

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

Page 12: VLSI 設計工学 2

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

Page 13: VLSI 設計工学 2

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 は制御変数

Page 14: VLSI 設計工学 2

BDD の変数順決定• 回路から変数順の決定のためのヒュー

リスティックの考え方– 回路を深さ優先で出力から入力へ辿る– 入力数の多いゲートを優先する– ファンアウト数の多いゲートを優先する

x0

x1

x2

x3

x4

Depth first traversal:x0, x1, x2, x3, x4 orx2, x3, x0, x1, x4(with fanout consideration)

Page 15: VLSI 設計工学 2

変数順の改良• 隣り同士の変数の交換はそこだけつなぎかえれ

ばよい

• これを繰り返せば、任意の変数順へ変更できる• よく使われるヒューリスティック

– 隣同士の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)

Page 16: VLSI 設計工学 2

回路から 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

Page 17: VLSI 設計工学 2

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

Page 18: VLSI 設計工学 2

回路から BDD を生成するもう1つの方法

• BDD を入力から出力へ順に作っていくと、途中で BDD が大きくなりすぎることがある

• そこで、ある程度大きくなったら、そこで回路を仮に切断し、そこから先は新たな変数を導入して、 BDD を作っていく

• 回路の出力の BDD が作れたら、先ほど導入した変数を compose 演算で取り除く

• Apply でうまくいかない時でも、 BDD を作成できることも多い

Page 19: VLSI 設計工学 2

回路から、 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

Page 20: VLSI 設計工学 2

新規中間変数の導入

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

Page 21: VLSI 設計工学 2

Compose 演算の実行

X2

X1

t

01

X3

X4

X5

1

X1

X2

0

0 1

X3

X4

X5

composed with =

t

Page 22: VLSI 設計工学 2

宿題

• 次の関数の2分決定グラフ( BDD )を作成して、図示せよ。ただし、変数順は x1, x2とする– F1 = x1 ・ x2’ + x1’ ・ x2– F1 = x1’ ・ x2’ + x1 ・ x2

• 次の関数を2分決定グラフで表現したときに、ノード数が最大となる変数順と、最少となる変数順の例を示せ。– F3 = x1 ・ x2 ・ x3 ・ x4 + x5’ ・ x6’ ・ x7’ ・

x8’