VLSI設計支援工学 2

VLSI設計支援工学 3
• 論理合成
– これから2週間で積和形論理式簡単化を説明
– 商用ツールとしてほとんどのVLSIで広く利用されてい
る
– 離散値を扱う一般的関数に適用可能
– 実用的なアルゴリズムが開発されており、CAD以外
の問題へも応用可能
• 例: 積和形論理式簡単か → パターン認識
– 今日は、各種の定義と準備
論理空間(Boolean space)のcubeによる表現
•
•
•
•
•
B
0
n 次元cubeで論理関数を表現できる
基本的にカルノーマップと同じ
B = {0,1}
B2 = {0,1}×{0,1} = {00, 01, 10, 11}
B3 = {0,1} ×{0,1} ×{0,1}
= {000, 001, 010, 011, 100, 101, 110, 111}
B
1
B
2
B
3
B
4
論理関数(Boolean function)
f(x) : Bn → Bm
0
1
B = {0,1}, x = (x1, x2, …, xn)
1
1
• 各頂点に値(0か1)が割り当てられる
• Onset: {x| f(x) = 1} = f1 = f-1(1)
0
0
-1
• Offset: {x| f(x) = 0} = f = f (0)
• f1 = Bnのとき tautology(恒真)という f≡1
• F0 = Bnのとき 充足不可能 という
• 全ての x∈Bnに対しf(x) = g(x)にとき、f と g は等
価であるという
• x1, x2, …は変数
• x1, x’1, x2, x’2, …はリテラルと呼ばれる(x’はxの
否定)
1
0
リテラルは論理関数
• リテラルとは、1つの変数か、その否定: x, x’で
あり、論理関数を表す
0
0
0
0
1
1
1
1
x1
f = x1
1
1
1
1
0
0
0
0
x1
_
f = x1
論理関数の表現
•
論理関数は以下の規則にしたがって表現できる
(あるいは、記述できる)
• 括弧: (、)
• リテラル: x, y, z, x’, y’, z’, …
• 論理演算:+(OR)、・(AND 省略することもあ
る)
• 否定: (x + y)’
• 例
f = x1 x2’ + x1’ x2
= (x1 + x2) (x1’ + x2’)
H = a + bc
= (a’(b’ + c’))’
論理関数 f(x): Bn → B(1出力論理回路)
• Bn空間には、2n個の頂点がある
x 1x2 x3
011
n
2
• 2 個の異なる論理関数がある
x
000
3
111
x2
x1
000
001
010
011
100
101
110
111
x 1x2 x3
111
• ∞個の論理式が書ける
f=x+y
= xy’ + xy + x’y
= xx’ + xy’ + y
= (x + y)(x + y’) + x’y
x3 000
x1
x2
000 1
001 0
010 1
011 =>0
100 0
101 1
110 0
111 1
"truth table"
• 論理合成とは、「最も良い」論理式(論理関数の表現)を求め
ること
Cube(積項)
• いくつかのリテラルをANDしたものがcube(積項)
– C = xy’ = (x=1)(y=0)はcube(積項)
z
=>
x=1
y=0
y
_
xy
x
• fに含まれるcubeのことをimplicant(主項)という
• Cube Cがk個のリテラルをもっていると、Cの中には
2n-k個の頂点がある
例: C = xy’ ⊆B3, k = 2, n = 3
C = {100, 101}であり、23-2=2個の頂点をもつ
• k = nのときのcubeを最小項(min-term)という
積和形論理式(sum-of-products, SOP)
• 任意の論理関数は、cubeの和として表現できる
– f = ab + ac + bc
• Cubeは積項なので、これは積和形論理式(SOP)
• SOPはcubeの集合と考えられる
– f = {ab, ac, bc}
• 論理関数fを表すcubeの集合のことをfのカバーという
– {ab, ac, bc}はf = ab + ac + bcのカバー
bc
ac ab
c
a
b
= onsetの頂点
Onsetの各頂点は、少なく
とも1つのcubeでカバーさ
れなければならない
• カバーで多くの論理関数を効率よく表現できる
– 多くの論理関数に対し、小さいカバーがある
• 積和形論理式最適化あるいは、2段論理最適化とは、最
小のカバー(cube数最小)を求めること
非冗長性
• F = {c1, c2, …, ck}がf のカバーとする
– f = Σki=1ci
• cube ci∈Fが非冗長とは、F – {ci} ≠fのこと
F - {ab} = /f
F = ab+ac+bc
bc
ac
bc
ab
ac
c
b
a
カバーされない
最大項(prime)
• Implicant(主項)ciが最大項(prime)であるとは、
ciからどれか1つのリテラルをとったcube cciにつ
いて、f + cci ≠f となってしまうこと
• 例:
F = ab + ac + bc
ci = ab
cci = a (リテラルbをとったもの)
F + {cci} – {ci} = a + ac + bc
bc
ac
a
c
b
a
offsetの一部もカバーしているのでf と等価ではない
最大非冗長カバー
• あるカバーが最大非冗長であるとは、そのカ
バーが最大項かつ非冗長cubeのみでできている
とき
• F の主項が必須項(essential prime)であるとは、
その主項にしかカバーされない最小項がonsetに
あるとき
abc
• 例: f = abc + b’d + c’d
– abcが必須であるのはなぜか?
– 他に必須項はあるか?
– 必須項でないものはどれか?
c
_
bd
b
a
d
_
cd
積和形論理式のハードウェアでの実
現:
PLA(Programmable Logic Array)
• 多出力関数を表現
• PLAとは、f: Bn → BmをSOPとして実現するもの
• 各cubeはPLAのANDプレーンに1度だけ現れ、
ORプレーンで複数の出力で共有される
f1 = ab’cd + abc’d’
f2 = ab’c’d + ab’cd’
f3 = ab’cd’ + ab’d’
a
b’
c
d
a
b
c’
a
b’
c’
d’
d
a
b’
c
d’
a
b’
d’
f1
f 2 f3