/////////////////////////////////////////////////////////////////////////////
/*- 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]