<<<
:sectnums:
==== Bootloader ROM (BOOTROM)

[cols="<3,<3,<4"]
[grid="none"]
|=======================
| Hardware source files:  | neorv32_boot_rom.vhd         | default platform-agnostic bootloader ROM
|                         | neorv32_bootloader_image.vhd | memory image (VHDL package)
| Software driver files:  | none                         | _implicitly used_
| Top entity ports:       | none                         |
| Configuration generics: | `BOOT_MODE_SELECT`           | implement BOOTROM when `BOOT_MODE_SELECT` = 0; see <<_boot_configuration>>
| CPU interrupts:         | none                         |
|=======================

**Key Features**

* Burst-capable tightly-coupled on-chip ROM
* Accessible at the byte level
* Can be mapped to blockRAM primitives
* Pre-initialized with default NEORV32 bootloader


**Overview**

The boot ROM contains the pre-compiled executable image of the default NEORV32 <<_bootloader>>. When the
<<_boot_configuration>> is set to _bootloader_ mode (0) via the `BOOT_MODE_SELECT` generic, the
boot ROM is automatically enabled and the CPU boot address is adjusted to the base address of the boot ROM.
Note that the entire boot ROM is read-only.

.Bootloader Image
[IMPORTANT]
The bootloader ROM is initialized during synthesis with the default bootloader image
(`rtl/core/neorv32_bootloader_image.vhd`). The physical size of the ROM is automatically
adjusted to the next power of two of the image size. However, note that the BOOTROM is
constrained to a maximum size of 64kB.
