(二)system verilog验证——数据类型(1)

sv数据类型的改进

与Verilog相比,System Verilog提供了更多改进的数据结构,具有优点如下:
      1、双状态数据类型:更好的性能,更低的内存消耗;
      2、队列、动态和关联数组:减少内存消耗,自带搜索和分类功能
      3、类和结构:支持抽象数据结构;
      4、联合和合并结构:允许对同一数据有多种视图(view);
      5、字符串:支持内建的字符序列;
      6、枚举类型:方便代码编写,增加可读性;

逻辑(logic)类型

SV对经典的reg数据类型进行了改进,使得它除了作为一个变量以外,还可以被连续赋值、门单元和模块所驱动。为了与寄存器类型相区别,这种改进的数据类型被称为logic。同时任何使用线网的地方均可以使用logic,但logic不能有多个结构性的驱动,例如在对双向总线建模的时候;
(注:若要用byte数据类型来代替logic[7:0]的声明时,需要注意这些新的数据类型都是带符号的,即byte最大值127,而非255;虽然可以使用byte unsigned,但这比bit[7:0]更麻烦)

定宽数组

定宽数组的声明

int a[0:15];			//16个整数[0]...[15]
int b[16];				//16个整数[0]...[15]

verilog中在声明必须给出数组的上下界;但system verilog中不仅可以同verilog的声明,还可以只给出数组宽度的声明;
(注:若代码试图从月结的地址中读取数据,那么system verilog将返回数组元素类型的缺省值;如logic四状态类型返回X,bit二状态类型返回0)

定宽数组的初始化

int a[4] = '{0,1,2,3};
a = '{4{8}};						//{8,8,8,8}

int b[5];
b[0:2] = '{5,6,7};					
b = '{6,5,default:1};				//{6,5,1,1,1}

基本的数组操作——for和foreach

sv中$size返回数组的宽度。
在foreach循环中,只需要指定数组名并在其后方括号中给出索引变量,sv便会自动便利数组中的元素;

initial begin
	bit[31:0]src[5],dst[5];
	for(int i=0;i<$size(src);i++)
		src[i] = i;
	foreach(dst[j])
		dst[j] = src[j] * 2;
end
//对比for和foreach的 用法
/
//打印一个多维数组
initial begin
    byte a[4][6];
    foreach(a[i,j])
        a[i][j] = i * 10 + j;

    foreach(a[i])begin							//遍历第一个维度
        $write("%2d:",i);
        foreach(a[,j])
            $write("%3d",a[i][j]);				//遍历第二个维度
        $$display;
    end
end

数据类型未完待续QWQ

这篇笔记参考《system verilog验证》绿皮书整理而成,仅作学习心得交流,如果涉及侵权烦请请告知,我将第一时间处理。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字ic攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值