| 1 |
135 |
jt_eaton |
FuseSoC
|
| 2 |
|
|
=======
|
| 3 |
|
|
|
| 4 |
|
|
|
| 5 |
|
|
Introduction
|
| 6 |
|
|
------------
|
| 7 |
|
|
FuseSoC is a package manager and a set of build tools for HDL code.
|
| 8 |
|
|
|
| 9 |
|
|
It's main purpose is to increase reuse of IP cores and be an aid for creating, building and simulating SoC solutions.
|
| 10 |
|
|
|
| 11 |
|
|
The package manager part can be seen as an apt, portage, yum, dnf, pacman for FPGA/ASIC IP cores.
|
| 12 |
|
|
A simple ini file describes mainly which files the IP core contains, which other IP cores it depends on and where FuseSoC shall fetch the code.
|
| 13 |
|
|
|
| 14 |
|
|
|
| 15 |
|
|
A collection of cores together with a top-level is called a system, and systems can be simulated or passed through the FPGA vendor tools to build a loadable FPGA image.
|
| 16 |
|
|
|
| 17 |
|
|
Currently FuseSoc supports simulations with ModelSim, Icarus Verilog and Verilator. It also supports building FPGA images with Xilinx ISE and Altera Quartus
|
| 18 |
|
|
|
| 19 |
|
|
Cores
|
| 20 |
|
|
-----
|
| 21 |
|
|
FuseSoC does not contain any RTL code or core description files. The official repository for FuseSoC compatible cores is https://github.com/openrisc/orpsoc-cores
|
| 22 |
|
|
|
| 23 |
|
|
Quick start
|
| 24 |
|
|
-----------
|
| 25 |
|
|
Install by cloning the repo. cd into fusesoc and run:
|
| 26 |
|
|
autoreconf -i && ./configure && make
|
| 27 |
|
|
sudo make install
|
| 28 |
|
|
|
| 29 |
|
|
Clone orpsoc-cores (https://github.com/openrisc/orpsoc-cores)
|
| 30 |
|
|
|
| 31 |
|
|
Make a new directory that will become your working directory. Inside of that directory create a file called fusesoc.conf with the following contents
|
| 32 |
|
|
|
| 33 |
|
|
[main]
|
| 34 |
|
|
cores_root=/path/to/orpsoc-cores/cores
|
| 35 |
|
|
systems_root=/path/to/orpsoc-cores/systems
|
| 36 |
|
|
|
| 37 |
|
|
This will let FuseSoC know where to find it's cores. (Note: You can add more cores_root directories by adding --cores-root= on your fusesoc command line)
|
| 38 |
|
|
|
| 39 |
|
|
Test your installation by running 'fusesoc list-cores'. This should return the list of cores that FuseSoC has found
|
| 40 |
|
|
|
| 41 |
|
|
If you have any of the supported simulators installed, you can try to run a simulation on one of the cores as well.
|
| 42 |
|
|
For example, 'fusesoc sim --sim=icarus wb_sdram_ctrl' will run a regression test on the core wb_sdram_ctrl with icarus verilog
|
| 43 |
|
|
If you also have Altera Quartus installed, you can try to build an example system. For example, 'fusesoc build de0_nano'
|
| 44 |
|
|
|
| 45 |
|
|
fusesoc --help will give you more information on commands and switches
|
| 46 |
|
|
|
| 47 |
|
|
Further reading
|
| 48 |
|
|
---------------
|
| 49 |
|
|
A few tutorials using FuseSoC are available, but they are unfortunately all written before fusesoc was renamed from orpsocv3
|
| 50 |
|
|
|
| 51 |
|
|
http://www.elec4fun.fr/2011-03-30-10-16-30/2012-08-22-20-50-31/or1200-barebox-on-de1 (
|
| 52 |
|
|
http://designandmake.designspark.com/blog/booting-linux-on-a-de0-nano-with-orpsoc
|