Verilog程式設計規範(補充中)

2021-06-21 05:29:19 字數 2071 閱讀 2357

良好的程式設計規範可以提高設計人員的工作效率,方便非原作者對**進行維護。

一、命名約定

1.檔案的名稱與模組的名稱一致,arbiter.v檔案內部模組為module arbiter。

2.每個模組用乙個檔案表示,而且乙個檔案最多表示乙個模組。

3.在整個層次化的設計中採用不變的名稱,例如在例化的時候,頂層模組和呼叫的底層模組的變數名稱保持一致。

推薦使用如下的例化方式

block1  u_block1(

.rst_n (rst_n),

.clk (clk),

.addr (addr),

.wr_data (wr_data)

.................... );

不推薦用如下的例化方式

block1  u_block1(

.reset_n (rst_n),

.clock (clk),

.address (addr),

.wr_data (wr_data)

.................... );

4.表示引數名和巨集名的常量必須用大寫表示。

例如,parameter data_width=10;

5.使用有意義的命名,以便對命名的物件一目了然。

二、檔案頭描述,在檔案的開始位置加上本檔案的描述,以便修改和其他使用者使用。 //

// company: 

// engineer: 

// // create date:    08:28:22 03/27/2014 

// design name: 

// module name:    a 

// project name: 

// target devices: 

// tool versions: 

// description: 

//// dependencies: 

//// revision: 

// revision 0.01 - file created

// additional comments: 

////

三、注釋規則

非原作者只通過讀**很難理解設計者的意圖,不利於**的維護和改進。

1.盡量使用單行注釋//,不推薦使用多行注釋/*....................*/。

2.刪除冗餘的注釋和**,讓程式盡量簡潔。

四、編碼風格

1.在例化模組時,不推薦使用表示式。

2.if條件判斷語句,括號內部的表示式應該為1bit位寬的數值。

3.在**對齊時推薦使用空格鍵,而不是推薦使用tab鍵。

4.將用到的內部變數宣告在同乙個段中。

5.不能將x賦值給訊號,testbench例外。

6.reg型變數不能再兩個always語句中賦值,在乙個always中賦值後,在其他的always語句中不能改變其值。

7.避免使用inout型別的埠。

8.向量埠在例化時最好宣告資料寬度,以提高**的可讀性。

例如 block u_block(

.vector (vector [7:0]) );

9.組合邏輯always的敏感訊號列表包括所有的輸入訊號。

10.組合邏輯用(=)阻塞賦值,時序邏輯用(<=)非阻塞賦值。

11.在可綜合**中不要使用initial、wait、fork-join和while語句,而且不能使用ca***和casez語句,只能使用case和if-else語句作為條件分支語句。

12.case語句和if-else語句必須保持完整性,即case語句要有default預設項,if語句要有對應的else項。

13.模組中的每個輸出訊號原則上必須通過暫存器輸出。任何不通過暫存器輸出的訊號必須加以注釋,注意防止出現反饋迴路。

14.盡量使用assign語句設計組合邏輯。

15.從rtl級轉換到gate級的綜合工具一般都不支援wait 宣告和# delay宣告,為了有效的綜合,這些語句應該避免。

16.埠宣告的順序--在保證先輸入再輸出的基礎上按如下順序clocks,resets,control signals,address bus,data bus。

Verilog語句語法補充說明

verilog文字規則 在verilog程式中,其值不能被隨意改變的量被稱為常量或者常數。常數主要有三種型別,整數型別 integer 實數型別 real 和字串型別 string 整數型別是可以綜合的,實數型和字串型不可綜合。整數 為了提高可讀性,在較長的數間可用下劃線分開,下劃線可以隨意用在整數...

網路程式設計補充

2.dhcp服務 自動給區域網中的電腦分配ip 路由器或者交換機的dhcp服務自動分配ip位址 ipv4 四個點分的十進位制表示 ipv6 和自己的位址相同,相同的話就接受,收檔案的一端如果要返回訊息的話就直接返回,不用廣播。子網掩碼 255.255.255.0 閘道器ip 路由器中連線交換機的口 ...

verilog程式設計題 取對數

3.4.小結 寫乙個組合邏輯 可以直接輸出以2為底的對數值,向上取整。這個 主要是用來熟悉for迴圈的使用,取以2為底的對數,通過右移實現。module log input wire 31 0 in,input wire clk,input wire rst n,output wire 7 0 ou...