在實(shí)際工作中,許多公司對(duì)Verilog程序編寫規(guī)范都有要求。在公司內(nèi)部統(tǒng)一Verilog程序編寫規(guī)范不僅可以增強(qiáng)程序的可讀性、可移植性,而且也有助于邏輯工程師之間交流、溝通,提升邏輯組成員之間的團(tuán)隊(duì)協(xié)作能力。本文就大部分公司常見的Verilog程序編寫規(guī)范作一個(gè)介紹。
01 編寫風(fēng)格
begin/end要單獨(dú)另起一行,配對(duì)的begin/end列對(duì)齊。
if/else分支中,多條語(yǔ)句必須使用being/end。多條語(yǔ)句若不加begin/end,則只有第一條語(yǔ)句會(huì)有效,故多條語(yǔ)句必須加begin/end。
書寫時(shí)括號(hào)和括號(hào)間不用空格。舉例:assign y = ((a==1’b1) && (b==1’b1))。
if/else語(yǔ)句必須配對(duì)使用,時(shí)序邏輯中else不用給自身賦值,空操作時(shí)只需要寫“;”。
所有的縮進(jìn)以4個(gè)空格為單位。
分號(hào)和逗號(hào)緊跟信號(hào)。
case/default配對(duì)使用。
模塊內(nèi)部不能使用高阻或未知結(jié)果用作對(duì)比條件。例:if(a == 1'bz) 或 if(a == 1'bx)。
02 命名風(fēng)格
Verilog的保留關(guān)鍵字不允許作為命名字符串使用。在RTL代碼中使用Verilog的關(guān)鍵字命名可能會(huì)導(dǎo)致綜合或仿真出現(xiàn)編譯錯(cuò)誤。
命名字符集只能為[“a-z”,“A-Z”,"0-9”, “_” ],不能有其他字符。
代碼中的所有信號(hào)名都必須小寫。
信號(hào)命名總數(shù)不超過(guò)15個(gè)字符。
使用下劃線作為命名分隔符。
不允許兩個(gè)連續(xù)的下劃線出現(xiàn)在命名字符串中。如果采用連續(xù)兩個(gè)或多個(gè)下劃線,不便于代碼閱讀和維護(hù),而且閱讀時(shí)很難區(qū)分有幾個(gè)下劃線。
不允許使用大小寫來(lái)區(qū)分模塊名稱、變量、信號(hào)。
用大小寫來(lái)區(qū)分模塊、變量或信號(hào)不僅不方便代碼閱讀和理解,而且有安全隱患。因?yàn)榫幾g器有可能不區(qū)分大小寫,增加代碼出錯(cuò)的風(fēng)險(xiǎn)。
03 設(shè)計(jì)風(fēng)格
模塊中經(jīng)常使用的參數(shù),或在例化時(shí)需要修改的參數(shù)使用parameter定義。
同一always塊中,非阻塞賦值和阻塞賦值不能混用。在時(shí)序邏輯語(yǔ)句塊(always)中統(tǒng)一采用非阻塞型賦值;在組合邏輯語(yǔ)句塊(always和assign)中統(tǒng)一采用阻塞型賦值;組合時(shí)序混合電路,統(tǒng)一采用非阻塞賦值;不可以用反或混合使用阻塞和非阻塞賦值;
不要使用門控時(shí)鐘。門控時(shí)鐘的定義:組合邏輯產(chǎn)生的信號(hào)當(dāng)其它模塊的時(shí)鐘稱為門控時(shí)鐘。門控時(shí)鐘是非常危險(xiǎn)的,極易產(chǎn)生毛刺,使邏輯誤動(dòng)作。在可編程邏輯器件中,一般使用觸發(fā)器的時(shí)鐘使能端,而這樣,并不增加資源,只要保證建立時(shí)間,可使毛刺不起作用。
模塊的內(nèi)部信號(hào)統(tǒng)一用時(shí)鐘的上升沿采樣。
模塊中的信號(hào)必須在復(fù)位時(shí)被賦予初始值。
不要將時(shí)鐘信號(hào)作為數(shù)據(jù)信號(hào)輸入,不允許使用行波計(jì)數(shù)器。行波計(jì)數(shù)器中,前級(jí)寄存器的數(shù)據(jù)輸出作為后級(jí)寄存器的時(shí)鐘輸入。行波計(jì)數(shù)器雖然原理簡(jiǎn)單,設(shè)計(jì)方便,但級(jí)連時(shí)鐘(行波時(shí)鐘)最容易造成時(shí)鐘偏差(△T),級(jí)數(shù)多了,很可能會(huì)影響其控制的觸發(fā)器的建立/保持時(shí)間,使設(shè)計(jì)難度加大。
在條件表達(dá)式中不要使用高阻Z。在邏輯代碼中,除了三態(tài)控制邏輯接口允許使用高阻Z狀態(tài)進(jìn)行信號(hào)賦值外,在其他信號(hào)賦值,條件表達(dá)式等邏輯中都不允許使用高阻Z狀態(tài)。
向量、參數(shù)和信號(hào)的位寬在定義時(shí)要清晰的表示出來(lái),數(shù)據(jù)位寬要匹配。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603385 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110100 -
程序編寫
+關(guān)注
關(guān)注
1文章
14瀏覽量
8228
原文標(biāo)題:Verilog語(yǔ)言編程規(guī)范
文章出處:【微信號(hào):fpga加油站,微信公眾號(hào):fpga加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論