行為級和RTL級的區別(轉)


轉自:http://hi.baidu.com/renmeman/item/5bd83496e3fc816bf14215db

RTL級,registertransferlevel,指的是用寄存器這一級別的描述方式來描述電路的數據流方式;而Behavior級指的是僅僅描述電路的功能可以采用任何verilog語法的描述方式。鑒於這個區別,RTL級描述的目標就是可綜合,而行為級描述的目標就是實現特定的功能而沒有可綜合(可實現)的限制

行為級是RTL的上一層,行為級是最符合人類邏輯思維方式的描述角度,一般基於算法,用C/C++來描述。從行為級到RTL級的轉換,一般都是IC設計人員手工翻譯

這個過程繁瑣,工作量很大,特別是隨着數字系統的復雜性提升,這樣的純手工"翻譯"過程容易出錯,且使得開發周期變長。一批高級綜合工具應運而生。如Menter Graphics的高層次綜合工具Catapult C Synthesis。能夠將數字系統的行為級描述映射為RTL設計,並滿足給定的目標限制。從層次由上到下,數字系統的設計過程為:

Idea->行為級描述->rtl描述->門級網標->物理版圖

行為級的描述更多的是采取直接賦值的形式,只能看出結果,看不出數據流的實際處理過程。其中又大量采用算術運算,延遲等一些無法綜合的語句。常常只用於驗證仿真。
RTL
級的描述就會更詳細一些,並且從寄存器的角度,把數據的處理過程表達出來。可以容易地被綜合工具綜合成電路的形式。

行為級描述可是說是RTL的上層描述,比RTL更抽象。行為描述不關心電路的具體結構,只關注算法。
有行為綜合工具,可以直接將行為級的描述綜合為RTL級的,比如Behavioral Compiler

在硬件設計中有一句著名的話:thinking of hardwareRTL在很大程度上是對流水線原理圖的描述。哪里是組合邏輯,哪里是寄存器,設計者應該了然於胸。組合邏輯到底如何實現,取決於綜合器和限制條件。

rtl級可以理解為,可以直接給綜合工具生成你要的網表的代碼,而行為級則不行。比如real(浮點實數?)可以用於行為級,而不能用於rtl級!

Behavior is for testbench for modelling.
RTL is for synthesis

語法塊如果可以被綜合到gate level,就是RTL的。否則就是behavior level的。
同樣是for語句,如果循環條件是常數,就是RTL的,如果是變量,就是behavior的。

RTL級描述數據在寄存器層次的流動模型。
always
屬於行為級模型,是最基本的行為模型,是可以綜合的。
綜合與RTL或者行為級沒有必然聯系,雖然大多數行為模型不能綜合

 

從網上copy
目的區別:
行為級描述目的是加快仿真速度,做法是盡量減少一個always塊中要執行的語句數量,其結果不是為了綜合,只關注算法。有行為綜合工具,可以直接將行為級的描述綜合為RTL級的,比如Behavioral Compiler
形式區別:
RTL
級描述是為了綜合工具能夠正確的識別而編寫的代碼,verilog中有一個可綜合的子集,不同的綜合工具支持的也有所不同,RTL級的描述就會更詳細一些,並且從寄存器的角度,把數據的處理過程表達出來。可以容易地被綜合工具綜合成電路的形式。可以采用任何verilog語法的描述方式。鑒於這個區別,RTL級描述的目標就是可綜合,
行為級的描述更多的是采取直接賦值的形式,只能看出結果,看不出數據流的實際處理過程。其中又大量采用算術運算,延遲等一些無法綜合的語句。常常只用於驗證仿真。
電路區別:
RTL
級,register transfer level,指的是用寄存器這一級別的描述方式來描述電路的數據流方式;RTL在很大程度上是對流水線原理圖的描述。哪里是組合邏輯,哪里是寄存器,設計者應該了然於胸。組合邏輯到底如何實現,取決於綜合器和限制條件。RTL是晶體管傳輸級,描述硬件的相互聯接關系,一般都可以綜合;
Behavior級指的是僅僅描述電路的功能而在硬件設計中有一句著名的話:thinking of hardware。簡單說,rtl就是用寄存器和組合邏輯組成,不能再用其他constructbehavior就是指定輸入和輸出之間的關系。
混亂點:有時感覺RTL級是行為級與數據流級的混合應用。
樂點:同樣是for語句,如果循環條件是常數,就是RTL的,如果是變量,就是behavior的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM