1 / 16

VLSI 設計支援工学 5

VLSI 設計支援工学 5. 論理式の多段化 積和形論理式と多段論理式 論理式の多段化 論理関数を考慮する割り算 代数的に行う割り算 キューブ数、リテラル数を2に制限した処理. 積和形論理式と多段論理式. 積和形論理式 =  AND-OR の2段 多段論理式 = 3段以上の任意の形 一般的には、多段論理式の方がコンパクトな表現になる ace + ade + bce + bde + cf + df = (c + d)(e(a + b) + f) 回路面積の目安 = リテラル数 16 → 6 回路遅延の目安 = 2入力基本ゲートで表現した時の段数 5段 → 4段.

dewey
Download Presentation

VLSI 設計支援工学 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VLSI設計支援工学 5 • 論理式の多段化 • 積和形論理式と多段論理式 • 論理式の多段化 • 論理関数を考慮する割り算 • 代数的に行う割り算 • キューブ数、リテラル数を2に制限した処理

  2. 積和形論理式と多段論理式 • 積和形論理式 = AND-ORの2段 • 多段論理式 = 3段以上の任意の形 • 一般的には、多段論理式の方がコンパクトな表現になる • ace + ade + bce + bde + cf + df = (c + d)(e(a + b) + f) • 回路面積の目安 = リテラル数 • 16 → 6 • 回路遅延の目安 = 2入力基本ゲートで表現した時の段数 • 5段 → 4段

  3. 論理式の割り算 • f = gh + r • fをgで割った商がhで、あまりがr • 一般的には、hとrはユニークには決まらない • hとrに制限をつけない=論理的割り算 • 無限通りの割り方がある • 1回の割り算に積和形論理式の簡単化と同じ手間がかかる • ghを代数的積に制限する=代数的割り算 • 結果がユニークにできる • O(n log n)の手間で計算できる • そんなに悪くないことが多い

  4. 論理式の代数的処理 • 代数的論理式とは、論理関数の積和形論理式表現で、他の1つのキューブに含まれるキューブ(single cube containmentと呼ぶ)のないもの • ab + abc + cdは代数的論理式ではない • ab + cdは代数的論理式 • 代数式fとgの代数的積fgとは、fgを展開し、single cube containmentについて冗長性を取ったもの • fとgに共通な変数がないとfgは必ず代数的積 • (a + b)(c + d) = ac + ad + bc + bdは代数的積 • (a + b)(a + c) = aa + ac + ab + bc = a + bcは代数的積ではない

  5. 論理式の割り算の例 f= ad + ae + bcd + j g1 = a + bc g2 = a + b • fをg1で代数的に割ると、商はd、あまりはae + j • fをg2で代数的に割ると、商は(a + b)d、あまりはae + j (代数的には割れない)

  6. Weak division • 代数的割り算であまりのキューブ数最小のもの • 定理: weak divisionの結果はユニーク • 割り算の手間はO(n log n)nは積項数

  7. Weak divisionのアルゴリズム Weak_div(F,G): U = {uj}/* Fの全てのキューブだが、Gに現れるリテ ラルだけに制限したもの*/ V = {vj}/* Fの全てのキューブだが、Gに現れるリテ ラル以外のリテラルに制限したもの */ /* uj vjがFのj番目のキューブとなっている */ Vi = {vj ∈ V| uj = Gi} H = ∩ Vi R = F – GH return (H, R) • 上のアルゴリズムはO(n log n)です。どこがそうでしょうか? • O(n)にできますか?

  8. Weak divisionのアルゴリズム:例題 F = ace + ade + bc + bd + be + a’b + ab G = ae + b U = ae + ae + b + b + b + b + ab V = c + d + c + d + 1 + a’ + 1 Vae = c + d Vb = c + d + 1 + a’ H = c + d R = be + a’b + ab F = (ae + b)(c + d) +be +a’b + ab

  9. Gをどうやって選ぶか?カーネル、コカーネルGをどうやって選ぶか?カーネル、コカーネル • 効果的に割れるGを探す必要 • Gは無限にある • 問題: 論理式の集合{Fi}が与えられた時、出切れだけ多く共通に割れる代数的項を探す • 探索対象=カーネルに制限 • 定義 • 積和形論理式がキューブフリーとは、すべての積項に共通なリテラルがないことを言う • 積和形論理式のカーネルとは、その論理式に含まれる複数の積項からリテラルをとってキューブフリーにしたもの • 積和形論理式のコカーネルとは、カーネルを作るときにとったリテラルの積

  10. カーネル、コカーネルの例 x = adf + aef + bdf + bef + cdf + cef + g = (a + b + c)(d + e)f + g カーネル コカーネル a + b + c df, ef d + e af, bf, cf (a + b + c)(d + e)f + g 1

  11. カーネルに関する基本定理 • 論理式F、Gについて、Fの任意のカーネルkFとGの任意のカーネルkGが共通に持つ積項がたかだか1の場合、FとGは積項数2以上の積和形論理式で代数的には割れない • つまり、論理式をカーネルで割ったしまえば、複数の論理式を共通に割れるのは、キューブに限定される

  12. カーネルの計算アルゴリズム R ← Kernel(j, G) R ← 0 If (Gがキューブフリー)R ← {G} For i = j+1, …, n { If (liが1つの積項のみで現れる) then continue c ← G/liを割り切る最大キューブ If (あるk<i に対し、lk ∈ c) then continue else R ← R ∪ Kernel(I, G/(li・c)) } Return R • Kernel(0, F)がすべのカーネルを計算 • lk ∈ cが高速化のポイント(同じカーネルを求めない)

  13. abcd+abce+adfg+aefg+adbe+acdef+beg b c a (a) e c d e f b d c (a) (a) ac+d+g e d g f d c e e f d+e b+df b+ef b+cf cd+g c+d ce+g d+e c+e k co-k ernel ernel + + + + + 1 a f g d e de (( bc )( ) ( b cf ))) beg + + + + a f g d e de ( bc )( ) ( b cf ) + + ab d e de c ( ) + abc d e + abd e c + abe d c + + ac d e def b ( ) + acd ef b = + = + a 注意: f ad ae d e =bc ( ).

  14. 多段化の例 f1 = ab(c(d + e) + f + g) + h f2 = ai(c(d+e) + f + j) + k カーネルd + eで割ると l = d + e f1 = ab(cl + f + g) + h f2 = ai(cl + f + j) + k さらにカーネルcl + fで割ると m = cl + f f1 = ab(m + g) + h f2 = ai(m + j) + k 共通に割れるカーネルはないので、キューブで割る n = am f1 = b(n + ag) + h f2 = I(n + aj) + k

  15. より効率的に: キューブ数、リテラル数を2に制限した処理より効率的に: キューブ数、リテラル数を2に制限した処理 • 割るごとにカーネルを再計算するのはたいへん • 論理式によってはカーネルが多数ある • キューブ2のカーネルに制限 • リテラス数2のキューブに制限 • F = abd + a’b’d + a’cd に対しては • ab + a’b’, b’ + c, ab + a’cはキューブ2のカーネル • a’d はリテラル数2のキューブ • O(m2)個のキューブ数2カーネル(mはキューブ数) • 同時に複数の除算が可能 • 否定も同時に考慮可能

  16. キューブ数2カーネルによる割り算 • すべてのキューブ数2カーネルを生成し、互いに否定の関係になっているものを把握する • キューブ数2のカーネルとリテラル数2のキューブで割り算を実行する • 割り算後、キューブ数2カーネルをアップデートする • リテラル数が減少しなくなるまで、上を繰り返す • 高速(20倍程度) • 通常のカーネルを使うものと同等の品質

More Related