SoC design for Milkymist One - LM32, DDR SDRAM, 2D TMU, PFPU
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
boards lm32: move into submodule Dec 17, 2012
cores pfpu/test: keep up with pipeline length changes May 13, 2013
doc Updated SoC diagram (Cristian Paul Peñaranda Rojas) Apr 15, 2011
softusb-input Merge branch 'hid' May 14, 2012
software software/libbase: memcpy: same with 2 alignment May 27, 2012
tools Bump version numbers Mar 21, 2012
.gitignore gitignore file Apr 17, 2011
.gitmodules lm32: move into submodule Dec 17, 2012
LICENSE.FDL merged (original) Nov 5, 2009
LICENSE.GD merged (original) Nov 5, 2009
LICENSE.LGPL merged (original) Nov 5, 2009
Makefile Makefile: fix 'make clean' rules to use BOARD instead of hardcoded mi… Jan 31, 2013
README Update README Feb 18, 2014


[> Milkymist(tm) System-on-Chip

This is the complete core source code and documentation for the opensource
system-on-chip used in the Milkymist(tm) One video synthesizer.

For more information see

[> Directory Structure
 /cores/         Cores library, with Verilog sources, test benches and documentation.
 /boards/        Top-level design files, constraint files and glue logic.
 /software/      Basic software for the SoC: libraries + BIOS.
 /softusb-input/ AVR firmware to implement input device support on the softusb core.
 /doc/           System documentation.
 /tools/         Small tools for developers.

[> Building tools
You will need:
 - GNU Make,
 - Bourne Again Shell (bash),
 - Xilinx ISE for synthesizing the FPGA bitstream (WebPack is enough),
 - LatticeMico32 toolchain for building the SoC software,
 - AVR toolchain for building the USB firmware,
 - xxd,
 - native Clang/LLVM toolchain,
 - libGD.

[> Development
For Verilog simulations, the scripts (usually Makefiles) shipped with the test benches
take care of running the simulator.

Depending on the IP core, one or more of these free simulators are supported:
 - Icarus Verilog (
 - GPL Cver (
 - Verilator (

For firmware development, a serial console program compatible with automatic firmware
loading over the serial line (SFL boot) is provided in the /tools/ directory.

[> Credits
Most of the work is (C) Copyright 2007-2012 Sebastien Bourdeauducq.
For this work:
 - The gateware design is licensed under GNU GPLv3.
   See the LICENSE.GPL file for more information.
 - The software (software/*) is licensed under GNU GPLv3, except the SDRAM
   initialization runtime (libHPDMC) which is under GNU LGPLv3.
 - The documentation is licensed under FDL.

Milkymist is a trademark of Sebastien Bourdeauducq.

The SoC design uses:
 - the Mico32 soft-processor by Lattice Semiconductor. See the LICENSE.LATTICE file.
 - a modified version of wb_conbus by Johny Chi and Rudolf Usselmann. See LICENSE.LGPL.

The directory organization and build scripts were inspired by soc-lm32 by the German
hackerspace Das Labor. Some of the UART and timer code also comes from there.

The software and software library include the SoftFloat IEC/IEEE Floating-point
Arithmetic Package, Release 2, written by John R. Hauser.
See source files headers for license.

Special thanks to the people who did significant things which made this project possible:
 - Wolfgang Spraul and Adam Wang for the manufacturing,
 - Werner Almesberger for USB, MIDI and many other improvements, 
 - Michael Walle for QEMU, UrJTAG and OCD,
 - Joachim Steiger for the case design,
 - Yanjun Luo for the JTAG daughterboard design,
 - Yann Sionneau for his work on RTEMS,
 - Lattice Semiconductor for the Mico32 processor,
 - Shawn Tan for the AEMB processor (used earlier),
 - Stephen Williams for Icarus Verilog,
 - Pragmatic C Software for GPL Cver,
 - Wilson Snyder for Verilator,
 - Henry from Xilinx,
 - Das Labor for providing neat build scripts for SoCs (soc-lm32).