【SV】通过“四个问题”了解systemverilog数据类型

 数据类型是sv的基础,灵活的使用各种数据类型是搭建sv验证平台的基础中的基础。本文章提出四个问题,以问题解答的方式,

帮助全面的认识sv数据类型。
现在让我们开始吧。
在这里插入图片描述
1,为何sv要增加数据类型?
sv增加数据类型更多是增加其软件特性,增强变量使用的灵活性,只要搭建或者使用过大型验证平台的同学对这个认识会很深刻。在这里插入图片描述
2,sv新增了哪些数据类型?
sv新增或者加强的数据类型较多,主要如下,有些实际上用其他方式替换使用会更简单实用些。
在这里插入图片描述
1),常数。这个用的不多,一般使用宏定义的方式替换,这种变量多了,可用统一放在一个class或者package中;
2),字符串。字符串在验证平台中主要使用方式,定义,拼接(与变量)以及提取和格式化打印,最终目标还是打印平台的仿真信息。
在这里插入图片描述
3),枚举类型。对系列有含义的整型变量进行有意义名称的定义,可增强代码的可读性。这种类型的变量,主要还是定义应用,内置函数用得较少。有个经常说到的问题是整型变量与枚举变量之间的转换,枚举转换成整型可用直接赋值,反过来则不行,需要用case函数进行强制转换,避免越界。
在这里插入图片描述4), 新增的内建结构。主要是logic和有符号变量。logic类型可替换wire和reg,特别在interface中非常常用,用起来很方便,不用操太多心 。logic只有在双驱动情况下无法替换wire。有符号类型,包括浮点型,在涉及到频偏,正负偏移等用得比较多,还有浮点型数据处理,
在这里插入图片描述
5), 定宽数组和动态数组。定宽数组,一般长度始终固定,且不存在重用性的问题时,可考虑使用。动态数组则用得非常多,所有存在变长的遍历,都可用使用。比如验证平台的组件配置,可用自仿真中根据验证场景的不同动态定义,非常方便。还有网络报文数据存储等。因此,动态数组要重点掌握,包括各种内置函数。
在这里插入图片描述
6), 队列和关联数组。之所以这两个类型放一起,主要是它们两对应着scoreboard的两种应用模式,顺序比较和非顺序比较。队列非常常用,包括验证组件(不同线程)之间数据传递,socreboard,队列数据管理等。所以这个要重点掌握,包括队列的常用使用函数。
在这里插入图片描述
7/其他。之所有将这些类型列程其他,确实是因为在平常用的较少。或者经常使用其他方式替代。比如结构体使用类替代,链表用队列或者动态数组替代,这种替代个人觉得是更加灵活方便。
在这里插入图片描述
3,如何选合适的数据类型?
如何选择合适的数据类型,绿皮书中列了不少,个人总结就是以灵活为主要目标。而实际使用的场景,基本上也可用找到对应的数据类型,这些也是有些历史经验的。
在这里插入图片描述
4,如何灵活使用数据类型?
灵活使用各数据类型,除了要了解各种数据类型的典型应用外,还要熟悉其基本的操作和内置的函数。掌握其基本的使用技巧,绝对可用让平台搭建和编码事半功倍。下面介绍的是sv各数据类型的使用方法。
在这里插入图片描述

 总结:复杂的验证平台需要从搭建的起始就考虑其灵活性。而sv数据类型的灵活使用是基础中的基础,希望通过这一课的学习,能够掌握。
 请闭上眼睛,想想你使用的验证平台,哪些地方使用了哪些sv变量吧。
  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值