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

SystemVerilog -- 2.6 Data Types ~ SystemVerilog Unpacked Arrays

时间:2024-05-02 18:44:18浏览次数:10  
标签:index begin end -- Unpacked stack Assign SystemVerilog

SystemVerilog Unpacked Arrays

Unpacked Arrays用于引用在变量名称之后声明的维度。

Unpacked Arrays可以是固定大小的数组、动态数组关联数组队列

Single Dimensional Unpacked Array

module tb;
  byte    stack [8];      // depth = 8, 1 byte wide variable
  initial begin
    // Assign random values to each slot of the stack
    foreach (stack[i]) begin
      stack[i] = $random;
      $display ("Assign 0x%0h to index %0d", stack[i], i);
    end
    // Print contents of the stack
    $display ("stack = %p", stack);
  end
endmodule

模拟日志

Assign 0x24 to index 0
Assign 0x81 to index 1
Assign 0x9  to index 2
Assign 0x63 to index 3
Assign 0xd  to index 4
Assign 0x8d to index 5
Assign 0x65 to index 6
Assign 0x12 to index 7
stack = '{'h24, 'h81, 'h9, 'h63, 'hd, 'h8d, 'h65, 'h12}

Multidimensional Unpacked Array

module tb;
  byte stack [2][4];   // 2 rows, 4 cols
  initial begin
    // Assign random values to each slot of the stack
    foreach (stack[i]) begin
      foreach (stack[i][j]) begin
        stack[i][j] = $random;
        $display ("stack[%0d][%0d] = 0x%0h", i, j, stack[i][j]);
      end
    end
    // Print contents of the stack
    $display ("stack = %p", stack);
  end
endmodule

模拟日志

ncsim> run
stack[0][0] = 0x24
stack[0][1] = 0x81
stack[0][2] = 0x9
stack[0][3] = 0x63
stack[1][0] = 0xd
stack[1][1] = 0x8d
stack[1][2] = 0x65
stack[1][3] = 0x12
stack = '{' {'h24, 'h81, 'h9, 'h63}, '{'hd, 'h8d, 'h65, 'h12}}
ncsim: *W,RNQUIE: Simulation is complete.

Packed + Unpacked Array

下面显示的示例演示了一个多维packed+unpacked数组。

module tb;
  bit [3:0][7:0]  stack [2][4];   // 2 rows, 4 cols
  initial begin
      // Assign random values to each slot of the stack
      foreach (stack[i]) begin
        foreach (stack[i][j]) begin
          stack[i][j] = $random;
          $display ("stack[%0d][%0d] = 0x%0h", i, j, stack[i][j]);
        end
      end
      
      // Print contents of the stack
      $display ("stack = %p", stack);
      // Print content of a given index
      $display ("stack[0][0][2] = 0x%0h", stack[0][0][2]);
  end
endmodule

模拟日志

ncsim> run
stack[0][0] = 0x12153524
stack[0][1] =
stack[0][2] =
stack[0][3] =
stack[1][0] =
stack[1][1] =
stack[1][2] =
stack[1][3] =
stack = ' {' {'h12153524, 'hc0895e81, 'h8484d609, 'hb1f05663}, '{'h6b97b0d, 'h46df998d, 'hb2c28465, 'h89375212}}
ncsim: *W,RNQUIE: Simulation is complete.

在多维声明中,名称前声明的维度比名称后方的维度变化更快。

bit [1:4]      m_var  [1:5]        // 1:4 varies faster than 1:5
bit            m_var2 [1:5][1:3]   // 1:3 varies faster than 1:5
bit [1:3][1:7] m_var3              // 1:7 varies faster than 1:3
bit [1:3][1:2] m_var4 [1:7][0:2]   // 1:2 varies most rapidly, followed by 1:3, then 0:2 and then 1:7

标签:index,begin,end,--,Unpacked,stack,Assign,SystemVerilog
From: https://www.cnblogs.com/sys-123456/p/18170421

相关文章

  • 操作系统
    一、操作系统的概念1、计算机是有硬件系统和软件系统两个部分组成,构成了一个完整的计算机系统。2、计算机软件是指程序、数据和文档的集合,是计算机系统的重要组成部分。3、按功能划分,软件可分为系统软件,开发系统(编程语言)和应用软件三种。二、操作系统的地位1、操作系统是计算......
  • db.create_all() 报错上下文?flask_sqlalchemy创建数据库找不到上下文?
    问题报错:RuntimeError:Workingoutsideofapplicationcontext.Thistypicallymeansthatyouattemptedtousefunctionalitythatneededthecurrentapplication.Tosolvethis,setupanapplicationcontextwithapp.app_context().Seethedocumentationform......
  • WPF CollectionViewSource GroupDescriptions GroupStyle ItemsPanelTemplate
    <Windowx:Class="WpfApp83.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • MySQL8.4的安装与部署
    MySQL8.4的安装与部署下载wgethttps://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.0-1.el8.aarch64.rpm-bundle.tar安装清理mariadbrpm-qa|grepmaria|grep-vconnect|xargsrpm-e-f本地安装tar-xvfmysql-8.4.0-1.el8.aarch64.rpm-bundle.taryumlocali......
  • csrf-基于Pikachu的学习
    CSRF-跨站请求伪造CSRF的原理CSRF攻击即Cross-siterequestforgery,跨站请求伪造,直白来说就是恶意网站伪装成用户,向被害网站发起操作请求。用户输入账号信息请求登录A网站。A网站验证用户信息,通过验证后返回给用户一个cookie在未退出网站A之前,在同一浏览器中请求了黑客构造......
  • 从嘉随笔<2024-5-2>
    狂玩了一个月,实属惭愧。 爱爱只是一种狂热自恋的投射(罗翔)人们长期处于迎合自我的垂直领域,因而偏见与狭隘就诞生了。世界本是主观与客观的存在,病态的观察往往只带来苍白的认知。所以:痴愚者盲目,自负者执着;爱人者狂热,被爱者冷血。当爱化作憧憬,幻想与现实的差距随之而来......
  • 微机结构
    微机系统分为三个阶段:分别是微机诞生前阶段、微机阶段、网络阶段。随着微机系统的发展,它渗透到我们生活的各个方面。微机系统有多方面的优点:比如体积大大减小,增加了系统扩充的灵活性和方便性。性能比价格高,从而造成了微机的普及。微机的主要结构是复杂的,在微机系统中,不同的子系......
  • 新NIM游戏
    稍微分析一下题目就可以知道,先手第一轮取完之后一定是极大无关组,此时必胜这里介绍一些异或空间线性基的性质,跟普通的线性基是差不多的首先,线性基中任意多个数异或起来一定不为\(0\)(否则的话某一个数可以被其他数线表)其次,同一异或空间不同线性基的个数是一样的那么我们怎么使得......
  • saas
    .前端请求商户平台应用进行注册2.商户平台应用获取短信验证码3.前端携带手机验证码、账号、密码等信息请求商户平台应用确认注册4.验证码校验通过后请求商户服务新增商户5.商户服务请求SaaS平台新增租户并初始化管理员6.SaaS平台返回创建成功给商户服务商户服务新增商户下......
  • 微信支付
    获取授权码open.wei.xin.发送一个https请求,携带,appId,参数,回调参数会获得一个url,里面携带了授权码browsertype.valueofUserAgent(request.getHeader("user-agent"))然后进行授权回调,传入授权码和state,申请授权码传入微信的值,原样返回申请openid的uil,对url进行拼接appID.appSecr......