轉自:http://hi.baidu.com/renmeman/item/5bd83496e3fc816bf14215db算法
RTL級,registertransferlevel,指的是用寄存器這一級別的描述方式來描述電路的數據流方式;而Behavior級指的是僅僅描述電路的功能而能夠採用任何verilog語法的描述方式。鑑於這個區別,RTL級描述的目標就是可綜合,而行爲級描述的目標就是實現特定的功能而沒有可綜合(可實現)的限制。工具
行爲級是RTL的上一層,行爲級是最符合人類邏輯思惟方式的描述角度,通常基於算法,用C/C++來描述。從行爲級到RTL級的轉換,通常都是由IC設計人員手工翻譯。spa
這個過程繁瑣,工做量很大,特別是隨着數字系統的複雜性提高,這樣的純手工"翻譯"過程容易出錯,且使得開發週期變長。一批高級綜合工具應運而生。如Menter Graphics的高層次綜合工具Catapult C Synthesis。可以將數字系統的行爲級描述映射爲RTL設計,並知足給定的目標限制。從層次由上到下,數字系統的設計過程爲:翻譯
Idea->行爲級描述->rtl描述->門級網標->物理版圖設計
行爲級的描述更多的是採起直接賦值的形式,只能看出結果,看不出數據流的實際處理過程。其中又大量採用算術運算,延遲等一些沒法綜合的語句。經常只用於驗證仿真。
RTL級的描述就會更詳細一些,而且從寄存器的角度,把數據的處理過程表達出來。能夠容易地被綜合工具綜合成電路的形式。開發
行爲級描述但是說是RTL的上層描述,比RTL更抽象。行爲描述不關心電路的具體結構,只關注算法。
有行爲綜合工具,能夠直接將行爲級的描述綜合爲RTL級的,好比Behavioral Compiler。it
在硬件設計中有一句著名的話:thinking of hardware。RTL在很大程度上是對流水線原理圖的描述。哪裏是組合邏輯,哪裏是寄存器,設計者應該瞭然於胸。組合邏輯到底如何實現,取決於綜合器和限制條件。io
rtl級能夠理解爲,能夠直接給綜合工具生成你要的網表的代碼,而行爲級則不行。好比real(浮點實數?)能夠用於行爲級,而不能用於rtl級!test
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就是用寄存器和組合邏輯組成,不能再用其餘construct;behavior就是指定輸入和輸出之間的關係。
混亂點:有時感受RTL級是行爲級與數據流級的混合應用。
樂點:一樣是for語句,若是循環條件是常數,就是RTL的,若是是變量,就是behavior的。