用+索引向量和数组:我在SystemVerilog中看到了这样的代码:if(address[2*pointer+:2])
do_something;我该如何理解+:当索引这个向量的时候?我发现它被称为比特切片,但我找不到任何解释。
3 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
logic [31: 0] a_vect; logic [0 :31] b_vect; logic [63: 0] dword; integer sel; a_vect[ 0 +: 8] // == a_vect[ 7 : 0] a_vect[15 -: 8] // == a_vect[15 : 8] b_vect[ 0 +: 8] // == b_vect[0 : 7] b_vect[15 -: 8] // == b_vect[8 :15] dword[8*sel +: 8] // variable part-select with fixed width
sel
dword[8*(0) +: 8] == dword[7:0]
sel
dword[8*(7) +: 8] == dword[63:56]
+
-
address
if(address[2*pointer+:2])
if({address[2*pointer+1],address[2*pointer]})
开满天机
TA贡献1786条经验 获得超13个赞
它使代码更具可读性。 您可以在引用位片时指定迭代器,而不会得到“不能有非常量值”错误。
阿晨1998
TA贡献2037条经验 获得超6个赞
a_vect[ 0 +: 8]
b_vect[ 0 +: 8]
a_vect[7:0]
b_vect[7:0]
添加回答
举报
0/150
提交
取消