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日~ 中野先生の講義開始
© Copyright 2024 ExpyDoc