X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=README;h=562de2163a836bf95663616bb3dbf8a62d218255;hb=2eeccc50543f271f67cd1759ffdf551a8a726c73;hp=99d1748c1d43dde2a9bf7149611a652556b71965;hpb=9496fffbbff360122a3baad6add2c6e74bfae477;p=litex.git diff --git a/README b/README index 99d1748c..562de216 100644 --- a/README +++ b/README @@ -1,91 +1,143 @@ -[> Milkymist-NG system-on-chip ------------------------------- - -This is the next-generation Milkymist(tm) system-on-chip design, -introducing two key innovations: - * Built on the powerful Migen VLSI logic design system. - * Increased system memory performance thanks to a new architecture - (ASMI) containing a transaction-reordering and superscalar controller. - -The Milkymist-NG SoC supports the Milkymist One board. Obtain yours from: - http://milkymist.org - -Note that the -NG version is still experimental work in progress. For the -production version of Milkymist SoC, visit: - https://github.com/milkymist/milkymist - -[> Instructions (software) + __ _ __ _ __ + / / (_) /____ | |/_/ + / /__/ / __/ -_)> < + /____/_/\__/\__/_/|_| + Migen inside + + Build your hardware, easily! + Copyright 2012-2018 / EnjoyDigital + +[> Intro +-------- +LiteX is an alternative to MiSoC maintained and used by Enjoy-Digital to build +our cores, integrate them in complete SoC and load/flash them to the hardware +and experiment new features. (structure is kept close to MiSoC to ease +collaboration) + +Typical LiteX design flow: -------------------------- -1. Compile and install binutils. Take the latest version from GNU. - ./configure --target=lm32-elf + + +---------------+ + |FPGA toolchains| + +----^-----+----+ + | | + +--+-----v--+ + +-------+ | | + | Migen +--------> | + +-------+ | | Your design + | LiteX +---> ready to be used! + | | ++----------------------+ | | +|LiteX Cores Ecosystem +--> | ++----------------------+ +-^-------^-+ + (Eth, SATA, DRAM, USB, | | + PCIe, Video, etc...) + + + board target + file file + + +LiteX already supports various softcores CPUs: LM32, Mor1kx, PicoRV32, VexRiscv +and is compatible with the LiteX's Cores Ecosystem: + +- LiteDRAM: https://github.com/enjoy-digital/litedram +- LiteEth: https://github.com/enjoy-digital/liteeth +- LitePCIe: https://github.com/enjoy-digital/litepcie +- LiteSATA: https://github.com/enjoy-digital/litesata +- LiteUSB: https://github.com/enjoy-digital/litesata +- LiteSDCard: https://github.com/enjoy-digital/litesdcard +- LiteICLink: https://github.com/enjoy-digital/liteiclink +- LiteJESD204B: https://github.com/enjoy-digital/litejesd204b +- LiteVideo: https://github.com/enjoy-digital/litevideo +- LiteScope: https://github.com/enjoy-digital/litescope + + +[> Sub-packages +--------------- +gen: + Provides specific or experimental modules to generate HDL that are not integrated + in Migen. + +build: + Provides tools to build FPGA bitstreams (interface to vendor toolchains) and to + simulate HDL code or full SoCs. + +soc: + Provides definitions/modules to build cores (bus, bank, flow), cores and tools + to build a SoC from such cores. + +boards: + Provides platforms and targets for the supported boards. All Migen's platforms + can also be used in LiteX. + +[> Very Quick start guide (for newcomers) +----------------------------------------- +TimVideos.us has done an awesome job for setting up a LiteX environment easily in +the litex-buildenv repo: https://github.com/timvideos/litex-buildenv + +It's recommended for newcomers to go this way. Various FPGA boards are supported +and multiple examples provided! You can even run Linux on your FPGA using LiteX +very easily! + +Migen documentation can be found here: https://m-labs.hk/migen/manual + +FPGA lessons/tutorials can be found at: https://github.com/enjoy-digital/fpga_101 + +[> Medium Quick start guide with Conda +----------------------------------------- + +0. Get miniconda by following instructions at https://conda.io/miniconda.html + +1. Clone LiteX + git clone --recurse-submodules https://github.com/enjoy-digital/litex.git + +2. Create a LiteX environment from environment.yml + conda env create -f environment.yml + +3. Enter conda environment + conda activate litex + +4. Build the target of your board...: + Go to boards/targets and execute the target you want to build + + +[> Quick start guide (for advanced users) +----------------------------------------- +0. Install Python 3.5+ and FPGA vendor's development tools. + +1. Get litex_setup.py script and execute: + ./litex_setup.py init install + This will clone and install Migen, LiteX and LiteX's cores. + To update all repositories execute: + ./litex_setup.py update + +2. Compile and install binutils. Take the latest version from GNU. + mkdir build && cd build + ../configure --target=lm32-elf make make install - -2. Compile and install LLVM and Clang. - git clone git://github.com/milkymist/llvm-lm32.git - cd llvm-lm32/tools - git clone git://github.com/milkymist/clang-lm32.git clang - cd .. - mkdir build - cmake .. + +3. (Optional, only if you want to use a lm32 CPU in you SoC) + Compile and install GCC. Take gcc-core and gcc-g++ from GNU + (version 4.5 or >=4.9). + rm -rf libstdc++-v3 + mkdir build && cd build + ../configure --target=lm32-elf --enable-languages="c,c++" --disable-libgcc \ + --disable-libssp make make install -3. Build compiler-rt. - git clone git://github.com/milkymist/compiler-rt-lm32.git - cd compiler-rt-lm32 - make lm32 +4. Build the target of your board...: + Go to boards/targets and execute the target you want to build -4. Set the CRTDIR environment variable to where the libcompiler_rt.a is. - export CRTDIR=/path_to/compiler-rt-lm32/lm32/lm32 +5. ... and/or install Verilator and test LiteX on your computer: + Download and install Verilator: http://www.veripool.org/ + Install libevent-devel / json-c-devel packages + Go to boards/targets + ./sim.py -5. Build and flash the BIOS (part of this source distribution). - cd software/bios - make - make flash +6. Run a terminal program on the board's serial port at 115200 8-N-1. + You should get the BIOS prompt. -The second command requires UrJTAG and FJMEM. - -[> Instructions (gateware) --------------------------- -First, download and install Migen from: - https://github.com/milkymist/migen - -Once this is done, build the bitstream with: - make -This will generate the build/soc.bit programming file. -Use: - make load -to load it with UrJTAG. - -The SoC expects a bootloader to be located in flash at 0x860000, just -like the legacy SoC did. However, there is no binary compatibility and a -new BIOS needs to be built and flashed for the -NG SoC. - -Enjoy! - -[> Misc -------- -Code repository: - https://github.com/milkymist/milkymist-ng - -Send questions, comments and patches to devel [AT] lists.milkymist.org -We are also on IRC: #milkymist on the Freenode network. - -Milkymist-NG is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation, version 3 of the License. This program is -distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -The authors grant the additional permissions that the code can be used in -conjunction with the LatticeMico32 CPU core from Lattice. - -Unless otherwise noted, Milkymist-NG's source code is copyright (C) -2011-2012 Sebastien Bourdeauducq. Other authors retain ownership of their -contributions. If a submission can reasonably be considered independently -copyrightable, it's yours and I encourage you to claim it with -appropriate copyright notices. This submission then falls under the -"otherwise noted" category. All submissions must use a license compatible -with the GPL and the additional permissions above. +[> Contact +---------- +E-mail: florent [AT] enjoy-digital.fr