Altifigence Academy

7 / 63 · 概念

ブール代数・等価変形・実装コスト

ド・モルガンの法則と因数分解で回路を変形し、論理的等価性とタイミングを区別します。

等価な式は全入力で同じ出力を返します

組合せ回路を簡単化する目標は、式を短く書くことだけではありません。機能を保ちながら、論理段数・ファンイン・ファンアウト・実際のライブラリセルを考慮します。まず、ブール代数ブール代数 0 と 1、AND・OR・NOT を扱う代数です。加算記号は通常 OR を表すので、整数の足し算とは規則が異なります。の ++ と積の表記を OR と AND として読みます。

A+AB=A,A+A‾B=A+BA+AB=A,\qquad A+\overline A B=A+B

二つ目の式は場合分けで確認できます。A=1A=1 なら両辺は 1、A=0A=0 なら両辺は BB です。覚えた恒等式を使った後も、意味を説明できることが大切です。

ド・モルガンの法則で NAND・NOR の構造を読む

AB‾=A‾+B‾,A+B‾=A‾ B‾\overline{AB}=\overline A+\overline B,\qquad \overline{A+B}=\overline A\,\overline B

例えば Y=AB+ACY=AB+AC は A(B+C)A(B+C) と等しくなります。前者は二つの AND と一つの OR、後者は一つの OR と一つの AND で描けます。ただし入力到着時刻や負荷が異なれば、ゲート数が少ない方が必ず速いとは限りません。

コンセンサス定理も役立ちます。

AB+A‾C+BC=AB+A‾CAB+\overline A C+BC=AB+\overline A C

BC=1BC=1 のとき、A=0A=0 なら A‾C\overline A C が、A=1A=1 なら ABAB が既に 1 なので、BCBC は定常状態の機能では冗長です。ただし、この項を除くと遷移時のハザード特性が変わる場合があります。この違いは後の遅延の講義で扱います。

下の各列は時間経過ではなく、ABC の入力組合せ一つを表します。二つの出力がすべての列で同じか確認してください。ゲート数や経路が違っても、安定した 0/1 入力に対する機能は同じです。

AB + AC と A(B + C) の等価性
波形データを表示
波形データ:各文字は一つの区間、ドットは前の状態の保持、p はクロック 1 周期を表します。
信号波形バスの値
ABC23452345000 → 001 → 010 → 011 → 100 → 101 → 110 → 111
AB+AC0....1..
A(B+C)0....1..

等価性検証の基準

変形前後を y_ref と y_opt とし、入力空間が小さければすべての入力を比較します。一つ二つの例が通っただけで、等価と結論してはいけません。

SystemVerilog
assign y_ref = (a & b) | (a & c);
assign y_opt = a & (b | c);
assign mismatch = y_ref ^ y_opt;

0/1 の入力八組すべてで mismatch が常に 0 でなければなりません。X/Z を含む 4 状態シミュレーションや順序回路の等価性には、追加の条件が必要です。証明した範囲を明示する習慣が、設計レビューの基本です。

自分で考えてみましょう

F=A‾B+AB+AB‾F=\overline A B+AB+A\overline B を簡単化し、検証すべき入力組合せの数を答えてください。

解説を見る

最初の二項は B(A‾+A)=BB(\overline A+A)=B なので、F=B+AB‾=A+BF=B+A\overline B=A+B です。変数は二つなので四つの組合せを確認します。式が等価でも、二つの実装の伝搬遅延が等しいとは限りません。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。