複製鏈接
請複製以下鏈接發送給好友

硬件描述語言

鎖定
硬件描述語言(英文: Hardware Description Language ,簡稱: HDL )是電子系統硬件行為描述、結構描述、數據流描述的語言。利用這種語言,數字電路系統的設計可以從頂層到底層(從抽象到具體)逐層描述自己的設計思想,用一系列分層次的模塊來表示極其複雜的數字系統。然後,利用電子設計自動化( EDA )工具,逐層進行仿真驗證,再把其中需要變為實際電路的模塊組合,經過自動綜合工具轉換到門級電路網表。接下去,再用專用集成電路 ASIC 或現場可編程門陣列 FPGA 自動佈局佈線工具,把網錶轉換為要實現的具體電路佈線結構。
中文名
硬件描述語言
外文名
Hardware Description Language
簡    稱
HDL
類    型
計算機設計語言

硬件描述語言簡介

硬件描述語言(英文: Hardware Description Language ,簡稱: HDL )是電子系統硬件行為描述、結構描述、數據流描述的語言。利用這種語言,數字電路系統的設計可以從頂層到底層(從抽象到具體)逐層描述自己的設計思想,用一系列分層次的模塊來表示極其複雜的數字系統。然後,利用電子設計自動化( EDA )工具,逐層進行仿真驗證,再把其中需要變為實際電路的模塊組合,經過自動綜合工具轉換到門級電路網表。接下去,再用專用集成電路 ASIC 或現場可編程門陣列 FPGA 自動佈局佈線工具,把網錶轉換為要實現的具體電路佈線結構。
這種高層次 (high-level-design) 的方法已被廣泛採用。據統計,目前在美國硅谷約有 90% 以上的 ASIC 和 FPGA 採用硬件描述語言進行設計。 [1] 

硬件描述語言歷史

硬件描述語言 HDL 的發展至今已有 20 多年的歷史,併成功地應用於設計的各個階段:建模、仿真、驗證和綜合等。到 20 世紀 80 年代,已出現了上百種硬件描述語言,對設計自動化曾起到了極大的促進和推動作用。但是,這些語言一般各自面向特定的設計領域和層次,而且眾多的語言使用户無所適從。因此,急需一種面向設計的多領域、多層次並得到普遍認同的標準硬件描述語言。 20 世紀 80 年代後期, VHDL 和 Verilog HDL 語言適應了這種趨勢的要求,先後成為 IEEE 標準。
隨着系統級 FPGA 以及系統芯片的出現,軟硬件協調設計和系統設計變得越來越重要。傳統意義上的硬件設計越來越傾向於與系統設計和軟件設計結合。硬件描述語言為適應新的情況,迅速發展,出現了很多新的硬件描述語言,像 Superlog 、 SystemC 、 Cynlib 等等。 [1] 

硬件描述語言目的

1970年代以來,集成電路的複雜程度按照半導體業界摩爾定律的趨勢急劇增長。電路設計人員的工作量不斷增加,這使得他們必須放棄以往那樣從特定的電子元件,如CMOS雙極性晶體管為基礎,來開始複雜電路的設計工作。設計流程的關注重心開始轉到電路系統的數據流動以及有關時序的信息,這樣的設計抽象級別被稱為“寄存器傳輸級”。設計人員通過使用硬件描述語言,可以將精力放在電路邏輯功能、時序的設計上,而不需要一開始就考慮具體的器件製造工藝以及它們對電路功能的影響。 [1] 

硬件描述語言結構

硬件描述語言是對電路系統的結構、行為的標準文本描述。硬件描述語言和一些並行編程語言一樣存在並行性的表達方式。然而,和大多數用於軟件設計的編程語言不同,硬件描述語言可以描述硬件系統在不同時間的時序行為,而時序性正是硬件電路的重要性質之一。在計算機輔助設計中,用於描述電路模塊中連線、各層次模塊之間互連的硬件描述語言代碼,被稱為“網表”。硬件描述語言可以在結構級(或稱邏輯門級)、行為級、寄存器傳輸級這幾種不同的層次上對電路進行描述,實現同一功能的硬件描述語言也可以使用任一層次的硬件描述語言代碼來描述。通過邏輯綜合,後兩種層次的硬件描述語言代碼可以被轉換到低抽象級別的門級描述,但是採用不同廠商的工具、使用不同的綜合設置策略可能會產生不同的結果。
在實現具體的硬件電路之前,設計人員可以利用硬件描述語言來進行仿真。在硬件實現的過程中,硬件描述語言的源文件通常會被轉換成一種類似可執行文件的中間文件,該文件可以解釋硬件描述語言的各種代碼、語句的語義。正由於此,硬件描述語言具有了類似軟件編程語言的一些性質,但是總體來説,它仍然屬於規約語言建模語言的範疇。模擬電路也有自己的硬件描述語言,但和數字電路的差異較大。 [2] 

硬件描述語言與控制流語言的比較

可以使用傳統的編程語言控制流程的特性來指代硬件的數據流性質,例如包含特定增強類庫C++(如SystemC)即可實現這樣的目的。儘管如此,用於軟件設計的編程語言不能對電路的時序性質進行描述,這導致軟件編程語言不能替代專用的硬件描述語言。在最近地位愈加顯著的硬件驗證語言——SystemVerilog出現之前,人們利用C++和一些邏輯仿真工具協同工作,從而在硬件驗證中實現面向對象程序設計的思想。
硬件描述語言的部分子集是可綜合的,這意味着可以使用邏輯綜合工具通過“閲讀”行為級、寄存器傳輸級的代碼,來“推斷”這些代碼對應的功能,從而給出一個經過優化的的電路連線網表。邏輯綜合工具(如新思科技的Design Compiler等或Cadence的RTL Compiler)通常會對設計人員定義的邏輯功能進行邏輯化簡,這樣就可以避免冗雜的邏輯門級網表。含有延遲的硬件描述語言代碼(例如Verilog中#5這樣的代碼)通常是不可合成的,也就是説,這部分代碼在邏輯綜合過程中會被忽略。這類代碼在硬件驗證中的作用更加顯著。此外,還有其他部分代碼結構也是不可合成的。 [2] 

硬件描述語言使用硬件描述語言進行設計

通過使用硬件描述語言,集成電路(特別是現代的數字電路)的設計效率得以大大提高。大多數設計人員從設計行為目標或高級架構圖出發開始設計。電路系統的控制決斷結構以流程圖、狀態圖為原型。編寫硬件描述語言代碼的過程與目標電路的特性以及設計人員的編程風格有關。硬件描述語言可以是高抽象級別的算法描述。設計人員經常使用腳本語言(如PerlPython)來在硬件描述語言中生成重複性的電路結構。硬件描述語言的編程工作可以在一些代碼編輯器中完成,這些軟件通常提供自動縮進、保留字高亮顯示等輔助功能。
隨後,硬件描述語言代碼會經過審核階段。在進行邏輯綜合之前,電子設計自動化軟件會進行一系列自動檢查,如掃描硬件描述語言代碼中存在的語法錯誤等。自動檢查程序會將違背規則的代碼呈現在報告中,並指出它們潛在的危害。代碼中的硬件邏輯錯誤也會在此階段被檢查。這些審核過程可以儘可能減少代碼在綜合後引發的錯誤。
在工業界,硬件描述語言設計一般止於綜合的完成。一旦邏輯綜合工具將硬件描述語言代碼映射到邏輯門級的網表,該網表會被送到之後的後端工藝產線。根據所使用的不同器件,如現場可編程邏輯門陣列(FPGA)、專用集成電路(ASIC)、門陣列(Gate array)、專用集成電路標準元件(Standard cell),實際電路的硬件製造過程可能不同,但是硬件描述語言一般並不過多關注的後端流程。普遍地説,隨着設計流程逐漸轉向物理實現方式,設計數據庫的重心將轉向器件製造工藝相關的信息,這些信息通常由硬件廠商提供,設計人員編寫的硬件描述語言代碼並不需要包含這方面的信息。最後,集成電路在物理上得以實現。 [2] 
參考資料
  • 1.    鄧元慶、關宇、賈鵬、石會. 數字設計基礎與應用. 北京: 清華大學出版社. ISBN 978-7-302-21406-9
  • 2.    Michael D. Ciletti. Advanced Digital Design with Verilog HDL. Prentice Hall. 2010.