首页 > 其他分享 >SystemVerilog -- 2.4 Data Types ~ SystemVerilog Arrays

SystemVerilog -- 2.4 Data Types ~ SystemVerilog Arrays

时间:2024-05-02 17:34:12浏览次数:16  
标签:-- queue Arrays int 数组 data SystemVerilog

SystemVerilog Arrays

SystemVerilog 在通过不同类型的数组构建复杂的数据结构方面提供了很大的灵活性。

  • 静态阵列
  • 动态阵列
  • 关联数组
  • 队列

Static Arrays

静态数组是指其大小在编译时间之前已知的数组。在下面显示的示例中,声明了一个8位宽的静态数组,为其分配了一些值并循环访问以打印其值。

module tb;
  bit [7:0]  m_data;    // A vector or 1D packed array

  initial begin
    // 1. Assign a value to the vector
    m_data = 8'hA2;
    // 2. Iterate through each bit of the vector and print value
    for (int i = 0; i < $size(m_data); i++) begin
      $display ("m_data[%0d] = %b", i, m_data[i]);
    end
  end
endmodule

静态数组进一步分为打包数组和解压缩数组。

bit [2:0][7:0] m_data;        // Packed
bit [15:0]     m_mem [10:0];  // Unpacked

解压缩数组可以是固定大小的数组、动态数组、关联数组和队列。

Dynamic Arrays

动态数组是指在编译过程中不知道其大小,而是在运行时根据需要定义和扩展的数组。动态数组很容易通过其空方括号识别。[]

int   m_mem [];  // Dynamic array, size unkown but it holds integer values

Associative Arrays

关联数组是使用特定键存储内容的数组。这很容易通过其方括号内的数据类型的存在来识别。键在方括号内表示。[]

int          m_data[int];      // Key is of type int, and data is also of type int
int          m_name [string];  // Key is of type string, and data is of type int

m_name ["Rachel"] = 30;
m_name ["Orange"] = 2;

m_data [32'h123] = 3333;

Queues

队列是一种数据类型,其中数据可以推送到队列中或从数组中弹出。它很容易通过方括号内的符号识别。$ []

int    m_queue [$];             // Unbound queue, no size

m_queue.push_back(23);          // Push into the queue
int data = m_queue.pop_front(); // Pop from the queue

标签:--,queue,Arrays,int,数组,data,SystemVerilog
From: https://www.cnblogs.com/sys-123456/p/18170334

相关文章

  • 对于 CF1107E 中 dp 状态设计的一点想法
    不太想发到洛谷讨论区,就往这里放了。我觉得现有的题解都没说明白为什么本题的状态和转移能覆盖所有情况,并且感觉也非常不自然,没见过的话感觉挺难发现这么一个东西。然而这个dp其实是可以自然地推导出来的。首先发现这个过程非常难以描述,主要原因在于很难刻画一个局面。然而,如......
  • 使用LinkAI创建AI智能体,并快速接入到微信/企微/公众号/钉钉/飞书..
    ​ LinkAI作为企业级一站式AIAgent智能体搭建与接入平台,不仅为用户和客户提供能够快速搭建具备行业知识和个性化设定的AI智能体的能力;还基于企业级场景提供丰富的应用接入能力,让智能体不再是“玩具”,而是真正能够落地应用提升生产力的“工具”。​ 现在,你可以使用LinkAI创建......
  • 基于CodeMirror开发在线编辑器时遇到的问题及解决方案
    需求:实现json在线编辑并支持校验,基于此使用了CodeMirror在线编辑,jsonlint校验输入数据//package.json:"dependencies":{"codemirror":"^5.53.2","core-js":"^3.8.3","jsonlint":"^1.6.3","vu......
  • 【VMware vCenter】连接和使用vCenter Server嵌入式vPostgres数据库。
    vCenterServer早期支持内嵌(embedded)和外部(external)数据库,内嵌数据库就是vPostgres,基于VMwarePostgres数据库(PostgreSQL数据库),外部数据库用的多的是Oracle数据库和SQLServer数据库。因为早期使用内嵌的PostgreSQL数据库只能用于小型环境,比如仅支持几十台主机以及几百个虚拟机,所......
  • 一个demo快速理解序列号和反序列化
    一个demo快速理解序列号和反序列化分享一个例子用来快速理解序列化和反序列化其实序列化和反序列化就是为了交换数据,(简单粗暴的理解就是把运行中的对象存进文件里面)importjava.io.*;publicclassMain{publicstaticvoidmain(String[]args)throwsException{......
  • Cookie的细节
    通过responseheader(响应头)把cookie数据发送给浏览器保存,通过request指令服务器可以接收浏览器发送的cookie数据。cookie.setPath("/");//当前Tomcat下的所有web项目都能使用这个cookie。cookie.setMaxAge();//setMaxAge()方法用于设置Cookie的过期时间。它接受一个整数......
  • 【Python&文字识别】基于HyperLPR3实现车牌检测和识别(Python版本快速部署)
        闲来无事,想复现一下网上的基于YOLOv5的单目测距算法。然后就突然想在这个场景下搞一下车牌识别,于是就有了这篇文章。今天就给大家分享基于HyperLPR3实现车牌检测和识别。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?type=blog1、HyperLP......
  • 文本格式化
    #!/bin/bash#读取result.txt文件内容whileIFS=read-rlinedoif[[$line==*"ORACLEDB"*]];thenORACLEDB_line="$line"#保存ORACLEDB行else#提取POSTGRES行的表名和列值table=$(echo"$line"|cut-d':'-f2)......
  • TCP的三次握手过程
    TCP是面向连接的、可靠的、基于字节流的传输层通信协议。TCP是面向连接的协议,所以使用TCP前必须先建立连接,而建立连接是通过三次握手来进行的。TCP包头结构在讲解三次握手的过程之前,我们先来看一下TCP包的结构:TCP包头大小在大多数情况下是固定的,它通常是20字节(不包括任何......
  • 解决vscode连接远程服务器出现Bad owner or permissions on C:\\Users\\Administr
    1.找到.ssh文件夹。它通常位于C:\Users2.右键单击.ssh文件夹,然后单击“属性”,选择“安全”3.单击“高级”。单击“禁用继承”,单击“确定”。将出现警告弹出窗口。单击“从此对象中删除所有继承的权限”。4.此时所有用户都将被删除。添加所有者。在同一窗口中,单击“编辑”按......