Immutable ROM FW Integration
OCAH contains three immutable ROM FW images: the SMC production ROM FW, the SEP production ROM FW, and the Key Manager application ROM FW. Each image has two integration contracts. The adopter connects and configures the corresponding ROM macro, and the final ROM FW image must be present before its processor leaves reset. Where ROM FW must initialize or access an adopter-owned peripheral outside OCAH, the image may also expose build-time integration hooks.
The firmware itself is described in the Programmer’s Guide appendices: the SMC Boot ROM, the SEP Boot ROM, and the Key Manager Application ROM.
1. Weak-symbol override method
An immutable ROM FW image may provide selected vendor-neutral integration hooks as weak symbols. Supply an adopter implementation as a strong definition of the same symbol before the final image is frozen. The strong implementation must program the same adopter-owned IP instantiated by the RTL integration, and its signature, ABI, return values, and documented semantics must match the weak declaration.
This mechanism applies only when the ROM FW needs to interact with a peripheral outside OCAH. It is a build-time image-composition mechanism, not a runtime extension mechanism. Include the adopter implementation in the final ROM FW build so that it replaces the weak definition at link time.
Inspect the final ELF or linker map after linking. For example,
riscv64-unknown-elf-nm must report each selected implementation as a strong
symbol rather than W; successful linking alone does not prove that the weak
default was replaced.
2. SMC ROM FW integration
Connect smc_rom_intf_req_o and smc_rom_intf_rsp_i to the adopter’s ROM
implementation. In the current four-core configuration, the request provides
the ROM clock, enable, and 14-bit 64-bit-word address, and the response returns
one 64-bit word. This is a direct memory interface, not AXI-Lite. The 128 KiB
ROM FW image must be present before the first boot; its build is under
hw/sys/smc/bootrom/prod/.
Connect the ROM macro configuration input reached as rom_cfg_i and
mem_cfg_i according to the selected macro’s contract. OCAH forwards these 11
bits without assigning technology-specific semantics; the reference
smc_ip_integration.sv ties them to zero. Set the eFuse shadow value that
drives the CPU’s rom_flip_endianness_i path to match the byte order of the
image and ROM macro. Deasserted passes each 64-bit read word unchanged;
asserted reverses its eight bytes.
| Hook | Weak default | Rationale | Override and integration action |
|---|---|---|---|
|
Returns |
PLL implementation is technology- and vendor-specific, so OCAH does not include a vendor-specific PLL driver. |
Override when |
|
Permit the ROM FW to boot without an active I3C implementation; I3C data operations report a hardware error. |
OCAH includes an I3C implementation, but the adopter may select a different I3C target and driver for the final system. |
When the ROM FW must use an active I3C target, select the open HCI
implementation with |
3. SEP ROM FW integration
The SEP exposes the sep_boot_rom memory interface for its production ROM FW
image. The detailed ROM-macro configuration, image-loading contract, and
adopter override inventory are not yet documented here.
| Hook | Status |
|---|---|
To be documented |
No adopter override requirement is defined here yet. |
4. Key Manager ROM FW integration
The Key Manager exposes the km_rom_mem interface through SEP for its
application ROM FW image. The detailed ROM-macro configuration, image-loading
contract, and adopter override inventory are not yet documented here.
| Hook | Status |
|---|---|
To be documented |
No adopter override requirement is defined here yet. |