VERYLOG編碼規(guī)范_第1頁
VERYLOG編碼規(guī)范_第2頁
VERYLOG編碼規(guī)范_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Verilog編碼規(guī)范!一. 強(qiáng)調(diào)Verilog代碼編寫風(fēng)格的必要性。強(qiáng)調(diào)Verilog代碼編寫規(guī)范,經(jīng)常是一個(gè)不太受歡迎的話題,但卻是非常有必要的。每個(gè)代碼編寫者都有自己的編寫習(xí)慣,而且都喜歡按照自己的習(xí)慣去編寫代碼。與自己編寫風(fēng)格相近的代碼,閱讀起來容易接受和理解。相反和自己編寫風(fēng)格差別較大的代碼,閱讀和接受起來就困難一些。曾有編程大師總結(jié)說,一個(gè)優(yōu)秀的程序員,能維護(hù)的代碼長(zhǎng)度大約在1萬行數(shù)量級(jí)。代碼的整潔程度,很大程度上影響著代碼的維護(hù)難度。遵循代碼編寫規(guī)范書寫的代碼,很容易閱讀、理解、維護(hù)、修改、跟蹤調(diào)試、整理文檔。相反代碼編寫風(fēng)格隨意的代碼,通?;逎?、凌亂,會(huì)給開發(fā)者本人的調(diào)試、修改

2、工作帶來困難,也會(huì)給合作者帶來很大麻煩。(實(shí)際上英文Coding Style有另一層涵義,更偏重的是,某一個(gè)電路,用那一種形式的語言描述,才能將電路描述得更準(zhǔn)確,綜合以后產(chǎn)生的電路更合理。本文更偏重的是,編寫Verilog代碼時(shí)的書寫習(xí)慣。)二. 強(qiáng)調(diào)編寫規(guī)范的宗旨??s小篇幅提高整潔度便于跟蹤、分析、調(diào)試增強(qiáng)可讀性,幫助閱讀者理解便于整理文檔便于交流合作三. 變量及信號(hào)命名規(guī)范。1. 系統(tǒng)級(jí)信號(hào)的命名。系統(tǒng)級(jí)信號(hào)指復(fù)位信號(hào),置位信號(hào),時(shí)鐘信號(hào)等需要輸送到各個(gè)模塊的全局信號(hào);系統(tǒng)信號(hào)以字符串Sys開頭。2. 低電平有效的信號(hào)后一律加下劃線和字母n。如:SysRst_n;FifoFull_n;3.

3、 經(jīng)過鎖存器鎖存后的信號(hào),后加下劃線和字母r,與鎖存前的信號(hào)區(qū)別。如CpuRamRd信號(hào),經(jīng)鎖存后應(yīng)命名為CpuRamRd_r。低電平有效的信號(hào)經(jīng)過鎖存器鎖存后,其命名應(yīng)在_n后加r。如CpuRamRd_n信號(hào),經(jīng)鎖存后應(yīng)命名為CpuRamRd_nr多級(jí)鎖存的信號(hào),可多加r以標(biāo)明。如CpuRamRd信號(hào),經(jīng)兩級(jí)觸發(fā)器鎖存后,應(yīng)命名為CpuRamRd_rr。4. 模塊的命名。在系統(tǒng)設(shè)計(jì)階段應(yīng)該為每個(gè)模塊進(jìn)行命名。命名的方法是,將模塊英文名稱的各個(gè)單詞首字母組合起來,形成3到5個(gè)字符的縮寫。若模塊的英文名只有一個(gè)單詞,可取該單詞的前3個(gè)字母。各模塊的命名以3個(gè)字母為宜。例如:Arithmatic

4、Logical Unit模塊,命名為ALU。Data Memory Interface模塊,命名為DMI。Decoder模塊,命名為DEC。5. 模塊之間的接口信號(hào)的命名。所有變量命名分為兩個(gè)部分,第一部分表明數(shù)據(jù)方向,其中數(shù)據(jù)發(fā)出方在前,數(shù)據(jù)接收方在后,第二部分為數(shù)據(jù)名稱。兩部分之間用下劃線隔離開。第一部分全部大寫,第二部分所有具有明確意義的英文名全部拼寫或縮寫的第一個(gè)字母大寫,其余部分小寫。舉例:CPUMMU_WrReq,下劃線左邊是第一部分,代表數(shù)據(jù)方向是從CPU模塊發(fā)向存儲(chǔ)器管理單元模塊(MMU)。下劃線右邊Wr為Write的縮寫,Req是Request的縮寫。兩個(gè)縮寫的第一個(gè)字母都大

5、寫,便于理解。整個(gè)變量連起來的意思就是CPU發(fā)送給MMU的寫請(qǐng)求信號(hào)。模塊上下層次間信號(hào)的命名也遵循本規(guī)定。若某個(gè)信號(hào)從一個(gè)模塊傳遞到多個(gè)模塊,其命名應(yīng)視信號(hào)的主要路徑而定。6. 模塊內(nèi)部信號(hào):模塊內(nèi)部的信號(hào)由幾個(gè)單詞連接而成,縮寫要求能基本表明本單詞的含義;單詞除常用的縮寫方法外(如:Clock->Clk, Write->Wr, Read->Rd等),一律取該單詞的前幾個(gè)字母( 如:Frequency->Freq, Variable->Var 等);每個(gè)縮寫單詞的第一個(gè)字母大寫;若遇兩個(gè)大寫字母相鄰,中間添加一個(gè)下劃線(如DivN_Cntr);舉例:SdramW

6、rEn_n;FlashAddrLatchEn;四. 編碼格式規(guī)范。1. 分節(jié)書寫,各節(jié)之間加1到多行空格。如每個(gè)always,initial語句都是一節(jié)。每節(jié)基本上完成一個(gè)特定的功能,即用于描述某幾個(gè)信號(hào)的產(chǎn)生。在每節(jié)之前有幾行注釋對(duì)該節(jié)代碼加以描述,至少列出本節(jié)中描述的信號(hào)的含義。2. 行首不要使用空格來對(duì)齊,而是用Tab鍵,Tab鍵的寬度設(shè)為4個(gè)字符寬度。行尾不要有多余的空格。3. 注釋。使用/進(jìn)行的注釋行以分號(hào)結(jié)束;使用/* */進(jìn)行的注釋,/*和*/各占用一行,并且頂頭;例:/ Edge detector used to synchronize the input signal;4.

7、空格的使用:不同變量,以及變量與符號(hào)、變量與括號(hào)之間都應(yīng)當(dāng)保留一個(gè)空格。Verilog關(guān)鍵字與其它任何字符串之間都應(yīng)當(dāng)保留一個(gè)空格。如:Always ()使用大括號(hào)和小括號(hào)時(shí),前括號(hào)的后邊和后括號(hào)的前邊應(yīng)當(dāng)留有一個(gè)空格。邏輯運(yùn)算符、算術(shù)運(yùn)算符、比較運(yùn)算符等運(yùn)算符的兩側(cè)各留一個(gè)空格,與變量分隔開來;單操作數(shù)運(yùn)算符例外,直接位于操作數(shù)前,不使用空格。使用/進(jìn)行的注釋,在/后應(yīng)當(dāng)有一個(gè)空格;注釋行的末尾不要有多余的空格。例:assign SramAddrBus = AddrBus31:24, AddrBus7:0 ;assign DivCntr3:0 = DivCntr3:0 + 4b0001;as

8、sign Result = Operand;5. 同一個(gè)層次的所有語句左端對(duì)齊;Initial、always等語句塊的begin關(guān)鍵詞跟在本行的末尾,相應(yīng)的end關(guān)鍵詞與Initial、always對(duì)齊;這樣做的好處是避免因begin獨(dú)占一行而造成行數(shù)太多;例:always ( posedge SysClk or negedge SysRst ) beginif( !SysRst ) DataOut <= 4'b0000;else if( LdEn ) beginDataOut <= DataIn;Endelse DataOut <= DataOut + 4'b0001;end6. 不同層次之間的語句使用Tab鍵進(jìn)行縮進(jìn),每加深一層縮進(jìn)一個(gè)Tab;8. 在endmodule,endtask,endcase等標(biāo)記一個(gè)代碼塊結(jié)束的關(guān)鍵詞后面要加上一行注釋說明這個(gè)代碼塊的名稱;9. 在task名稱前加tsk以示標(biāo)記。在function的名稱前加func以示標(biāo)記。例如:task tskResetSystem;endtask /of tskResetSystem五小結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論