前言

system verilog 对比verilog 增加了大量的数据类型,目标就是让更多会c c++的人员可以来做设计或者验证。

正文

数据类型分类

数据类型主要可以通过四值类型和二值类型
四值类型:输入输出的值可以为四种情况 0、1·、 x、z(没有人驱动的输出就是x,无人驱动输出为z)
二值类型: 输入输出的值可以为两种情况 0 、1
对比verilog 的两种数据类型:寄存器类型reg 和线网类型wire ,sv 引入了相当多的数据类型,
数值类型 | 数据类型 |default 值
-------- | -----
二值数据 | integer logic reg wire tri | 0
四值类型| byte shortint int longint bit | x

有无符号位 数据类型
有符号 integer shortint longint int byte
无符号 bit logic reg wire tri

数据转换

数据类型使用需要的注意点:
数据赋值:不同的数据类型转换需要注意,无符号想有符号转换时先扩展符号位在进行赋值。尽量避免不同的数据类型之间数据进行操作,稍不注意就容易出错。

数据类型转换:type’(expression)

例如:
bit [2:0] a;
integer b;
b = integer’ (a);

位宽转换: size’(expression)

例如:

logic [15:0] a;
logic [16:0] b;
//扩展到相同位宽之后进行加计算
b = a + 16’(3);

符号转换 :signed’(expression) unsigned’(expression)

logic a;
int sum;
sum = signed’(a) + signed’(a);

数组

数组是sv 中新增的一个数据类型,更有利于数据保存处理。

声明方法

一维数据
int a [0:15]//16个cell
int a[16] //同样是16个cell
多维数组
int a[0:7][0:6]
int a[8][7]

初始化方法

int a[2] = '{0,1};//初始化两个cell a[0] =0,a[1] =1
int a[2] = '{0};//仅初始化第一个cell
int a[2] = '{2{0}};//初始化两个cell相同之0,a[0] =0,a[1] =0
int a[2] = '{1,default:0};//初始化第一个cell 为1,后面的都设置为0

基本操作方法

  1. for 循环方法
    bit a[5];
    for(int i =0;i<$size(a);i++)
    a[i] = i;
  2. foreach 方法:自动循环所有cell
    foreach(a[i])
    a[i] = i;

动态数组

声明方法

int a[]
a = new[5] //分配5个cell

初始化方法

与静态数组相同

销毁方法

int a[]
a = new[5] //分配5个cell
a = new[6] //重新分配6个cell ,前面的就回收了
另一种方法:
a.delete()

队列

队列可以在在任何cell中间添加和删除cell。

声明和初始化方法

int a[$] ={3,4}

操作方法

int b=1;
a.insert(1,b);//在第1个元素后添加1
a.delete(1,b);//删除第一个元素之后的元素也就是a[1]
a.push_front(1);//重队列的头插入数据1结果{1,3,4}
a.push_back(1);//重队列的头插入数据1 结果{3,4,1}
c = a.pop_back()//从队列的末尾开始取队列,相当于倒序,
c = a.pop_front()//从队列的头开始取队列,相当于复制读取。
a.delete();//删除队列

关联数组

数组都是紧凑排列的,为了实现散列表的数组方式这里给出了一个关联数组的数据结构。

声明方法

通过方括号中放置数据类型实现 int a[bit] : int为存储数据类型,bit为寻址的类型.

初始化方法

'{};在大括号内写入cell和值,中间使用:
a = '{0:12,3:2}; //初始化cell0 cell3

操作方法

操作方法和数组类似

  1. 遍历
    同样适用foreach
    foreach(a[i])
    $display(“a %h”,a[i])

a.first(1) //第一个cell
a.delete(1) //删除第一个cell

sv基础-数据类型(一)相关推荐

  1. 初识mysql数据字段属性_MySQL数据库~~~~初识、基础数据类型

    一 数据库初识 1.1 什么是数据库 数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库 ...

  2. 基础数据类型之集合和深浅copy,还有一些数据类型补充

    集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系 ...

  3. Python 基础三:基础数据类型和字符串的常用函数操作

    基础数据类型 数字int 数字主要用于计算,有加减乘除等操作,下面介绍一种使用方法 #bit_length(),将十进制数转换成二进制数的二进制数位数 v = 9 data = v.bit_lengt ...

  4. js基础--数据类型检测的相关知识

    欢迎访问我的个人博客:www.xiaolongwu.cn 前言 最近工作有点忙,好几天都没更新技术博客了. 周末起床打开有道云笔记,发现自己的博客todolist里躺了一堆只有名字的文件. 话不多说, ...

  5. python的历史 常量 注释 基础数据类型等基本操作 和if 判断语句

    # Day1内容大纲 cpu 内存 硬盘 操作系统 cpu:计算机运算和计算中心,相当于人类大脑. 内存:暂时存储数据,临时加载数据应用程序,速度快,断电即消失 硬盘:磁盘,长期存储数据. 操作系统: ...

  6. C语言中定义加号的数据类型,C/C++知识点之c语言基础数据类型及命名规范

    本文主要向大家介绍了C/C++知识点之c语言基础数据类型及命名规范,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助.1. 常量是程序运行期间不能被改变的量; 变量代表一个存储区域,存 ...

  7. 二、Windows基础数据类型

    六.Windows Data Types 简介: 6.1.这些数据类型都是C语言数据类型的再次的进行包装. 6.2.因为考虑到如果使用的是C中的基础数据类型可能无法表示,想表示的精准的含义. 6.3. ...

  8. Java 基础数据类型

    Java 提供的基础数据类型(也称内置数据类型)包含:整数类型.浮点类型.字符类型.布尔类型. 整数类型 整数类型变量用来表示整数的数据类型.整数类型又分为字节型(byte).短整型(short).整 ...

  9. Python基础数据类型之set集合

    Python基础数据类型之set集合 一.set数据类型介绍 二.set集合演示 三.set集合中hash介绍 1.哈希定义 2.数据类型的hash和不可hash 3.set中hash示例 四.set ...

最新文章

  1. Linux下怎么诊断网站性能异常
  2. First day in 聚美
  3. ABAP Pattern usage - define own custom user exit
  4. 智能集群理论优化控制_探索群体智能的奥妙——ROB-MAS多智能体协作
  5. matlab调用ansys需要安装mpi,Ansys 14中Fluent并行计算MPI全程详解
  6. jqueryui 1.8.19引用顺序(及var basePrototype = new base()错误)
  7. 国内首份千款主流安卓应用耗电指标评测报告新鲜出炉!
  8. 如何执行静默(无人参与)Java 安装?
  9. java8 新特性_Java8新特性系列之-日期处理详解(二)
  10. 如何设置电脑的固定IP地址
  11. atlas 1.1.0 的本地开发文档(编译)
  12. 怎么使用JavaScript进行进制…
  13. Device disconnected
  14. 移动端键盘弹起底部固定模块会被顶上去
  15. 广角相机app哪个比较好用_专业广角镜头相机app下载
  16. 交互式电子沙盘数字沙盘大数据系统开发第8课
  17. 高校浴室预约小程序的设计与实现
  18. swal弹框出现的瞬间就消失了
  19. 做企业网站设计制作用什么软件
  20. 知识图谱学习笔记三(知识存储)

热门文章

  1. 高效学习-笔记-左耳听风
  2. 大话西游手游服务器合服信息查询,大话西游手游合区查询 6月21日合区服务器列表...
  3. CAD手机看图软件使用技巧:CAD快捷命令功能
  4. Gartner发布中国人工智能软件市场指南,激烈竞争下走向差异化
  5. 【greenplum】greenplum pg_largeobject 大对象处理实践
  6. 国家卫健委: 建设电子印章系统,推进电子证照与电子合同等融合应用
  7. team网卡绑定以及模式切换
  8. python怎么在图片上写字_python如何实现内容写在图片上
  9. CEF中文教程(google chrome浏览器控件) -- CEF简介
  10. 2023 软考中级 数据库系统工程师 考试题型