System Verilog에서 포장되지 않은 벡터를 사용해야하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/511542

  •  21-08-2019
  •  | 
  •  

문제

후속 조치 이것 SV의 포장되지 않은 벡터와 포장되지 않은 벡터의 차이에 대한 질문은 왜 포장되지 않은 벡터를 사용하고 싶습니까?
포장 된 벡터에는 포장되지 않은 벡터가없는 이점이 있습니다.

  • 당신은 그들에 대해 약간의 작업을 수행 할 수 있습니다
  • 산술 작업을 수행 할 수 있습니다
  • 당신은 그들을 조각 할 수 있습니다
  • 전체 벡터로 복사 할 수 있습니다
  • 당신은 당신이 할 수있는 모든 것을 할 수 있습니다 un포장 된 벡터 (내가 아는 한)

포장되지 않은 벡터는 포장 된 벡터보다 어떤 이점이 있습니까?

도움이 되었습니까?

해결책

포장되지 않은 것을 사용하는 또 다른 이유가 있습니다. 포장을 풀면 전체 배열 이름을 변수로 취급하는 유혹 (및 우발적 가능성)이 없으며 잘못된 할당을합니다. 요소 n의 B 비트에 액세스 할 수 있다고 생각할 때 한 요소에서 다른 요소로 비트 블 러닝 가능성은 없지만 실제로 요소 N 및 BK 비트의 k 비트에 액세스 할 수 있습니다. .

저의 철학은 포장 된 차원에서 "정보 단위"로 속한 것들만 유지하는 것입니다. 포장되지 않은 차원의 다른 모든 것. 기본 사고는 포장을 풀고 필요한 것만 포장해야합니다.

예를 들어, 9 개의 포트가있는 경우 각각 21 비트의 정보가있는 경우 다음과 같이 선언합니다.

input logic [20:0] p1 [9];

그만큼 20:0 부분은 (명목상) 함께 할당 및 샘플링 된 정보 단위를 구성합니다. 이 비트를 분리하면 프로토콜이나 포트의 특성이 파괴됩니다. 반면, 포트 수를 9에서 16으로 변경하는 것은 각 포트의 정보의 특성에 영향을 미치지 않으므로 9 포트는 실제로 내 마음의 풀리지 않은 차원에 속합니다.

이 패러다임에서, 당신은 항상 당신이 항상 포장되었다고 생각한 포장을 풀기 시작하는지 놀랄 것입니다!

다른 팁

몇 가지 이유로 포장되지 않은 배열이 존재합니다.

1) 포장 배열은 연속 비트 시퀀스로 메모리에 저장됩니다. 포장되지 않은 배열은 각 요소를 독립적으로 저장하여 시뮬레이션 성능을 향상시킬 수 있습니다.

2) 포장되지 않은 배열은 비트 벡터가 아닌 유형 일 수 있습니다. ints, 바이트, 이벤트, 스트러크, 클래스 등의 배열은 포장을 풀 수 있습니다.

3) 대부분의 배열 조작 방법은 포장되지 않은 배열에서만 작동합니다.

4) 아마도 배열 리터럴을 사용하여 포장되지 않은 배열 만 할당 할 수 있습니다. 잘 모르겠습니다.

다른 이유가있을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top