VLSI設計支援工学 2

Download Report

Transcript VLSI設計支援工学 2

VLSI設計支援工学 4
• 積和形論理式の扱い
–
–
–
–
包含関係のチェック
恒真性(tautology)のチェック
否定の計算
Unite recursive paradigm
シャノン コファクタ(Shannon cofactor)
• n変数論理関数fのコファクタfxi, fxi’とは
fxi = f(x1, …, xi-1, 1, xi+1, …, xn)
fxi’ =
f(x1, …, xi-1, 0, xi+1, …, xn)
• キューブCに対するコファクタとは、Cに含まれる
各変数すべてについてコファクタを計算したもの
– C = x1x4’x5の場合、fに対して、x1=1, x4=0, x5=1を代入
したものになる
– 結果として、fCは、x1, x4, x5に依存しない関数となる
– ただし、 fCは依然としてn変数関数とみなす
111
111
111
– x1f ≠fx1
000
000
000
__
f = ac + ac
af =ac
fa = c
コファクタに関する基本定理
定理: c をキューブ、f を論理関数とすると、
c⊆f fc ≡ 1
f
c
証明:
xfx = xf ならびに、fx は x に依存しないとい
う性質を利用
fc ≡ 1とすると、cfc = c となり、 fc = c
省略。各自でやっておいてください。
• この定理を使うと、f の冗長なキューブを取
り除ける
論理関数とカバー表現
• 積和形論理式をキューブの和と考え、キューブの
集合で表したものをカバーと呼ぶ
• カバーに対するコファクタは、カバーの各キューブ
に対するコファクタの集合となる
• キューブに対するコファクタ Cxi は:
– C が xi を含まなければ、C のまま
– C が xi を含めば、C から xi を取ったもの
– C が xi’ をめば、ф(空)
• 例: C = x1 x4’ x5
– Cx2 = C
– Cx1 = x4’ x5
– Cx4 = ф
• 例: F = x1x2x3 + x2’x4 + x3’x4, Fx2 = x1x3 + x3’x4
論理関数のシャノン展開
f = Bn → B
シャノン展開定理: f = xifxi + xi’fxi’
カバーに対しての定理: F を f のカバーとすると、
F = xiFxi + xi’Fxi’ も f のカバーである
•
•
F(F)は変数 xi で展開されているという。また変数 xi
のことを展開変数(splitting variable)という
例: F = ab + ac + bc
F = aFa + a’Fa’ = a(b + c + bc) + a’(bc)
= ab + ac + abc + a’bc
=>
カバー行列
• カバーを行列の形で表現
– 肯定のリテラルは1、否定のリテラルは0、出現しないリテ
ラルは2(または-)
– 例: F = ac + c’d
abcd
abcd
ac 1 2 1 2
1-1c’d 2 2 0 1
--01
• 2 (-)は、そのリテラルが0の時も1の時も含むことを
意味する
– ac’ = 1 2 0 2
= {1, {1, 0}, 0, {1,0}}
= {1000, 1100, 1001, 1101}
Prime(最大)とredundant(冗長)
• カバー F のあるキューブ c がprime(最大)で
あるとは、c からどのリテラルをとっても、f に
含まれなくなること
• カバー F の キューブ c がredundant(冗長)で
あるとは、Fから c を取り除いても、論理関数
f と同じであること
• 論理式簡単化: 各キューブをprimeにし、冗
長なものを取り除く
• コファクタを使えば、tautologyチェック問題と
なる(どうすればよいか?)
ユネイト関数とユネイト カバー
• 論理関数 f が変数 xi について、正(負)ユネイト
(positive (negative) unate)であるとは、
fxi’ ⊆ fxi (fxi ⊆ fxi’)
• この時、f は xi について、単調増加(減少)関数で
あるともいう
• ユネイト関数とは、すべての変数についてユネイ
トな関数をいう
• カバー F が変数 xi についてユネイトであるとは、
F の全てのキューブで、変数 xi が肯定か否定か
どちらかでしか現れないこと
• カバー F がユネイトであるとは、 F が全ての変数
についてユネイトであること
ユネイト関数、ユネイト カバーは扱いやすい
• ユネイト関数がtautologyであるには、すべて要素2
からなるキューブがある場合に限る 2 2 2
• ユネイト関数の否定は、効率的に計算できる
• ユネイト カバーの表す関数は、必ずユネイト関数
である
• ユネイト関数を表すカバーはユネイトであるとは限
らない
• ユネイト関数の最大カバー(prime キューブからな
るカバー)は必ずユネイトである
abc
abc
110
120
202
202
abc’+b’
ac’+b’
一般の論理関数からユネイト関数へ
• Unate recursive paradigm
– 一般の論理式は、ユネイトでない(バイネイトとも
いう。バイネイトになっている変数をバイネイト変
数という)
– ヒューリスティックでバイネイト変数を1つ選び、そ
れで場合分けする
• 各々の場合では、バイネイト変数が少なくとも1つ減っ
ている
• これをユネイトカバーになるまで繰り返す
• ユネイトになったら、ユネイト用のルーチンを利用
– 場合分けした両方の処理が終わった時点で結果
を統合する
– Tautologyチェック、関数の否定の計算など応用範
囲は広い
Unate recursive paradigmによる
tautology チェックの例
2120
2210
1211
0222
unate reduction
0222
no tautology
(case 2)
_
x1
x1
2120
tautology
2 2 1 0 no(case
3?)
2211
x2
2220
2210
2211
2120
2210
2222
_
x2
2210
2211
_
x3
x3
2220
2221
x4
2222
case 1
tautology
(case 1)
2220
_
x4
2222
case 1
no tautology
(case 2)
no tautology
case 2
Unate reduction: ユネイトカバー
の性質を利用した効率化法
• 定理: F ≡ 1
F’ ≡ 1
A X
F=
T
'
F
A≠
/ 1
T = 2's
証明:
F’ ≡ 1なら全て2のキューブがある
F’がtautologyでなければ、Fもtautology
でないことを証明する
ユネイト関数の否定の計算法
1. カバー行列を (0,1)行列Bに変換
abcde
________
21202
22001
11221
12021
01010
0 0 1 1 1= B
11001
10101
2. Bの最小コラムカバーを求める
01010
00111
11001
10101
1
1
1
1
3. 最小コラムカバー各々について、キューブを生
成する
•
{1,4}から a’d はf’のキューブとなる
4. 全ての最小コラムカバーから作られるキューブ
の集合が f’ のカバーとなる
ユネイト関数の否定の計算例
abcde
________
21202
22001
11221
12021
01010
00111
11001
10101
最小コラムカバーの全て
{(1,4),(2,3),(2,5),(4,5)}
これらから、
_
_
__
_
_
f = a d +b c +b e + d e
Unate covering 問題
• 前のページの最小コラムカバーを求める問
題
• Unate covering問題:
– B (Bij = {0,1})が与えられた時、Bx ≧ 1かつΣjxj
が最小となる x (xj = {0,1})を求める
• 各々のxjにコストcjがついており、 Σjcjxj を最
小化する場合も多い
• 論理CAD関係では、さかんに現れる問題
– 実際の問題で効率的なアルゴリズムがある
• B = {0, 1, -}の場合には、Binate covering問
題と言われる
残りの講義予定
• 5月8日 小松先生が代講
– LSIの低消費電力設計技術
• 5月15日 多段論理式簡単化
• 5月22日 テクノロジマッピング
• 5月29日~ 中野先生の講義開始