[原創]Verilog 代碼編程規范(個人用)


本文為移植文章,在 原有基礎 上進行了更改完善。其中結合了自身的編寫習慣及互聯網尋找資料。互聯網參考資料可以點此進入下載鏈接進行下載查閱。

本文將分為三部分,第一部分為自我感覺舒適的代碼編程風格,第二部分為第一部分的一些附加說明。第三部分為我閱讀相關文章時所作的記錄,用於提煉總結第一部分。讀者閱讀第一、二部分就足夠了,如有興趣也歡迎瀏覽第三部分。

V編程規范整理

有關命名

通用

  1. 模塊/信號名盡量使用全小寫字母(若無特殊情況)。
  2. 模塊/信號名應使用有意義的單詞表示。
  3. 單詞連接使用下划線符號 "_"。

模塊命名

  1. 一個模塊一般放置一個文件中,文件名、模塊名保持一致。
  2. 模塊名控制在20個字符的長度。

信號命名

  1. 為了避免信號名標識符過於冗長,適當使用簡寫。
  2. 常數定義使用大寫字母(全大寫/首字母大寫)。
  3. 低電平有效信號,在其后添加后綴 "_n"。
  4. 三態信號,在其后添加后綴 "_z"。
  5. 寄存器打節拍信號,在其后添加后綴 "_r"。(次數不使用 "_reg"的願意是部分綜合器會對信號自行生成x_reg的信號,可能會造成一定的混淆)

有關注釋

通用

  1. 必要的注釋可以增加代碼的可讀性、可移植性、可維修性。
  2. 文件中代碼所占據的部分應當不少於整體的1/3。

文件注釋

  1. 文件的開頭,模塊聲明前需要一個頭部注釋。
  2. 模塊名
  3. 模塊功能
  4. 作者
  5. 修改記錄,應包含修改人,修改內容,修改時間等信息。

代碼注釋

  1. 代碼注釋盡量使用行注釋而非段落注釋
  2. 輸入輸出端口、所聲明變量都需要注釋簡單說明作用
  3. 程序塊(always塊)需要注釋說明作用,其中還需要不等條的注釋增加說明。

有關書寫

  1. 特殊符號前后使用空格進行隔開,增加代碼可讀性。
  2. 常使用 Tab 符號進行一些符號的對齊,設定 Tab 符號為 4 個空格。
  3. 如有判斷語句使用括號,括號的前后適當的使用空格隔開。
  4. 多級 if...else 嵌套,嚴格保證縮進對齊。
  5. 使用 begin...end 時,begin 跟在語句后(同一行),減小行數。實例說明可見附加說明中相關部分。
  6. 例化時嚴格使用 ".signal()" 來進行參數的傳遞。
  7. 三態邏輯可以在頂層使用,子模塊盡量避免使用三態信號。
  8. case 結構需要做到 full-case。

附加說明

說明一, 常用簡寫

說明二,暫無

個人閱讀筆記摘抄

在風格上,很多地方都有一致性,重復部分不贅述。

  1. 每個模塊一般存在一個單獨的文件,通常模塊名、文件名保持一致。
  2. 每個文件在開頭部分都應包含必要的注釋,應包含以下部分:
    1. 年份及公司名稱
    2. 作者
    3. 文件名
    4. 所屬項目
    5. 頂層模塊
    6. 模塊名稱及描述
    7. 修改記錄
  3. 如果沒有特殊情況,模塊名和信號名一律采用小寫字母。
  4. 常數定義(`define)和(parameter)采用大寫字母(全大寫或者部分大寫)。參數名小於20個字母。
  5. 標識符采用傳統C語言方式,單詞之間使用符號下划線"_"連接,比如 data_size。且需要采用用意義反應對象特征的一些標識符。
  6. 為了避免標識符過於冗長,可以使用一定的縮寫,比如write變為wt這些。
  7. 適當使用空格符號和Tab制表符號,Tab制表符定義為4個空格。
  8. 特殊符號前后應使用空格分隔開,比如:a <= a + 1'b1;
  9. 括號中有判斷條件的話,括號前后需要空格。
  10. 多級嵌套中,每一層需要嚴格對齊,begin...end要嚴格對齊。
  11. 注釋是必須的,增加可讀性和可移植性,注釋內容應不少於整篇的30%。
  12. For FSM variables, naming in <fsm_cs>, <fsm_ns>
  13. Use comments for port declarations (input and output), Use comments for internal signal declarations (wire or reg), Use comments for functional sections (always block).
  14. 多用"//"行注釋的方式替換段落注釋"/.../"。段落注釋可以用於文件開頭注釋。
  15. 例化時添加注釋說明,且使用.()例化方式。
  16. 及時刪除無效代碼
  17. 每一行聲明一個變量
  18. 線寬盡量對應。
  19. 低電平信號,信號后綴"_n"。
  20. 使用降序排列定義向量有效位順序,最低位0。
  21. 時鍾信號前綴"clk",復位信號前綴"rst"。
  22. 三態信號后綴加"_z",reg寄存器節拍信號后綴使用"_r"。
  23. 代碼中不能使用VHDL及Verilog保留字。
  24. 三態邏輯可以在頂層使用,子模塊避免使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM