主要內容:4-state,2-state,固定數組
一:基本數據類型
1:sv的位擴展

2:4-state
sv里面使用logic來代替verilog里面的reg,有4值:0,1,x,z
reg不可用於連續賦值語句,但logic可用於連續賦值語句;但logic不能用於多驅動,比如線與,雙向驅動。
例子:logic [31:0] r; //4-states,32位
3:2-state
有bit,byte,shortint,int,longint;
只有兩種狀態0,1;所以x,z直接轉化為0或者1;可以提高仿真性能,減少內存,但是不可用於設計中。

除了bit是無符號的,其他都是有符號的;
logic[7:0] x與 byte x 雖然都是8位,但它們是不同的,前者是無符號(0-255),后者是有符號(-128-127)
4:其它
**4-state默認值為x,2-state默認值為0;
**4-state可以賦值給2-state;(2-state可以賦值給我4-state嗎)
**使用$isunknown操作符來檢查是否變量是否為x/z,有則返回1

二:固定數組
支持多維數組,數組不要越界;
1:表達
type name[constant];
一維:int a[16];
多維:int array[0:7][0:3]; int array[8][4];
2:unpacked arrays
byte,shortint與int都存儲在32位里,longint存儲在64位;unpacked數組中,如果數據沒有占用32位/64位,仍占用32/64,浪費空間。

3::packed arrays

說明:bytes是32位的,通過bit[3:0][7:0]將存儲空間打包成四份,每一份為8位

4:數組賦值,使用 `{}
例如:int array1[4] = `{3,2,4,2};
5:數組遍歷
**for
i 需要聲明;
$size返回數組個數;

**foreach
索引 i,j自動聲明,不需顯式聲明

6:比較與copy
== !=
7:Mxied 數組
packed array(不推薦這種unpacked的復雜數組形式)

unpacked array

