Lattice · Unified Interconnect · AXI4 · APB

Lattice Unified Interconnect에서 응답이 멈추는 경계

여러 버스가 연결됐어도 모든 주소와 거래가 자동으로 완료되는 것은 아닙니다. 교차 연결 내부의 라우팅 단위와 ID 순서 규칙을 알아야 무응답과 대기를 구분할 수 있습니다.

범위와 선행 조건

Unified Interconnect IP v2.0.0은 AXI4, AXI4-Lite, AHB-Lite, APB를 연결하며 여러 manager와 subordinate 사이에 중재·선택적 CDC·프로토콜 변환을 둡니다. 이 문서의 최대 포트 수와 변환 규칙은 이 IP 버전의 설정 범위입니다. 별도 AXI4 MPMC v1.0.0이나 단독 AXI4→APB Bridge의 동작으로 확장하지 않습니다.

주소 조각 안의 빈 공간은 기본 오류 경로가 아닐 수 있습니다

교차 연결은 주소를 바이트마다 구분하지 않고 4KiB 정렬 블록 단위로 전달합니다. AHB-Lite/APB를 포함하는 구성에서는 1KiB 블록도 사용할 수 있습니다. 기본 subordinate가 활성화된 주 교차 연결에서는 통째로 미할당된 블록을 기본 subordinate가 처리합니다. 단, 주 교차 연결을 APB로 설정하고 subordinate가 하나뿐이면 이 기본 subordinate는 비활성화됩니다. 또한 장치에 배정된 1KiB 블록 안에서 장치가 일부 주소에만 응답하면, 나머지 주소는 기본 subordinate로 돌아가지 않아 요청이 끝나지 않을 수 있습니다. 따라서 설정한 주소 범위와 장치가 실제로 응답하는 범위를 블록 단위로 대조해야 합니다.

AXI4 manager가 AHB-Lite/APB 장치에 접근할 때는 버스트가 1KiB 경계를 넘지 않도록 해야 합니다. 시작 주소가 전송 크기에 맞게 정렬됐는지와 버스트 전체가 블록 경계 안에 들어가는지는 별도로 확인해야 합니다.

AXI ID 폭과 활성 ID의 목적지를 함께 계산합니다

AXI4 subordinate의 ID 폭은 최대 manager ID 폭에 manager 수를 식별할 비트를 더해야 합니다. 이 가이드는 manager가 하나일 때도 여유 한 비트를 요구하고, 둘 이상이면 ceil(log2(manager 수)) 비트를 요구합니다. 같은 manager의 동일 활성 ID가 먼저 subordinate A로 거래를 보낸 상태라면, B로 향하는 같은 ID의 다음 요청은 A의 거래가 끝날 때까지 허용되지 않습니다. 읽기와 쓰기 ID 흐름은 독립적으로 취급합니다. 따라서 두 subordinate가 물리적으로 달라도 동일 ID 재사용은 대기 원인이 될 수 있습니다.

프로토콜 변환이 전송 단위를 바꿉니다

Unified Interconnect 내부의 AXI4→APB 변환은 AXI burst를 APB의 단일 전송들로 나눕니다. 이 경로는 narrow transfer를 지원하지 않습니다. AXI4→AHB-Lite에서는 정렬되지 않은 접근에 SLVERR를 반환하지만, AXI4→APB의 비정렬 주소는 수정 없이 전달됩니다. 이 차이는 비정렬 APB 접근의 성공 보장이 아니라 하위 장치가 처리할 입력이 남는다는 뜻입니다. 별도 AXI4→APB Bridge 문서는 원문에 접근할 수 없었으므로 이 변환 규칙을 그 IP의 사양으로 인용하지 않습니다.

문서 검토와 실제 버스 검증의 차이

이 글의 무응답·대기 사례는 공식 가이드의 규칙을 설계 관점에서 재구성한 것입니다. 실제 연결에서는 주소 디코더, AXI ID 배정, 응답 핸드셰이크, 클록/리셋 구성과 성능을 시뮬레이션 및 보드에서 따로 검증해야 합니다.

공식 근거