邏輯優化

邏輯優化是指在一個或多個限制條件下，找到指定邏輯電路等效表示的過程，是數字電路與集成電路設計中邏輯綜合的一部分。
電路一般來說會受到最小芯片面積和預定響應延遲的限制。對給定電路進行邏輯優化的目標是獲得最小的邏輯電路，且其值與原始電路相同。通常具有相同功能的較小電路成本更低、佔用空間更小、功耗更低、延遲更短，且能最大限度地降低串擾、延遲信號處理的冒險/險象，以及集成電路上金屬結構納米級別的其他問題。
在邏輯代數領域中，將複雜的布爾表達式優化是尋找能最終產出相同結果，但更簡單的表達式。

**動機**
複雜電子電路（即包含邏輯門等眾多元件的電路）的問題在於，每個元件都會佔用物理空間，耗費生產時間和成本。“電路最小化”是邏輯優化的一種形式，用於減少集成電路中複雜邏輯的面積。
隨著邏輯綜合的出現，電子設計自動化（EDA）行業面臨的挑戰之一就是如何為給定設計找到最簡單的電路表示。兩級邏輯優化早已以奎因-麥克拉斯基算法的形式存在，後來又出現了啟發式邏輯壓縮器，但芯片密度的迅速提高及用於電路描述的硬件描述語言的普及，使邏輯優化成為今日的形式，有圖形界面的Logic Friday、Minilog、ESPRESSO-IISOJS（多值邏輯）等等。

**方法**
邏輯電路簡化方法同樣適用於布爾表達式最小化。

**分類**
如今，邏輯優化分為多個類別：
基於電路表示
 兩級邏輯優化
 多級邏輯優化
基於電路特性
時序邏輯優化
組合邏輯優化
基於執行類型
圖形優化方法
表格優化方法
代數優化方法

**圖形法**
圖形法通過表示邏輯變量與函數值的圖表表示所需邏輯函數。操作/檢查圖表可以省去很多繁瑣的計算。兩級邏輯圖形最小化方法包括- 萊昂哈德·歐拉（1707–1783）的歐拉圖（1768）- 約翰·維恩（1834–1923）的文氏圖（1880）- 莫里斯·卡諾的卡諾圖（1953）

**布爾表達式最小化**
下面列出的布爾表達式最小化（簡化）方法也適用於電路優化。
對於布爾函數由電路確定的情形（即，對於找到儘可能小等效電路的問題），無界電路最小化問題在時間複雜度上長期被猜想為是複雜的，並在2008年得到證明，不過也有一些有效的啟發式方法，如卡諾圖與奎因-麥克拉斯基算法，可以促進這過程。
布爾函數最小化方法包括- 奎因-麥克拉斯基算法- 佩特里克法

**最優多級法**
在文獻中，找到布爾函數最優電路表示的方法通常稱作“精確合成”（exact synthesis）。由於計算的複雜性，精確合成只適用於小型布爾函數。近來的方法將優化問題映射為布爾可滿足性問題，這樣就可以用SAT求解器找到最佳電路表示。

**啟發式方法**
啟發式方法用既定規則解決更大的問題集中實際有用的子集。啟發式方法可能產生不了理論上的最優解，但若有用，則能以最小代價實現大部分優化目標。計算機系統中用啟發式方法進行邏輯優化的例子是啟發式邏輯壓縮器。

**兩級表示法與多級表示法**
電路的兩級表示，嚴格來說是指以積之和（SOP）為單位的扁平化電路表示法，更適用於PLA設計的實現。多級表示則是以任意形式連接的SOP、POS（和之積）、因子形式等為單位的更通用的電路表示法。邏輯優化算法通常針對電路結構（SOP、因子形式）或功能標識（二元決策圖、代數決策圖）。SOP形式中，與門是最小單元，通過或門相連；POS形式中則相反，需要用括號將或項歸併到與門下，因為或的優先級低於與。SOP和POS形式都能很好地轉化為電路邏輯。
若有兩函數：
 
 
則上述兩級表示需要6個積項與24個CMOS Rep晶體管。
多級功能等價表示可以是
 
 
 
雖然級數是3，但由於共用了項，積項與字面量總數減少了。
同樣，我們將電路分為組合邏輯電路和時序邏輯電路。組合邏輯電路僅根據當前輸入產生輸出，可用布爾關係表示，如優先編碼器、譯碼器、數據選擇器、多路分解器等。
時序邏輯電路根據當前與過去的輸入產生輸出，依靠時鐘信號區分兩種輸入。它們可用有限狀態機表示，如觸發器與計數器。

**例子**
原電路與簡化電路示例
有很多最小化電路的方法，這是通過最小化（簡化）布爾函數達到目標的例子。電路執行的布爾函數與實線該函數的代數表達式直接相關。
考慮用於表示的電路。很明顯，此語句中使用了兩個非、兩個連接和一個析取，這意味著對應的電路需要兩個反相器、兩個與門與一個或門。
運用布爾代數定律或直覺可簡化（最小化）電路。由於示例指出，B為假時A為真，反之亦然，因此這僅僅意味著。用邏輯門表示的話，不等簡單地對應異或門，因此。則下面顯示的兩個電路等價，可用真值表檢驗：

**另見**
 二元決策圖 (BDD)- 任意項- 蘊涵項- 電路複雜性- 複合函數- 函數分解- 電路利用不足- 邏輯冗餘

**註釋**

**參考文獻**

**閱讀更多**
 cite book |author-last1=Lind |author-first1=Larry Frederick |author-last2=Nelson |author-first2=John Christopher Cunliffe |title=Analysis and Design of Sequential Digital Systems |date=1977 |publisher=Macmillan Press |isbn=0-33319266-4 |url=https://archive.org/details/AnalysisDesignOfSequentialDigitalSystems/ (146 pages)- cite book |title=Synthesis and Optimization of Digital Circuits |author-first=Giovanni |author-last=De Micheli |author-link=Giovanni De Micheli |date=1994 |publisher=McGraw-Hill |isbn=0-07-016333-2 (NB. Chapters 7–9 cover combinatorial two-level, combinatorial multi-level, and respectively sequential circuit optimization.)- cite book |author-first1=Gary D. |author-last1=Hachtel |author-first2=Fabio |author-last2=Somenzi |title=Logic Synthesis and Verification Algorithms |date=2006 |orig-year=1996 |publisher=Springer Science & Business Media |isbn=978-0-387-31005-3- cite book |author-first1=Zvi |author-last1=Kohavi |author-first2=Niraj K. |author-last2=Jha |title=Switching and Finite Automata Theory |edition=3rd |publisher=Cambridge University Press |date=2009 |isbn=978-0-521-85748-2 |chapter=4–6- cite book |author-first=Rob A. |author-last=Rutenbar |title=Multi-level minimization, Part I: Models & Methods |type=lecture slides |publisher=Carnegie Mellon University (CMU) |id=Lecture 7 |url=https://www.ece.cmu.edu/~ee760/760docs/lec07.pdf |access-date=2018-01-15 |url-status=live |archive-url=https://web.archive.org/web/20180115125725/https://www.ece.cmu.edu/~ee760/760docs/lec07.pdf |archive-date=2018-01-15 |postscript=; cite book |author-first=Rob A. |author-last=Rutenbar |title=Multi-level minimization, Part II: Cube/Cokernel Extract |type=lecture slides |publisher=Carnegie Mellon University (CMU) |id=Lecture 8 |url=https://www.ece.cmu.edu/~ee760/760docs/lec08.pdf |access-date=2018-01-15 |url-status=live |archive-url=https://web.archive.org/web/20180115125733/https://www.ece.cmu.edu/~ee760/760docs/lec08.pdf |archive-date=2018-01-15