Welcome to Libre-SOC

We're building a chip. A fast chip. A safe chip. A trusted chip.

A chip with lots of peripherals. And a VPU. And a 3D GPU...

Oh and here, have the source code...

Why should I care?

With Libre-SOC, you can take complex algorithms usually intended for power hungry servers with big fat GPUs, and run them on tiny devices like smartwatches, cellphones, and pocket drones without changing your code at all.

Hasn't Somebody Already Done This?

To the best of our knowledge, no. The closest systems would be ARM Cortex devices which currently offer mediocre GPU and OpenCL support. Often times, it is quite difficult for customers to get their hands on the drivers and install them due to their locked down nature. Libre-SOC is providing our own Free/Libre drivers. Easy as 1, 2, 3!

Does Open Hardware Really Work?

A few names come to mind:

Learn more

Our Team

We are proud of our talented and diverse team.

Our sponsors and partners

  • Purism donates to us through NLNet charitable gifting
  • Raptor CS has given us access to a powerful 18-core 128 GB RAM TALOS II workstation, online.
  • Raptor Engineering is providing additional assistance including access to an LPC interface (more to come)
  • MarketNext is helping us connect to developer resources in Emerging markets, for completion of NLNet-funded tasks. See the upcoming Hackathon, deadline May 15th
  • The PowerPC Notebook Project
  • RED Semiconductor is the commercial realisation of Libre-SOC technology that respects and actively supports Libre principles in its business objectives.
  • fed4fire for supercomputer access for verilator simulations, with thanks to Ghent University / IMEC.

Status and TODO

This section covers more future tasks. A progress report is available at the 3d gpu page.

Date Task bug
Oct 2020 Integer OpenPOWER ISA v3.0 implemented Libre-SOC bug #383
Sep 2020 ECP5 FPGA running basic bare metal Libre-SOC bug #22
TODO 180nm GDS-II IMEC tapeout Jun 9th Libre-SOC bug #199
TODO Complete MMU for GNU/Linux OSes Libre-SOC bug #51
TODO ISA Simulators Libre-SOC bug #241
TODO power-gem5 Simulator Libre-SOC bug #581
TODO binutils support for SVP64 Libre-SOC bug #550
TODO gcc support for SVP64 Libre-SOC bug #558
TODO svp64 Vectorisation Libre-SOC bug #583
TODO In-order execution engine
TODO out-of-order execution engine Libre-SOC bug #81
TODO Video Instructions and libraries Libre-SOC bug #137
TODO IEEE754 FP HDL Library Libre-SOC bug #48
TODO Kazan 3D Vulkan Driver Libre-SOC bug #54
TODO MESA 3D Vulkan Driver Libre-SOC bug #251
TODO 3D instructions Libre-SOC bug #252
TODO cryptographic bitmanip instructions
TODO crypto router asic (130nm?) Libre-SOC bug #589
TODO Kestrel BMC Port
TODO Debug Working Group (JTAG, DMI, FSI)

How Can I Help?

If you would like to fund us, see funding. We currently have some funding and always appreciate more! If you are a Corporation or an individual you can donate tax-free to NLNet, and they can in turn gift our developers. Contact lkcl@lkcl.net for more information.

How Can I Help as a Developer?

If you want to write code with us (and receive donations from NLNet for doing so), keep reading. If you want to learn so that you can write code with us, see "How can I learn" section, below. If there is anything else, just get in touch on the list, there is plenty to do.

  1. First, join the mailing list, introduce yourself (people will happily say "hello" back") and the Freenode IRC channel #libre-soc. Read through recent posts and the charter, ask questions if you have any and let everyone know, on the list that you're happy with it and agree to it.
  2. The next thing you should do is read through the bugs list and see if there are any bugs that pique your interest. A fascinating way to do that is to view the dependency graph
  3. After that, go ahead and take a look at the git repositories.
  4. If you plan to do HDL work, you should familiarize yourself with our HDL workflow. If you would like to help with the ASIC layout, see coriolis2
  5. We do have funding available (see nlnet) upon completion of issues - we are also working on procuring more funding which gets the project to nanometre scale tapeout.
  6. After all this, if you feel that Libre-SOC is a something that you would like to contribute to, add yourself to the current_members page, fill in some information about yourself, and join the mailing list and say hello.

Also note that you can edit this wiki. You can experiment in the Sandbox.

Quick peek at the code

Here is an example process of how to play with the soc code. The last step you will have needed to install yosys:

pip3 install virtualenv requests
mkdir ~/.virtualenvs && cd ~/.virtualenvs
python3 -m venv libresoc
source ~/.virtualenvs/libresoc/bin/activate

cd ~; mkdir libresoc; cd libresoc
git clone https://git.libre-soc.org/git/nmigen.git
git clone https://git.libre-soc.org/git/nmigen-soc.git
git clone https://git.libre-soc.org/git/nmutil.git
git clone https://git.libre-soc.org/git/openpower-isa.git
git clone https://git.libre-soc.org/git/c4m-jtag.git
git clone https://git.libre-soc.org/git/ieee754fpu.git
git clone https://git.libre-soc.org/git/soc.git

cd nmigen; python setup.py develop; cd ..
cd nmigen-soc; python setup.py develop; cd ..
cd c4m-jtag; python setup.py develop; cd ..
cd nmutil; make develop; cd ..
cd openpower-isa; make develop; cd ..
cd ieee754fpu; make develop; cd ..
cd soc; make gitupdate; make develop

python3 src/soc/decoder/power_decoder.py
yosys -p "read_ilang decoder.il; show dec31" 

The full install process may be automated using scripts found here: https://git.libre-soc.org/?p=dev-env-setup.git;a=summary which you can clone with:

git clone https://git.libre-soc.org/git/dev-env-setup.git

How can I learn?

The whole purpose of this project is to be a learning environment as well as an actual business. If you want to learn how to do ASIC design, with a view to contributing or starting your own ASIC business, start here: tutorial. Yes, really: do not let anyone tell you that you can't learn this stuff too.

Along the way, if you find any resources or links that you found particularly helpful, please add them to that page so that other people can also benefit (and you have a place to remember them, too).

Needed Skills

Most labor is currently being applied to developing the GPU portion of the Libre-SOC.

Our highest priority short-term and medium-term: we need HDL engineers. Particularly those familiar with nMigen or just python. Most of the techniques being used require software engineering skills (OO design, polymorphism) than they do more traditional HDL programming skills. Basically if you have experience in 2 of the following you'll do fine: python, nmigen, verilog/VHDL/gate-level design. See HDL workflow

We also need to find a c++ engineer with compiler experience to work on a MESA 3D driver. This will begin life similar to SwiftShader however retaining the vectorisation and predication intrinsics then adding hardware accelerated opcodes (all of which SwiftShader lacks)

Also, individuals with experience in formal mathematical verification are quite welcome.