DEVELOPER DOCUMENTATION

RTL을 이해하고, 통합을 설계하다.

CV-X1 Pro L8 평가 릴리스의 연산 규칙, 입력 형식, 스트리밍 계약과 재현 절차를 확인하세요.

통합 계약 →

처리하는 연산

8개 signed INT4 가중치와 INT8 쿼리의 내적을 처리합니다. 그룹마다 signed 4비트 영점과 unsigned 8비트 정수 스케일을 지정합니다.

group = sum((weight[i] - zero_point) * query[i], i=0..7) * scale
accumulator = saturate_int32(accumulator + group)  # 또는 32비트 wrap
clear = 1이면 해당 타일의 누산 시작값은 0

모든 타일마다 중간 누산 결과를 출력하며 마지막 타일의 last 비트로 행의 종료를 표시합니다. 스케일을 적용하기 전 내적을 먼저 계산하므로 그룹 내 공통 스케일의 곱셈을 공유합니다.

입력 JSON

행렬은 1–16행, 8–64열이며 열 수는 8의 배수입니다. 저장 가능한 가중치는 총 512개입니다. FP 모드에서는 weights와 query만 필요하며 각 값은 0 또는 절댓값 1e−150..1e6 범위의 유한한 수입니다. 출력·오차 계산의 언더플로를 피하기 위해 이 수치 범위를 검증합니다.

{
  "weights": [[1, -2, 3, 0, 2, -1, 4, 1]],
  "query": [2, 1, -3, 4, 0, 2, 1, -1],
  "scales": 3, "zero_points": 0,
  "saturate": true, "stall_cycles": 5,
  "repeat_passes": 1, "layout": "interleaved"
}

정수 모드의 weights는 −8..7, query는 −128..127, scales는 0..255, zero_points는 −8..7입니다. 스케일과 영점은 하나의 정수 또는 행별·그룹별 2차원 배열로 지정합니다. repeat_passes는 1..640입니다. 반복은 초기화를 다시 하지 않고 같은 행을 누적합니다.

stall_cycles(0..16)는 실행 중 23사이클마다 출력 ready를 낮추는 길이입니다. 실제 고객 시스템의 스톨 분포를 대신하지 않습니다. bank_contiguous는 주소 배치를 바꾸며 연속 동일 뱅크 접근 카운터를 바꿀 수 있습니다. 현재 회로에서 이 카운터가 별도의 스톨을 발생시키지는 않습니다.

FP 교정 방식

행별 host scale을 고정한 뒤 각 8원소 그룹에서 정수 scale 1..255와 signed zero point −8..7의 후보를 모두 평가하여 가중치 제곱 오차가 가장 작은 조합을 고릅니다. 행별 host scale의 전역 최적화는 수행하지 않습니다. 쿼리는 별도의 대칭 INT8 스케일로 양자화합니다.

RTL은 정수 누산을 수행합니다. FP 출력 복원은 호스트에서 행별 스케일과 쿼리 스케일을 곱하여 수행합니다. 비교 기준은 텐서 단위 및 행 단위 대칭 INT4이며, 동일한 양자화 쿼리와 동일한 회로를 사용합니다. 가중치 교정이 출력 오차를 항상 줄이는 것은 아닙니다.

스트리밍 및 메모리 계약

  • 입력 수락: 상승 에지에서 valid와 ready가 모두 1인 타일만 FIFO에 들어갑니다. 대기 중인 입력은 유지해야 합니다.
  • 출력 수락: 출력 valid와 ready가 모두 1일 때 소비합니다. ready가 낮은 동안 출력과 파이프라인 상태를 유지합니다.
  • 메모리: 4뱅크 × 16행 × 32비트. 주소 [1:0]은 뱅크, [5:2]는 행입니다. 공개 구성은 reset 가능한 플립플롭 배열입니다.
  • 평가 실행은 초기화 → 가중치 적재 → 연산 순서입니다. 실행 중 가중치를 갱신하는 고객 설계는 읽기·쓰기 순서를 별도 검증해야 합니다.
  • 리셋은 active-low 비동기입니다. SoC 통합 시 리셋 해제 동기화, 클럭 및 전원 도메인 처리는 시스템 책임입니다.
  • 성능 카운터는 16비트 modulo입니다. overflow sticky는 리셋 시 해제됩니다.

상세 포트 규격: SPEC.md ↓ · 실제 RTL ↓

평가 키트 재현

  1. Forge에서 입력을 실행하고 평가 키트 ZIP을 내려받습니다.
  2. 압축을 풀고 Icarus Verilog 환경에서 make check를 실행합니다.
  3. 모든 타일의 값, last, bank와 카운터·포화 상태를 확인합니다. 실패 시 프로세스가 실패 코드로 종료됩니다.
  4. native.vcd를 GTKWave 등으로 열어 전체 파형을 확인합니다. SHA256SUMS와 engine-manifest.json으로 평가 버전을 식별합니다.

통합 범위

현재 제품은 소규모 저비트 연산 IP의 평가 구성입니다. 완성된 NPU, 전체 Transformer 실행기, 검증된 AXI interconnect 또는 DMA 시스템을 포함하지 않습니다. 고객의 SRAM 매크로, 프로토콜 래퍼, DFT, CDC/RDC, 물리 설계와 공정별 signoff는 별도 통합 범위입니다.

일반적인 SoC 통합은 입력 형식 합의, 고객 벡터 평가, 인터페이스·메모리 구성 결정, 해당 조건의 검증 및 납품 순서로 진행합니다. 평가 상담 →