system verilog 路科验证每周练习第2202期部分代码讲解

这篇博客详细介绍了Verilog语言中不同类型的数组,包括合并数组和非合并数组的定义及赋值方式。通过示例展示了如何对16位、32位和64位数组进行初始化和赋值,并探讨了打包和非打包数组的切片赋值。此外,还解释了非合并数组的直接赋值和复杂初始化方法。
摘要由CSDN通过智能技术生成

module tb;

  bit [3:0][7:0] arr_mixed [1:0];//低维度的[3:0][7:0]是合并数组,但高维度的[1:0]则是散开放的。合并型数组可以实现连续的存储,赋值时不需要用 '{ }。

  logic [15:0] vec16;//合并数组,

  logic [31:0] vec32;

  logic [63:0] vec64;

  bit arr_unpacked [1:0][3:0][7:0];//三个维度都是非合并的,[3:0][7:0]低维度。非合并数组和动态数组直接赋值都需要 ’

  //非合并可以直接bit arr_unpacked [2][4][8];

  bit arr_unpacked_d2 [4][8];

  //bit arr_unpacked [2][4][8];

  bit [1:0][3:0][7:0] arr_packed;

  initial begin: arr_assign

    $display("packed vector/arry assignment");

    vec16 = 16'hFFFF;  xdisplay("vec16", vec16);

    vec16 = '1; xdisplay("vec16", vec16);

    vec16 = {4{4'hF}}; xdisplay("vec16", vec16);

    vec32 = vec16; xdisplay("vec32", vec32);

    vec32 = 'hFF;xdisplay("vec32", vec32);

    vec64 = {vec32, vec32};xdisplay("vec64", vec64);

    $display("packed array slice assignment");

    arr_mixed[0] = vec32; xdisplay("arr_mixed[0]", arr_mixed[0]);

    arr_mixed[1] = vec64; xdisplay("arr_mixed[1]", arr_mixed[1]);

    arr_packed[0] = arr_mixed[1];xdisplay("arr_packed[0]", arr_packed[1]);

    // Errors below

    // arr_packed = arr_mixed;

    // arr_unpacked = arr_mixed;  

    $display("unpacked array slice assignment");

    arr_unpacked_d2 = '{0:'{0:0, 1:0, default:1}, 1:'{0:1, 1:1, default:0}, default:'{default:1}};//0:'{ 的0是4*8的4:0中的第0位置,剩下默认的3 4位置全部置为1

    //0:0意思是第0位置赋值为0,1:0第1位置赋值0,default:1剩下位置赋值1,4*8一定要写够四个花括号,不然报错

    //arr_unpacked_d2 = '{'{0:0, 1:0, default:1}, '{0:1, 1:1, default:0}, '{0:0, 1:0, default:1}, '{0:1, 1:1, default:0}};

    //arr_unpacked_d2[0] = '{default:1};

    arr_unpacked[0] = arr_unpacked_d2;

    #1ns $finish();

  end

  function void xdisplay(string s, logic[63:0] val);

    $display("%s = 'h%x", s, val);

  endfunction

endmodule

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值