0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

verilog語言編寫規(guī)范

ZYNQ ? 來源:華為 ? 作者:華為 ? 2022-11-23 17:28 ? 次閱讀

	

本次分享華為公司的《大規(guī)模邏輯設計指導書》中的內容。


1 目的

本規(guī)范的目的是提高書寫代碼的可讀性 可修改性 可重用性 優(yōu)化代碼綜合和仿真的結 果 指導設計工程師使用VerilogHDL規(guī)范代碼和優(yōu)化電路 規(guī)范化公司的ASIC設計輸入從而做到
  1. 邏輯功能正確
  2. 可快速仿真
  3. 綜合結果最優(yōu)( 如果是hardware model)
  4. 可讀性較好

2 范圍

本規(guī)范涉及Verilog HDL編碼風格 編碼中應注意的問題 Testbench的編碼等本規(guī)范適用于Verilog model的任何一級 RTL ehavioral, gate_level) 也適用于出于仿真綜合或二者結合的目的而設計的模塊.

3 定義

  • Verilog HDL:Verilog 硬件描述語言
  • FSM:有限狀態(tài)機
  • 偽路徑:靜態(tài)時序分析 STA 認為是時序失敗 而設計者認為是正確的路徑。

4 引用標準和參考資料

下列標準包含的條文 通過在本標準中引用而構成本標準的條文 在標準出版時 所示版本均為有效 所有標準都會被修訂 使用本標準的各方應探討 使用下列標準最新版本的可能性。

5規(guī)范內容

5.1 Verilog 編碼風格

本章節(jié)中提到的Verilog編碼規(guī)則和建議適應于 Verilog model的任何一級 RTL behavioral,gate_level) 也適用于出于仿真 綜合或二者結合的目的而設計的模塊

5.1.1

選擇有意義的信號和變量名 對設計是十分重要的 命名包含信號或變量諸如出處 有效狀態(tài)等基本含義 下面給出一些命名的規(guī)則
  • 用有意義而有效的名字 有效的命名有時并不是要求將功能描述出來 如:

	
  1. For( I = 0; I < 1024; I = I + 1)

  2. Mem[I] <= #1 32’b0;

For 語句中的循環(huán)指針I(yè) 就沒必要用loop_index作為指針名
  • 用連貫的縮寫

    長的名字對書寫和記憶會帶來不便 甚至帶來錯誤 采用縮寫時應注意同一信號在模塊中的一致性 縮寫的例子如下Addr :addressPntr :pointerClk :clockRst :reset

  • 用最右邊的字符下劃線表示低電平有效 高電平有效的信號不得以下劃線表示 短暫 的引擎信號建議采用高有效

    Rst_ Trdy, Irdy Idsel.

  • 大小寫原則

    名字一般首字符大寫 其余小寫 但parameter, integer 定義的數值名可全部用大寫兩個詞之間要用下劃線連接。如 Packetaddr, Datain, Memwr Memce_

  • 全局信號名字中應包含信號來源的一些信息如 D_addr[7:2] 這里的 D 指明了地址是解碼模塊(Decoder module)中的地址

  • 同一信號在不同層次應保持一致性

  • 自己定義的常數 類型等用大寫標識

    如 parameter CYCLE=100

  • 避免使用保留字

    如 in out x z等不能夠做為變量 端口或模塊名

  • 添加有意義的后綴 使信號名更加明確 常用的后綴如下:b4bdb53a-67ab-11ed-8abf-dac502259ad0.png

5.1.2 Modules

  • 頂層模塊應只是內部模塊間的互連

    Verilog設計一般都是層次型的設計 也就是在設計中會出現一個或多個模塊 模塊間的調用在所難免 可把設計比喻成樹 被調用的模塊就是樹葉 沒被調用的模塊就是樹根 那么在這個樹根模塊中 除了內部的互連和模塊的調用外 盡量避免再做邏輯 如不能再出現對reg變量賦值等 這樣做的目的是為了更有效的綜合 因為在頂層模塊中出現中間邏輯 Synopsys 的design compiler 就不能把子模塊中的邏輯綜合到最優(yōu)。

  • 每一個模塊應在開始處注明文件名 功能描述 引用模塊 設計者 設計時間及版權信息等,如:


	
  1. Filename﹕ RX_MUX.v

  2. Author

  3. Description

  4. CalledbyTopmodule

  5. RevisionHistory99-08-01

  6. Revision1.0

  7. Email﹕ M@sz.huawei.com.cn

  8. CompanyHuaweiTechnology.Inc

  9. Copyright(c) 1999, HuaweiTechnologyInc, All right reserved

  • 不要對Inpu t進行驅動, 在module 內不要存在沒有驅動的信號 更不能在模塊端口中出現沒有驅動的輸出信號,避免在仿真或綜合時產生warning 干擾錯誤定位。

  • 每行應限制在80個字符以內 以保持代碼的清晰 美觀和層次感 一條語句占用一行 如果較長 超出80個字符 則要換行

  • 電路中調用的 module名 用 Uxx 標 示 向量大小表 示要清晰 采用基于名字(namebased )的調用而非基于順序的(orderbased),如:


	
  1. InstanceUInstance2(

  2. .DataOut(DOUT ),

  3. .DataIn(DIN ),

  4. .Cs_(Cs_)

  5. );

  • 用一個時鐘的上沿或下沿采樣信號, 不能一會兒用上沿 ,一會兒用下沿 ,如果既要用上沿又要用下沿 ,則應分成兩個模塊設計。建議在頂層模塊中對Clock做一非門,在層次模塊中如果要用時鐘下沿就可以用非門產生的Posedge Clk_, 這樣的好處是在整個設計中采用同一種時鐘沿觸發(fā), 有利于綜合。基于時鐘的綜合策略

  • 在模塊中增加注釋

    對信號 參量 引腳 模塊 函數及進程等加以說明 便于閱讀與維護

  • Module 名要用大寫標示 且應與文件名保持一致, 如


	
  1. Module DFF_ASYNC_RST(

  2. Reset,

  3. Clk,

  4. Data,

  5. Qout

  6. );

  • 嚴格芯片級模塊的劃分

    只有頂層包括IO引腳(pads) 中間層是時鐘產生模塊 JTAG 芯片的內核(CORE)這樣便于對每個模塊加以約束仿真 對時鐘也可以仔細仿真

  • 模塊輸出寄存器

    對所有模塊的輸出加以寄存 如圖1 使得輸出的驅動強度和輸入的延遲可以預測 從而使得模塊的綜合過程更簡單

  • 輸出驅動的強度都等于平均的觸發(fā)器驅動強度

  • 將關鍵路徑邏輯和非關鍵路徑邏輯放在不同模塊

保證DC可以對關鍵路徑模塊實現速度優(yōu)化 而對非關鍵路徑模塊實施面積優(yōu)化 ,在同一模塊DC無法實現不同的綜合策略。
  • 將相關的組合邏輯放在同一模塊 有助于DC對其進行優(yōu)化 因為DC通常不能越過模塊的邊界來優(yōu)化邏輯。
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1343

    瀏覽量

    109925
  • HDL
    HDL
    +關注

    關注

    8

    文章

    326

    瀏覽量

    47307
  • 編碼
    +關注

    關注

    6

    文章

    932

    瀏覽量

    54731
  • 代碼
    +關注

    關注

    30

    文章

    4722

    瀏覽量

    68229

原文標題:【華為】verilog語言編寫規(guī)范(一)

文章出處:【微信號:ZYNQ,微信公眾號:ZYNQ】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【尋求幫助】用verilog語言編寫計數器

    哪位大蝦幫幫忙用verilog語言編寫一個計數器,謝謝啊
    發(fā)表于 03-23 17:30

    verilog語言編寫PwM生成模塊

    verilog語言編寫PwM生成模塊
    發(fā)表于 05-16 13:41

    如何用Verilog語言編寫量子算法

    我想用Verilog語言編寫一個3bit的傅里葉變換,但弄不清酉變換,有沒有大佬給個程序范例,謝謝!
    發(fā)表于 09-19 08:26

    System Verilog常見問題及語言參考手冊規(guī)范

    本文討論了一些System Verilog問題以及相關的SystemVerilog 語言參考手冊規(guī)范。正確理解這些規(guī)格將有助于System Verilog用戶避免意外的模擬結果。
    發(fā)表于 12-11 07:19

    System Verilog問題和語言參考手冊規(guī)范

    本文討論了一些System Verilog問題以及相關的SystemVerilog 語言參考手冊規(guī)范。正確理解這些規(guī)格將有助于System Verilog用戶避免意外的模擬結果。
    發(fā)表于 12-24 07:07

    討論Verilog語言的綜合問題

    是在描述硬件,即用代碼畫圖。在 Verilog 語言中,always 塊是一種常用的功能模塊,也是結構最復雜的部分。筆者初學時經常為 always 語句的編寫而苦惱.
    發(fā)表于 07-29 07:42

    華為_VERILOG語言編寫規(guī)范

    verilog代碼規(guī)范,學會寫代碼還不行,我們需要更加的規(guī)范
    發(fā)表于 03-25 14:36 ?34次下載

    Verilog程序編寫規(guī)范

    適合verilog初學者的教程,可以好好參考學習。
    發(fā)表于 03-25 14:06 ?12次下載

    Verilog編寫的信道估計

    Xilinx FPGA工程例子源碼:Verilog編寫的信道估計
    發(fā)表于 06-07 14:54 ?38次下載

    Verilog硬件描述語言參考手冊免費下載

    Verilog 硬件描述語言參考手冊是根據IEEE 的標準“Verilog 硬件描述語言參考手冊1364-1995”編寫的。OVI (Op
    發(fā)表于 02-05 16:24 ?72次下載
    <b class='flag-5'>Verilog</b>硬件描述<b class='flag-5'>語言</b>參考手冊免費下載

    Verilog程序編寫規(guī)范

    在實際工作中,許多公司對Verilog程序編寫規(guī)范都有要求。在公司內部統一Verilog程序編寫規(guī)范
    的頭像 發(fā)表于 09-15 09:35 ?3872次閱讀

    淺談verilog語言編寫規(guī)范

    如果代碼中發(fā)現多次使用一個特殊的表達式 ,那么就用一個函數來代替。這樣在以后的版本升級時更便利 ,這種概念在做行為級的代碼設計時同樣使用 ,經常使用的一組描述可以寫到一個任務(task)中 。
    發(fā)表于 11-21 09:48 ?765次閱讀

    基于verilog編寫99秒計數器

    Verilog語言編寫,通過模塊化設計的99秒技術器
    發(fā)表于 02-16 16:16 ?0次下載

    如何使用參數化編寫可重用的verilog代碼

    我們將介紹如何使用verilog參數和generate語句來編寫可重用的verilog 代碼。 與大多數編程語言一樣,我們應該嘗試使盡可能多的代碼可重用。這使我們能夠減少未來項目
    的頭像 發(fā)表于 05-11 15:59 ?1063次閱讀

    FPGA的Verilog代碼編寫規(guī)范

      注:以R起頭的是對編寫Verilog代碼的IP設計者所做的強制性規(guī)定,以G起頭的條款是建議采用的規(guī)范。每個設計者遵守本規(guī)范可鍛煉命名規(guī)范
    的頭像 發(fā)表于 08-15 16:23 ?2033次閱讀