在IC設(shè)計端的諸多崗位中,只要提到基礎(chǔ)知識和必備技能,就一定少不了Verilog。
按照20年芯片設(shè)計老兵的說法“1. 知道m(xù)odule的基本框架。2. 知道怎么寫assign,和always塊。3. 其他沒有了?!?/p>
也就是說用VerilogHDL做設(shè)計不要追求花架子,要多花心思在電路設(shè)計上。
Verilog是什么?
Verilog HDL是目前世界上最流行的硬件描述語言之一,是用文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言。
使用Verilog能夠清楚地展現(xiàn)邏輯電路圖、表達式等等,還可以用來表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。?(需要借助EDA工具)
Verilog為何誕生?
IC行業(yè)諸多工具、崗位的出現(xiàn),都是源于行業(yè)和市場的需求。
電路設(shè)計復(fù)雜度的不斷提高,傳統(tǒng)的電路原理圖設(shè)計方法的工作量越來越大。但與之對應(yīng)的是:設(shè)計效率和正確性不斷降低,驗證的難度不斷提高。這樣的現(xiàn)狀已經(jīng)無法滿足市場對于IC產(chǎn)品高性能、低功耗、快上市的需求。1985年,Gateway Design Automation公司為其仿真器產(chǎn)品Verilog-XL開發(fā)了Verilog語言。1989年,Cadence收購Gateway公司,并繼續(xù)推廣Verilog語言。后來Verilog受到了越來越多工程師的歡迎,IEEE也制定了Verilog IEEE標準。
Verilog有何特點?
Verilog的語法風格類似于C語言,對于有C語言基礎(chǔ)的同學來說,還是比較友好的。但是Verilog和C還是有本質(zhì)上的區(qū)別,C語言是一種軟件開發(fā)語言,主要是控制硬件實現(xiàn)某些功能。而Verilog作為硬件描述語言,其實最終還是為了產(chǎn)生實際的硬件電路或者對硬件電路進行仿真。
【示例1】
左邊是與門電路符號,右邊是把左邊電路轉(zhuǎn)換成verilog描述。
【示例2】
左邊是異步復(fù)位觸發(fā)器電路,右邊是把觸發(fā)器電路轉(zhuǎn)換成verilog描述。也就是說,Verilog的代碼并不僅僅是一行行代碼,而是一塊一塊硬件模塊。
基本語法介紹
Verilog語言采用模塊化設(shè)計,以模塊集合的形式來描述數(shù)字系統(tǒng)。模塊(module)可以理解為verilog HDL語言的基本描述單位,它用于描述某個電路的功能或結(jié)構(gòu),以及該模塊和其他模塊通信的輸入輸出端口。模塊支持層次嵌套,一個模塊可由若干子模塊構(gòu)成,模塊所構(gòu)建的硬件電路可以是基本門電路也可以是一個復(fù)雜的系統(tǒng)電路。每個模塊必須以module開頭,以endmodule結(jié)尾;設(shè)計模塊還需要定義端口,用input、output、inout分別描述輸入、輸出、雙向端口;模塊中間的Verilog程序的書寫類似C語言,每條語句以分號結(jié)束;使用“/*…*/”和“//”可以對多行或一行程序進行注釋。
1. 用assign描述持續(xù)賦值
assign語句一般用于組合邏輯電路賦值,也稱之持續(xù)賦值,例如下圖電路結(jié)構(gòu)可描述為:
assign f=((a&b)|(c&d));
2.用always描述過程塊賦值
例:16位的計數(shù)器模塊設(shè)計
3.?模塊實例化(調(diào)用模塊)
Verilog中一個模塊調(diào)用另一個模塊是通過實例化來實現(xiàn)的,這樣就能建立起層次化的設(shè)計結(jié)構(gòu)。
例如在其他模塊調(diào)用上面的16位計數(shù)器模塊。
如何提高Verilog編碼水平?
Verilog是IC設(shè)計工作中必不可少的。首先一定要熟悉最基本的語法知識,對于技術(shù)類的崗位來說,只學基礎(chǔ)知識顯然是不夠的,還需要不斷練習和仿真,養(yǎng)成良好的代碼編寫習慣。
作為芯片設(shè)計端的工程師,心中對于要實現(xiàn)的電路必須門清。
“至少你必須在頭腦中把RTL級的行為構(gòu)建出來。然后再用assign (組合邏輯)加always (時序邏輯)把你的想法描述出來?!?/p>
這里給新手幾條建議:深入理解Verilog概念和語法;實踐編寫代碼;閱讀和分析優(yōu)秀的代碼;調(diào)試和驗證代碼;參與開源項目和社區(qū),多交流多學習。
最重要的還是“心中有電路”,Verilog也好、EDA也好,都只是實現(xiàn)電路的工具。工具的掌握是基本功,長期下功夫還是要在電路結(jié)構(gòu)和電路設(shè)計上。