sv队列和动态数组的区别_systemverilog学习(4)动态数组
本节主要内容:动态数组,队列,联合数组,数组基本操作,结构体类型,枚举类型
一:动态数组
1:基础
在run-time才知道元素个数,在compile-time不知道
可以在仿真的时候再确定元素个数
2:表示
data_type name_of_dynamic_array[];
name_of_ dynamic_array = new[number of elements];
实例:int dyn[]; dyn = new[5];dyn.delete();
3:可将固定数组赋值给动态数组,要求是元素个数相同
二:队列(先进先出)
1:基础知识
可插入,删除,sort,search,push,pop,add,remove;可将固定数组或者动态数组赋给队列
2:表示
data_type queue_name[$] = {..} //队列赋值时大括号前面不加单引号
实例:int b[$] = {3,4}; //{3,4}
b.insert(1,1); //{3,1,4} 在第一个元素后面添加1
b.delete(1); //{3,4} 删除元素1
b.push_front(6) ; //{6,3,4}
j = b.pop.back; //{6,3}, j = 4
三:联合数组
1:基础知识
充分利用内存里的离散空间,不连续空间;
索引值可以为整型,字符型,一维数组
2:表示
data_type associative_array_name[*/string]
3:示例
在内存中的存储
说明:标准数组存储时,所有的存储器都用到了;联合数组使用内存时,稀疏。
4:操作
遍历(foreach),first,next,prev,delete,exits
四:数组的操作
1:算术运算
sum,product,and,or and xor
例如下面是sum举例:
说明:on.sum返回on的位数,即一位,即值1(5个1相加取一位);将on.sum赋给位宽为8bit的summ,则返回值5。
2:sort,rsort(反过来排序),reverse,shuffle(打乱排序),find_first,find_first_with_index,unique(得到元素不重复的数组)
//find_index with (item > 3); //元素大于3的索引值
3:sum的扩展用法
//d.sum(x) with ((x>7)*x); //9*9+8*8
五:总结
Fixed Arrays: 在compile time时知道size;连续内存存放,支持多维
Dynamic Arrays:run time时得到size;连续内存;
Queues Arrays:FIFO/Stack
Associative Arrays:离散数据内存,索引可以为数字或者字符串;用于hash
六:结构体
将变量放在一起,比如总线协议放在结构体里;默认是unpacked存放
1:示例
使用:Instruction_Word.address = 24'hF00000;
2:packed存放(加入packed关键字)
第一个数据放在内存的左侧。
七:枚举类型
1:表示
enum {red,green.blue} RGB //red = 0,green = 1,blue = 2
2:枚举值类型
**显式指定枚举值 enum{one = 1, five = 5, ten = 10} state;
**部分显式指定值
3:枚举指定类型
enum bit {false,true} Boolean;
enum logic [1:0] {WAITE,LOAD,READY} state;
enum logic [1:0] {
WAITE=3'b001,
LOAD=3'b010,
READY=3'b100} state; //error;因为枚举类型是两位,赋值超过两位
emum logic {on = 1'b1,OFF=1'bz} out;
sv队列和动态数组的区别_systemverilog学习(4)动态数组相关推荐
- sv队列和动态数组的区别_systemverilog中几种数组类型的基础知识
在开始今天的内容之前,先来一个小玩具,一条用来删除文件的bat语句.我发现questasim跟vim同时对文本进行修改的时候,同目录下会产生很多很多很多的中间文件,所以很久不用的bat又要搬出来了.语 ...
- C语言中指针与数组的区别,C语言 指针与数组的详解及区别
C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[ ...
- java动态修改class_Java Agent入门学习之动态修改代码
前言 最近用了一下午总算把Java agent给跑通了,本篇文章记录一下具体的操作步骤,以免遗忘.下面话不多说,来一起看看详细的介绍: 通过java agent可以动态修改代码(替换.修改类的定义), ...
- 面向动态图网络嵌入/表示学习的动态图/网络数据集整理
Dynamic-graph-dataset Dynamic graph/network dataset for dynamic graph/network embedding/representati ...
- 真假美猴王-Numpy数据与Python数组的区别与联系
https://www.toutiao.com/a6675926132304380430/ Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到 ...
- python数组和函数的区别_真假美猴王-Numpy数据与Python数组的区别与联系!
Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional a ...
- python 创建空的numpy数组_真假美猴王-Numpy数据与Python数组的区别与联系
Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional a ...
- shell脚本中数组的使用_Shell脚本中的数组
shell脚本中数组的使用 Knowing how to work with arrays in shell scripts will help you work with larger datase ...
- sv队列和动态数组的区别_Go 刷 LeetCode 系列:经典(7) 设计双端队列
设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k.insertFront():将一个元素添加到双端队列头部.如果操作成功返回 true ...
最新文章
- 为何需要Android组件化,如何搭建?
- 图像边缘检测,检测亦或简化
- 关于ESP8266 GPIO中断使用的总结
- aac文件损坏修复软件_SysTools Outlook Recovery Tool : 修复损坏的Outlook PST文件的先进的软件...
- java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)
- 光纤收发器常见故障及解决方法
- 冈萨雷斯《数字图像处理》读书笔记(九)——形态学图像处理
- 【转】URL和URI的区别
- java lucene cms_JEECMSv6标签使用之[@cms_lucene_list]
- mysql libs 5.1.73_【MySQL案例】mysql-libs-5.1.73-3.el6
- iOS 的TextView的常规用法
- Vue 过滤器filters
- React context 丢失问题
- IE8卸载再回到IE6
- bzoj4816[SDOI2017]数字表格
- 计算机读不到移动硬盘怎么办,电脑读出来移动硬盘,但是显示不出来怎么办
- 【技术分享】Windows10下安装深度学习常用软件教程分享
- Linux笔记本电脑大调查:程序员最喜欢的电脑是什么配置?
- 35岁的网络工程师入行需要注意什么?
- 图片文字识别软件有哪些?这几款软件亲测非常好用
热门文章
- 银河足球队 android 8,银河足球队手机版_银河足球队安卓游戏v1.0.1-游迅网
- java 安装后找不到文件_(已解决)jdk安装 系统找不到文件C:\ProgramData\Oracle\Java\javapath\java.exe...
- 强网杯2021 CipherMan (内存取证分析)
- CTF(pwn)-格式化字符串漏洞讲解(一)
- Python基础教程:列表字典的键值修改
- python的输入和格式输出
- Python基础练习题:猜数字小游戏
- python反射和高阶内置方法
- python flask route中装饰器的使用
- python for循环中累加变量是否要清零