/
/*- unpack2pack(): Convert unpack array to packed.*/
/
function bit128 unpack2pack(bit8_16 dataBlock);
for (int i = 0; i < 16; i++) unpack2pack[8*i+:8] = dataBlock[i];
endfunction
/
/*- pack2unpack(): Convert packed array to unpacked.*/
/
function bit8_16 pack2unpack(bit128 dataBlock);
for (int i = 0; i < 16; i++) pack2unpack[i] = dataBlock[8*i+:8];
endfunction
在SystemVerilog中,如何存取bitvector或者array的slice呢? 我们知道即使systemverilog也不允许以bitvector[x:y] (其中x和y是变量)的方式存取slice,但是如果长度固定,则可以利用如下形式存取
bvpart = bv[startindex+:len] 效果上等同于 bvpart = bv[starindex+len-1:startindex] , 但是后者编译器是不支持的。
bvpart = bv[endindex-:len] 效果上等同于 bvpart = bv[endindex:endindex]