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
|