数据类型
SystemVerilog 拥有丰富的数据相对于verilog,一般分为二值类型和四值类型。
数据的值有: 0, 1, x,z 几种。 二值: 每个bit只有0,1。 四值:每个bit有0,1,x,z四种值。
一、基本数据类型
1、 二值类型
int i ; // 32bi t有符号数
int unsigned ui; // 32bit 无符号数
byte b8; // 8bit 有符号数
shortint i; // 16bit 有符号数
longint i; // 64bit 有符号数
real i; // 64bit 双精度浮点数
bit [7:0] i // 8bit 无符号数
bit signed [7:0] i; // 8bit 有符号数
2、 四值类型, 可以用$isunknown 查看变量是否是X或者Z
integer i; // 32bit 有符号数
time t; // 64bit 无符号数
logic [7:0] i; // 8bit 无符号数
logic signed [7:0] i;// 8bit 有符号数
wire [7:0] i; // 8bit 无符号数
reg [7:0] i; // 8bit 无符号数
3、数组
int cons[16]; // 16个int类型的定宽数组
bit [7:0] bit_a[8] bit_a; // 8个非合并定宽数组
bit [3:0] [7:0] bit_a; // 4个8bit 数组合并到一起, 类似32 bit无符号数据
bit [3:0] bit_a[$]; // 队列
bit [3:0] bit_a[4][4]; // 二维数组
bit [3:0] bit_a[string]; // 关联数组
bit [3:0] bit_a[]; // 动态数组
数组常见的操作: for和foreach, 例如:int bit_a[4][4]; foreach( bit_a[ i, j ] ) bit_a[ i ][ j ] = 4'hf;
队列的操作函数:insert,delete(),push_back(),push_front(),pop_back(),pop_front(); 例如:bit [3:0] m_q[$];m_q.push_back('hf); // m_q[0] value :‘hf。m_q.size() : 1
关联数组一般通过key值寻找对应的值。常用函数,exists(). int a[sting]; if(!(a.exists("name"))) a["name"] = 1;
数组排序操作等:sort(),reverse(),shuffle();
4、 枚举类
enum bit[1:0]{ RED, GREEN, BLUE} corlor_e; // 仅仅是普通的变量
typedef enum bit[1:0]{ RED, GREEN, BLUE} corlor_e; // 可以instance 多个 变量
5、结构体
struct {int a; int b, bit[ 3:0] bit_a[4]} struct_t; //仅仅是普通的变量
typedef struct {int a; int b, bit[ 3:0] bit_a[4]} struct_t; // 可以instance 多个 变量
6、类型转换 待续。。
浙公网安备 33010602011771号