Boot ROM
The SMC maps a 128 KiB read-only region at 0xC004_0000 through
0xC005_FFFF. The cold-reset CPU vector is 0xC004_0000.
1. ROM Architecture
In the current four-core implementation, the CPU reaches the ROM over its
internal TileLink memory path. smc_cpu_wrapper converts that path to the
macro-facing smc_rom_intf_req_o and smc_rom_intf_rsp_i interface. Requests carry a
clock, enable, and 14-bit 64-bit-word address; the write controls are tied to
read mode. Responses return one 64-bit word. The ROM macro boundary is not an
AXI-Lite interface and is separate from the CPU MMIO AXI and SMC peripheral
AXI-Lite paths.
2. Hardware Configuration and Integrity
OCAH4CORECluster_mems passes the 11-bit rom_cfg_i value unchanged to the
ROM wrapper’s mem_cfg_i, where it is cast to prim_rom_pkg::rom_cfg_t and
forwarded to prim_rom. The OCAH logic assigns no repair or technology-specific
meaning to those bits. The reference smc_ip_integration.sv ties the value to
zero.
On the response path, asserted rom_flip_endianness_i reverses the order of
the eight bytes in each 64-bit ROM word; deasserted passes the word through
unchanged. In smc.sv, this control comes from the ROM endianness bit in the
eFuse shadow-register output.
3. Boot Flow
The production ROM initializes SRAM and the C runtime, then services OCCP requests over target-mode I2C and I3C. The SMC Boot ROM appendix of the Programmer’s Guide describes the startup checks, lifecycle policy and boot-handoff commands.
The production ROM image fills the 128 KiB hardware region; its writable data
runs from SRAM at 0xC006_0000. The
SMC CPU
bring-up section of the Programmer’s Guide gives the linker layout and the
initialization it requires.
4. Firmware Reference
The production ROM firmware is documented in the SMC Boot ROM appendix of the Programmer’s Guide.