数据类型规则的放宽
數據類型規則的放寬
SystemVreilog放寬了使用變量的限制
SystemVreilog放寬了變量的使用規則,大大簡化了模型中數據類型的使用。在SystemVreilog中共,任何數據類型的變量都可以通過下列方式賦值,但只能采用其中的一種方式。
(1)在任意的initial或always的過程中賦值
(2)在單個always_comb,always_ff或always_latch過程塊中賦值
(3)通過單個的持續賦值語句賦值
(4)通過單個模塊或原語的output/inout端口驅動賦值
大部分信號可以聲明為logic或bit
這些變量使用規則的放寬允許模型中的大部分信號聲明為一個變量類型,如bit或logic。不用事先確定信號使用的上下文,模型由系統級轉換到RTL級或門級也不用改變信號的數據類型
對變量使用的限制可以防止設計錯誤
注意:變量不能被多個源驅動SystemVreilog使用變量的約束
在SystemVreilog中下列使用是錯誤的:多個輸出端口驅動一個變量,或者對一個變量進行多次持續賦值,或者對一個變量同時使用過程賦值和持續賦值。
對變量的這些 限制是因為變量沒有內置決斷函數,當多個器件驅動同一輸出時,無法得到最終值。
單驅動邏輯使用變量,多驅動邏輯使用線網
SystemVreilog對于變量不能有多個驅動源的限制避免了設計錯誤。如果設計中的一個信號只有源,那么可以使用變量,就可以使用過程賦值、持續賦值、模塊或原語的一個輸出/輸入端口。如果不小心使一個信號連接了兩個驅動則會報錯,因為一個變量只能有一個源。
SystemVreilog允許一個變量在多個always過程塊中賦值,雖然著也是一種多驅動形式,但是一些新的過程塊:always_comb,always_latch和always_ff。也限制了一個變量只能在一個過程塊中賦值。
只有net數據類型可以有多個驅動,如多次持續賦值,和/或多個模塊或者原語實例化輸出端口的連接。因此,設計中可以被多個器件驅動的信號,如數據總線或者地址總線應該被聲明為Verilog的net數據類型,如wire。即可用于輸入,又可用輸出的雙向端口也應該被聲明為net數據類型。
通過持續賦值或模塊輸出給自動變量賦值也是非法的。只用靜態變量可以被持續賦值或連接到輸出端口。之所以需要靜態變量是為了能持續賦值,變量需要在整個仿真過程中都存在。自動變量則不會存在于整個仿真運行時間。
有符號修飾和無符號修飾
Verilog-2001有符號和無符號類型 允許將任何數據類型聲明為有符號數,缺省的數據類型為無符號數reg [63:0] u;//無符號64位變量 reg signed [63:0] s ;//有符號64位變量SystemVreilog增加了缺省為有符號的數據類型。這些數據類型包括:byte、shortint、int和longint。SystemVreilog使用insigned關鍵字可以將這些有符號的數據類型定義為無符號的。
int s_int ;//有符號32位變量 int unsiged u_int; //無符號32位變量總結
- 上一篇: 【网易官方】极客战记(codecomba
- 下一篇: 静态和自动变量