Skip to content
Ewen McNeill edited this page Sep 6, 2018 · 17 revisions

All LiteX SoCs need some type of CPU to operate correctly. Most use an "Soft CPU" embedded in the gateware for this purpose, but in some cases a host computer is used instead (for example this can be true in the PCIe card case).

Supported Soft CPUs

Currently the supported Soft CPUs are:

The lm32 is the better tested of the two (and also can be configured to be a smaller CPU core).

Pending Soft CPUs

Two RISC V based soft CPUs:

(Of these two, the vexriscv is slightly better tested, but both are work in progress.)

The RISC V soft CPUs support rv32i on smaller FPGAs, and rv32im on larger FPGAs -- the rv32im adds hardware multiplication and division (see RISC V ISA base and extensions on Wikipedia for more detail).

Other possible Soft CPUs to consider

LiteX CPU cores

The LiteX CPU core definitions are the definitive list of possibly supported CPUs, but some additional support may be needed in the litex-buildenv in order to actually use some of those CPU cores.

SoftCPU options

  • lm32 - LatticeMico32

    • Currently supported under MiSoC
    • Not upstream Linux, very old Linux port
    • Upstream GCC
    • Upstream Binutils
    • No current new activity
  • mor1k - OpenRISC

    • Currently supported under MiSoC
    • Upstream Linux
    • No upstream GCC. Needs clean room reimplementation.
    • Upstream Binutils
    • (maybe) Upstream clang?
    • Reasonable amount of activity.
  • ???? - RISC-V

    • picorv32
    • VexRiscv
    • Unknown Linux?
    • Upstream GCC
    • Upstream Binutils
    • Lots of current activity
  • J2 - J-Core / SH2

    • Is the implementation any good?
    • Some upstream Linux
    • Some upstream GCC
    • Some upstream Binutils?
    • Some activity?
  • ZPU -

    • Is the implementation any good?
    • Unknown Linux
    • Unknown upstream GCC
    • Unknown upstream Binutils
    • Not much activity
Clone this wiki locally