예제로 아는게 최고다. 일단 기본은 아래와 같다.
SystemVerilog Array Slice - Verification Guide
+: NOTATION
byte = data[j +: k];
j -> bit start position
k -> Number of bits up from j’th position
byte = data[0 +: 8];
0 -> Starting point
8 -> 8 elements up from 0 , so end point is 7.
byte = data[7:0];
The above 32-bit data copying to byte array can be re-written with + notation as below.
foreach(byte[i]) byte[i] = data[8*i +: 8];
Above code can be expanded as below,
byte[0] = data[8*0 +: 8]; //data[7:0]
byte[i] = data[8*1 +: 8]; //data[15:8]
byte[i] = data[8*2 +: 8]; //data[23:16]
byte[i] = data[8*3 +: 8]; //data[31:24]
꼭 코드를 보면 [0:7] 이렇게 될것 같지만 시작 점과 길이가 역순으로 배치된다.
[7:0] [15:8] 이런식으로..
헷갈리지 말자
'IT > ASIC | FPGA' 카테고리의 다른 글
GCA - Clock 관련 SDC 확인 (0) | 2024.05.14 |
---|---|
SVF file for Formality - Synopsys DC 생성파일 (0) | 2024.05.13 |
Verdi - fsdb 파일 나누어서 저장하기 (0) | 2024.05.03 |
AXI Burst 모드 사용시 프로토콜 길이 정보들 - AxSIZE, AxLEN (0) | 2024.05.02 |
AXI 프로토콜 테스트 환경 설계 5 - 컴파일 환경 설정 (0) | 2024.04.30 |