system verilog的数据类型

1.内建的数据类型

        1.1        logic类型:

                任何需要线网的地方都可以用logic;

                但是不能有多个结构性驱动。多驱动与双向总线只能用wire

                是四状态。

        1.2    双状态的数据类型:目的为了提高仿真器的性能并且减少内存的使用量。

                双状态:0、1                四状态:0、1、x 、z

2.使用typedef创建新的类型

typedef int fixed_array5[5];    //创建了新的数据类型
 fixed_array5 f5;                //f5是这种数据类型

initial begin                    //对f5进行初始化
    foreach(f5[i])
        f5[i]=i;
end

 3.枚举类型 (enum)

打个比方,在正常交流时,我们会说现在在冬天,而不会故意去说现在是第4季。同样,当我们使用代码来描述有限集合,比如描述状态机各个状态的时候,使用名字可以大致表达不同状态的行为,代码可读性自然也就提高了。枚举在代码中实现的功能跟使用宏类似,都可以用名字来代替数值。宏是在预处理阶段将名字换成了值,而枚举是在编译阶段将名字换成值。也就是说,枚举类型的这些名字不是变量,它们不会占据任何内存。且这些名字的有效范围是全局的,如果有变量等命名冲突了可能导致编译不过。

 

4. 结构体(struct) 创建用户自定义结构

                由于struct只是一个数据的集合,所以他是可综合的。

 typedef struct{包含内容}  自定义结构名字 ;

5.定宽数组

5.1定宽数组的声明和初始化

int lizi [0:15];    //16个整数[0].....[15]
int lizi_2 [15]    //上同

//声明多维数组
int array1 [0:7][0:3];
int array2 [8][4];
 array2[7][3]    //设置最后一个元素

5.2基本数组操作  for与foreach

        后边补充

5.3合并数组与非合并数组

bit [3:0] [7:0] bytes;    //4个字节组成的32比特
bit [7:0] b_unpack[3];    //非合并数组,三个字节空间

 5.4动态数组

        如果在运行程序之间都不知道数组的宽度,并且为了节省空间,运用动态数组。

声明动态数组需要使用空的[ ],在用的时候用new[ 数组宽度] 调用空间

 5.5关联数组

(不大懂) 

        当需要创建一个超大的数组时,运用关联数组来保存稀疏矩阵的元素。

5.6队列的操作 [$]

        结合了链表和数组的优点,可以在队列的任何一个地方增加或者删除元素。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值