• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

SystemVerilog中数组的用法总结

定宽和动态数组初始化时需要加符号';队列不需要。
定宽数组的声明:

int lo_hi[0:15];//16个整数[0]...[15]
int c_style[16];//16个整数[0]...[15]

声明并使用多维数组:

int array2[0:7][0:3];//完整的声明
int array3[8][4];//紧凑的声明
array2[7][3]=1;设置最后一个元素

非合并数组的声明:

bit [7:0] b_unpack[3];//非合并数组

常量数组的初始化:

int ascend[4] = '{0,1,2,3};
int descend[5];
descend = '{4,3,2,1,0};
descend[0:2] = '{5,6,7};
ascend = '{4{8}};
descend = '{9,8,default:1};

在数组中使用for和foreach

intial begin
  bit[31:0] src[5], dst[5];
  for(int i=0; i<$size(src); i++) begin
    src[i] = i;
  end
end
//初始化并遍历多维数组
int md[2][3] = '{'{1,2,3}, '{4,5,6}};
initial begin
  foreach(md[i,j]) begin
    $display("md[%0d][%0d]=%0d",i,j,md[i][j]);
  end
end
//数组的复制和比较
initial begin
  bit[31:0] src[5] = '{0,1,2,3,4,5},
            drs[5] = '{5,4,3,2,1,0};
  //数组的比较
  if(src==dst)
    $display("src==dst");
  dst = src;  //将src赋值给dst
  src[0] = 5;
end

posted on 2022-11-26 22:55  SOC验证工程师  阅读(1030)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3