在積體電路設計中，邏輯合成是所設計數位電路的高抽象級描述，經過布林函式化簡、最佳化後，轉換到的邏輯閘級別的電路連線網表的過程。 概述 通常，邏輯綜合的資訊來源是硬體描述語言 主要是 VHDL 和 Verilog 等，設計人員通常使用硬體描述語言來進行電路的高階抽象（通常是數位電路暫存器傳輸級的資料、行為）描述數位電路的邏輯功能，這樣他們可以把更多精力投入功能方面的設計，而避免在一開始就研究可能極其複雜的電路連線。 然而，從電路的高階抽象描述到實際連線網表，並不是一項簡單的工作。在以前，這需要設計人員完成邏輯函式的建立、簡化、繪製邏輯閘網表等諸多步驟。隨著電路的整合規模越來越大，人工進行邏輯綜合變成了一項十分繁瑣的任務。 隨著電子設計自動化的發展，邏輯綜合這一步驟可以由計算機工具輔助完成。但是，由於自動化邏輯綜合工具並不總能夠產生最最佳化的邏輯閘網表，因此人工的介入仍然不可缺少。某些工具能夠在可程式設計邏輯器件，如可程式設計陣列邏輯和現場可程式設計邏輯閘陣列上生成資料流過程，而另一些工具則可以生產專用積體電路。邏輯綜合是電子設計自動化的一個重要方面。 歷史 邏輯綜合的發展可以追溯到喬治布林（1815－1864）對邏輯代數的研究（邏輯代數現在也被稱為 布林代數）。1938 年，克勞德夏農展示瞭如何使用邏輯代數來描述電路開關切換的過程。在早期，邏輯設計牽涉了對真值表的處理（如利用卡諾圖）。透過將一系列規則將卡諾圖上的某些項進行合併，可以得到最小化的邏輯，即邏輯式可以得到簡化。人工進行上述的操作可以處於四到六個變數的卡諾圖。但是以圖形表示的卡諾圖不適合演算法的匯出，因此人們需要研究代數形式的邏輯化簡演算法。 對邏輯最小化進行自動化的第一步是引入奎因－麥克拉斯基演算法，它可以在計算機上執行。進行邏輯簡化的目的是得到使用最少數量的邏輯器件，並精確地對錶達原始邏輯式的意義。人們可以使用卡諾圖來完成變數較少的邏輯函式的化簡。現在，Espresso 啟發式邏輯簡化器成為了完成這一過程更有效的工具。早期數字邏輯的另一個研究領域是對有限狀態機的簡化和編碼，這一工作對於當時的設計者來說並不是件容易的工作。邏輯綜合的應用大多於數字計算機設計相關。IBM 和貝爾實驗室在邏輯綜合自動化工具發展的早期扮演了關鍵的角色。從分立的邏輯閘到可程式設計邏輯陣列促進了高效率的兩級邏輯最小化的發展，這是由於兩級描述中的最小化過程可以減少可程式設計邏輯陣列的面積。 然而，兩級的邏輯電路在超大規模積體電路中的重要程度受到限制。大多數的設計者使用多級邏輯。實際情況是，幾乎所有電路的暫存器傳輸級描述或其他行為級描述都是多級的。早期 IBM 的 LSS 曾被用來設計多級電路。它使用了局部的變形來簡化邏輯。LSS 以及 Yorktown Silicon 編譯系統在 1980 年代促進了邏輯綜合的研究程序。一些大學將這些研究領域公開，其中加州大學伯克利分校的 SIS、加州大學洛杉磯分校的 RASP 以及科羅拉多大學博爾德分校的 BOLD 最為知名。在十幾年的時間內，邏輯綜合技術迅速轉變成市場上銷售的電子設計自動化產品。 隨著積體電路的規模的不斷增大，邏輯綜合工具的重要性日益凸顯。首先，由於電路十分複雜，過去適合小規模、中規模積體電路的技術方法不再具有效率的優勢，此外，在深亞微米級的超大規模積體電路中，元件的互連延遲變得十分複雜，但是這一情況對於電路的正常工作十分重要，現代的硬體描述語言和邏輯綜合、物理設計工具可以很好地處理這些問題。將先進的硬體描述語言、邏輯模擬、邏輯綜合等工具配合使用，可以提高設計工作的效率和準確程度。 邏輯元件 在標準的設計流程中，邏輯設計是電子電路的功能設計轉換到以邏輯、算數以及控制流程的表示形式。這一步驟的成果通常是一個暫存器傳輸級描述。邏輯設計之後的下一步是電路設計。在現代的電子設計自動化中，邏輯設計可以透過使用基於行為級描述的高階合成工具自動完成。 邏輯功能元件通常由與、或、異或、與非等邏輯閘組成，它們在數位電路中是最基本的電路元件。使用這些邏輯元件可以實現運算等功能。諸如加法器、乘法器都是由基本的邏輯元件構成的。 在邏輯綜合之前，設計人員通常使用高階抽象的硬體描述語言，這通常不涉及所使用的具體器件工藝。邏輯綜合過程將高階抽象的描述與具體的器件工藝結合起來。邏輯綜合公司和硬體廠商通常進行合作，後者把基礎元件（如各種邏輯閘）的硬體描述語言進行預定義，附加在邏輯綜合工具裡，這些預定義包含了基礎元件的功能、時序等方面的資訊。這些資訊的集合叫做 工藝庫。有的時候，系統提供的工藝庫並不是最最佳化的，設計人員需要自己完成某個特定工藝庫的定義。 高階綜合或行為級的描述 為了提高設計人員的工作效率，人們致力於電路的行為級描述的研究，並在 2004 年推出了首款商用解決方案，EETimes Highlevel synthesis rollouts enable ESL 這些工具可以用來設計複雜的專用積體電路和現場可程式設計邏輯閘陣列應用。這些工具可以在 C 層次到暫存器傳輸級之間自動工作，用來實現門級別的設計。如今，高階綜合，也被稱為行為級綜合，主要指從高階語言，例如 C 語言等，來實現邏輯電路的合成，而邏輯綜合則特指從電路的結構、邏輯功能向暫存器傳輸級的轉換。 儘管自動化邏輯綜合工具已經有一定的發展，但是該技術仍然有不完善之處。硬體描述語言只有一部分子集能夠被正確轉化，它們被稱為 可綜合的。 多層次邏輯的最佳化 具有實用邏輯功能的電路通常使用了多層次的邏輯網路。現代的電路綜合工具，可以讀取、識別暫存器傳輸級的硬體描述語言程式碼，構建對應的多層次邏輯電路網路。不過有的時候，兩個電路雖然能夠實現基本相同的邏輯功能，但是由於二者程式碼不盡相同，其中一個綜合生成的門級網表可能遠比另一個複雜。例如，在 Verilog 裡，設計人員如果不指名向量暫存器的位寬，那麼邏輯綜合產生的網表會比指明位寬的情況龐大得多；另外，如果 ifelse 語句結構沒有指明所有可能出現的情況，雖然在功能驗證時不會出現問題，但是邏輯綜合工具有可能認為設計人員在定義一個電平敏感的鎖存器。這就需要設計人員掌握一定的硬體描述語言程式設計技巧，並使用良好的程式碼風格。 接下來，綜合工具會使用對設計者來說不可見的技術方法，將這個邏輯電路網路進行最佳化。最佳化的內容，是在此階段採取一些與具體半導體器件工藝無關的計算機技術，來簡化邏輯函式，從而讓所用的邏輯閘數減少，並滿足一定的時序、面積、功耗要求。這一步所完成的任務和人工利用卡諾圖化簡邏輯函式的目的一致，不過自動化的邏輯綜合工具大大降低了人工操作的難度和錯誤率。 最後，最佳化過後的邏輯閘網表將進一步接受各種驗證，保證其功能符合設計人員的預期。然後，網表將被送往積體電路硬體廠商，在那裡技術人員將採用器件與具體器件工藝相關的技術，根據邏輯閘網表製造真實的電路，如專用積體電路。 參考文獻 Electronic Design Automation For Integrated Circuits Handbook by Lavagno Martin and Scheffer ISBN 9780849330964 A survey of the field of Electronic design automation The above summary was derived with permission from Volume 2 Chapter 2 Logic Synthesis by Sunil Khatri and Narendra Shenoy A Consistent Approach in Logic Synthesis for FPGA Architectures by Burgun Luc Greiner Alain and Prado Lopes Eudes Proceedings of the international Conference on Asic ASICON Pekin October 1994 pp 104107 延伸閱讀 also as published as softcover ISBN 9780387310046 in 2006 相關條目 電子設計自動化 暫存器傳輸級 功能驗證 I