FPGA series # 行爲(Behavior)級和RTL級

做一次整理。

行爲級(Behavior)

  1. 指的是僅僅描述電路的功能而可以採用任何verilog語法的描述方式。
  2. 行爲級描述是爲了實現特定的功能而沒有可綜合的限制。目的是加快仿真速度,做法是儘量減少一個always塊中要執行的語句數量,其結果不是爲了綜合,只關注算法。更多的是採取直接賦值的形式,只能看出結果,看不出數據流的實際處理過程。可大量採用算術運算,延遲等一些無法綜合的語句,常常只用於驗證仿真。
  3. 行爲級描述是爲了綜合工具能夠正確的識別而編寫的代碼,verilog中有一個可綜合的子集,不同的綜合工具支持的也有所不同。
  4. 行爲級 is for testbench for modelling.
  5. 行爲級不考慮電路的實現,不考慮綜合。
  6. 行爲級就是指定輸入和輸出之間的關係。

RTL級(register transfer level)

  1. 指的是用寄存器這一級別的描述方式來描述電路的數據流方式。
  2. 目的就是可綜合,RTL在很大程度上是對流水線原理圖的描述。在硬件設計中有一句著名的話:thinking of hardware。哪裏是組合邏輯,哪裏是寄存器,設計者應該瞭然於胸。組合邏輯到底如何實現,取決於綜合器和限制條件。
  3. RTL級的描述就會更詳細一些,並且從寄存器的角度,把數據的處理過程表達出來。
  4. RTL is for synthesis
  5. RTL級描述數據在寄存器層次的流動模型。RTL是晶體管傳輸級,描述硬件的相互聯接關係,一般都可以綜合。
  6. RTL就是用寄存器和組合邏輯組成,不能再用其他construct;

細節點:

  • RTL級可以理解爲,可以直接用綜合工具生成你要的網表的代碼,而行爲級則不行。
  • 比如real可以用於行爲級,而不能用於rtl級。
  • 語法塊如果可以被綜合到gate level,就是RTL的。否則就是behavior level的。
  • 同樣是for語句,如果循環條件是常數,就是RTL的,如果是變量,就是behavior的。
  • always 屬於行爲級模型,是最基本的行爲模型,是可以綜合的。
  • 綜合與RTL或者行爲級沒有必然聯繫,雖然大多數行爲模型不能綜合

兩者之間的關係和轉換:
  行爲級是RTL的上一層,行爲級是最符合人類邏輯思維方式的描述角度,一般基於算法,用C/C++來描述。
  從行爲級到RTL級的轉換,一般都是由IC設計人員手工翻譯。這個過程繁瑣,工作量很大,特別是隨着數字系統的複雜性提升,這樣的純手工"翻譯"過程容易出錯,且使得開發週期變長。一批高級綜合工具應運而生,如Menter Graphics的高層次綜合工具Catapult C Synthesis。有行爲綜合工具,可以直接將行爲級的描述綜合爲RTL級的,比如Behavioral Compiler。能夠將數字系統的行爲級描述映射爲RTL設計,並滿足給定的目標限制。從層次由上到下,數字系統的設計過程爲:Idea->行爲級描述->RTL描述->門級網標->物理版圖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章