国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

verilog之可綜合與不可綜合

發布時間:2016-5-10 09:56    發布者:designapp
關鍵詞: verilog , FPGA
可綜合的意思是說所編寫的代碼可以對應成具體的電路,不可綜合就是所寫代碼沒有對應的電路結構,例如行為級語法就是一種不可綜合的代碼,通常用于寫仿真測試文件。

建立可綜合模型時,需注意以下幾點:

不使用initial

不使用#10之類的延時語句

不使用循環次數不確定的循環語句,如forever,while等

不使用用戶自定義原語(UDP元件)

盡量使用同步方式設計電路

用always塊來描述組合邏輯時,應列出所有輸入信號作為敏感信號列表,即always@(*)

所有的內部寄存器都應該能夠被復位,在使用FPGA實現設計時,盡量使用器件的全局復位端作為系統的總復位

對時序邏輯描述和建模,盡量使用非阻塞賦值的方式,對組合邏輯描述和建模,雖然阻塞和非阻塞賦值的方式都可以,但在同一過程快中最好不要同時使用阻塞賦值和非阻塞賦值。我個人比較推薦用阻塞賦值的方式描述組合邏輯

不能在多個always塊中對同一個變量進行賦值。對同一個對象不能既使用非阻塞賦值,又使用阻塞賦值

如果不打算讓變量生成鎖存器,那么必須在使用if語句或case語句時補全所有條件

不可綜合語句:

initial 初始化語句,只能在testbench中使用,不可綜合

event event在同步testbench時更有用,不能綜合

real 不支持real數據類型的綜合

time 不支持time數據類型的綜合

assign 和 deassign 不支持對reg數據類型賦值的綜合,但支持wire 類型賦值的綜合

以#開頭的延時語句不能被綜合

verilog是一種硬件描述語言,我們在寫verilog 代碼時,首先要有所要寫的module在硬件上如何實現的概念,而不是去想編譯器如何解釋這個module。比如在決定是否使用 reg 定義時,要問問自己物理上是不是真正存在這個 register, 如果是,它的clock 是什么? D 端是什么?Q 端是什么?有沒有清零和置位?同步還是異步?再比如上面討論的三態輸出問題,首先想到的應該是在 register 的輸出后面加一個三態門,而不是如何才能讓編譯器知道要“賦值”給一個信號為三態。同樣,Verilog 中沒有“編譯”的概念,而只有綜合的概念,我們只有綜合工具,而沒有所謂的編譯器。

當然,并不是說不可綜合的代碼就不重要了,在IC設計中,有70%的時間都是用來做驗證,所以說仿真驗證的工作對于FPGA的設計同樣重要。
本文地址:http://www.4huy16.com/thread-165910-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 常見深度學習模型介紹及應用培訓教程
  • Microchip第22屆中國技術精英年會上海首站開幕
  • 電動兩輪車設計生態系統
  • Microchip第22屆中國技術精英年會——采訪篇
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表