본문으로 바로가기

[Verilog] Indexed part-select

category SoC 2022. 1. 15. 17:47
반응형

몇일 전 Code review를 하다 동료 중에 한명이 +: 문법을 사용하여 RTL을 기술 한 것을 보고 순간 이해가 되지 않아서 당황했었습니다. 스쳐지나가면서 본 기억은 있지만 확장성 있는 코드를 작성할 때 개인적으로는 data[i +: j] 방법보다는 좀 더 직관적인 data[(i+j-1) : i] 방법으로만 코딩을 하였기 때문에 어떻게 bit을 계산해야 할지 생각나지 않았기 때문입니다. 

 

이 기회에 아래와 같이 정리해 보면서 인터뷰 질문에 목록에 추가해 봅니다. 

 

data[i +: j]; // data[(i+j-1) : i]

data[i -: j]; // data[i : (i+1-j)]

// Example if 0<= i < 4
data[8*i +: 8];
data[8*0 +: 8]; //data[7:0]
data[8*1 +: 8]; //data[15:8]
data[8*2 +: 8]; //data[23:16]
data[8*3 +: 8]; //data[31:24]

data[(8*(i+1))-1 -: 8];
data[(8*1)-1 -: 8]; //data[ 7 -: 8] => data[7:0]
data[(8*2)-1 -: 8]; //data[15 -: 8] => data[15:8]
data[(8*3)-1 -: 8]; //data[23 -: 8] => data[23:16]
data[(8*4)-1 -: 8]; //data[31 -: 8] => data[31:24]

 

반응형