soc: allow creating SoC without BIOS.
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 6 Mar 2020 19:05:27 +0000 (20:05 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 6 Mar 2020 19:05:27 +0000 (20:05 +0100)
commite801dc0261d7101b148135933f441ed82ca61da8
treea6ddbc96c0d83ac980ea4c758b5d41c078ac56e2
parent5ded14476267fc5f7782574367966a3ce5ba7d86
soc: allow creating SoC without BIOS.

By default the behaviour is unchanged and the SoC will provide a ROM:
./arty.py

Bus Regions: (4)
rom                 : Origin: 0x00000000, Size: 0x00008000, Mode: R, Cached: True Linker: False
sram                : Origin: 0x01000000, Size: 0x00001000, Mode: RW, Cached: True Linker: False
main_ram            : Origin: 0x40000000, Size: 0x10000000, Mode: RW, Cached: True Linker: False
csr                 : Origin: 0x82000000, Size: 0x00010000, Mode: RW, Cached: False Linker: False

The integrated rom can be disabled with:
./arty.py --integrated-rom-size=0

but the SoC builder will check for a user provided rom, and if not provided will complains:
ERROR:SoC:CPU needs rom Region to be defined as Bus or Linker Region.

When a rom is provided, the CPU will use the rom base address as cpu_reset_address.

If the user just wants the CPU to start at a specified address without providing a rom,
the cpu_reset_address parameter can be used:

./arty.py --integrated-rom-size=0 --cpu-reset-address=0x01000000

If the provided reset address is not located in any defined Region, an error will
be produced:
ERROR:SoC:CPU needs reset address 0x00000000 to be in a defined Region.

When no rom is provided, the builder will not build the BIOS.
litex/soc/cores/cpu/__init__.py
litex/soc/integration/builder.py
litex/soc/integration/soc.py
litex/soc/integration/soc_core.py