日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > ZYNQ
		


1 目的

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

2 范圍

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

3 定義

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

4 引用標(biāo)準(zhǔn)和參考資料

下列標(biāo)準(zhǔn)包含的條文 通過在本標(biāo)準(zhǔn)中引用而構(gòu)成本標(biāo)準(zhǔn)的條文 在標(biāo)準(zhǔn)出版時 所示版本均為有效 所有標(biāo)準(zhǔn)都會被修訂 使用本標(biāo)準(zhǔn)的各方應(yīng)探討 使用下列標(biāo)準(zhǔn)最新版本的可能性。

5規(guī)范內(nèi)容

5.1 Verilog 編碼風(fēng)格

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

5.1.1

選擇有意義的信號和變量名 對設(shè)計是十分重要的 命名包含信號或變量諸如出處 有效狀態(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作為指針名
  • 用連貫的縮寫

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


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

    Rst_ Trdy, Irdy Idsel.


  • 大小寫原則

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


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


  • 同一信號在不同層次應(yīng)保持一致性


  • 自己定義的常數(shù) 類型等用大寫標(biāo)識

    如 parameter CYCLE=100


  • 避免使用保留字

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


  • 添加有意義的后綴 使信號名更加明確 常用的后綴如下:


5.1.2 Modules

  • 頂層模塊應(yīng)只是內(nèi)部模塊間的互連

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


  • 每一個模塊應(yīng)在開始處注明文件名 功能描述 引用模塊 設(shè)計者 設(shè)計時間及版權(quán)信息等,如:


		
  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進行驅(qū)動, 在module 內(nèi)不要存在沒有驅(qū)動的信號 更不能在模塊端口中出現(xiàn)沒有驅(qū)動的輸出信號,避免在仿真或綜合時產(chǎn)生warning 干擾錯誤定位。


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


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


		
  1. InstanceUInstance2(


  2. .DataOut(DOUT ),


  3. .DataIn(DIN ),


  4. .Cs_(Cs_)


  5. );


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


  • 在模塊中增加注釋

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


  • Module 名要用大寫標(biāo)示 且應(yīng)與文件名保持一致, 如


		
  1. Module DFF_ASYNC_RST(


  2. Reset,


  3. Clk,


  4. Data,


  5. Qout


  6. );


  • 嚴(yán)格芯片級模塊的劃分

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


  • 模塊輸出寄存器化

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


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


  • 將關(guān)鍵路徑邏輯和非關(guān)鍵路徑邏輯放在不同模塊


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


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉