您的位置:首页 > 其它

SystemVerilog 中的 Variable slice of vector and array

2011-11-07 15:46 417 查看
/////////////////////////////////////////////////////////////////////////////

/*- 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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: