Files
retroSoC/publications/datasheets/register-annotations.json
T
maksyuki 3ac9e73ab9 feat: refactor tests for mailbox and environment validation
- Updated mailbox purpose tests to reflect new write order and sequence handling.
- Added tests to ensure Linux-ready values match LP contract and constants match Linux helper.
- Introduced tests to verify that offset changes do not hide stale Linux helpers.
- Enhanced environment tests to report current locked launcher and runtime versions.
- Added checks for SBT launcher presence in environment labels.
- Improved full diagram tests to validate storage geometry and RSA vector configurations.
- Expanded register tests to ensure crypto interrupt registers publish all events and lifecycle annotations preserve security boundaries.
- Modified script tools tests to include Vexii generation validation and updated workflow assertions.
2026-09-30 10:51:04 +08:00

9849 lines
278 KiB
JSON

{
"uart": {
"main.TXDATA": {
"fields": [
{
"lsb": 0,
"msb": 7,
"name": "DATA",
"description": "Push one character from bits 7:0.",
"reset": "Not retained",
"expression": "write data"
},
{
"lsb": 8,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "zero"
}
],
"reset": "Not retained (command/data port)"
},
"main.FIFO_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "TX_FLUSH",
"description": "Tx flush.",
"reset": "Register reset applies",
"expression": "`UART_FIFO_CTRL_TX_FLUSH"
},
{
"lsb": 1,
"msb": 1,
"name": "RX_FLUSH",
"description": "Rx flush.",
"reset": "Register reset applies",
"expression": "`UART_FIFO_CTRL_RX_FLUSH"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "RX_WATERMARK",
"description": "Rx watermark.",
"reset": "Register reset applies",
"expression": "`UART_INTR_RX_WATERMARK"
},
{
"lsb": 1,
"msb": 1,
"name": "RX_TIMEOUT",
"description": "Rx timeout.",
"reset": "Register reset applies",
"expression": "`UART_INTR_RX_TIMEOUT"
},
{
"lsb": 2,
"msb": 2,
"name": "TX_WATERMARK",
"description": "Tx watermark.",
"reset": "Register reset applies",
"expression": "`UART_INTR_TX_WATERMARK"
},
{
"lsb": 3,
"msb": 3,
"name": "TX_DONE",
"description": "Tx done.",
"reset": "Register reset applies",
"expression": "`UART_INTR_TX_DONE"
},
{
"lsb": 4,
"msb": 4,
"name": "RX_ERROR",
"description": "Rx error.",
"reset": "Register reset applies",
"expression": "`UART_INTR_RX_ERROR"
},
{
"lsb": 5,
"msb": 5,
"name": "BREAK",
"description": "Break.",
"reset": "Register reset applies",
"expression": "`UART_INTR_BREAK"
},
{
"lsb": 6,
"msb": 6,
"name": "CTS_CHANGE",
"description": "Cts change.",
"reset": "Register reset applies",
"expression": "`UART_INTR_CTS_CHANGE"
},
{
"lsb": 7,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
}
},
"i2c": {
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`I2C_COMMAND_ABORT"
},
{
"lsb": 1,
"msb": 1,
"name": "RECOVER",
"description": "Recover.",
"reset": "Register reset applies",
"expression": "`I2C_COMMAND_RECOVER"
},
{
"lsb": 2,
"msb": 2,
"name": "CMD_FLUSH",
"description": "Cmd flush.",
"reset": "Register reset applies",
"expression": "`I2C_COMMAND_CMD_FLUSH"
},
{
"lsb": 3,
"msb": 3,
"name": "RX_FLUSH",
"description": "Rx flush.",
"reset": "Register reset applies",
"expression": "`I2C_COMMAND_RX_FLUSH"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "DONE",
"description": "Done.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_DONE"
},
{
"lsb": 1,
"msb": 1,
"name": "CMD_WATERMARK",
"description": "Cmd watermark.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_CMD_WATERMARK"
},
{
"lsb": 2,
"msb": 2,
"name": "RX_WATERMARK",
"description": "Rx watermark.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_RX_WATERMARK"
},
{
"lsb": 3,
"msb": 3,
"name": "NACK",
"description": "Nack.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_NACK"
},
{
"lsb": 4,
"msb": 4,
"name": "ARB_LOST",
"description": "Arb lost.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_ARB_LOST"
},
{
"lsb": 5,
"msb": 5,
"name": "TIMEOUT",
"description": "Timeout.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_TIMEOUT"
},
{
"lsb": 6,
"msb": 6,
"name": "ERROR",
"description": "Error.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_ERROR"
},
{
"lsb": 7,
"msb": 7,
"name": "RECOVERY_DONE",
"description": "Recovery done.",
"reset": "Register reset applies",
"expression": "`I2C_INTR_RECOVERY_DONE"
},
{
"lsb": 8,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.DATA_CMD": {
"fields": [
{
"name": "DATA",
"lsb": 0,
"msb": 7,
"description": "Byte to transmit; ignored for a read command.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "READ",
"lsb": 8,
"msb": 8,
"description": "Read one byte instead of transmitting DATA.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "RESTART",
"lsb": 9,
"msb": 9,
"description": "Issue START/repeated START before this byte.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "STOP",
"lsb": 10,
"msb": 10,
"description": "Issue STOP after this command.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "NACK_LAST",
"lsb": 11,
"msb": 11,
"description": "Return NACK for the final received byte.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 12,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CMD_WATERMARK": {
"reset": "4"
},
"main.RX_WATERMARK": {
"reset": "8"
}
},
"i2s": {
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "TX_FLUSH",
"description": "Tx flush.",
"reset": "Register reset applies",
"expression": "`APB4_I2S__COMMAND_TX_FLUSH"
},
{
"lsb": 1,
"msb": 1,
"name": "RX_FLUSH",
"description": "Rx flush.",
"reset": "Register reset applies",
"expression": "`APB4_I2S__COMMAND_RX_FLUSH"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.TXDATA": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "DATA",
"description": "PIO TX word when stream TX is disabled.",
"reset": "Not retained",
"expression": "write data"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "TX_LOW",
"description": "Tx low.",
"reset": "Register reset applies",
"expression": "`APB4_I2S__INTR_TX_LOW"
},
{
"lsb": 1,
"msb": 1,
"name": "RX_HIGH",
"description": "Rx high.",
"reset": "Register reset applies",
"expression": "`APB4_I2S__INTR_RX_HIGH"
},
{
"lsb": 2,
"msb": 2,
"name": "TX_UNDERRUN",
"description": "Tx underrun.",
"reset": "Register reset applies",
"expression": "`APB4_I2S__INTR_TX_UNDERRUN"
},
{
"lsb": 3,
"msb": 3,
"name": "RX_OVERRUN",
"description": "Rx overrun.",
"reset": "Register reset applies",
"expression": "`APB4_I2S__INTR_RX_OVERRUN"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Enable.",
"reset": "0x0",
"expression": "`APB4_I2S__CTRL_ENABLE"
},
{
"lsb": 1,
"msb": 1,
"name": "TX_ENABLE",
"description": "Tx enable.",
"reset": "0x0",
"expression": "`APB4_I2S__CTRL_TX_ENABLE"
},
{
"lsb": 2,
"msb": 2,
"name": "RX_ENABLE",
"description": "Rx enable.",
"reset": "0x0",
"expression": "`APB4_I2S__CTRL_RX_ENABLE"
},
{
"lsb": 3,
"msb": 3,
"name": "LOOPBACK",
"description": "Loopback.",
"reset": "0x0",
"expression": "`APB4_I2S__CTRL_LOOPBACK"
},
{
"lsb": 4,
"msb": 4,
"name": "CLK_PROG",
"description": "Clk prog.",
"reset": "0x0",
"expression": "`APB4_I2S__CTRL_CLK_PROG"
},
{
"lsb": 5,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_ctrl_q"
}
]
},
"main.STREAM_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "STREAM_TX_ENABLE",
"description": "Stream tx enable.",
"reset": "0x0",
"expression": "s_stream_q[`APB4_I2S__STREAM_TX]"
},
{
"lsb": 1,
"msb": 1,
"name": "STREAM_RX_ENABLE",
"description": "Stream rx enable.",
"reset": "0x0",
"expression": "s_stream_q[`APB4_I2S__STREAM_RX]"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_stream_q"
}
]
}
},
"ws2812": {
"main.TXDATA": {
"fields": [
{
"lsb": 0,
"msb": 23,
"name": "DATA",
"description": "Push one 24-bit GRB word into the FIFO. Bits 31:24 must be zero in software.",
"reset": "Not retained",
"expression": "write data"
},
{
"lsb": 24,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "zero"
}
],
"reset": "Not retained (command/data port)"
},
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "START",
"description": "Start.",
"reset": "Register reset applies",
"expression": "`WS2812_CTRL_START"
},
{
"lsb": 1,
"msb": 1,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`WS2812_CTRL_ABORT"
},
{
"lsb": 2,
"msb": 2,
"name": "FIFO_FLUSH",
"description": "Fifo flush.",
"reset": "Register reset applies",
"expression": "`WS2812_CTRL_FIFO_FLUSH"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "DONE",
"description": "Done.",
"reset": "Register reset applies",
"expression": "`WS2812_INTR_DONE"
},
{
"lsb": 1,
"msb": 1,
"name": "FIFO_LOW",
"description": "Fifo low.",
"reset": "Register reset applies",
"expression": "`WS2812_INTR_FIFO_LOW"
},
{
"lsb": 2,
"msb": 2,
"name": "ERROR",
"description": "Error.",
"reset": "Register reset applies",
"expression": "`WS2812_INTR_ERROR"
},
{
"lsb": 3,
"msb": 3,
"name": "ABORTED",
"description": "Aborted.",
"reset": "Register reset applies",
"expression": "`WS2812_INTR_ABORTED"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.FIFO_LEVEL": {
"fields": [
{
"name": "COUNT",
"lsb": 0,
"msb": 4,
"description": "Current number of queued 24-bit GRB words; valid range 0 through 16.",
"reset": "0x0",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 5,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0x0",
"expression": "reserved"
}
],
"access": "RO",
"reset": "0"
},
"main.FIFO_WATERMARK": {
"reset": "4"
}
},
"dma": {
"main.GLOBAL_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "RESET",
"description": "Reset.",
"reset": "Register reset applies",
"expression": "`APB4_DMA__GLOBAL_CTRL_RESET"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"ch.CTRL": {
"fields": [
{
"name": "START",
"lsb": 0,
"msb": 0,
"description": "Write one to request start.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "SUSPEND",
"lsb": 1,
"msb": 1,
"description": "Write one to request suspend.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RESUME",
"lsb": 2,
"msb": 2,
"description": "Write one to request resume.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ABORT",
"lsb": 3,
"msb": 3,
"description": "Write one to request abort.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RESET",
"lsb": 4,
"msb": 4,
"description": "Write one to request reset.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 5,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
}
},
"sysctrl": {
"main.PLL_CMD": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "APPLY",
"description": "Apply.",
"reset": "Register reset applies",
"expression": "`APB4_SYSCTRL__PLL_CMD_APPLY"
},
{
"lsb": 1,
"msb": 1,
"name": "CLEAR_ERROR",
"description": "Clear error.",
"reset": "Register reset applies",
"expression": "`APB4_SYSCTRL__PLL_CMD_CLEAR_ERROR"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.PERF_USB2_WAIT_LO": {
"description": "USB2 wait-cycle counter low word; use the snapshot sequence for a coherent 64-bit value.",
"access": "RO"
},
"main.PERF_USB2_WAIT_HI": {
"description": "USB2 wait-cycle counter high word; use the snapshot sequence for a coherent 64-bit value.",
"access": "RO"
},
"clock.CLK_HP_CURRENT": {
"reset": "0",
"notes": "This initial value applies to the associated AON/root reset, not every downstream APB reset."
},
"clock.CLK_LP_CFG": {
"reset": "0",
"notes": "This initial value applies to the associated AON/root reset, not every downstream APB reset."
},
"clock.CLK_PCLK_CFG": {
"reset": "0",
"notes": "This initial value applies to the associated AON/root reset, not every downstream APB reset."
},
"clock.CLK_STATUS": {
"reset": "0",
"notes": "This initial value applies to the associated AON/root reset, not every downstream APB reset."
},
"clock.CLK_FAULT": {
"reset": "0",
"notes": "This initial value applies to the associated AON/root reset, not every downstream APB reset."
},
"clock.CLK_GATE": {
"reset": "0",
"notes": "This initial value applies to the associated AON/root reset, not every downstream APB reset."
},
"clock.MEM_PAD_FAULT": {
"reset": "0",
"notes": "This initial value applies to the associated AON/root reset, not every downstream APB reset."
},
"clock.MEM_PAD_CTRL": {
"reset": "1",
"notes": "The AON reset selects QPI mode; mode and lock may survive downstream resets."
},
"clock.MEM_PAD_STATUS": {
"reset": "9",
"notes": "Reset: present=1, QPI mode=1, lock=0, fault=0."
}
},
"psram": {
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "INIT",
"description": "Init.",
"reset": "Register reset applies",
"expression": "`PSRAM_COMMAND_INIT"
},
{
"lsb": 1,
"msb": 1,
"name": "RECOVER",
"description": "Recover.",
"reset": "Register reset applies",
"expression": "`PSRAM_COMMAND_RECOVER"
},
{
"lsb": 2,
"msb": 2,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`PSRAM_COMMAND_ABORT"
},
{
"lsb": 3,
"msb": 7,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
},
{
"lsb": 8,
"msb": 31,
"name": "CHIP",
"description": "Chip.",
"reset": "Register reset applies",
"expression": "`PSRAM_COMMAND_CHIP_LSB"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "INIT_DONE",
"description": "Init done.",
"reset": "Register reset applies",
"expression": "`PSRAM_INTR_INIT_DONE"
},
{
"lsb": 1,
"msb": 1,
"name": "INDIRECT_DONE",
"description": "Indirect done.",
"reset": "Register reset applies",
"expression": "`PSRAM_INTR_INDIRECT_DONE"
},
{
"lsb": 2,
"msb": 2,
"name": "ERROR",
"description": "Error.",
"reset": "Register reset applies",
"expression": "`PSRAM_INTR_ERROR"
},
{
"lsb": 3,
"msb": 3,
"name": "TIMEOUT",
"description": "Timeout.",
"reset": "Register reset applies",
"expression": "`PSRAM_INTR_TIMEOUT"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.INDIRECT_CTRL": {
"fields": [
{
"name": "COMMAND",
"lsb": 0,
"msb": 3,
"description": "Restricted indirect command selector.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 4,
"msb": 7,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
},
{
"name": "CHIP",
"lsb": 8,
"msb": 9,
"description": "Select one of four PSRAM devices.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 10,
"msb": 15,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
},
{
"name": "LENGTH_MINUS_ONE",
"lsb": 16,
"msb": 18,
"description": "Transfer length minus one, for one through eight bytes.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 19,
"msb": 30,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
},
{
"name": "START",
"lsb": 31,
"msb": 31,
"description": "Write-one indirect-start pulse; reads as zero.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
}
],
"reset": "0"
},
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "CONTROLLER_ENABLE",
"description": "Controller enable.",
"reset": "0x1",
"expression": "s_ctrl_q[`PSRAM_CTRL_ENABLE]"
},
{
"lsb": 1,
"msb": 1,
"name": "MEMORY_ENABLE",
"description": "Memory enable.",
"reset": "0x1",
"expression": "s_ctrl_q[`PSRAM_CTRL_MEMORY_ENABLE]"
},
{
"lsb": 2,
"msb": 2,
"name": "AUTO_INIT",
"description": "Auto init.",
"reset": "0x0",
"expression": "s_ctrl_q[`PSRAM_CTRL_AUTO_INIT]"
},
{
"lsb": 3,
"msb": 3,
"name": "WRAP32",
"description": "Wrap32.",
"reset": "0x0",
"expression": "s_ctrl_q[`PSRAM_CTRL_WRAP32]"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_ctrl_q"
}
]
},
"main.CLK_CONFIG": {
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "HALF_PERIOD",
"description": "Half period.",
"reset": "0x1",
"expression": "s_clk_config_q[15:0]"
},
{
"lsb": 16,
"msb": 16,
"name": "ABOVE_84MHZ",
"description": "Above 84mhz.",
"reset": "0x0",
"expression": "s_clk_config_q[`PSRAM_CLK_ABOVE_84MHZ]"
},
{
"lsb": 17,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_clk_config_q"
}
]
}
},
"opipsram": {
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "INIT",
"description": "Init.",
"reset": "Register reset applies",
"expression": "`APB4_OPIPSRAM__COMMAND_INIT"
},
{
"lsb": 1,
"msb": 1,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`APB4_OPIPSRAM__COMMAND_ABORT"
},
{
"lsb": 2,
"msb": 2,
"name": "SOFT_RESET",
"description": "Soft reset.",
"reset": "Register reset applies",
"expression": "`APB4_OPIPSRAM__COMMAND_SOFT_RESET"
},
{
"lsb": 3,
"msb": 3,
"name": "TRAIN",
"description": "Train.",
"reset": "Register reset applies",
"expression": "`APB4_OPIPSRAM__COMMAND_TRAIN"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"name": "INIT_DONE",
"lsb": 0,
"msb": 0,
"description": "Write one to request init done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "INDIRECT_DONE",
"lsb": 1,
"msb": 1,
"description": "Write one to request indirect done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "TRAIN_DONE",
"lsb": 2,
"msb": 2,
"description": "Write one to request train done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ERROR",
"lsb": 3,
"msb": 3,
"description": "Write one to request error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "TIMEOUT",
"lsb": 4,
"msb": 4,
"description": "Write one to request timeout.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 5,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.INDIRECT_CTRL": {
"fields": [
{
"name": "WRITE",
"lsb": 0,
"msb": 0,
"description": "Write transaction when set; read otherwise.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "REGISTER",
"lsb": 1,
"msb": 1,
"description": "Select register space instead of memory space.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 3,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
},
{
"name": "LENGTH",
"lsb": 4,
"msb": 7,
"description": "Indirect transfer byte length.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "START",
"lsb": 8,
"msb": 8,
"description": "Submit an indirect command.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 9,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "CONTROLLER_ENABLE",
"description": "Controller enable.",
"reset": "0x0",
"expression": "s_ctrl_q[`APB4_OPIPSRAM__CTRL_ENABLE]"
},
{
"lsb": 1,
"msb": 1,
"name": "MEMORY_ENABLE",
"description": "Memory enable.",
"reset": "0x0",
"expression": "s_ctrl_q[`APB4_OPIPSRAM__CTRL_MEMORY_ENABLE]"
},
{
"lsb": 2,
"msb": 2,
"name": "AUTO_INIT",
"description": "Auto init.",
"reset": "0x0",
"expression": "s_ctrl_q[`APB4_OPIPSRAM__CTRL_AUTO_INIT]"
},
{
"lsb": 3,
"msb": 3,
"name": "LINE_BUFFER",
"description": "Line buffer.",
"reset": "0x0",
"expression": "s_ctrl_q[`APB4_OPIPSRAM__CTRL_LINE_BUFFER]"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_ctrl_q"
}
]
}
},
"jpeg": {
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "START",
"description": "Start.",
"reset": "Register reset applies",
"expression": "`APB4_JPEG__COMMAND_START"
},
{
"lsb": 1,
"msb": 1,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`APB4_JPEG__COMMAND_ABORT"
},
{
"lsb": 2,
"msb": 2,
"name": "SOFT_RESET",
"description": "Soft reset.",
"reset": "Register reset applies",
"expression": "`APB4_JPEG__COMMAND_SOFT_RESET"
},
{
"lsb": 3,
"msb": 3,
"name": "RING_KICK",
"description": "Ring kick.",
"reset": "Register reset applies",
"expression": "`APB4_JPEG__COMMAND_RING_KICK"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)",
"access": "WO"
},
"main.IRQ_TEST": {
"fields": [
{
"name": "JOB_DONE",
"lsb": 0,
"msb": 0,
"description": "Write one to request job done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RING_EVENT",
"lsb": 1,
"msb": 1,
"description": "Write one to request ring event.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "HEADER_READY",
"lsb": 2,
"msb": 2,
"description": "Write one to request header ready.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ABORT_DONE",
"lsb": 3,
"msb": 3,
"description": "Write one to request abort done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ERROR",
"lsb": 4,
"msb": 4,
"description": "Write one to request error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 5,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.TABLE_COMMAND": {
"fields": [
{
"name": "COMMIT",
"lsb": 0,
"msb": 0,
"description": "Write one to request commit.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DEFAULT",
"lsb": 1,
"msb": 1,
"description": "Write one to request default.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CLEAR",
"lsb": 2,
"msb": 2,
"description": "Write one to request clear.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.DOORBELL": {
"fields": [
{
"name": "KICK",
"lsb": 0,
"msb": 0,
"description": "Notify the ring scheduler that a producer has published work.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CYCLES_LO": {
"access": "RO"
},
"main.CYCLES_HI": {
"access": "RO"
},
"main.PIXELS": {
"access": "RO"
},
"main.INPUT_BYTES": {
"access": "RO"
},
"main.OUTPUT_BYTES": {
"access": "RO"
},
"main.READ_STALL": {
"access": "RO"
},
"main.WRITE_STALL": {
"access": "RO"
},
"main.RING_HEAD": {
"access": "RO"
},
"main.RING_STATUS": {
"access": "RO"
},
"main.TABLE_STATUS": {
"access": "RO"
},
"main.ERROR_STATUS": {
"fields": [
{
"name": "VALID",
"lsb": 0,
"msb": 0,
"description": "Sticky first-error valid bit; write one to clear.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CODE",
"lsb": 1,
"msb": 5,
"description": "Error code.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "STAGE",
"lsb": 6,
"msb": 9,
"description": "Failing codec/transport stage.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "AXI_RESPONSE",
"lsb": 10,
"msb": 11,
"description": "AXI response code for bus faults.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 12,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "RW1C",
"reset": "0"
},
"main.IP_ID": {
"access": "RO"
},
"main.IP_VERSION": {
"access": "RO"
},
"main.CAPABILITY0": {
"access": "RO"
},
"main.CAPABILITY1": {
"access": "RO"
},
"main.STATUS": {
"access": "RO"
},
"main.IRQ_STATE": {
"access": "RW1C"
},
"main.IRQ_ENABLE": {
"access": "RW"
},
"main.ERROR_ADDRESS": {
"access": "RO"
},
"main.ERROR_DETAIL": {
"access": "RO"
},
"main.PERF_CONTROL": {
"access": "RW"
},
"main.JOB_CONFIG": {
"access": "RW"
},
"main.IMAGE_SIZE": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "WIDTH",
"description": "Image width in pixels; valid jobs are 1 through 2048.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "HEIGHT",
"description": "Image height in pixels; valid jobs are 1 through 2048.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
}
],
"review_source": "rtl/ip/multimedia/apb4_jpeg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.INPUT_FORMAT": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 2,
"name": "FORMAT",
"description": "0: Gray8; 1: RGB565; 2: RGB888; 3: YUYV422; 4: NV12. Other encodings are unsupported.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
}
],
"review_source": "rtl/ip/multimedia/apb4_jpeg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.OUTPUT_FORMAT": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 2,
"name": "FORMAT",
"description": "0: Gray8; 1: RGB565; 2: RGB888; 3: YUYV422; 4: NV12. Other encodings are unsupported.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
}
],
"review_source": "rtl/ip/multimedia/apb4_jpeg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.ENCODE_CONFIG": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 7,
"name": "QUALITY",
"description": "Retained SDK quality request. The implemented datapath obtains quantization from the loaded table context; this byte does not generate quality tables.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
},
{
"lsb": 8,
"msb": 9,
"name": "SAMPLING",
"description": "0: grayscale; 1: 4:4:4; 2: 4:2:2; 3: 4:2:0.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
},
{
"lsb": 10,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
}
],
"review_source": "rtl/ip/multimedia/apb4_jpeg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.RESTART_INTERVAL": {
"access": "RW"
},
"main.BITSTREAM_ADDR": {
"access": "RW"
},
"main.BITSTREAM_SIZE": {
"access": "RW"
},
"main.PLANE0_ADDR": {
"access": "RW"
},
"main.PLANE0_STRIDE": {
"access": "RW"
},
"main.PLANE1_ADDR": {
"access": "RW"
},
"main.PLANE1_STRIDE": {
"access": "RW"
},
"main.PLANE2_ADDR": {
"access": "RW"
},
"main.PLANE2_STRIDE": {
"access": "RW"
},
"main.METADATA_ADDR": {
"access": "RW"
},
"main.METADATA_LENGTH": {
"access": "RW"
},
"main.RESULT_SIZE": {
"access": "RO"
},
"main.RESULT_IMAGE_SIZE": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "WIDTH",
"description": "Image width in pixels; valid jobs are 1 through 2048.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "HEIGHT",
"description": "Image height in pixels; valid jobs are 1 through 2048.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
}
],
"review_source": "rtl/ip/multimedia/apb4_jpeg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.RESULT_FORMAT": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 2,
"name": "FORMAT",
"description": "0: Gray8; 1: RGB565; 2: RGB888; 3: YUYV422; 4: NV12. Other encodings are unsupported.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/multimedia/apb4_jpeg.sv"
}
],
"review_source": "rtl/ip/multimedia/apb4_jpeg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.RESULT_MARKERS": {
"access": "RO"
},
"main.RING_BASE": {
"access": "RW"
},
"main.RING_SIZE": {
"access": "RW"
},
"main.RING_TAIL": {
"access": "RW"
},
"main.RING_CONTROL": {
"access": "RW"
},
"main.IRQ_COALESCE": {
"access": "RW"
},
"main.TABLE_CONTEXT": {
"access": "RW"
},
"main.TABLE_KIND": {
"access": "RW"
},
"main.TABLE_INDEX": {
"access": "RW"
},
"main.TABLE_DATA": {
"access": "RW"
}
},
"apu": {
"main.KWS_INPUT_CONFIG": {
"access": "RW",
"description": "Capture rate, physical channel count, and sample precision for continuous KWS input.",
"notes": "Default PRODUCT has EnableP7=0; both reads and writes of this offset return an APB error. The stored reset value does not establish an enabled KWS input path."
},
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "START_DIRECT",
"description": "Start direct.",
"reset": "Register reset applies",
"expression": "`APB4_APU__COMMAND_START_DIRECT"
},
{
"lsb": 1,
"msb": 1,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`APB4_APU__COMMAND_ABORT"
},
{
"lsb": 2,
"msb": 2,
"name": "SOFT_RESET",
"description": "Soft reset.",
"reset": "Register reset applies",
"expression": "`APB4_APU__COMMAND_SOFT_RESET"
},
{
"lsb": 3,
"msb": 3,
"name": "RING_KICK",
"description": "Ring kick.",
"reset": "Register reset applies",
"expression": "`APB4_APU__COMMAND_RING_KICK"
},
{
"lsb": 4,
"msb": 4,
"name": "MICROCODE_LOAD",
"description": "Microcode load.",
"reset": "Register reset applies",
"expression": "`APB4_APU__COMMAND_MICROCODE_LOAD"
},
{
"lsb": 5,
"msb": 5,
"name": "MODEL_LOAD",
"description": "Model load.",
"reset": "Register reset applies",
"expression": "`APB4_APU__COMMAND_MODEL_LOAD"
},
{
"lsb": 6,
"msb": 6,
"name": "CLEAR_COUNTERS",
"description": "Clear counters.",
"reset": "Register reset applies",
"expression": "`APB4_APU__COMMAND_CLEAR_COUNTERS"
},
{
"lsb": 7,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.IRQ_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "DIRECT_DONE",
"description": "Direct done.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_DIRECT_DONE"
},
{
"lsb": 1,
"msb": 1,
"name": "RING_EVENT",
"description": "Ring event.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_RING_EVENT"
},
{
"lsb": 2,
"msb": 2,
"name": "KWS_HIT",
"description": "Kws hit.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_KWS_HIT"
},
{
"lsb": 3,
"msb": 3,
"name": "MICROCODE_LOAD_DONE",
"description": "Microcode load done.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_MICROCODE_LOAD_DONE"
},
{
"lsb": 4,
"msb": 4,
"name": "MODEL_LOAD_DONE",
"description": "Model load done.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_MODEL_LOAD_DONE"
},
{
"lsb": 5,
"msb": 5,
"name": "ABORT_DONE",
"description": "Abort done.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_ABORT_DONE"
},
{
"lsb": 6,
"msb": 6,
"name": "INPUT_WATERMARK",
"description": "Input watermark.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_INPUT_WATERMARK"
},
{
"lsb": 7,
"msb": 7,
"name": "OUTPUT_WATERMARK",
"description": "Output watermark.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_OUTPUT_WATERMARK"
},
{
"lsb": 8,
"msb": 8,
"name": "FIRST_ERROR",
"description": "First error.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_FIRST_ERROR"
},
{
"lsb": 9,
"msb": 9,
"name": "STREAM_XRUN",
"description": "Stream xrun.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_STREAM_XRUN"
},
{
"lsb": 10,
"msb": 10,
"name": "SEQUENCER_TRAP",
"description": "Sequencer trap.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_SEQUENCER_TRAP"
},
{
"lsb": 11,
"msb": 11,
"name": "COEFFICIENT_LOAD_DONE",
"description": "Coefficient load reached a terminal success or error state.",
"reset": "Register reset applies",
"expression": "`APB4_APU__IRQ_COEFFICIENT_LOAD_DONE"
},
{
"lsb": 12,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.IP_VERSION": {
"description": "P9 uses additive APB interface V1.2 (0x00010002), preserving the frozen V1.0/V1.1 offsets and accepted fields while adding coefficient discovery and loading."
},
"main.CAPABILITY1": {
"description": "Expanded P5 geometry is 0x01827020: 32 KiB control store, 112 KiB local data, two channels, and 96 kHz maximum source-rate encoding."
},
"main.JOB_INPUT_CONFIG": {
"fields": [
{
"name": "RATE_HZ",
"lsb": 0,
"msb": 16,
"description": "Expected source sample rate; zero derives it from the stream.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CHANNELS",
"lsb": 17,
"msb": 18,
"description": "Expected source channel count; zero derives it.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 19,
"msb": 19,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
},
{
"name": "SAMPLE_BITS",
"lsb": 20,
"msb": 25,
"description": "Expected source bits per sample; zero derives it.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 26,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"main.JOB_OUTPUT_CONFIG": {
"fields": [
{
"name": "RATE_HZ",
"lsb": 0,
"msb": 16,
"description": "Requested output sample rate.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CHANNELS",
"lsb": 17,
"msb": 18,
"description": "Requested output channel count.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "PCM_FORMAT",
"lsb": 19,
"msb": 20,
"description": "Output PCM format selector defined by the APU data contract.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 21,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"main.ERROR_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "VALID",
"description": "Sticky first error. Write one to clear the latched status.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apu_define.svh"
},
{
"lsb": 1,
"msb": 6,
"name": "CODE",
"description": "0: none; 1: configuration; 2: ring; 3: unsupported; 4: malformed; 5: truncated; 6: codec CRC; 7: decode; 8: reconstruction; 9: microcode; 10: microcode CRC; 11: sequencer; 12: KWS model; 13: KWS CRC; 14: KWS arithmetic; 15: AXI read; 16: AXI write; 17: DMA timeout; 18: stream underrun; 19: stream overrun; 20: abort; 21: resource reset; 22: overflow. Codes for unavailable capabilities remain ABI definitions.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apu_define.svh"
},
{
"lsb": 7,
"msb": 10,
"name": "STAGE",
"description": "0: APB; 1: loader; 2: ring; 3: read DMA; 4: bitstream; 5: entropy; 6: reconstruction; 7: resampler; 8: write DMA; 9: KWS frontend; 10: KWS inference; 11: lifecycle.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apu_define.svh"
},
{
"lsb": 11,
"msb": 12,
"name": "AXI_RESPONSE",
"description": "Captured AXI response: 0 OKAY, 1 EXOKAY, 2 SLVERR, 3 DECERR.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apu_define.svh"
},
{
"lsb": 13,
"msb": 20,
"name": "DESCRIPTOR_INDEX",
"description": "Ring descriptor index associated with the first error.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/apu_define.svh"
},
{
"lsb": 21,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/multimedia/apu_define.svh"
}
],
"review_source": "rtl/ip/multimedia/apu_define.svh",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
}
},
"npu": {
"main.IP_ID": {
"access": "RO",
"reset": "0x4E505531",
"description": "Fixed NPU identifier.",
"fields": [
{
"name": "IDENTIFIER",
"lsb": 0,
"msb": 31,
"description": "Fixed value 0x4E505531 (NPU1).",
"reset": "0x4E505531",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.IP_VERSION": {
"access": "RO",
"reset": "0x00010000",
"description": "NPU register ABI version.",
"fields": [
{
"name": "MINOR",
"lsb": 0,
"msb": 15,
"description": "Register ABI minor version.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "MAJOR",
"lsb": 16,
"msb": 31,
"description": "Register ABI major version; the current major is 1.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.CAPABILITY": {
"access": "RO",
"reset": "0x0000007F",
"description": "Configured capability bitmap for the implemented operator pipeline, private AXI64 DMA, interrupts, double-rounded numerics, HP-native execution and software abort. Capability bits do not certify a workload or physical result.",
"fields": [
{
"name": "PRESENT",
"lsb": 0,
"msb": 0,
"description": "NPU register and control integration is present.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
},
{
"name": "EXECUTION_READY",
"lsb": 1,
"msb": 1,
"description": "The supported eight-operator implementation is compiled in and enabled. Execution readiness is separate from corpus or physical qualification.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
},
{
"name": "PRIVATE_AXI64_DMA",
"lsb": 2,
"msb": 2,
"description": "The private AXI64 DMA engine is implemented.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
},
{
"name": "INTERRUPTS",
"lsb": 3,
"msb": 3,
"description": "DONE, ERROR and ABORTED interrupt events are implemented.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
},
{
"name": "DOUBLE_ROUNDING",
"lsb": 4,
"msb": 4,
"description": "The implemented requantizer uses double-rounded integer numerics.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
},
{
"name": "NATIVE_HP_CLOCK",
"lsb": 5,
"msb": 5,
"description": "HP-native clock execution; compute runs on the HP fabric clock.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
},
{
"name": "SOFTWARE_ABORT",
"lsb": 6,
"msb": 6,
"description": "An active job accepts software abort and drains accepted work.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 7,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.STATUS": {
"access": "RO",
"reset": "Dynamic",
"description": "Live shell/link, lifecycle, and terminal status.",
"fields": [
{
"name": "READY",
"lsb": 0,
"msb": 0,
"description": "Shell can accept a job: link reconciled, executable implementation present, and no request, busy launch, pending terminal IRQ, or snapshot handshake.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "BUSY",
"lsb": 1,
"msb": 1,
"description": "Accepted launch slot or HP job activity.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "DRAINING",
"lsb": 2,
"msb": 2,
"description": "HP side is draining accepted work.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "CLOCK_PAUSED",
"lsb": 3,
"msb": 3,
"description": "HP clock pause is active.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "RECOVERING",
"lsb": 4,
"msb": 4,
"description": "Link/transport recovery is in progress.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "RESULT_VALID",
"lsb": 5,
"msb": 5,
"description": "A terminal result is held.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 6,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.CONTROL": {
"access": "WO",
"reset": "Not retained",
"description": "Issue exactly one implemented command bit per write.",
"fields": [
{
"name": "START",
"lsb": 0,
"msb": 0,
"description": "Launch the staged job; PSLVERR while READY is low.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ABORT",
"lsb": 1,
"msb": 1,
"description": "Cancel the active job; a successful no-op while idle.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "SOFT_RESET",
"lsb": 2,
"msb": 2,
"description": "Clear programmable, IRQ, and result state, then reconcile the link.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.IRQ_STATE": {
"access": "RW1C",
"reset": "0x00000000",
"description": "Sticky IRQ events; hardware/test set wins a same-cycle clear.",
"fields": [
{
"name": "DONE",
"lsb": 0,
"msb": 0,
"description": "Job completion event.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ERROR",
"lsb": 1,
"msb": 1,
"description": "First fault/error event.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ABORTED",
"lsb": 2,
"msb": 2,
"description": "Abort completion event.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.IRQ_ENABLE": {
"access": "RW",
"reset": "0x00000000",
"description": "IRQ event enables.",
"fields": [
{
"name": "DONE",
"lsb": 0,
"msb": 0,
"description": "Enable the completion interrupt.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ERROR",
"lsb": 1,
"msb": 1,
"description": "Enable the error interrupt.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ABORTED",
"lsb": 2,
"msb": 2,
"description": "Enable the abort interrupt.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.IRQ_TEST": {
"access": "WO",
"reset": "Not retained",
"description": "Inject implemented IRQ events as if hardware-set.",
"fields": [
{
"name": "DONE",
"lsb": 0,
"msb": 0,
"description": "Inject the completion event.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ERROR",
"lsb": 1,
"msb": 1,
"description": "Inject the error event.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ABORTED",
"lsb": 2,
"msb": 2,
"description": "Inject the abort event.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.JOB_BASE": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Physical descriptor base address; writable only while the shell is idle.",
"fields": [
{
"name": "ADDR",
"lsb": 0,
"msb": 31,
"description": "Physical byte address of the descriptor ring.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.JOB_COUNT": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Descriptor count for the staged job.",
"fields": [
{
"name": "COUNT",
"lsb": 0,
"msb": 15,
"description": "Number of descriptors.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 16,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.JOB_ID": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Opaque software job token mirrored into the result.",
"fields": [
{
"name": "TOKEN",
"lsb": 0,
"msb": 31,
"description": "Opaque software token.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.TIMEOUT_CYCLES": {
"access": "RW idle",
"reset": "0x00000000",
"description": "HP active cycles without progress before a no-progress fault; a zero write is rejected.",
"fields": [
{
"name": "CYCLES",
"lsb": 0,
"msb": 31,
"description": "No-progress timeout budget.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.RESULT_JOB_ID": {
"access": "RO",
"reset": "Dynamic",
"description": "Job token of the last terminal or recovery result.",
"fields": [
{
"name": "TOKEN",
"lsb": 0,
"msb": 31,
"description": "Terminal or recovery job token.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.RESULT_CODE": {
"access": "RO",
"reset": "Dynamic",
"description": "Terminal result enumeration: NONE=0, DONE=1, ERROR=2, ABORTED=3, RESET_CANCELLED=4.",
"fields": [
{
"name": "CODE",
"lsb": 0,
"msb": 2,
"description": "Terminal result code.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.COMPLETED_DESCRIPTORS": {
"access": "RO",
"reset": "Dynamic",
"description": "Fully stored descriptor count of the last job.",
"fields": [
{
"name": "COUNT",
"lsb": 0,
"msb": 31,
"description": "Complete stores only.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.FAULT_DESCRIPTOR": {
"access": "RO",
"reset": "Dynamic",
"description": "Zero-based index of the first faulting descriptor, or all ones for a job-level fault.",
"fields": [
{
"name": "INDEX",
"lsb": 0,
"msb": 31,
"description": "Faulting descriptor index; 0xFFFFFFFF marks a job-level fault.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.FAULT_CODE": {
"access": "RO",
"reset": "Dynamic",
"description": "First fault/error code.",
"fields": [
{
"name": "CODE",
"lsb": 0,
"msb": 3,
"description": "Fault enumeration.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 4,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.FAULT_ADDRESS": {
"access": "RO",
"reset": "Dynamic",
"description": "First relevant external byte address, otherwise 0.",
"fields": [
{
"name": "ADDR",
"lsb": 0,
"msb": 31,
"description": "Fault byte address.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.FAULT_INFO": {
"access": "RO",
"reset": "Dynamic",
"description": "Fault direction, AXI response, and lane detail.",
"fields": [
{
"name": "AXI_RESPONSE",
"lsb": 0,
"msb": 1,
"description": "AXI response code of the faulting beat.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "DIRECTION",
"lsb": 2,
"msb": 3,
"description": "Fault direction: internal, read, or write.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 4,
"msb": 7,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
},
{
"name": "LANE",
"lsb": 8,
"msb": 15,
"description": "Faulting lane, or 0xFF when not lane-specific.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 16,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.NUMERIC_PROFILE": {
"access": "RO",
"reset": "0x00000001",
"description": "Numeric profile identifier.",
"fields": [
{
"name": "PROFILE",
"lsb": 0,
"msb": 31,
"description": "Fixed value 1: the numeric profile of this specification.",
"reset": "1",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.LOCAL_BYTES": {
"access": "RO",
"reset": "0x00010000",
"description": "Instantiated local SRAM bytes: 64 KiB of banked private SRAM (sixteen 1024x32 banks).",
"fields": [
{
"name": "BYTES",
"lsb": 0,
"msb": 31,
"description": "Instantiated local bytes.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.MAC_CONFIG": {
"access": "RO",
"reset": "0x00080040",
"description": "Instantiated MAC lane configuration: 64 dense lanes in bits 15:0, 8 depthwise lanes in bits 31:16.",
"fields": [
{
"name": "DENSE",
"lsb": 0,
"msb": 15,
"description": "Dense lane count when implemented.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "DEPTHWISE",
"lsb": 16,
"msb": 31,
"description": "Depthwise lane count when implemented.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.MAX_K_SLICE": {
"access": "RO",
"reset": "0x00000400",
"description": "Maximum supported K slice: 1024.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "K-slice limit.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.MAX_DIMENSION": {
"access": "RO",
"reset": "0x00001000",
"description": "Maximum supported tensor dimension: 4096.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Dimension limit.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.OP_CAPABILITY": {
"access": "RO",
"reset": "0x000001FE",
"description": "Implemented operator mask: bit n advertises opcode n; the configured mask 0x000001FE enables opcodes 1 through 8.",
"fields": [
{
"name": "Reserved",
"lsb": 0,
"msb": 0,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
},
{
"name": "CONV2D",
"lsb": 1,
"msb": 1,
"description": "2D convolution operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "DEPTHWISE3X3",
"lsb": 2,
"msb": 2,
"description": "3x3 depthwise operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "FULLY_CONNECTED",
"lsb": 3,
"msb": 3,
"description": "Fully connected operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "ADD",
"lsb": 4,
"msb": 4,
"description": "Tensor add operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "MAX_POOL",
"lsb": 5,
"msb": 5,
"description": "Max pooling operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "AVERAGE_POOL",
"lsb": 6,
"msb": 6,
"description": "Average pooling operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "GLOBAL_AVERAGE_POOL",
"lsb": 7,
"msb": 7,
"description": "Global average pooling operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "CLAMP",
"lsb": 8,
"msb": 8,
"description": "Clamp operator.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 9,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.OWNER_STATUS": {
"access": "RO",
"reset": "Dynamic",
"description": "Live resource ownership view.",
"fields": [
{
"name": "OWNER",
"lsb": 0,
"msb": 1,
"description": "Current owner: 0 LP, 1 HP.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 7,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
},
{
"name": "LOCK",
"lsb": 8,
"msb": 8,
"description": "Sticky owner lock.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "QUIESCE",
"lsb": 9,
"msb": 9,
"description": "Quiesce request in effect.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "RESET_REQUEST",
"lsb": 10,
"msb": 10,
"description": "Reset request in effect.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 11,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.RECOVERY_GENERATION": {
"access": "RO",
"reset": "Dynamic",
"description": "PCLK-visible epoch recovery generation; increments after each completed link/transport recovery.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Wrapping recovery generation counter.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_CONTROL": {
"access": "WO",
"reset": "Not retained",
"description": "Performance snapshot command.",
"fields": [
{
"name": "SNAPSHOT",
"lsb": 0,
"msb": 0,
"description": "Capture the counter bank and job token atomically.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.PERF_STATUS": {
"access": "RO",
"reset": "Dynamic",
"description": "Snapshot handshake status.",
"fields": [
{
"name": "SNAP_BUSY",
"lsb": 0,
"msb": 0,
"description": "A snapshot request is in flight.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "SNAP_VALID",
"lsb": 1,
"msb": 1,
"description": "A captured counter bank is held.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.PERF_JOB_ID": {
"access": "RO",
"reset": "Dynamic",
"description": "Job token associated with the captured snapshot.",
"fields": [
{
"name": "TOKEN",
"lsb": 0,
"msb": 31,
"description": "Snapshot job token.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_GENERATION": {
"access": "RO",
"reset": "Dynamic",
"description": "Recovery generation associated with the captured snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Snapshot recovery generation.",
"reset": "Dynamic",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.DESCRIPTOR_BYTES": {
"access": "RO",
"reset": "0x00000080",
"description": "Descriptor record size in bytes.",
"fields": [
{
"name": "BYTES",
"lsb": 0,
"msb": 31,
"description": "Fixed value 128.",
"reset": "0x80",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_ACTIVE_CYCLES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the HP active cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_ACTIVE_CYCLES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the HP active cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_CLOCK_PAUSE_CYCLES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the HP clock-pause cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_CLOCK_PAUSE_CYCLES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the HP clock-pause cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_USEFUL_MACS_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the useful MAC operations counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_USEFUL_MACS_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the useful MAC operations counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_PACK_CYCLES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the patch-packer cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_PACK_CYCLES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the patch-packer cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_LOCAL_BANK_STALL_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the local bank stall cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_LOCAL_BANK_STALL_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the local bank stall cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_DMA_READ_BYTES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the DMA read bytes counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_DMA_READ_BYTES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the DMA read bytes counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_DMA_WRITE_BYTES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the DMA write bytes counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_DMA_WRITE_BYTES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the DMA write bytes counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_DMA_STALL_CYCLES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the DMA stall cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_DMA_STALL_CYCLES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the DMA stall cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_REQUANT_STALL_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the requantizer stall cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_REQUANT_STALL_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the requantizer stall cycles counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_RETIRED_DESCRIPTORS_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the retired descriptors counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
},
"main.PERF_RETIRED_DESCRIPTORS_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the retired descriptors counter; read from the captured performance snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High snapshot word.",
"reset": "0",
"expression": "reviewed register ABI 1.0"
}
]
}
},
"ga2d": {
"main.IP_ID": {
"access": "RO",
"reset": "0x47413244",
"description": "Fixed GA2D identifier.",
"fields": [
{
"name": "IDENTIFIER",
"lsb": 0,
"msb": 31,
"description": "Fixed value 0x47413244 (GA2D).",
"reset": "0x47413244",
"expression": "reviewed P5 ABI"
}
]
},
"main.IP_VERSION": {
"access": "RO",
"reset": "0x00010000",
"description": "GA2D register ABI version.",
"fields": [
{
"name": "MINOR",
"lsb": 0,
"msb": 15,
"description": "ABI minor version.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "MAJOR",
"lsb": 16,
"msb": 31,
"description": "ABI major version; P5 retains major 1.",
"reset": "1",
"expression": "reviewed P5 ABI"
}
]
},
"main.CAPABILITY": {
"access": "RO",
"reset": "0x000007FF",
"description": "P5 capability bitmap; FILL, COPY, CONVERT, BLEND, A8 fixed-color foreground masks, private DMA, IRQ, snapshots, two-dimensional pitch, byte edges, and exact equal background/destination in-place composition are advertised.",
"fields": [
{
"name": "FILL",
"lsb": 0,
"msb": 0,
"description": "Fill operation capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "COPY",
"lsb": 1,
"msb": 1,
"description": "Copy operation capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "CONVERT",
"lsb": 2,
"msb": 2,
"description": "Bit-exact conversion operation capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "BLEND",
"lsb": 3,
"msb": 3,
"description": "Opaque alpha blend operation capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "A8_MASK",
"lsb": 4,
"msb": 4,
"description": "A8 fixed-color foreground-mask capability for BLEND only; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "PRIVATE_DMA",
"lsb": 5,
"msb": 5,
"description": "Private AXI64 DMA capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "IRQ",
"lsb": 6,
"msb": 6,
"description": "Direct-engine IRQ capability.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "SNAPSHOT",
"lsb": 7,
"msb": 7,
"description": "Performance snapshot capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "TWO_DIMENSIONAL_PITCH",
"lsb": 8,
"msb": 8,
"description": "Two-dimensional pitch capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "BYTE_EDGES",
"lsb": 9,
"msb": 9,
"description": "Byte-edge DMA capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "INPLACE_BACKGROUND",
"lsb": 10,
"msb": 10,
"description": "Exact equal background/destination in-place composition capability; set in P5.",
"reset": "1",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 11,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.LIMITS": {
"access": "RO",
"reset": "0x08202010",
"description": "P5 private-AXI64 DMA geometry limits.",
"fields": [
{
"name": "MAX_BURST_BEATS",
"lsb": 0,
"msb": 7,
"description": "Maximum DMA burst beats; 16 in P5.",
"reset": "16",
"expression": "reviewed P5 ABI"
},
{
"name": "INPUT_FIFO_DEPTH",
"lsb": 8,
"msb": 15,
"description": "Input FIFO depth; 32 beats in P5.",
"reset": "32",
"expression": "reviewed P5 ABI"
},
{
"name": "OUTPUT_FIFO_DEPTH",
"lsb": 16,
"msb": 23,
"description": "Output FIFO depth; 32 beats in P5.",
"reset": "32",
"expression": "reviewed P5 ABI"
},
{
"name": "AXI_BEAT_BYTES",
"lsb": 24,
"msb": 31,
"description": "AXI DMA beat width; 8 bytes in P5.",
"reset": "8",
"expression": "reviewed P5 ABI"
}
]
},
"main.COMMAND": {
"access": "WO",
"reset": "Not retained",
"description": "Single-command write port for P5 direct jobs.",
"fields": [
{
"name": "START",
"lsb": 0,
"msb": 0,
"description": "Start an idle, recovered P5 direct FILL, COPY, CONVERT, or BLEND job.",
"reset": "Not retained",
"expression": "reviewed P5 ABI"
},
{
"name": "ABORT",
"lsb": 1,
"msb": 1,
"description": "Request a safe abort; an idle engine is a no-op.",
"reset": "Not retained",
"expression": "reviewed P5 ABI"
},
{
"name": "SOFT_RESET",
"lsb": 2,
"msb": 2,
"description": "Clear local shell state only when safe idle and recovered.",
"reset": "Not retained",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "reserved"
}
]
},
"main.STATUS": {
"access": "RO",
"reset": "Dynamic",
"description": "Live P5 engine, lifecycle, and recovery status.",
"fields": [
{
"name": "BUSY",
"lsb": 0,
"msb": 0,
"description": "Live job-active status.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "DRAINING",
"lsb": 1,
"msb": 1,
"description": "Live drain status while abort, error, or resource stop retires accepted traffic.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "QUIESCED",
"lsb": 2,
"msb": 2,
"description": "Resource stop has reached safe source idle and block acknowledgement.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "DATA_READY",
"lsb": 3,
"msb": 3,
"description": "Qualified bridge data readiness.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "DONE",
"lsb": 4,
"msb": 4,
"description": "Last direct job completed successfully.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "ABORTED",
"lsb": 5,
"msb": 5,
"description": "Last direct job reached safe abort completion.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "ERROR",
"lsb": 6,
"msb": 6,
"description": "Sticky first-error validity.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "RECOVERY_REQUIRED",
"lsb": 7,
"msb": 7,
"description": "Bridge clear, reset epoch, or data-readiness recovery is unresolved.",
"reset": "Dynamic",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.IRQ_STATE": {
"access": "RW1C",
"reset": "0x00000000",
"description": "Sticky IRQ causes; a same-cycle new event wins over a clear.",
"fields": [
{
"name": "DONE",
"lsb": 0,
"msb": 0,
"description": "Successful terminal job event.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "ERROR",
"lsb": 1,
"msb": 1,
"description": "First-error event.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "ABORT_DONE",
"lsb": 2,
"msb": 2,
"description": "Safe abort completion event.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.IRQ_ENABLE": {
"access": "RW",
"reset": "0x00000000",
"description": "Interrupt-cause enable mask.",
"fields": [
{
"name": "DONE",
"lsb": 0,
"msb": 0,
"description": "Enable DONE raw IRQ contribution.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "ERROR",
"lsb": 1,
"msb": 1,
"description": "Enable ERROR raw IRQ contribution.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "ABORT_DONE",
"lsb": 2,
"msb": 2,
"description": "Enable ABORT_DONE raw IRQ contribution.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.IRQ_TEST": {
"access": "WO",
"reset": "Not retained",
"description": "Set selected IRQ_STATE causes for route testing without job progress.",
"fields": [
{
"name": "DONE",
"lsb": 0,
"msb": 0,
"description": "Set DONE state for route testing.",
"reset": "Not retained",
"expression": "reviewed P5 ABI"
},
{
"name": "ERROR",
"lsb": 1,
"msb": 1,
"description": "Set ERROR state for route testing.",
"reset": "Not retained",
"expression": "reviewed P5 ABI"
},
{
"name": "ABORT_DONE",
"lsb": 2,
"msb": 2,
"description": "Set ABORT_DONE state for route testing.",
"reset": "Not retained",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "reserved"
}
]
},
"main.ERROR_STATUS": {
"access": "RO/W1C",
"reset": "0x00000000",
"description": "Sticky first-error record; write one clears a safe idle record.",
"fields": [
{
"name": "VALID",
"lsb": 0,
"msb": 0,
"description": "First-error record is valid.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "CODE",
"lsb": 1,
"msb": 7,
"description": "First-error code.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "STAGE",
"lsb": 8,
"msb": 11,
"description": "First-error processing stage.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "AXI_RESPONSE",
"lsb": 12,
"msb": 13,
"description": "Captured AXI response for a bus error.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 14,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.ERROR_ADDRESS": {
"access": "RO",
"reset": "0x00000000",
"description": "Address associated with the sticky first-error record.",
"fields": [
{
"name": "ADDRESS",
"lsb": 0,
"msb": 31,
"description": "Captured first-error byte address.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.TIMEOUT_CYCLES": {
"access": "RW idle",
"reset": "0x00100000",
"description": "Idle-only no-progress timeout threshold; zero is rejected.",
"fields": [
{
"name": "CYCLES",
"lsb": 0,
"msb": 31,
"description": "PCLK no-progress timeout budget.",
"reset": "0x00100000",
"expression": "reviewed P5 ABI"
}
]
},
"main.JOB_CONFIG": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow job operation selector for P5 direct jobs.",
"fields": [
{
"name": "OPERATION",
"lsb": 0,
"msb": 1,
"description": "0: FILL; 1: COPY; 2: bit-exact CONVERT; 3: opaque alpha BLEND.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.GLOBAL_ALPHA": {
"access": "RW idle",
"reset": "0x000000FF",
"description": "Shadow global alpha value used only by P5 BLEND; FILL, COPY, and CONVERT ignore it.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 7,
"description": "Global alpha value used only by BLEND; ignored by FILL, COPY, and CONVERT.",
"reset": "0xFF",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.COLOR": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow constant color in AARRGGBB order.",
"fields": [
{
"name": "COLOR",
"lsb": 0,
"msb": 31,
"description": "AARRGGBB constant color; FILL uses it directly and A8 BLEND uses its RGB as the fixed foreground color while ignoring its alpha.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SIZE": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow job dimensions.",
"fields": [
{
"name": "WIDTH",
"lsb": 0,
"msb": 15,
"description": "Job width in pixels.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "HEIGHT",
"lsb": 16,
"msb": 31,
"description": "Job height in pixels.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.FG_ADDRESS": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow foreground byte address.",
"fields": [
{
"name": "ADDRESS",
"lsb": 0,
"msb": 31,
"description": "Foreground byte address.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.FG_PITCH": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow foreground row pitch in bytes.",
"fields": [
{
"name": "PITCH",
"lsb": 0,
"msb": 31,
"description": "Foreground bytes between rows.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.FG_FORMAT": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow foreground format selector.",
"fields": [
{
"name": "FORMAT",
"lsb": 0,
"msb": 2,
"description": "0: RGB565; 1: RGB888; 2: XRGB8888; 3: ARGB8888 are color formats; 4: A8 is valid only as a BLEND foreground.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.BG_ADDRESS": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow background byte address used by BLEND; it may equal DST_ADDRESS only with exactly equal pitch and format.",
"fields": [
{
"name": "ADDRESS",
"lsb": 0,
"msb": 31,
"description": "Background byte address for BLEND; exact equality with destination is the only permitted input/output overlap.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.BG_PITCH": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow background row pitch in bytes used by BLEND.",
"fields": [
{
"name": "PITCH",
"lsb": 0,
"msb": 31,
"description": "Background bytes between rows for BLEND.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.BG_FORMAT": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow background color-format selector used by BLEND.",
"fields": [
{
"name": "FORMAT",
"lsb": 0,
"msb": 2,
"description": "0: RGB565; 1: RGB888; 2: XRGB8888; 3: ARGB8888 are valid BLEND background color formats; 4: A8 is invalid.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.DST_ADDRESS": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow destination byte address.",
"fields": [
{
"name": "ADDRESS",
"lsb": 0,
"msb": 31,
"description": "Destination byte address.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.DST_PITCH": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow destination row pitch in bytes.",
"fields": [
{
"name": "PITCH",
"lsb": 0,
"msb": 31,
"description": "Destination bytes between rows.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.DST_FORMAT": {
"access": "RW idle",
"reset": "0x00000000",
"description": "Shadow destination format selector.",
"fields": [
{
"name": "FORMAT",
"lsb": 0,
"msb": 2,
"description": "0: RGB565; 1: RGB888; 2: XRGB8888; 3: ARGB8888 are valid destination color formats; 4: A8 is invalid.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.PERF_SNAPSHOT": {
"access": "WO",
"reset": "Not retained",
"description": "Performance snapshot command for P5 direct-job counters.",
"fields": [
{
"name": "SNAPSHOT",
"lsb": 0,
"msb": 0,
"description": "Capture live P5 direct-job counters into the read bank.",
"reset": "Not retained",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "reserved"
}
]
},
"main.FORMAT_CAPABILITY": {
"access": "RO",
"reset": "0x000F0F1F",
"description": "P5 format bitmap: foreground RGB565/RGB888/XRGB8888/ARGB8888/A8 bits are set; background and destination RGB565/RGB888/XRGB8888/ARGB8888 bits are set.",
"fields": [
{
"name": "FOREGROUND",
"lsb": 0,
"msb": 4,
"description": "Foreground format capability bits; RGB565/RGB888/XRGB8888/ARGB8888 and A8 are set in P5. A8 is valid only for BLEND.",
"reset": "31",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 5,
"msb": 7,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
},
{
"name": "BACKGROUND",
"lsb": 8,
"msb": 12,
"description": "Background format capability bits; RGB565/RGB888/XRGB8888/ARGB8888 are set in P5. A8 is not a background format.",
"reset": "15",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 13,
"msb": 15,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
},
{
"name": "DESTINATION",
"lsb": 16,
"msb": 20,
"description": "Destination format capability bits; RGB565/RGB888/XRGB8888/ARGB8888 are set in P5. A8 is not a destination format.",
"reset": "15",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 21,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.SNAP_CYCLES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of the P5 active-job PCLK cycle snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low cycle-counter snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_CYCLES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of the P5 active-job PCLK cycle snapshot.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High cycle-counter snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_READ_BYTES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of P5 successful logical input bytes.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low read-byte snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_READ_BYTES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of P5 successful logical input bytes.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High read-byte snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_WRITE_BYTES_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of P5 acknowledged output bytes.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low write-byte snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_WRITE_BYTES_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of P5 acknowledged output bytes.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High write-byte snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_READ_STALL_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of P5 read-channel stall cycles.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low read-stall snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_READ_STALL_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of P5 read-channel stall cycles.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High read-stall snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_WRITE_STALL_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of P5 write-channel stall cycles.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low write-stall snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_WRITE_STALL_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of P5 write-channel stall cycles.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High write-stall snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_PIPE_STALL_LO": {
"access": "RO",
"reset": "0x00000000",
"description": "Low 32 bits of P5 pixel-pipeline stall cycles.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Low pipeline-stall snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_PIPE_STALL_HI": {
"access": "RO",
"reset": "0x00000000",
"description": "High 32 bits of P5 pixel-pipeline stall cycles.",
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "High pipeline-stall snapshot word.",
"reset": "0",
"expression": "reviewed P5 ABI"
}
]
},
"main.SNAP_LINES_DONE": {
"access": "RO",
"reset": "0x00000000",
"description": "Completed P5 destination rows.",
"fields": [
{
"name": "LINES_DONE",
"lsb": 0,
"msb": 15,
"description": "Completed destination row count.",
"reset": "0",
"expression": "reviewed P5 ABI"
},
{
"name": "Reserved",
"lsb": 16,
"msb": 31,
"description": "Reserved; reads zero.",
"reset": "0",
"expression": "reserved"
}
]
}
},
"crypto": {
"main.MEM_STATUS": {
"access": "RO",
"description": "Storage initialization, verification, scrub, lock and fault state.",
"reset": "0x00000004",
"fields": [
{"lsb": 0, "msb": 0, "name": "READY", "description": "Constants are valid and locked, erasure is complete, and no memory fault is active.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_STATUS_READY"},
{"lsb": 1, "msb": 1, "name": "TABLE_VALID", "description": "The committed constants image passed validation.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_STATUS_TABLE_VALID"},
{"lsb": 2, "msb": 2, "name": "SCRUB_BUSY", "description": "Reset or zeroize scrubbing is active.", "reset": "1", "expression": "`APB4_CRYPTO__MEM_STATUS_SCRUB_BUSY"},
{"lsb": 3, "msb": 3, "name": "LOAD_ACTIVE", "description": "A TABLE_DATA loading transaction is active.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_STATUS_LOAD_ACTIVE"},
{"lsb": 4, "msb": 4, "name": "VERIFY_BUSY", "description": "Full storage readback and CRC verification is active.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_STATUS_VERIFY_BUSY"},
{"lsb": 5, "msb": 5, "name": "TABLE_LOCKED", "description": "The verified constants banks remain locked until hard/PCLK reset; zeroize does not unlock them.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_STATUS_TABLE_LOCKED"},
{"lsb": 6, "msb": 6, "name": "FAULT", "description": "A sticky storage lifecycle fault is active.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_STATUS_FAULT"},
{"lsb": 7, "msb": 31, "name": "Reserved", "description": "Reserved; reads zero.", "reset": "0", "expression": "25'd0"}
]
},
"main.MEM_CONTROL": {
"access": "WO",
"description": "One-hot storage lifecycle command; zero is a no-op.",
"reset": "Not retained (command/data port)",
"fields": [
{"lsb": 0, "msb": 0, "name": "BEGIN", "description": "Begin a new ordered constants load.", "reset": "Not retained", "expression": "`APB4_CRYPTO__MEM_CONTROL_BEGIN"},
{"lsb": 1, "msb": 1, "name": "COMMIT", "description": "Commit the complete image and start readback verification.", "reset": "Not retained", "expression": "`APB4_CRYPTO__MEM_CONTROL_COMMIT"},
{"lsb": 2, "msb": 2, "name": "CANCEL", "description": "Cancel an unlocked load attempt and start cleanup.", "reset": "Not retained", "expression": "`APB4_CRYPTO__MEM_CONTROL_CANCEL"},
{"lsb": 3, "msb": 31, "name": "Reserved", "description": "Reserved; write zero.", "reset": "Not retained", "expression": "29'd0"}
]
},
"main.TABLE_ID": {
"access": "RO",
"description": "Frozen CRYC1 constants-image identity.",
"reset": "0x43525901",
"fields": [
{"lsb": 0, "msb": 31, "name": "ID", "description": "CRYC1 image identifier.", "reset": "0x43525901", "expression": "`APB4_CRYPTO__TABLE_ID_VALUE"}
]
},
"main.TABLE_WORDS": {
"access": "RO",
"description": "Accepted ordered payload word count; BEGIN, CANCEL and reset clear it.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 11, "name": "WORDS", "description": "Accepted word count from 0 through 2048.", "reset": "0", "expression": "s_table_words"},
{"lsb": 12, "msb": 31, "name": "Reserved", "description": "Reserved; reads zero.", "reset": "0", "expression": "20'd0"}
]
},
"main.TABLE_DATA": {
"access": "WO",
"description": "Auto-incrementing full-word constants loader input.",
"reset": "Not retained (command/data port)",
"fields": [
{"lsb": 0, "msb": 31, "name": "DATA", "description": "Next constants-image word; full PSTRB is required.", "reset": "Not retained", "expression": "write data"}
]
},
"main.TABLE_CRC": {
"access": "RO",
"description": "CRC from the last complete full-storage readback.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 31, "name": "CRC", "description": "Readback CRC; zero until verification completes.", "reset": "0", "expression": "s_table_crc"}
]
},
"main.MEM_ERROR": {
"access": "RO",
"description": "First storage lifecycle error with physical bank and row context.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 7, "name": "CODE", "description": "First lifecycle error code; values 1 through 6 are defined.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_ERROR_CODE_MASK"},
{"lsb": 8, "msb": 10, "name": "BANK", "description": "Physical bank index; non-addressed errors report zero.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_ERROR_BANK_MASK"},
{"lsb": 11, "msb": 20, "name": "ROW", "description": "Physical row index; non-addressed errors report zero.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_ERROR_ROW_MASK"},
{"lsb": 21, "msb": 30, "name": "Reserved", "description": "Reserved; reads zero.", "reset": "0", "expression": "10'd0"},
{"lsb": 31, "msb": 31, "name": "VALID", "description": "The first-error record is valid.", "reset": "0", "expression": "`APB4_CRYPTO__MEM_ERROR_VALID"}
]
},
"main.MEM_CYCLES": {
"access": "RO",
"description": "Active PCLK cycles in the current or last verify/scrub operation.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 31, "name": "CYCLES", "description": "Maintenance cycle count, excluding loader inter-write gaps.", "reset": "0", "expression": "s_mem_cycles"}
]
},
"main.AES_BYTES_IN": {
"access": "RO",
"description": "Accepted AES input byte count.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 31, "name": "COUNT", "description": "Bytes accepted for the current or last AES operation.", "reset": "0", "expression": "s_aes_bytes_in"}
]
},
"main.AES_BYTES_OUT": {
"access": "RO",
"description": "Consumed AES output byte count.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 31, "name": "COUNT", "description": "Bytes consumed from the current or last AES operation.", "reset": "0", "expression": "s_aes_bytes_out"}
]
},
"main.AES_CYCLES": {
"access": "RO",
"description": "AES operation cycle count.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 31, "name": "CYCLES", "description": "Cycles in the current or last AES operation.", "reset": "0", "expression": "s_aes_cycles"}
]
},
"main.SHA_CYCLES": {
"access": "RO",
"description": "SHA operation cycle count.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 31, "name": "CYCLES", "description": "Cycles in the current or last SHA operation.", "reset": "0", "expression": "s_sha_cycles"}
]
},
"main.RSA_CYCLES": {
"access": "RO",
"description": "RSA operation cycle count.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 31, "name": "CYCLES", "description": "Cycles in the current or last RSA operation.", "reset": "0", "expression": "s_rsa_cycles"}
]
},
"main.RSA_PROGRESS": {
"access": "RO",
"description": "RSA private-operation flag and exponent position.",
"reset": "0",
"fields": [
{"lsb": 0, "msb": 0, "name": "PRIVATE", "description": "The active operation uses the private exponent path.", "reset": "0", "expression": "s_regs_q.private_operation"},
{"lsb": 1, "msb": 11, "name": "EXPONENT_INDEX", "description": "Current exponent bit position.", "reset": "0", "expression": "s_regs_q.exponent_index"},
{"lsb": 12, "msb": 31, "name": "Reserved", "description": "Reserved; reads zero.", "reset": "0", "expression": "20'd0"}
]
},
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ZEROIZE",
"description": "Zeroize.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__COMMAND_ZEROIZE"
},
{
"lsb": 1,
"msb": 1,
"name": "ABORT_AES",
"description": "Abort aes.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__COMMAND_ABORT_AES"
},
{
"lsb": 2,
"msb": 2,
"name": "ABORT_SHA",
"description": "Abort sha.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__COMMAND_ABORT_SHA"
},
{
"lsb": 3,
"msb": 3,
"name": "ABORT_RSA",
"description": "Abort rsa.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__COMMAND_ABORT_RSA"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.IRQ_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "AES_DONE",
"description": "Aes done.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__IRQ_AES_DONE"
},
{
"lsb": 1,
"msb": 1,
"name": "SHA_DONE",
"description": "Sha done.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__IRQ_SHA_DONE"
},
{
"lsb": 2,
"msb": 2,
"name": "RSA_DONE",
"description": "Rsa done.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__IRQ_RSA_DONE"
},
{
"lsb": 3,
"msb": 3,
"name": "ERROR",
"description": "Error.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__IRQ_ERROR"
},
{
"lsb": 4,
"msb": 4,
"name": "ZEROIZED",
"description": "Zeroized.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__IRQ_ZEROIZED"
},
{
"lsb": 5,
"msb": 5,
"name": "MEMORY_READY",
"description": "Writing one injects MEMORY_READY into sticky IRQ state for interrupt-path testing; it is not initialization or physical-erasure completion evidence.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__IRQ_MEMORY_READY"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "26'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.AES_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "START",
"description": "Start.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__AES_CTRL_START"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.AES_DATA_IN": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "DATA",
"description": "PIO stream word; PSTRB is byte keep",
"reset": "Not retained",
"expression": "write data"
}
],
"reset": "Not retained (command/data port)"
},
"main.AES_KEY_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "COMMIT",
"description": "Commit.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__AES_KEY_CTRL_COMMIT"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.SHA_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "START",
"description": "Start.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__SHA_CTRL_START"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.SHA_DATA_IN": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "DATA",
"description": "PIO stream word; PSTRB is byte keep",
"reset": "Not retained",
"expression": "write data"
}
],
"reset": "Not retained (command/data port)"
},
"main.RSA_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "PREPARE",
"description": "Prepare.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__RSA_CTRL_PREPARE"
},
{
"lsb": 1,
"msb": 1,
"name": "PUBLIC",
"description": "Public.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__RSA_CTRL_PUBLIC"
},
{
"lsb": 2,
"msb": 2,
"name": "PRIVATE",
"description": "Private.",
"reset": "Register reset applies",
"expression": "`APB4_CRYPTO__RSA_CTRL_PRIVATE"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.AES_CFG": {
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "MODE",
"description": "0: ECB; 1: CBC; 2: CTR; 3: invalid.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "DECRYPT",
"description": "Select inverse transform for ECB/CBC; CTR uses the encryption transform.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 4,
"msb": 5,
"name": "KEY_SIZE",
"description": "0: 128-bit; 1: 192-bit; 2: 256-bit; 3: invalid.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 6,
"msb": 7,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 8,
"msb": 8,
"name": "DMA",
"description": "Use the shared stream interface instead of APB data ports.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 9,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
}
],
"review_source": "rtl/ip/security/apb4_crypto.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"main.SHA_CFG": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "SHA256",
"description": "1: SHA-256; 0: SHA-224.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 1,
"msb": 7,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 8,
"msb": 8,
"name": "DMA",
"description": "Use stream input; AES and SHA cannot use the shared DMA stream concurrently.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 9,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
}
],
"review_source": "rtl/ip/security/apb4_crypto.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "1"
},
"main.AES_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "BUSY",
"description": "Engine busy; AES includes key expansion.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "DONE",
"description": "Corresponding sticky IRQ_STATE bit.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "ERROR",
"description": "Engine operation error.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "KEY_VALID",
"description": "Expanded key is valid.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
}
],
"review_source": "rtl/ip/security/apb4_crypto.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.SHA_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "BUSY",
"description": "Engine busy; AES includes key expansion.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "DONE",
"description": "Corresponding sticky IRQ_STATE bit.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "ERROR",
"description": "Engine operation error.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "DIGEST_VALID",
"description": "Digest is valid.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
}
],
"review_source": "rtl/ip/security/apb4_crypto.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.RSA_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "BUSY",
"description": "Engine busy; AES includes key expansion.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "DONE",
"description": "Corresponding sticky IRQ_STATE bit.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "ERROR",
"description": "Engine operation error.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "PREPARED",
"description": "RSA preparation is valid and operands have not been changed.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "RESULT_VALID",
"description": "Modular exponentiation result is valid.",
"reset": "Register reset applies",
"expression": "rtl/ip/security/apb4_crypto.sv"
},
{
"lsb": 5,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/security/apb4_crypto.sv"
}
],
"review_source": "rtl/ip/security/apb4_crypto.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
}
},
"rtc": {
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
},
{
"lsb": 1,
"msb": 1,
"name": "STATUS_DONE",
"description": "Status done.",
"reset": "Register reset applies",
"expression": "`RTC_COMMAND_STATUS_DONE_MASK"
},
{
"lsb": 2,
"msb": 2,
"name": "STATUS_ERROR",
"description": "Status error.",
"reset": "Register reset applies",
"expression": "`RTC_COMMAND_STATUS_ERROR_MASK"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.EVENT_CLEAR": {
"fields": [
{
"name": "MASK",
"lsb": 0,
"msb": 4,
"description": "Write-one mask using the corresponding event/interrupt bit assignments.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 5,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.EVENT_TEST": {
"fields": [
{
"name": "MASK",
"lsb": 0,
"msb": 4,
"description": "Write-one mask using the corresponding event/interrupt bit assignments.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 5,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CALIB_PPM": {
"fields": [
{
"name": "PPM",
"lsb": 0,
"msb": 15,
"description": "Signed two-complement calibration in parts per million; supported interval -488 to +488.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "SIGN",
"lsb": 16,
"msb": 31,
"description": "Sign extension of bit 15 on read.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
}
],
"access": "RW",
"reset": "0"
},
"main.CTRL": {
"reset": "0"
},
"main.TIME_LOAD_LO": {
"reset": "0"
},
"main.TIME_LOAD_HI": {
"reset": "0"
},
"main.TIME_LOAD_SUBSEC": {
"reset": "0"
},
"main.ALARM0_TIME_LO": {
"reset": "0"
},
"main.ALARM0_TIME_HI": {
"reset": "0"
},
"main.ALARM0_SUBSEC": {
"reset": "0"
},
"main.ALARM1_TIME_LO": {
"reset": "0"
},
"main.ALARM1_TIME_HI": {
"reset": "0"
},
"main.ALARM1_SUBSEC": {
"reset": "0"
},
"main.ALARM_ENABLE": {
"reset": "0"
},
"main.PERIOD_RELOAD": {
"reset": "0"
},
"main.PERIOD_CTRL": {
"reset": "0"
},
"main.INTR_ENABLE": {
"reset": "0"
},
"main.WAKE_ENABLE": {
"reset": "0"
},
"main.SECOND_CYCLES": {
"reset": "18432000",
"notes": "Reset comes from the RTC_CLOCK_HZ integration parameter; it is not a 32.768 kHz oscillator assumption."
},
"main.INTR_STATE": {
"access": "RO"
},
"main.WAKE_STATE": {
"access": "RO"
}
},
"wdg": {
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "START",
"description": "Start.",
"reset": "Register reset applies",
"expression": "`WDG_CTRL_START_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "SNAPSHOT",
"description": "Snapshot.",
"reset": "Register reset applies",
"expression": "`WDG_CTRL_SNAPSHOT_MASK"
},
{
"lsb": 2,
"msb": 2,
"name": "CLEAR_CAUSE",
"description": "Clear cause.",
"reset": "Register reset applies",
"expression": "`WDG_CTRL_CLEAR_CAUSE_MASK"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.SERVICE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "KEY",
"description": "Two-key watchdog service port.",
"reset": "Not retained",
"expression": "write data"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "WARNING",
"description": "Warning.",
"reset": "Register reset applies",
"expression": "`WDG_INTR_WARNING_MASK"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
}
},
"pwm": {
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "UPDATE",
"description": "Update.",
"reset": "Register reset applies",
"expression": "`PWM_COMMAND_UPDATE_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "SYNC",
"description": "Sync.",
"reset": "Register reset applies",
"expression": "`PWM_COMMAND_SYNC_MASK"
},
{
"lsb": 2,
"msb": 2,
"name": "FAULT_TEST",
"description": "Fault test.",
"reset": "Register reset applies",
"expression": "`PWM_COMMAND_FAULT_TEST_MASK"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "TIMER0_ZERO",
"description": "Timer0 zero.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_TIMER0_ZERO_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "TIMER1_ZERO",
"description": "Timer1 zero.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_TIMER1_ZERO_MASK"
},
{
"lsb": 2,
"msb": 2,
"name": "TIMER0_PERIOD",
"description": "Timer0 period.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_TIMER0_PERIOD_MASK"
},
{
"lsb": 3,
"msb": 3,
"name": "TIMER1_PERIOD",
"description": "Timer1 period.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_TIMER1_PERIOD_MASK"
},
{
"lsb": 4,
"msb": 4,
"name": "TIMER0_UPDATE",
"description": "Timer0 update.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_TIMER0_UPDATE_MASK"
},
{
"lsb": 5,
"msb": 5,
"name": "TIMER1_UPDATE",
"description": "Timer1 update.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_TIMER1_UPDATE_MASK"
},
{
"lsb": 6,
"msb": 6,
"name": "FADE0_DONE",
"description": "Fade0 done.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_FADE0_DONE_MASK"
},
{
"lsb": 7,
"msb": 7,
"name": "FADE1_DONE",
"description": "Fade1 done.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_FADE1_DONE_MASK"
},
{
"lsb": 8,
"msb": 8,
"name": "FADE2_DONE",
"description": "Fade2 done.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_FADE2_DONE_MASK"
},
{
"lsb": 9,
"msb": 9,
"name": "FADE3_DONE",
"description": "Fade3 done.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_FADE3_DONE_MASK"
},
{
"lsb": 10,
"msb": 10,
"name": "FAULT",
"description": "Fault.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_FAULT_MASK"
},
{
"lsb": 11,
"msb": 11,
"name": "CAPTURE0",
"description": "Capture0.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_CAPTURE0_MASK"
},
{
"lsb": 12,
"msb": 12,
"name": "CAPTURE1",
"description": "Capture1.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_CAPTURE1_MASK"
},
{
"lsb": 13,
"msb": 13,
"name": "CAPTURE0_OVERFLOW",
"description": "Capture0 overflow.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_CAPTURE0_OVERFLOW_MASK"
},
{
"lsb": 14,
"msb": 14,
"name": "CAPTURE1_OVERFLOW",
"description": "Capture1 overflow.",
"reset": "Register reset applies",
"expression": "`PWM_INTR_CAPTURE1_OVERFLOW_MASK"
},
{
"lsb": 15,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.FAULT_CLEAR": {
"fields": [
{
"name": "CLEAR",
"lsb": 0,
"msb": 0,
"description": "Write one to clear the one-shot fault latch when permitted by fault policy.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Enable.",
"reset": "0x0",
"expression": "`PWM_CTRL_ENABLE_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "DEBUG_FREEZE",
"description": "Debug freeze.",
"reset": "0x0",
"expression": "`PWM_CTRL_DEBUG_FREEZE_MASK"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_ctrl_q"
}
]
},
"main.FAULT_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "RAW",
"description": "Raw fault input.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "SYNCHRONIZED",
"description": "Synchronized active-polarity fault.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "FILTERED",
"description": "Fault after digital filtering.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "LATCHED",
"description": "One-shot fault latch.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "KILL",
"description": "Fault currently forces safe output values.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 5,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.OUTPUT_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 3,
"name": "OUTPUT",
"description": "Four driven PWM values.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 4,
"msb": 7,
"name": "OUTPUT_ENABLE",
"description": "Four output-enable values.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 8,
"msb": 11,
"name": "RAW_CHANNEL",
"description": "Raw channel waveform values.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 12,
"msb": 15,
"name": "DEADTIME_OUTPUT",
"description": "Complementary/dead-time output values.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.CAPTURE_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Capture timebase enabled.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 1,
"msb": 2,
"name": "EMPTY",
"description": "One empty bit per capture FIFO.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 3,
"msb": 4,
"name": "FULL",
"description": "One full bit per capture FIFO.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 5,
"msb": 6,
"name": "WATERMARK",
"description": "One watermark indication per capture FIFO.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 7,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.CAPTURE0_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Enable this capture channel.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "RISE",
"description": "Capture rising edges.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "FALL",
"description": "Capture falling edges.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 4,
"msb": 7,
"name": "FILTER",
"description": "Required stable input count.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 8,
"msb": 10,
"name": "WATERMARK",
"description": "FIFO interrupt threshold; zero is interpreted as one. FIFO depth is four.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 11,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"main.CAPTURE0_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 2,
"name": "LEVEL",
"description": "Number of timestamps held in the FIFO.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "EMPTY",
"description": "FIFO contains no timestamp.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "FULL",
"description": "FIFO is full.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 5,
"msb": 5,
"name": "WATERMARK",
"description": "Enabled channel has reached its watermark.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.CAPTURE1_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Enable this capture channel.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "RISE",
"description": "Capture rising edges.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "FALL",
"description": "Capture falling edges.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 4,
"msb": 7,
"name": "FILTER",
"description": "Required stable input count.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 8,
"msb": 10,
"name": "WATERMARK",
"description": "FIFO interrupt threshold; zero is interpreted as one. FIFO depth is four.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
},
{
"lsb": 11,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_capture.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"main.CAPTURE1_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 2,
"name": "LEVEL",
"description": "Number of timestamps held in the FIFO.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "EMPTY",
"description": "FIFO contains no timestamp.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "FULL",
"description": "FIFO is full.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 5,
"msb": 5,
"name": "WATERMARK",
"description": "Enabled channel has reached its watermark.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_core.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"channel.ACTION": {
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "ZERO",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 2,
"msb": 3,
"name": "PERIOD",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 4,
"msb": 5,
"name": "PHASE_UP",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 6,
"msb": 7,
"name": "DUTY_UP",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 8,
"msb": 9,
"name": "PHASE_DOWN",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 10,
"msb": 11,
"name": "DUTY_DOWN",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 12,
"msb": 13,
"name": "SYNC",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 14,
"msb": 15,
"name": "FADE_DONE",
"description": "0: hold; 1: low; 2: high; 3: toggle on this event.",
"reset": "Register reset applies",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv"
}
],
"review_source": "rtl/managed/clusterip/pwm/rtl/pwm_channel.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
}
},
"crc": {
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "START",
"description": "Start.",
"reset": "Register reset applies",
"expression": "`CRC_CTRL_START_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "FINISH",
"description": "Finish.",
"reset": "Register reset applies",
"expression": "`CRC_CTRL_FINISH_MASK"
},
{
"lsb": 2,
"msb": 2,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`CRC_CTRL_ABORT_MASK"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.DATA": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "DATA",
"description": "Streaming 1-, 2-, or 4-byte input",
"reset": "Not retained",
"expression": "write data"
}
],
"reset": "Not retained (command/data port)"
}
},
"rng": {
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "DATA_READY",
"description": "Data ready.",
"reset": "Register reset applies",
"expression": "`RNG_INTR_DATA_READY_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "HEALTH_FAIL",
"description": "Health fail.",
"reset": "Register reset applies",
"expression": "`RNG_INTR_HEALTH_FAIL_MASK"
},
{
"lsb": 2,
"msb": 2,
"name": "SOURCE_FAULT",
"description": "Source fault.",
"reset": "Register reset applies",
"expression": "`RNG_INTR_SOURCE_FAULT_MASK"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
}
},
"ps2": {
"main.FIFO_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "RX_FLUSH",
"description": "Rx flush.",
"reset": "Register reset applies",
"expression": "`PS2_FIFO_CTRL_RX_FLUSH_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "TX_FLUSH",
"description": "Tx flush.",
"reset": "Register reset applies",
"expression": "`PS2_FIFO_CTRL_TX_FLUSH_MASK"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.COMMAND": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ABORT",
"description": "Abort.",
"reset": "Register reset applies",
"expression": "`PS2_COMMAND_ABORT_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "SOFT_RESET",
"description": "Soft reset.",
"reset": "Register reset applies",
"expression": "`PS2_COMMAND_SOFT_RESET_MASK"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "RX_WATERMARK",
"description": "Rx watermark.",
"reset": "Register reset applies",
"expression": "`PS2_INTR_RX_WATERMARK_MASK"
},
{
"lsb": 1,
"msb": 1,
"name": "TX_WATERMARK",
"description": "Tx watermark.",
"reset": "Register reset applies",
"expression": "`PS2_INTR_TX_WATERMARK_MASK"
},
{
"lsb": 2,
"msb": 2,
"name": "TX_DONE",
"description": "Tx done.",
"reset": "Register reset applies",
"expression": "`PS2_INTR_TX_DONE_MASK"
},
{
"lsb": 3,
"msb": 3,
"name": "RX_ERROR",
"description": "Rx error.",
"reset": "Register reset applies",
"expression": "`PS2_INTR_RX_ERROR_MASK"
},
{
"lsb": 4,
"msb": 4,
"name": "TX_ERROR",
"description": "Tx error.",
"reset": "Register reset applies",
"expression": "`PS2_INTR_TX_ERROR_MASK"
},
{
"lsb": 5,
"msb": 5,
"name": "BUS_ERROR",
"description": "Bus error.",
"reset": "Register reset applies",
"expression": "`PS2_INTR_BUS_ERROR_MASK"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "Not retained",
"expression": "32'd0"
}
],
"reset": "Not retained (command/data port)"
},
"main.TXDATA": {
"fields": [
{
"name": "DATA",
"lsb": 0,
"msb": 7,
"description": "Byte to enqueue in the PS/2 transmit FIFO.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.INHIBIT_CYCLES": {
"reset": "8640"
},
"main.FRAME_TIMEOUT": {
"reset": "144000"
}
},
"gpio": {
"user.DATA_IN": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Synchronized and filtered pin inputs.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.DATA_OUT": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Software output latch.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.OUT_SET": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomically set output-latch bits.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.OUT_CLEAR": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomically clear output-latch bits.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.OUT_TOGGLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomically toggle output-latch bits.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.INTR_STATE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Sticky raw interrupt state.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.INTR_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. INTR_STATE & INTR_ENABLE.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.INTR_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Per-pin interrupt enable.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.INTR_ENABLE_SET": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomically set interrupt-enable bits.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"user.INTR_ENABLE_CLEAR": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomically clear interrupt-enable bits.",
"reset": "0",
"expression": "32-pin bitmap"
}
]
},
"admin.DATA_IN": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Synchronized and filtered inputs.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.DATA_OUT": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Software output latch.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.OUT_SET": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomic output set.",
"reset": "-",
"expression": "32-pin bitmap"
}
]
},
"admin.OUT_CLEAR": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomic output clear.",
"reset": "-",
"expression": "32-pin bitmap"
}
]
},
"admin.OUT_TOGGLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomic output toggle.",
"reset": "-",
"expression": "32-pin bitmap"
}
]
},
"admin.OUTPUT_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Software output-enable latch.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.OE_SET": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomic output-enable set.",
"reset": "-",
"expression": "32-pin bitmap"
}
]
},
"admin.OE_CLEAR": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomic output-enable clear.",
"reset": "-",
"expression": "32-pin bitmap"
}
]
},
"admin.OE_TOGGLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Atomic output-enable toggle.",
"reset": "-",
"expression": "32-pin bitmap"
}
]
},
"admin.OPEN_DRAIN": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Drive zero for output low and release for output high.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INPUT_CMOS": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Select the PDK CMOS input characteristic when supported.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.PULL_UP": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Enable pad pull-up when supported.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.PULL_DOWN": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Enable pad pull-down when supported.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.ALT_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Select an alternate function instead of software output.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.ALT_SELECT": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Select ALT1 when set and ALT0 when clear.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.USER_SELECT": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Select user-IP pad ownership.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.USER_LOCK": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Permanently lock USER_SELECT bits until reset.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.USER_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Active user ownership after the handoff guard cycle.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.USER_ACCESS_MASK": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Permit user-window data and interrupt bits.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_RISE_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Rising-edge event selection.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_FALL_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Falling-edge event selection.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_HIGH_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. High-level event selection.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_LOW_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Low-level event selection.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Per-pin interrupt output enable.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_STATE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Sticky raw interrupt state. Events win over clear.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_STATUS": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Enabled interrupt state.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.INTR_TEST": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Write-one software interrupt test.",
"reset": "-",
"expression": "32-pin bitmap"
}
]
},
"admin.FILTER_ENABLE": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Enable the digital stability filter per pin.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
},
"admin.CONFIG_LOCK": {
"fields": [
{
"lsb": 0,
"msb": 31,
"name": "PIN[31:0]",
"description": "Bit n applies to GPIO n. Permanently lock per-pin configuration until reset.",
"reset": "0x0",
"expression": "32-pin bitmap"
}
]
}
},
"timer": {
"main.INTR_TEST": {
"fields": [
{
"name": "MASK",
"lsb": 0,
"msb": 2,
"description": "Write-one mask using the corresponding event/interrupt bit assignments.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Enable.",
"reset": "0x0",
"expression": "s_ctrl_q[`TIMER_CTRL_ENABLE]"
},
{
"lsb": 1,
"msb": 2,
"name": "MODE",
"description": "Mode.",
"reset": "0x0",
"expression": "s_ctrl_q[2:1]"
},
{
"lsb": 3,
"msb": 3,
"name": "DIRECTION",
"description": "Direction.",
"reset": "0x0",
"expression": "s_ctrl_q[`TIMER_CTRL_DIRECTION]"
},
{
"lsb": 4,
"msb": 4,
"name": "DEBUG_FREEZE_ENABLE",
"description": "Debug freeze enable.",
"reset": "0x0",
"expression": "s_ctrl_q[`TIMER_CTRL_DEBUG_FREEZE]"
},
{
"lsb": 5,
"msb": 5,
"name": "COMPARE0_ENABLE",
"description": "Compare0 enable.",
"reset": "0x0",
"expression": "s_ctrl_q[`TIMER_CTRL_COMPARE0_ENABLE]"
},
{
"lsb": 6,
"msb": 6,
"name": "COMPARE1_ENABLE",
"description": "Compare1 enable.",
"reset": "0x0",
"expression": "s_ctrl_q[`TIMER_CTRL_COMPARE1_ENABLE]"
},
{
"lsb": 7,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_ctrl_q"
}
]
}
},
"sdram": {
"main.INTR_TEST": {
"fields": [
{
"name": "INIT_DONE",
"lsb": 0,
"msb": 0,
"description": "Write one to request init done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ERROR",
"lsb": 1,
"msb": 1,
"description": "Write one to request error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.COMMAND": {
"fields": [
{
"name": "INIT",
"lsb": 0,
"msb": 0,
"description": "Write one to request init.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "REINIT",
"lsb": 1,
"msb": 1,
"description": "Write one to request reinit.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "PRECHARGE_ALL",
"lsb": 2,
"msb": 2,
"description": "Write one to request precharge all.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "REFRESH",
"lsb": 3,
"msb": 3,
"description": "Write one to request refresh.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 4,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "CONTROLLER_ENABLE",
"description": "Controller enable.",
"reset": "0x1",
"expression": "s_ctrl_q[`APB4_SDRAM__CTRL_ENABLE]"
},
{
"lsb": 1,
"msb": 1,
"name": "MEMORY_ENABLE",
"description": "Memory enable.",
"reset": "0x1",
"expression": "s_ctrl_q[`APB4_SDRAM__CTRL_MEMORY_ENABLE]"
},
{
"lsb": 2,
"msb": 2,
"name": "AUTO_INIT",
"description": "Auto init.",
"reset": "0x1",
"expression": "s_ctrl_q[`APB4_SDRAM__CTRL_AUTO_INIT]"
},
{
"lsb": 3,
"msb": 3,
"name": "OPEN_PAGE",
"description": "Open page.",
"reset": "0x0",
"expression": "s_ctrl_q[`APB4_SDRAM__CTRL_OPEN_PAGE]"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_ctrl_q"
}
]
}
},
"dvp": {
"main.INTR_TEST": {
"fields": [
{
"name": "FRAME_START",
"lsb": 0,
"msb": 0,
"description": "Write one to request frame start.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "LINE_DONE",
"lsb": 1,
"msb": 1,
"description": "Write one to request line done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "FRAME_DONE",
"lsb": 2,
"msb": 2,
"description": "Write one to request frame done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "OVERFLOW",
"lsb": 3,
"msb": 3,
"description": "Write one to request overflow.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "SYNC_ERROR",
"lsb": 4,
"msb": 4,
"description": "Write one to request sync error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CONFIG_ERROR",
"lsb": 5,
"msb": 5,
"description": "Write one to request config error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ABORTED",
"lsb": 6,
"msb": 6,
"description": "Write one to request aborted.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 7,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.COMMAND": {
"fields": [
{
"name": "ABORT",
"lsb": 0,
"msb": 0,
"description": "Write one to request abort.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "FLUSH",
"lsb": 1,
"msb": 1,
"description": "Write one to request flush.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CTRL": {
"fields": [
{
"name": "ENABLE",
"lsb": 0,
"msb": 0,
"description": "Enable capture.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "SNAPSHOT",
"lsb": 1,
"msb": 1,
"description": "Select single-frame capture.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CROP_ENABLE",
"lsb": 2,
"msb": 2,
"description": "Enable the programmed crop rectangle.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"main.SYNC_CFG": {
"fields": [
{
"name": "VSYNC_LOW",
"lsb": 0,
"msb": 0,
"description": "VSYNC is active low when set.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "HREF_LOW",
"lsb": 1,
"msb": 1,
"description": "HREF is active low when set.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "PCLK_FALLING",
"lsb": 2,
"msb": 2,
"description": "Sample on the falling pixel-clock edge when set.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"main.STREAM_CTRL": {
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "STREAM_ENABLE",
"description": "Stream enable.",
"reset": "0x0",
"expression": "s_stream_q[`APB4_DVP__STREAM_ENABLE]"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_stream_q"
}
]
},
"main.FORMAT": {
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "SELECT",
"description": "0: RGB565; 1: YUV422. Other values are invalid.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "BYTE_SWAP",
"description": "Swap the two received bytes in a pixel.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "PIXEL_SWAP",
"description": "Retained format flag. The current core computes the same byte order in both branches; toggling this bit alone has no independent effect.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
},
{
"lsb": 4,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
}
],
"review_source": "rtl/ip/multimedia/dvp_reg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"main.FRAME_SIZE": {
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "WIDTH",
"description": "Width in pixels.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "HEIGHT",
"description": "Height in lines.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
}
],
"review_source": "rtl/ip/multimedia/dvp_reg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"main.CROP_SIZE": {
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "WIDTH",
"description": "Width in pixels.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "HEIGHT",
"description": "Height in lines.",
"reset": "Register reset applies",
"expression": "rtl/ip/multimedia/dvp_reg.sv"
}
],
"review_source": "rtl/ip/multimedia/dvp_reg.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
}
},
"mailbox": {
"main.LP_INTR_TEST": {
"fields": [
{
"name": "MASK",
"lsb": 0,
"msb": 0,
"description": "Write-one mask using the corresponding event/interrupt bit assignments.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.HP_INTR_TEST": {
"fields": [
{
"name": "MASK",
"lsb": 0,
"msb": 0,
"description": "Write-one mask using the corresponding event/interrupt bit assignments.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.LP_DOORBELL": {
"fields": [
{
"name": "MASK",
"lsb": 0,
"msb": 0,
"description": "Write one to notify the receiving hart; payload must be published before the doorbell.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.HP_DOORBELL": {
"fields": [
{
"name": "MASK",
"lsb": 0,
"msb": 0,
"description": "Write one to notify the receiving hart; payload must be published before the doorbell.",
"reset": "Register reset applies",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.LP_INTR_STATUS": {
"access": "RO"
},
"main.HP_INTR_STATUS": {
"access": "RO"
}
},
"clint": {
"msip.MSIP": {
"fields": [
{
"name": "PENDING",
"lsb": 0,
"msb": 0,
"description": "Machine software-interrupt request for this hart.",
"reset": "0x0",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0x0",
"expression": "reserved"
}
],
"access": "RW",
"reset": "0",
"description": "Per-hart software interrupt pending bit."
},
"compare.MTIMECMP": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Comparator bits 31:0.",
"reset": "0xffffffff",
"expression": "reviewed field"
}
],
"access": "RW",
"reset": "0xFFFFFFFF",
"description": "Comparator bits 31:0."
},
"main.MTIME": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Machine time bits 31:0.",
"reset": "0x0",
"expression": "reviewed field"
}
],
"access": "RW",
"reset": "0",
"description": "Machine time bits 31:0."
},
"main.MTIMEH": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Machine time bits 63:32.",
"reset": "0x0",
"expression": "reviewed field"
}
],
"access": "RW",
"reset": "0",
"description": "Machine time bits 63:32."
}
},
"aclint": {
"msip.MSIP": {
"fields": [
{
"name": "PENDING",
"lsb": 0,
"msb": 0,
"description": "Machine software-interrupt request for this hart.",
"reset": "0x0",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0x0",
"expression": "reserved"
}
],
"access": "RW",
"reset": "0",
"description": "Per-hart software interrupt pending bit."
},
"compare.MTIMECMP": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Comparator bits 31:0.",
"reset": "0xffffffff",
"expression": "reviewed field"
}
],
"access": "RW",
"reset": "0xFFFFFFFF",
"description": "Comparator bits 31:0."
},
"main.MTIME": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Machine time bits 31:0.",
"reset": "0x0",
"expression": "reviewed field"
}
],
"access": "RW",
"reset": "0",
"description": "Machine time bits 31:0."
},
"main.MTIMEH": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Machine time bits 63:32.",
"reset": "0x0",
"expression": "reviewed field"
}
],
"access": "RW",
"reset": "0",
"description": "Machine time bits 63:32."
}
},
"mpw-timer": {
"main.USER_IP_APB_ID": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 7,
"description": "Selected MPW design identifier.",
"reset": "0x1",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0x0",
"expression": "reserved"
}
],
"description": "Selected MPW design identifier.",
"access": "RO",
"reset": "1"
},
"main.USER_IP_APB_DIV": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 7,
"description": "Clock-divider terminal count.",
"reset": "0x0",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0x0",
"expression": "reserved"
}
],
"description": "Clock-divider terminal count.",
"access": "RW",
"reset": "0"
},
"main.USER_IP_APB_CNT": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 15,
"description": "Current counter value; a write preloads bits 15:0.",
"reset": "0x0",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 16,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0x0",
"expression": "reserved"
}
],
"description": "Live 16-bit counter. A write preloads the current count; terminal 0xFFFF returns to zero and toggles the user output.",
"access": "RW",
"reset": "0"
}
},
"mpw-gpio": {
"main.USER_IP_APB_ID": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 7,
"description": "Selected MPW design identifier.",
"reset": "0x2",
"expression": "reviewed field"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0x0",
"expression": "reserved"
}
],
"description": "Selected MPW design identifier.",
"access": "RO",
"reset": "2"
},
"main.USER_IP_APB_OE": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Per-pin output enable.",
"reset": "0x0",
"expression": "reviewed field"
}
],
"description": "Per-pin output enable.",
"access": "RW",
"reset": "0"
},
"main.USER_IP_APB_DO": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Per-pin output data.",
"reset": "0x0",
"expression": "reviewed field"
}
],
"description": "Per-pin output data.",
"access": "RW",
"reset": "0"
},
"main.USER_IP_APB_DI": {
"fields": [
{
"name": "VALUE",
"lsb": 0,
"msb": 31,
"description": "Current user-GPIO input data.",
"reset": "Dynamic",
"expression": "reviewed field"
}
],
"description": "Current user-GPIO input data.",
"access": "RO",
"reset": "Dynamic",
"notes": "This word reads the user-GPIO input boundary directly. Its value depends on the root input path and external pins; the demo IP does not reset or latch it."
}
},
"spisd": {
"main.DMA_CTRL": {
"fields": [
{
"name": "START",
"lsb": 0,
"msb": 0,
"description": "Write one to request start.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ABORT",
"lsb": 1,
"msb": 1,
"description": "Write one to request abort.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.IRQ_TEST": {
"fields": [
{
"name": "CMD_DONE",
"lsb": 0,
"msb": 0,
"description": "Write one to request cmd done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DATA_DONE",
"lsb": 1,
"msb": 1,
"description": "Write one to request data done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DMA_DONE",
"lsb": 2,
"msb": 2,
"description": "Write one to request dma done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CMD_ERROR",
"lsb": 3,
"msb": 3,
"description": "Write one to request cmd error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DATA_ERROR",
"lsb": 4,
"msb": 4,
"description": "Write one to request data error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DMA_ERROR",
"lsb": 5,
"msb": 5,
"description": "Write one to request dma error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ABORT",
"lsb": 6,
"msb": 6,
"description": "Write one to request abort.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 7,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.CMD_START": {
"fields": [
{
"name": "START",
"lsb": 0,
"msb": 0,
"description": "Write one to submit the prepared card command.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained"
},
"main.IP_ID": {
"access": "RO"
},
"main.IP_VERSION": {
"access": "RO"
},
"main.CAPABILITY": {
"access": "RO"
},
"main.HOST_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "HOST_ENABLE",
"description": "Host enable.",
"reset": "0x0",
"expression": "s_host_ctrl_q[`APB4_SPISD__HOST_CTRL_ENABLE]"
},
{
"lsb": 1,
"msb": 1,
"name": "ABORT",
"description": "Abort.",
"reset": "0x0",
"expression": "`APB4_SPISD__HOST_CTRL_ABORT"
},
{
"lsb": 2,
"msb": 2,
"name": "IRQ",
"description": "Irq.",
"reset": "0x0",
"expression": "`APB4_SPISD__HOST_CTRL_IRQ"
},
{
"lsb": 3,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_host_ctrl_q"
}
]
},
"main.CLOCK_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "CLOCK_ENABLE",
"description": "Clock enable.",
"reset": "0x0",
"expression": "s_clock_ctrl_q[`APB4_SPISD__CLOCK_CTRL_ENABLE]"
},
{
"lsb": 1,
"msb": 1,
"name": "TRAIN",
"description": "Train.",
"reset": "0x0",
"expression": "`APB4_SPISD__CLOCK_CTRL_TRAIN"
},
{
"lsb": 2,
"msb": 7,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_clock_ctrl_q"
},
{
"lsb": 8,
"msb": 23,
"name": "HALF_PERIOD",
"description": "Half period.",
"reset": "0x5a",
"expression": "s_clock_ctrl_q[23:8]"
},
{
"lsb": 24,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_clock_ctrl_q"
}
]
},
"main.CLOCK_ACTUAL": {
"access": "RO"
},
"main.TIMEOUT_CMD": {
"access": "RW"
},
"main.TIMEOUT_DATA": {
"access": "RW"
},
"main.TIMEOUT_BUSY": {
"access": "RW"
},
"main.STATUS": {
"access": "RO"
},
"main.CMD_ARG": {
"access": "RW"
},
"main.CMD_CFG": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 5,
"name": "CMD_INDEX",
"description": "Cmd index.",
"reset": "0x0",
"expression": "s_cmd_cfg_q[5:0]"
},
{
"lsb": 6,
"msb": 7,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_cmd_cfg_q"
},
{
"lsb": 8,
"msb": 11,
"name": "RESP",
"description": "Resp.",
"reset": "0x0",
"expression": "`APB4_SPISD__CMD_CFG_RESP_LSB"
},
{
"lsb": 12,
"msb": 12,
"name": "CMD_STUFF_BYTE",
"description": "Cmd stuff byte.",
"reset": "0x0",
"expression": "s_cmd_cfg_q[`APB4_SPISD__CMD_CFG_STUFF_BYTE]"
},
{
"lsb": 13,
"msb": 13,
"name": "CMD_DATA_PRESENT",
"description": "Cmd data present.",
"reset": "0x0",
"expression": "s_cmd_cfg_q[`APB4_SPISD__CMD_CFG_DATA_PRESENT]"
},
{
"lsb": 14,
"msb": 14,
"name": "CMD_AUTO_STOP",
"description": "Cmd auto stop.",
"reset": "0x0",
"expression": "s_cmd_cfg_q[`APB4_SPISD__CMD_CFG_AUTO_STOP]"
},
{
"lsb": 15,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_cmd_cfg_q"
}
]
},
"main.CMD_STATUS": {
"access": "RO"
},
"main.RESP0": {
"access": "RO"
},
"main.RESP1": {
"access": "RO"
},
"main.BLOCK_SIZE": {
"access": "RW"
},
"main.BLOCK_COUNT": {
"access": "RW"
},
"main.DATA_CFG": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "DATA_DIRECTION",
"description": "Data direction.",
"reset": "0x0",
"expression": "s_data_cfg_q[`APB4_SPISD__DATA_CFG_DIRECTION]"
},
{
"lsb": 1,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_data_cfg_q"
},
{
"lsb": 4,
"msb": 4,
"name": "DATA_DMA_ENABLE",
"description": "Data dma enable.",
"reset": "0x0",
"expression": "s_data_cfg_q[`APB4_SPISD__DATA_CFG_DMA]"
},
{
"lsb": 5,
"msb": 5,
"name": "DATA_MULTI_BLOCK",
"description": "Data multi block.",
"reset": "0x0",
"expression": "s_data_cfg_q[`APB4_SPISD__DATA_CFG_MULTI_BLOCK]"
},
{
"lsb": 6,
"msb": 6,
"name": "DATA_CRC_CHECK",
"description": "Data crc check.",
"reset": "0x1",
"expression": "s_data_cfg_q[`APB4_SPISD__DATA_CFG_CRC_CHECK]"
},
{
"lsb": 7,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_data_cfg_q"
}
]
},
"main.PIO_DATA": {
"access": "RW / FIFO port"
},
"main.DATA_STATUS": {
"access": "RO"
},
"main.FIFO_STATUS": {
"access": "RO"
},
"main.DESC_BASE": {
"access": "RW"
},
"main.DESC_COUNT": {
"access": "RW"
},
"main.DMA_STATUS": {
"access": "RO"
},
"main.CURRENT_DESC": {
"access": "RO"
},
"main.BYTES_DONE": {
"access": "RO"
},
"main.DMA_ERROR_ADDR": {
"access": "RO"
},
"main.DMA_ERROR": {
"access": "RO"
},
"main.IRQ_STATUS": {
"access": "RW1C"
},
"main.IRQ_ENABLE": {
"access": "RW"
},
"main.ERROR_STATUS": {
"access": "RW1C"
},
"main.LAST_CMD": {
"access": "RO"
},
"main.CRC_ERROR_COUNT": {
"access": "RO"
},
"main.TIMEOUT_COUNT": {
"access": "RO"
},
"main.AXI_ERROR_COUNT": {
"access": "RO"
},
"main.STALL_COUNT": {
"access": "RO"
}
},
"sdio": {
"main.IRQ_TEST": {
"fields": [
{
"name": "CMD_DONE",
"lsb": 0,
"msb": 0,
"description": "Write one to request cmd done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DATA_DONE",
"lsb": 1,
"msb": 1,
"description": "Write one to request data done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DMA_DONE",
"lsb": 2,
"msb": 2,
"description": "Write one to request dma done.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CMD_ERROR",
"lsb": 3,
"msb": 3,
"description": "Write one to request cmd error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DATA_ERROR",
"lsb": 4,
"msb": 4,
"description": "Write one to request data error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DMA_ERROR",
"lsb": 5,
"msb": 5,
"description": "Write one to request dma error.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "DAT1",
"lsb": 6,
"msb": 6,
"description": "Write one to request dat1.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ABORT",
"lsb": 7,
"msb": 7,
"description": "Write one to request abort.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained",
"description": "Irq test. The field descriptions and operation sequence define its use."
},
"main.CMD_START": {
"fields": [
{
"name": "START",
"lsb": 0,
"msb": 0,
"description": "Write one to submit the prepared card command.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "WO",
"reset": "Not retained",
"description": "Cmd start. The field descriptions and operation sequence define its use."
},
"main.IP_ID": {
"description": "Read-only component identification value.",
"access": "RO"
},
"main.IP_VERSION": {
"description": "Read-only register interface version.",
"access": "RO"
},
"main.CAPABILITY": {
"description": "Implemented capability and resource geometry; field values follow this RTL snapshot.",
"access": "RO"
},
"main.HOST_CTRL": {
"description": "Host ctrl. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.CLOCK_CTRL": {
"description": "Clock ctrl. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.CLOCK_ACTUAL": {
"description": "Clock actual. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.BUS_CTRL": {
"description": "Bus ctrl. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.TIMEOUT_CMD": {
"description": "Timeout cmd. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.TIMEOUT_DATA": {
"description": "Timeout data. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.TIMEOUT_BUSY": {
"description": "Timeout busy. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.STATUS": {
"description": "Current status; see the field definitions and functional sequence.",
"access": "RO"
},
"main.PRESENT": {
"description": "Present. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.CMD_ARG": {
"description": "Cmd arg. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.CMD_CFG": {
"description": "Cmd cfg. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.CMD_STATUS": {
"description": "Current cmd status; see the field definitions and functional sequence.",
"access": "RO"
},
"main.RESP0": {
"description": "Captured command-response word resp0. Response ordering follows the card protocol.",
"access": "RO"
},
"main.RESP1": {
"description": "Captured command-response word resp1. Response ordering follows the card protocol.",
"access": "RO"
},
"main.RESP2": {
"description": "Captured command-response word resp2. Response ordering follows the card protocol.",
"access": "RO"
},
"main.RESP3": {
"description": "Captured command-response word resp3. Response ordering follows the card protocol.",
"access": "RO"
},
"main.RESP4": {
"description": "Captured command-response word resp4. Response ordering follows the card protocol.",
"access": "RO"
},
"main.BLOCK_SIZE": {
"description": "Block size. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.BLOCK_COUNT": {
"description": "Block count. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.DATA_CFG": {
"description": "Data cfg. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.DATA_START": {
"description": "Data start. The field descriptions and operation sequence define its use.",
"access": "RO status / WO start",
"notes": "Read returns data-engine status. A byte-strobed write with only bit 0 set submits the prepared data operation; the controller must not be busy."
},
"main.PIO_DATA": {
"description": "Pio data. The field descriptions and operation sequence define its use.",
"access": "RW / FIFO port"
},
"main.FIFO_STATUS": {
"description": "Current fifo status; see the field definitions and functional sequence.",
"access": "RO"
},
"main.FIFO_WATERMARK": {
"description": "Fifo watermark. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.DESC_BASE": {
"description": "Desc base. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.DESC_COUNT": {
"description": "Desc count. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.DMA_CTRL": {
"description": "Dma ctrl. The field descriptions and operation sequence define its use.",
"access": "WO"
},
"main.DMA_STATUS": {
"description": "Current dma status; see the field definitions and functional sequence.",
"access": "RO"
},
"main.CURRENT_DESC": {
"description": "Current desc. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.BYTES_DONE": {
"description": "Bytes done. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.DMA_ERROR_ADDR": {
"description": "Dma error addr. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.DMA_ERROR": {
"description": "Dma error. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.IRQ_STATUS": {
"description": "Current irq status; see the field definitions and functional sequence.",
"access": "RW1C"
},
"main.IRQ_ENABLE": {
"description": "Irq enable. The field descriptions and operation sequence define its use.",
"access": "RW"
},
"main.ERROR_STATUS": {
"description": "Current error status; see the field definitions and functional sequence.",
"access": "RW1C"
},
"main.LAST_CMD": {
"description": "Last cmd. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.CRC_ERROR_COUNT": {
"description": "Crc error count. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.TIMEOUT_COUNT": {
"description": "Timeout count. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.AXI_ERROR_COUNT": {
"description": "Axi error count. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.STALL_COUNT": {
"description": "Stall count. The field descriptions and operation sequence define its use.",
"access": "RO"
},
"main.DEBUG": {
"description": "Debug. The field descriptions and operation sequence define its use.",
"access": "RO"
}
},
"resource": {
"resource.Owner": {
"fields": [
{
"name": "OWNER",
"lsb": 0,
"msb": 1,
"description": "0 = LP, 1 = HP; other values invalid.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 7,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
},
{
"name": "LOCK",
"lsb": 8,
"msb": 8,
"description": "Write-once owner lock; cleared by reset.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 9,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "RW",
"reset": "0",
"description": "Per-resource owner."
},
"resource.Control": {
"fields": [
{
"name": "QUIESCE",
"lsb": 0,
"msb": 0,
"description": "Block new resource work and request drain.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RESET",
"lsb": 1,
"msb": 1,
"description": "Hold the resource in reset.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "RW",
"reset": "0",
"description": "Per-resource control."
},
"resource.Status": {
"fields": [
{
"name": "OWNER",
"lsb": 0,
"msb": 1,
"description": "Current LP/HP owner.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "QUIESCE",
"lsb": 2,
"msb": 2,
"description": "Quiesce state.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RESET",
"lsb": 3,
"msb": 3,
"description": "Reset state.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "IDLE",
"lsb": 4,
"msb": 4,
"description": "Resource idle input.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "FAULT",
"lsb": 5,
"msb": 5,
"description": "Sticky ownership/lifecycle fault.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "IRQ",
"lsb": 6,
"msb": 6,
"description": "Current resource interrupt input.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "BLOCK_ACK",
"lsb": 7,
"msb": 7,
"description": "Admission-block acknowledgement.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "RO",
"reset": "0",
"description": "Per-resource status."
},
"resource.Fault": {
"fields": [
{
"name": "FAULT",
"lsb": 0,
"msb": 0,
"description": "Sticky fault; write one to clear.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 1,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "RW1C",
"reset": "0",
"description": "Per-resource fault."
},
"resource.HandoffCount": {
"fields": [
{
"name": "COUNT",
"lsb": 0,
"msb": 15,
"description": "Saturating count of accepted owner changes.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 16,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"access": "RO",
"reset": "0",
"description": "Per-resource handoffcount."
}
},
"xpi": {
"main.ID": {
"access": "RO"
},
"main.VERSION": {
"access": "RO"
},
"main.CAPABILITY": {
"access": "RO"
},
"main.CTRL": {
"access": "RW",
"reset": "1",
"description": "Global controller enable. Configure protected slot/LUT state only in the allowed idle/disabled state.",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Enable the XPI controller.",
"reset": "1",
"expression": "XPI_CTRL_ENABLE"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.STATUS": {
"access": "RO"
},
"main.COMMAND": {
"access": "WO",
"fields": [
{
"name": "INDIRECT_START",
"lsb": 0,
"msb": 0,
"description": "Start the configured indirect sequence.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "POLL_START",
"lsb": 1,
"msb": 1,
"description": "Start automatic status polling.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "ABORT",
"lsb": 2,
"msb": 2,
"description": "Abort the current command and release chip select safely.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 3,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "Not retained"
},
"main.ERROR_STATE": {
"access": "RW1C",
"fields": [
{
"name": "CODE",
"lsb": 0,
"msb": 3,
"description": "First XPI error code.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 4,
"msb": 30,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
},
{
"name": "VALID",
"lsb": 31,
"msb": 31,
"description": "Sticky first-error valid; write one to clear the snapshot.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
}
],
"reset": "0"
},
"main.ERROR_ADDR": {
"access": "RO"
},
"main.ERROR_INFO": {
"access": "RO",
"fields": [
{
"name": "CODE",
"lsb": 0,
"msb": 3,
"description": "Captured error code.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "SLOT",
"lsb": 4,
"msb": 5,
"description": "Captured chip-select slot.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "PC",
"lsb": 6,
"msb": 8,
"description": "Captured LUT program counter.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 9,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"main.INTR_STATE": {
"access": "RW1C"
},
"main.INTR_ENABLE": {
"access": "RW"
},
"main.INTR_STATUS": {
"access": "RO"
},
"main.INTR_TEST": {
"access": "WO",
"fields": [
{
"name": "INDIRECT_DONE",
"lsb": 0,
"msb": 0,
"description": "Write one to inject indirect done.",
"reset": "Not retained",
"expression": "XPI_INTR_INDIRECT_DONE"
},
{
"name": "POLL_MATCH",
"lsb": 1,
"msb": 1,
"description": "Write one to inject poll match.",
"reset": "Not retained",
"expression": "XPI_INTR_POLL_MATCH"
},
{
"name": "TX_WATERMARK",
"lsb": 2,
"msb": 2,
"description": "Write one to inject tx watermark.",
"reset": "Not retained",
"expression": "XPI_INTR_TX_WATERMARK"
},
{
"name": "RX_WATERMARK",
"lsb": 3,
"msb": 3,
"description": "Write one to inject rx watermark.",
"reset": "Not retained",
"expression": "XPI_INTR_RX_WATERMARK"
},
{
"name": "AXI_ERROR",
"lsb": 4,
"msb": 4,
"description": "Write one to inject axi error.",
"reset": "Not retained",
"expression": "XPI_INTR_AXI_ERROR"
},
{
"name": "SEQUENCE_ERROR",
"lsb": 5,
"msb": 5,
"description": "Write one to inject sequence error.",
"reset": "Not retained",
"expression": "XPI_INTR_SEQUENCE_ERROR"
},
{
"name": "TIMEOUT",
"lsb": 6,
"msb": 6,
"description": "Write one to inject timeout.",
"reset": "Not retained",
"expression": "XPI_INTR_TIMEOUT"
},
{
"name": "ABORT_DONE",
"lsb": 7,
"msb": 7,
"description": "Write one to inject abort done.",
"reset": "Not retained",
"expression": "XPI_INTR_ABORT_DONE"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; write zero.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "Not retained"
},
"main.DMA_CTRL": {
"access": "RW",
"fields": [
{
"name": "TX_ENABLE",
"lsb": 0,
"msb": 0,
"description": "Enable TX DMA request pacing.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RX_ENABLE",
"lsb": 1,
"msb": 1,
"description": "Enable RX DMA request pacing.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 2,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"main.FIFO_CTRL": {
"access": "RW",
"reset": "0x00001010",
"fields": [
{
"name": "TX_WATERMARK",
"lsb": 0,
"msb": 7,
"description": "TX low-watermark threshold.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RX_WATERMARK",
"lsb": 8,
"msb": 15,
"description": "RX high-watermark threshold.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "TX_FLUSH",
"lsb": 16,
"msb": 16,
"description": "Write-one TX FIFO flush pulse; reads as zero.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "RX_FLUSH",
"lsb": 17,
"msb": 17,
"description": "Write-one RX FIFO flush pulse; reads as zero.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 18,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
]
},
"main.FIFO_STATUS": {
"access": "RO"
},
"main.TXDATA": {
"access": "WO",
"fields": [
{
"name": "DATA",
"lsb": 0,
"msb": 31,
"description": "Word pushed into the transmit FIFO using the documented PIO packing.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
}
],
"reset": "Not retained"
},
"main.RXDATA": {
"access": "RO / pop"
},
"main.INDIRECT_ADDR": {
"access": "RW"
},
"main.INDIRECT_COUNT": {
"access": "RW"
},
"main.INDIRECT_CFG": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "INDIRECT_SLOT",
"description": "Indirect slot.",
"reset": "0x0",
"expression": "s_indirect_cfg_q[1:0]"
},
{
"lsb": 2,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_indirect_cfg_q"
},
{
"lsb": 4,
"msb": 7,
"name": "INDIRECT_SEQ",
"description": "Indirect seq.",
"reset": "0x0",
"expression": "s_indirect_cfg_q[7:4]"
},
{
"lsb": 8,
"msb": 31,
"name": "Reserved",
"description": "Reads zero.",
"reset": "0x0",
"expression": "24'd0"
}
]
},
"main.POLL_CFG": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "POLL_SLOT",
"description": "Poll slot.",
"reset": "0x0",
"expression": "s_poll_cfg_q[1:0]"
},
{
"lsb": 2,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_poll_cfg_q"
},
{
"lsb": 4,
"msb": 7,
"name": "POLL_SEQ",
"description": "Poll seq.",
"reset": "0x0",
"expression": "s_poll_cfg_q[7:4]"
},
{
"lsb": 8,
"msb": 31,
"name": "Reserved",
"description": "Reads zero.",
"reset": "0x0",
"expression": "24'd0"
}
]
},
"main.POLL_MASK": {
"access": "RW"
},
"main.POLL_MATCH": {
"access": "RW"
},
"main.POLL_INTERVAL": {
"access": "RW"
},
"main.POLL_TIMEOUT": {
"access": "RW"
},
"main.PERF_CTRL": {
"access": "RW"
},
"main.PERF_AXI_READ_BYTES": {
"access": "RO"
},
"main.PERF_AXI_WRITE_BYTES": {
"access": "RO"
},
"main.PERF_PHY_BYTES": {
"access": "RO"
},
"main.PERF_COMMANDS": {
"access": "RO"
},
"main.PERF_STALL_CYCLES": {
"access": "RO"
},
"main.CONFIG_LOCK": {
"access": "RW",
"fields": [
{
"name": "GLOBAL",
"lsb": 0,
"msb": 0,
"description": "Lock global configuration until reset.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "SLOTS",
"lsb": 1,
"msb": 4,
"description": "Lock slots 0 through 3 respectively.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "LUT",
"lsb": 5,
"msb": 5,
"description": "Lock LUT contents until reset.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 6,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "0"
},
"slot.CTRL": {
"access": "RW",
"fields": [
{
"name": "ENABLE",
"lsb": 0,
"msb": 0,
"description": "Enable this chip-select slot.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "MEMORY_ENABLE",
"lsb": 1,
"msb": 1,
"description": "Permit mapped reads through this slot.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "WRITE_ENABLE",
"lsb": 2,
"msb": 2,
"description": "Permit mapped writes at the controller frontend; product data-plane policy still applies.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "CPOL",
"lsb": 3,
"msb": 3,
"description": "Select SPI mode 3 when set; mode 0 when clear.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 4,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0",
"expression": "reserved"
}
],
"reset": "slot 0: 0x3; slots 1-3: 0",
"description": "Per-chip-select ctrl."
},
"slot.DEVICE_SIZE": {
"access": "RW",
"fields": [
{
"name": "BYTES",
"lsb": 0,
"msb": 31,
"description": "Device/addressable span for this slot.",
"reset": "Register reset applies",
"expression": "reviewed semantic field"
}
],
"reset": "slot 0: 0x01000000; slots 1-3: 0x04000000",
"description": "Per-chip-select device size."
},
"slot.SEQ_CFG": {
"access": "RW",
"fields": [
{
"name": "READ_SEQUENCE",
"lsb": 0,
"msb": 3,
"description": "Mapped-read LUT sequence index.",
"reset": "0x0",
"expression": "reviewed semantic field"
},
{
"name": "WRITE_SEQUENCE",
"lsb": 4,
"msb": 7,
"description": "Mapped-write LUT sequence index.",
"reset": "0x0",
"expression": "reviewed semantic field"
},
{
"name": "Reserved",
"lsb": 8,
"msb": 31,
"description": "Reserved; preserve zero when writing.",
"reset": "0x0",
"expression": "reserved"
}
],
"reset": "0",
"description": "Per-chip-select seq cfg."
},
"slot.TIMING": {
"access": "RW",
"fields": [
{
"name": "CLK_DIV",
"lsb": 0,
"msb": 7,
"description": "Serial clock divider field.",
"reset": "0x0",
"expression": "reviewed semantic field"
},
{
"name": "CS_SETUP",
"lsb": 8,
"msb": 15,
"description": "Chip-select setup interval.",
"reset": "0x0",
"expression": "reviewed semantic field"
},
{
"name": "CS_HOLD",
"lsb": 16,
"msb": 23,
"description": "Chip-select hold interval.",
"reset": "0x0",
"expression": "reviewed semantic field"
},
{
"name": "CS_HIGH",
"lsb": 24,
"msb": 31,
"description": "Minimum deselected interval.",
"reset": "0x2",
"expression": "reviewed semantic field"
}
],
"reset": "0x02000000",
"description": "Per-chip-select timing."
},
"slot.TIMEOUT": {
"access": "RW",
"fields": [
{
"name": "CYCLES",
"lsb": 0,
"msb": 31,
"description": "Nonzero operation timeout budget.",
"reset": "0x10000",
"expression": "reviewed semantic field"
}
],
"reset": "0x00010000",
"description": "Per-chip-select timeout."
},
"slot.BOUNDARY": {
"access": "RW",
"fields": [
{
"name": "BYTES",
"lsb": 0,
"msb": 31,
"description": "Zero disables device-boundary splitting; otherwise a power of two from 4 bytes to 64 MiB.",
"reset": "0x0",
"expression": "reviewed semantic field"
}
],
"reset": "0",
"description": "Per-chip-select boundary."
}
},
"usb2": {
"main.IP_ID": {
"access": "RO"
},
"main.IP_VERSION": {
"access": "RO"
},
"main.CAPABILITY0": {
"access": "RO"
},
"main.CAPABILITY1": {
"access": "RO"
},
"main.GLOBAL_CTRL": {
"access": "RW"
},
"main.GLOBAL_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ENABLE",
"description": "Controller enable.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "BUSY",
"description": "Scheduler, DMA or transaction engine is busy.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 3,
"name": "ROLE",
"description": "0: idle; 1: device; 2: host. Encoding 3 is unused.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "LINK_READY",
"description": "Synchronized PHY link-ready indication.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 5,
"msb": 5,
"name": "DMA_BUSY",
"description": "Descriptor DMA is busy.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.ROLE_CTRL": {
"access": "RW"
},
"main.ROLE_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "ROLE",
"description": "0: idle; 1: device; 2: host.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "PENDING",
"description": "Role switch is pending.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "ID_GROUND",
"description": "Synchronized PHY ID-ground indication.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 4,
"msb": 5,
"name": "VBUS_STATE",
"description": "Synchronized two-bit ULPI VBUS state.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.PHY_CTRL": {
"access": "RW"
},
"main.PHY_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "LINE_STATE",
"description": "Synchronized ULPI line-state code.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 3,
"name": "VBUS_STATE",
"description": "Synchronized ULPI VBUS state.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "ID_GROUND",
"description": "Synchronized ID-ground input.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 5,
"msb": 5,
"name": "LINK_READY",
"description": "PHY link-ready indication.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.ULPI_VIEWPORT": {
"access": "RW"
},
"main.ULPI_VIEWPORT_DATA": {
"access": "RO"
},
"main.TIMEOUT": {
"access": "RW"
},
"main.FRAME": {
"access": "RO",
"description": "Frame. The field descriptions and operation sequence define its use."
},
"main.TEST_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 7,
"name": "TEST_CTRL",
"description": "Test ctrl.",
"reset": "0x0",
"expression": "s_test_ctrl_q[7:0]"
},
{
"lsb": 8,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_test_ctrl_q"
}
]
},
"main.PIO_DATA": {
"access": "Unsupported",
"description": "Unimplemented PIO aperture. Access returns PSLVERR; payload transfers use the descriptor DMA path."
},
"main.IRQ_STATUS": {
"access": "RW1C"
},
"main.IRQ_ENABLE": {
"access": "RW"
},
"main.IRQ_TEST": {
"access": "RW"
},
"main.ERROR_STATUS": {
"access": "RW1C"
},
"main.ERROR_CODE": {
"access": "RO"
},
"main.ERROR_INFO": {
"access": "RO"
},
"main.ERROR_DESC_ADDR": {
"access": "RO"
},
"main.ERROR_BUFFER_ADDR": {
"access": "RO"
},
"main.PERF_TX_BYTES": {
"access": "RO"
},
"main.PERF_RX_BYTES": {
"access": "RO"
},
"main.PERF_PACKETS": {
"access": "RO"
},
"main.PERF_RETRIES": {
"access": "RO"
},
"main.PERF_AXI_STALL": {
"access": "RO"
},
"main.PERF_RAM_STALL": {
"access": "RO"
},
"main.PERF_IRQ_COUNT": {
"access": "RO"
},
"main.PERF_CTRL": {
"access": "RW"
},
"main.DEVICE_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "DEVICE_CTRL",
"description": "Device ctrl.",
"reset": "0x0",
"expression": "s_device_ctrl_q[15:0]"
},
{
"lsb": 16,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_device_ctrl_q"
}
]
},
"main.DEVICE_ADDR": {
"access": "RW"
},
"main.DEVICE_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "DEVICE_ACTIVE",
"description": "Current role is device.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "SUSPEND",
"description": "PHY suspend request.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "REMOTE_WAKE",
"description": "Remote-wake request.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 3,
"msb": 15,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "CONTROL_ECHO",
"description": "Echoes the stored DEVICE_CTRL word; it does not certify USB protocol completion.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.SETUP0": {
"access": "RO"
},
"main.SETUP1": {
"access": "RO"
},
"main.ENDPOINT_PENDING_IN": {
"access": "RO"
},
"main.ENDPOINT_PENDING_OUT": {
"access": "RO"
},
"main.ENDPOINT_COMPLETE_IN": {
"access": "RW1C"
},
"main.ENDPOINT_COMPLETE_OUT": {
"access": "RW1C"
},
"main.HOST_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "HOST_CTRL",
"description": "Host ctrl.",
"reset": "0x0",
"expression": "s_host_ctrl_q[15:0]"
},
{
"lsb": 16,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_host_ctrl_q"
}
]
},
"main.HOST_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "HOST_ACTIVE",
"description": "Current role is host.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "TRANSACTION_BUSY",
"description": "Transaction engine is busy.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 15,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "CONTROL_ECHO",
"description": "Echoes the stored HOST_CTRL word.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.PORT_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "PORT_CTRL",
"description": "Port ctrl.",
"reset": "0x0",
"expression": "s_port_ctrl_q[0]"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_port_ctrl_q"
}
]
},
"main.PORT_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "LINE_STATE",
"description": "Synchronized ULPI line-state code.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 3,
"name": "VBUS_STATE",
"description": "Synchronized ULPI VBUS state.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "ID_GROUND",
"description": "Synchronized ID-ground input.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 5,
"msb": 5,
"name": "LINK_READY",
"description": "PHY link-ready indication.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 6,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.SCHEDULE_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "SCHEDULE_CTRL",
"description": "Schedule ctrl.",
"reset": "0x0",
"expression": "s_schedule_ctrl_q[0]"
},
{
"lsb": 1,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_schedule_ctrl_q"
}
]
},
"main.SCHEDULE_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 13,
"name": "FRAME",
"description": "Synchronized frame/microframe counter.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 14,
"msb": 30,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 31,
"msb": 31,
"name": "ENABLE",
"description": "Stored schedule enable.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.RAM_CTRL": {
"access": "RW",
"fields": [
{
"lsb": 0,
"msb": 15,
"name": "RAM_CTRL",
"description": "Ram ctrl.",
"reset": "0x0",
"expression": "s_ram_ctrl_q[15:0]"
},
{
"lsb": 16,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0x0",
"expression": "s_ram_ctrl_q"
}
]
},
"main.RAM_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "BUSY",
"description": "Transaction engine currently uses packet RAM.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 1,
"msb": 29,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 30,
"msb": 30,
"name": "FIXED_MARKER",
"description": "Fixed implementation marker, reads one.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 31,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.ECC_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "CORRECTED",
"description": "Corrected packet-RAM event pulse.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "UNCORRECTABLE",
"description": "Uncorrectable packet-RAM event pulse.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"main.ECC_CORRECTED_COUNT": {
"access": "RO"
},
"main.ECC_UNCORRECTABLE_COUNT": {
"access": "RO"
},
"main.RAM_BIST": {
"access": "RW"
},
"main.DEBUG_STATUS": {
"access": "RO",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "SCHEDULER_BUSY",
"description": "Scheduler busy.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "DMA_BUSY",
"description": "Descriptor DMA busy.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "TRANSACTION_BUSY",
"description": "USB transaction engine busy.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "ROLE_RESET",
"description": "Role-change reset active.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 4,
"msb": 4,
"name": "DESCRIPTOR_IRQ",
"description": "Descriptor interrupt pulse.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 5,
"msb": 5,
"name": "ABORT_DONE",
"description": "DMA abort completion pulse.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 6,
"msb": 6,
"name": "BIST_REQUEST",
"description": "Reserved BIST request observation.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 7,
"msb": 7,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 8,
"msb": 15,
"name": "TEST_CTRL",
"description": "Stored TEST_CTRL byte.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
},
{
"lsb": 16,
"msb": 31,
"name": "RAM_CTRL",
"description": "Stored RAM_CTRL word.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/apb4_usb2.sv"
}
],
"review_source": "rtl/ip/usb/apb4_usb2.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06."
},
"endpoint.CFG": {
"access": "RW",
"description": "Cfg. The field descriptions and operation sequence define its use."
},
"endpoint.RAM_IN": {
"access": "RW",
"description": "Ram in. The field descriptions and operation sequence define its use.",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 2,
"msb": 13,
"name": "BASE",
"description": "12-bit packet-RAM base slice carried into the hardware work descriptor.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 14,
"msb": 15,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 16,
"msb": 30,
"name": "LENGTH",
"description": "Configured region length in bytes; software validates the end against RAM capacity.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 31,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
}
],
"review_source": "rtl/ip/usb/usb2_scheduler.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"endpoint.RAM_OUT": {
"access": "RW",
"description": "Ram out. The field descriptions and operation sequence define its use.",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 2,
"msb": 13,
"name": "BASE",
"description": "12-bit packet-RAM base slice carried into the hardware work descriptor.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 14,
"msb": 15,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 16,
"msb": 30,
"name": "LENGTH",
"description": "Configured region length in bytes; software validates the end against RAM capacity.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 31,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
}
],
"review_source": "rtl/ip/usb/usb2_scheduler.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"endpoint.DESC_IN": {
"access": "RW",
"description": "Desc in. The field descriptions and operation sequence define its use."
},
"endpoint.DESC_OUT": {
"access": "RW",
"description": "Desc out. The field descriptions and operation sequence define its use."
},
"endpoint.COMMAND": {
"access": "RW",
"description": "Command. The field descriptions and operation sequence define its use."
},
"endpoint.STATUS": {
"access": "RO",
"description": "Current status; see the field definitions and functional sequence.",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ACTIVE",
"description": "Command has been accepted; cleared when completion is published.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "DONE",
"description": "Completion has been published.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "FAULT",
"description": "The completed operation failed.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 4,
"msb": 7,
"name": "RESULT",
"description": "0: success; 1: NAK; 2: STALL; 3: timeout; 4: CRC; 5: protocol; 6: overflow; 7: canceled. On a scheduler fault, the low fault-code nibble is reported.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 8,
"msb": 8,
"name": "IN_TOGGLE",
"description": "IN completion toggle observation; RESET_TOGGLE clears it.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 9,
"msb": 9,
"name": "OUT_TOGGLE",
"description": "OUT completion toggle observation; RESET_TOGGLE clears it.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 10,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
}
],
"review_source": "rtl/ip/usb/usb2_scheduler.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"endpoint.BYTES_IN": {
"access": "RO",
"description": "Bytes in. The field descriptions and operation sequence define its use."
},
"endpoint.BYTES_OUT": {
"access": "RO",
"description": "Bytes out. The field descriptions and operation sequence define its use."
},
"channel.CFG": {
"access": "RW",
"description": "Cfg. The field descriptions and operation sequence define its use."
},
"channel.TARGET": {
"access": "RW",
"description": "Target. The field descriptions and operation sequence define its use."
},
"channel.INTERVAL": {
"access": "RW",
"description": "Interval. The field descriptions and operation sequence define its use."
},
"channel.RAM": {
"access": "RW",
"description": "Ram. The field descriptions and operation sequence define its use.",
"fields": [
{
"lsb": 0,
"msb": 1,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 2,
"msb": 13,
"name": "BASE",
"description": "12-bit packet-RAM base slice carried into the hardware work descriptor.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 14,
"msb": 15,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 16,
"msb": 30,
"name": "LENGTH",
"description": "Configured region length in bytes; software validates the end against RAM capacity.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 31,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
}
],
"review_source": "rtl/ip/usb/usb2_scheduler.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"channel.DESC": {
"access": "RW",
"description": "Desc. The field descriptions and operation sequence define its use."
},
"channel.COMMAND": {
"access": "RW",
"description": "Command. The field descriptions and operation sequence define its use."
},
"channel.STATUS": {
"access": "RO",
"description": "Current status; see the field definitions and functional sequence.",
"fields": [
{
"lsb": 0,
"msb": 0,
"name": "ACTIVE",
"description": "Command has been accepted; cleared when completion is published.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 1,
"msb": 1,
"name": "DONE",
"description": "Completion has been published.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 2,
"msb": 2,
"name": "FAULT",
"description": "The completed operation failed.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 3,
"msb": 3,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 4,
"msb": 7,
"name": "RESULT",
"description": "0: success; 1: NAK; 2: STALL; 3: timeout; 4: CRC; 5: protocol; 6: overflow; 7: canceled. On a scheduler fault, the low fault-code nibble is reported.",
"reset": "Register reset applies",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
},
{
"lsb": 8,
"msb": 31,
"name": "Reserved",
"description": "No defined software function. Preserve zero when writing.",
"reset": "0",
"expression": "rtl/ip/usb/usb2_scheduler.sv"
}
],
"review_source": "rtl/ip/usb/usb2_scheduler.sv",
"review_notes": "Reviewed against the pinned implementation: explicit slices, write masks and consumer use; 2026-09-06.",
"reset": "0"
},
"channel.BYTES": {
"access": "RO",
"description": "Bytes. The field descriptions and operation sequence define its use."
}
}
}