verilog語言簡述
verilog是硬件描述語言,並不是單純的“敲代碼”。
C語言與Verilog的最大區別
- 互連:在硬件系統中,互連可以將實現模塊間的連接,而C語言中並沒有這樣的變量。Verilog的wire型變量配合一些驅動結構能有效地描述出網線地互連
- 並發:C語言天生是串行的,不能描述硬件之間的並發特性,C語言編譯后,其機器指令在CPU的高速緩沖隊列中基本是順序執行的;而Verilog可以有效地描述並行地硬件系統。
- 時間:運行C 程序時,沒有一個嚴格的時間概念,程序運行時間的長短主要取決於處理器本身的性能;而Verilog 語言本身定義了絕對和相對的時間度量,在仿真時可以通過時間度量與周期關系描述信號之間的時間關系。
HDL語言的本質
Verilog 作為硬件描述語言,它的本質作用在於描述硬件。Verilog 雖然采用了C 語言的形式,但是它的最終描述結果是芯片內部的實際電路。所以評判一段HDL 代碼優劣的最終標准是其描述並實現的硬件電路的性能(包括面積和速度兩個方面 )。
使用HDL 語言可以從算法、系統級(System Level) 、功能模塊級(Function Model Level) 、行為級(Behavior Level) 、寄存器傳輸級( RTL , Register Transfer Level) 、門級(Gate Level) 和開關級(Switch Level) 等不同層次描述數字電路系統,然后通過EDA 工具綜合、仿真並實現該系統。可以說HDL 語言的出現是數字系統設計方法的一個重大飛躍。
Verliog語言不能僅僅在行為級上實現,也就是功能實現;寫verilog必須考慮到實際的實現,也就是要在寄存器傳輸級去思考,這一級是是行為級的更低一級,需要考慮時延,芯片面積,功耗等方面問題,也就是腦子里要先有電路,再有verilog。也就是不僅僅在應用實現就行,需要更底層的思維。筆者在這方面也放過錯誤。
基於HDL的設計步驟
- 系統與功能模塊定義(系統與功能模塊描級)
- 行為級描述測試激勵
- 寄存器傳輸級
- 對RTL級描述進行功能仿真
- 邏輯綜合(使用RTL級EDA工具)
- 門級
- 綜合后門級仿真
- 布局規划與布局布線
- 布局布線后的時序仿真與驗證