Register Map

QCORE-REG-001 Rev 0.9 — January 2026

Complete 64KB MMIO register space definitions including control/status registers, NTT array configuration, Keccak core interface, DMA engine, and interrupt controller. All registers are 32-bit aligned, little-endian. Access via QLI sideband or JTAG REG_ACCESS instruction.

Memory Map Summary #

Offset RangeBlockSizeAccess
0x0000–0x00FFSystem Control256 BRO/RW
0x0100–0x01FFQLI Controller256 BRO/RW/W1C
0x0200–0x02FFNTT Array Control256 BRO/RW
0x0300–0x03FFKeccak Core256 BRO/RW
0x0400–0x04FFKyber FSM256 BRO/RW
0x0500–0x05FFDMA Engine256 BRO/RW
0x0600–0x06FFInterrupt Controller256 BRO/RW/W1C
0x0700–0x07FFSecurity Controller256 BRO/RW
0x0800–0x0FFFPerformance Counters2 KBRO
0x1000–0xFFFFSRAM Debug Window60 KBRW (JTAG only)

System Control (0x0000–0x00FF) #

OffsetNameR/WResetDescription
0x000CHIP_IDRO0x44594231Chip identification ("DYB1" in ASCII)
0x004CHIP_VERSIONRO0x00000905Bits 15:8 = major (09), Bits 7:0 = minor (05)
0x008CHIP_STATUSRO0x00000000[0] NTT ready, [1] QLI link up, [2] Keccak ready, [3] SRAM init, [7] Zeroize done
0x00CCHIP_CTRLRW0x00000000[0] Soft reset, [1] Clock gate override, [7:4] Power mode (0=active, 1=idle, 2=sleep)
0x010CHIP_FEATURESRO0x0000001F[0] NTT, [1] Keccak, [2] CBD, [3] QLI, [4] DMA present
0x014NTT_CONFIGRO0x00080010[7:0] NTT lane count (8), [23:16] Radix (16)
0x018SRAM_SIZERO0x00010000SRAM capacity in bytes (65536 = 64KB)
0x01CSRAM_BANKSRO0x00000004Number of SRAM banks (4)
0x020BUILD_DATEROvariesBuild date in BCD: YYYYMMDD
0x024BUILD_HASHROvariesGit commit hash (first 32 bits)

NTT Array Registers (0x0200–0x02FF) #

OffsetNameR/WDescription
0x200NTT_CTRLRW[0] Enable, [1] Force idle, [3:2] Scheduling mode (0=auto, 1=round-robin, 2=priority)
0x204NTT_STATUSRO[7:0] Per-engine busy flags, [15:8] Per-engine error flags
0x208NTT_ENGINE_MAPROEngine-to-polynomial assignment (debug)
0x20CNTT_CYCLE_COUNTROTotal NTT cycles executed (32-bit, wraps)
0x210NTT_STALL_COUNTROSRAM contention stall cycles
0x220NTT_SHUFFLE_SEEDRWShuffle PRNG seed for side-channel resistance
0x224NTT_DUMMY_RATERW[1:0] Dummy op rate: 0=0%, 1=10%, 2=25%, 3=50%

Keccak Core Registers (0x0300–0x03FF) #

OffsetNameR/WDescription
0x300KECCAK_CTRLRW[0] Enable, [3:1] Mode (0=SHA3-256, 1=SHA3-512, 2=SHAKE-128, 3=SHAKE-256)
0x304KECCAK_STATUSRO[0] Busy, [1] Done, [2] Error
0x308KECCAK_PERM_COUNTROTotal permutations executed
0x310–0x3CFKECCAK_STATE[0:49]RWDirect access to 1600-bit state (50 × 32-bit words, debug only)

Kyber FSM Registers (0x0400–0x04FF) #

OffsetNameR/WDescription
0x400KYBER_PARAMRW[1:0] Parameter set: 2=ML-KEM-512, 3=ML-KEM-768, 4=ML-KEM-1024
0x404KYBER_CMDRWCommand: 0x01=KeyGen, 0x02=Encaps, 0x03=Decaps, 0xFF=Zeroize
0x408KYBER_PK_ADDRRWPublic key SRAM address
0x40CKYBER_SK_ADDRRWSecret key SRAM address
0x410KYBER_STATUSRO[0] Done, [1] Error, [7:4] Error code
0x414KYBER_CT_ADDRRWCiphertext SRAM address (Encaps/Decaps)
0x418KYBER_SS_ADDRRWShared secret output SRAM address
0x41CKYBER_CYCLESROCycle count of last operation
0x420–0x43FKYBER_SEED[0:7]RW32-byte seed input (8 × 32-bit words)

Security Registers (0x0700–0x07FF) #

OffsetNameR/WDescription
0x700SEC_CTRLRW[0] Masking enable, [1] Shuffling enable, [3:2] Dummy rate, [4] Tamper response enable
0x704SEC_STATUSRO[0] Tamper detected, [1] Glitch detected, [2] Temp warning, [3] Temp critical
0x708SEC_TAMPER_LOGROLatched tamper event details (cleared on read)
0x70CSEC_ZEROIZEWOWrite 0xDEAD to trigger immediate zeroization
0x710SEC_TEMPROCurrent junction temperature (°C, 8-bit signed)
0x714SEC_ECC_ERRORSRO[15:0] Correctable ECC count, [31:16] Uncorrectable count
See also: Developer Guide for programming examples, QLI Interface Reference for QLI controller registers (0x0100–0x01FF).