<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

科普一下Verilog代碼命名規范

FPGA之家 ? 來源:硅農 ? 作者:硅農 ? 2022-11-17 09:54 ? 次閱讀

代碼規范的文檔,就是一份設計工程師的血淚史。

命名規范

命名規范包括模塊命名規范和代碼命名規范,代碼命名需要有確定的含義,提高代碼可讀性和可維護性。模塊名命名規范處理好認,一眼就能把看出你是哪個IP里面的一個子模塊之外,更重要的一個原因是防止兩個module重名 ,比如你把模塊起名叫,shift_reg_dly_module,但是整個soc中可能會有其他IP也叫這個module名,這樣同名不同工的文件,會影響集成級的工作。

所以代碼規范module命名這樣,子系統_子模塊_function_module。例如ddr_shift_reg_dly_module。避免模塊名重名。

綜合自動插時鐘門控

并不是所有的寄存器都需要帶復位,這樣規范顛覆初入行的朋友認知。有研究表明,帶復位的寄存器和不帶復位的寄存器相比,面積會相差10%。但是這樣也有一個原則,就是控制寄存器必須帶復位,數據寄存器可以不復位,但是不能用去做條件。

61f7bf94-6607-11ed-8abf-dac502259ad0.png

計數器,必須有使能端和清零端,不允許裸奔

always @(posedge clk or negedge rst_n)begin
  if(rst_n == 1'b0)begin
    o_cnt[7:0] <= 8’d0;
  end
  else if(cnt_clr == 1’b1)begin
    o_cnt[7:0] <= 8’d0;
  end
  else if (cnt_en == 1’b1)begin
    o_cnt[7:0] <= o_cnt[7:0] + 1'b1;
  end
end

數據寄存器帶使能打拍鎖存使用

always @(posedge clk)begin
  if(data_vld)
    dout[63:0] <= din;
end

這種寫法綜合自動插時鐘門控,而且不帶復位。注意不能裸奔。

always @(posedge clk)begin
    dout[63:0] <= din;
end

這樣寫就GG了

優先使用spram

有一種代碼規范是要求必須使用spram,single port ram。即使有同時讀寫的需求,也自己做邏輯,將讀寫分開做。強烈這么要求的原因是,有研究數據表明,在某工藝下,spram比dpram的面積基本會小30%。

30%的memory收益,這個收益還是很猛的。

memory規范操作

Memory必須先寫后讀,讀寫使能默認復位值必須是無效值。不用的時候不允許讀,否則會出現上電后芯片的memory一直掃描讀寫,徒增功耗。

Memory的數據讀出必須鎖存后使用。

memory和logic分開

Memory不散在邏輯中,將memory的讀寫控制端口都從IP的頂層伸出統一管理,為的是mem方便統一替換處理。而且后端實現上memory放邊擺開。

方便不同工藝的適配,比如你要換一個工藝,那你的memory要全部替換,就要在logic里面找,假如有些工藝十分惡心,要加個寄存器或者輸出到寄存器上,你就要一層層穿線到頂層寄存器模塊。作為IP供應商也應該做好memory的wrapper提供給客戶,方便客戶替換。

后端實現memory放邊擺開,logic要也考慮到memory的走線,所以對于memory的入口和出口都要是寄存器。不然PR出了問題,該做的還是得做。

模塊必須寄存器入寄存器出

在后端布局布線過程中,邏輯少的模塊之間還好,但harden之間有邏輯交互,兩個harden的距離并不一定擺的位置靠近。如果不是寄存器入寄存器出,會導致兩個harden之間交互的信號時序差。造成工作反復。

自研IP不建議用`define來定義參數

要求用parameter,define使用要謹慎,因為define是全局定義的,如果再使用過程中不當,沒有undef掉,可能會影響其他IP的同名define值。正確使用沒問題,無對錯,遵守公司代碼規范即可 。







審核編輯:劉清

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

    關注

    32

    文章

    2209

    瀏覽量

    93370
  • 數據寄存器
    +關注

    關注

    0

    文章

    32

    瀏覽量

    7599
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8168

原文標題:那些年我不理解的Verilog代碼規范,現在終于悟了

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

收藏 人收藏

    評論

    相關推薦

    verilog 代碼規范

    verilog規范設計--狀態機)//always中,定要用 begin end 區分,格式和代碼風格統如下always @(pose
    發表于 03-09 20:22

    【分享】verilog代碼書寫規范

    FPGA verilog代碼書寫規范,很好的借鑒
    發表于 05-21 11:36

    FPGA實戰演練邏輯篇40:代碼書寫規范

    VHDL代碼書寫規范可供參考,但是相信每個稍微規范點的做FPGA設計的公司都會為自己的團隊制定套供參考的
    發表于 06-23 14:01

    關于Android命名規范

    名方法名都以lowerCamelCase風格編寫,小駝峰式命名法,即首字母小寫,其他單詞都是首字母大寫。最后這些都是最簡單不過,稍微注意一下就可以了,習慣的養成真的很重要,畢竟開發不是僅你個人,
    發表于 10-15 00:11

    Verilog HDL代碼書寫規范

    Verilog HDL代碼書寫規范
    發表于 09-30 08:55

    Verilog HDL代碼書寫規范

    等。本規范適用于Verilog model的任何級(RTL, behavioral, gate_level),也適用于出于仿真、綜合或二者結合的目的而設計的模塊。
    發表于 12-08 14:36

    勇敢的芯伴你玩轉Altera FPGA連載34:Verilog代碼書寫規范

    “國際標準”級別的Verilog或VHDL代碼書寫規范可供參考,但是相信每個稍微規范點的做FPGA設計的公司都會為自己的團隊制定
    發表于 12-27 09:41

    關于Android命名規范

    首字母大寫。方法名 方法名都以lowerCamelCase風格編寫,小駝峰式命名法,即首字母小寫,其他單詞都是首字母大寫。最后這些都是最簡單不過,稍微注意一下就可以了,習慣的養成真的很重要,畢竟開發不是僅你
    發表于 06-21 09:35

    FPGA的代碼書寫規范

    VHDL代碼書寫規范可供參考,但是相信每個稍微規范點的做FPGA設計的公司都會為自己的團隊制定套供參考的
    發表于 04-16 04:08

    Verilog代碼書寫規范

    Verilog代碼書寫規范規范的目的是提高書寫代碼的可讀性、可修改性、可重用性,優化代碼
    發表于 04-15 09:47 ?106次下載

    Verilog代碼命名六大黃金規則

    電子發燒友網核心提示: 關于Verilog代碼命名的六大黃金規則。 1. 系統級信號的命名。 系統級信號指復位信號,置位信號,時鐘信號等需要輸送到各個模塊的全局信號;系統信號以字
    發表于 09-04 14:40 ?5860次閱讀

    verilog代碼規范

    verilog代碼規范,學會寫代碼還不行,我們需要更加的規范。
    發表于 03-25 14:43 ?24次下載

    代碼命名規范是真優雅呀!代碼如詩

    Java項目的代碼結構,能夠體現它的設計理念。Java采用長命名的方式來規范類的命名,能夠自己表達它的主要意圖。配合高級的IDE,可以減少編碼人員的記憶負擔,靠模糊的匹配就能找到自己所
    的頭像 發表于 03-13 09:32 ?581次閱讀

    FPGA的Verilog代碼編寫規范

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

    IC設計之Verilog代碼規范

    Verilog規范對于一個好的IC設計至關重要。
    的頭像 發表于 08-17 10:14 ?749次閱讀
    IC設計之<b class='flag-5'>Verilog</b><b class='flag-5'>代碼</b><b class='flag-5'>規范</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>