(no commit message)
[libreriscv.git] / index.mdwn
1 <div class="jumbotron">
2 <h1 class="display-5">Welcome to Libre-SOC</h1>
3 <blockquote>
4 <p>We're building a chip. A fast chip. A safe chip. A trusted chip.
5 </p>
6
7 <p>A chip with lots of peripherals. And it's a VPU. And it's a 3D GPU...
8 </p>
9
10 <p>Oh and here, have the
11 <a href="http://git.libre-soc.org">Libre-SOC source code</a>...
12 </p>
13 </blockquote>
14 <hr class="my-4">
15
16 <h2 class="display-5">Why should I care?</h2>
17
18 With Libre-SOC, you can take complex algorithms usually intended for
19 power hungry servers with big fat GPUs, and run them on tiny devices
20 like smartwatches, cellphones, and pocket drones without changing your
21 code at all.
22
23 <hr class="my-4">
24
25 <h2 class="display-5">Hasn't Somebody Already Done This?</h2>
26
27 To the best of our knowledge, no. The closest systems would be ARM Cortex
28 devices which currently offer mediocre GPU and OpenCL support. Often
29 times, it is quite difficult for customers to get their hands on the
30 drivers and install them due to their locked down nature. Libre-SOC is
31 providing our own Free/Libre drivers. Easy as 1, 2, 3!
32
33 <hr class="my-4">
34
35 <h2 class="display-5">Does Open Hardware Really Work?</h2>
36 <p>A few names come to mind:</p>
37
38 <ul>
39 <li><a href="https://www.raspberrypi.org">Raspberry Pi</a></li>
40 <li><a href="https://www.arduino.cc">Arduino</a></li>
41 <li><a href="https://www.raptorcs.com">Raptor Computing Systems</a></li>
42 <li><a href="https://www.bitcraze.io">CrazyFlie</a></li>
43 <li><a href="https://www.scopefun.com">ScopeFun</a></li>
44 </ul>
45
46 <p class="lead">
47 <a class="btn btn-primary btn-lg" href="https://libre-soc.org/why_a_libresoc/" role="button">Learn more</a>
48
49 </div>
50
51
52
53 # Our Team
54
55 We are proud of our talented and diverse [team](about_us).
56
57 # Our sponsors and partners
58
59 * [NLnet](https://nlnet.nl) who have very kindly sponsored us with
60 over EUR 350,000 in various separate grants.
61 * [NGI POINTER](https://www.ngi.eu/ngi-projects/ngi-pointer/) who have
62 sponsored us with a EUR 200,000 Horizon 2020 Grant.
63 * [Mythic Beasts](http://mythic-beasts.com) who don't overcommit on
64 their VPS allocations (no memory ballooning), and put servers on
65 the fastest backbone Internet points.
66 * [Purism](http://puri.sm) donates to us through [NLNet](nlnet)
67 charitable gifting
68 * [Raptor CS](http://raptorcs.com) has given us access to a powerful
69 18-core 128 GB RAM TALOS II workstation, online.
70 * [Raptor Engineering](https://raptorengineering.com) is providing
71 additional assistance including access to an [[shakti/m_class/LPC]]
72 interface (more to come)
73 * [MarketNext](http://marketnext.org) is helping us connect to developer
74 resources in Emerging markets, for completion of NLNet-funded tasks.
75 See the upcoming [Hackathon](https://www.youtube.com/embed/Px6eakWja3Q"),
76 deadline May 15th
77 * The [[PowerPC Notebook]] Project
78 * [RED Semiconductor](http://redsemiconductor.com) is the commercial realisation of Libre-SOC technology that respects and actively supports Libre principles in its business objectives.
79 * [[fed4fire]] for supercomputer access for verilator simulations,
80 with thanks to Ghent University / IMEC.
81
82 # Status and TODO <a name="TODO"></a>
83
84 This section covers more future tasks. A progress report
85 is available at the [[3d_gpu]] page.
86
87 | Date | Task | bug |
88 | -------- | ----------------------------------------- | ----- |
89 | Oct 2020 | Integer OpenPOWER ISA v3.0 implemented | [[!bug 383]] |
90 | Sep 2020 | ECP5 FPGA running basic bare metal | [[!bug 22]] |
91 | Jun 2021 | 180nm GDS-II IMEC tapeout Jun 9th | [[!bug 199]] |
92 | TODO | Complete MMU for GNU/Linux OSes | [[!bug 51]] |
93 | TODO | ISA Simulators | [[!bug 241]] |
94 | TODO | power-gem5 Simulator | [[!bug 581]] |
95 | TODO | binutils support for SVP64 | [[!bug 550]] |
96 | TODO | gcc support for SVP64 | [[!bug 558]] |
97 | TODO | [[openpower/sv/svp64]] Vectorisation | [[!bug 583]] |
98 | TODO | In-order execution engine | |
99 | TODO | out-of-order execution engine | [[!bug 81]] |
100 | TODO | Video Instructions and libraries | [[!bug 137]] |
101 | TODO | IEEE754 FP HDL Library | [[!bug 48]] |
102 | TODO | Kazan 3D Vulkan Driver | [[!bug 54]] |
103 | TODO | MESA 3D Vulkan Driver | [[!bug 251]] |
104 | TODO | 3D instructions | [[!bug 252]] |
105 | TODO | cryptographic [[openpower/sv/bitmanip]] instructions | |
106 | TODO | [[crypto_router_asic]] (130nm?) | [[!bug 589]] |
107 | TODO | Kestrel BMC Port | |
108 | TODO | Debug Working Group (JTAG, DMI, FSI) | |
109
110 # How Can I Help?
111
112 If you would like to fund us, see [[funding]]. We currently have some
113 funding and always appreciate more! If you are a Corporation or an
114 individual you can donate tax-free to NLNet, and they can in turn gift
115 our developers. Contact lkcl@lkcl.net for more information.
116
117 # How Can I Help as a Developer? <a name="help_as_developer"></a>
118
119 If you want to write code with us (and receive donations from NLNet
120 for doing so), keep reading. If you want to *learn*
121 so that you can write code with us, see "How can I learn" section,
122 below. If there is anything else,
123 just get in touch on the list, there is plenty to do.
124
125 1. First, join the
126 [mailing list](http://lists.libre-soc.org/mailman/listinfo/libre-soc-dev),
127 introduce yourself (people will happily say "hello" back) and
128 the Libera IRC channel
129 (#libre-soc at irc.libera.chat port 6697, see
130 https://libera.chat/guides/connect), [logs here](https://libre-soc.org/irclog/latest.log.html).
131 Read through
132 [recent posts](http://lists.libre-soc.org/pipermail/libre-soc-dev/)
133 and the [[charter]], ask questions if you have any and let everyone know,
134 on the list that you're happy with it and agree to it.
135 2. The next thing you should do is read through the
136 [bugs list](http://bugs.libre-soc.org) and
137 see if there are any bugs that pique your interest.
138 A fascinating way to do that is to view the
139 [dependency graph](https://bugs.libre-soc.org/showdependencygraph.cgi?id=1&display=web&rankdir=LR)
140 3. After that, go ahead and take a look at the
141 [git repositories](https://git.libre-soc.org).
142 4. If you plan to do HDL work, you should familiarize yourself with our
143 [[HDL_workflow]]. If you would like to help with the ASIC layout,
144 see [[HDL_workflow/coriolis2]]
145 5. We do have funding available (see [[nlnet]]) upon completion of issues -
146 we are also working on procuring more funding which gets the project to
147 nanometre scale tapeout.
148 6. After all this, if you feel that Libre-SOC is a something
149 that you would like to contribute to, add yourself to the
150 [current_members](about_us) page, fill in some information about yourself,
151 and join the mailing list and say hello.
152
153 Also note that you can edit this wiki. You can experiment in the [[Sandbox]].
154
155 ## Quick peek at the code
156
157 Here is an example process of how to play with the soc code. The last
158 step you will have needed to install yosys:
159
160 pip3 install virtualenv requests
161 mkdir ~/.virtualenvs && cd ~/.virtualenvs
162 python3 -m venv libresoc
163 source ~/.virtualenvs/libresoc/bin/activate
164
165 cd ~; mkdir libresoc; cd libresoc
166 git clone https://git.libre-soc.org/git/nmigen.git
167 git clone https://git.libre-soc.org/git/nmigen-soc.git
168 git clone https://git.libre-soc.org/git/nmutil.git
169 git clone https://git.libre-soc.org/git/openpower-isa.git
170 git clone https://git.libre-soc.org/git/c4m-jtag.git
171 git clone https://git.libre-soc.org/git/ieee754fpu.git
172 git clone https://git.libre-soc.org/git/soc.git
173
174 cd nmigen; python setup.py develop; cd ..
175 cd nmigen-soc; python setup.py develop; cd ..
176 cd c4m-jtag; python setup.py develop; cd ..
177 cd nmutil; make develop; cd ..
178 cd openpower-isa; make develop; cd ..
179 cd ieee754fpu; make develop; cd ..
180 cd soc; make gitupdate; make develop
181
182 python3 src/soc/decoder/power_decoder.py
183 yosys -p "read_ilang decoder.il; show dec31"
184
185 The full install process may be automated using scripts found
186 here: <https://git.libre-soc.org/?p=dev-env-setup.git;a=summary>
187 which you can clone with:
188
189 git clone https://git.libre-soc.org/git/dev-env-setup.git
190
191 A convenient page which gives step-by-step instructions is:
192 [[HDL_workflow/devscripts]]
193
194 ## How can I learn?
195
196 The whole purpose of this project is to be a learning environment as well
197 as an actual business. If you want to learn how to do ASIC design, with
198 a view to contributing or starting your own ASIC business, start here:
199 [[3d_gpu/tutorial]]. Yes, really: do not let anyone tell you that you
200 can't learn this stuff too.
201
202 Along the way, if you find any [[resources]] or links that you found
203 particularly helpful, please add them to that page so that other people
204 can also benefit (and you have a place to remember them, too).
205
206 ## Needed Skills
207
208 Most labor is currently being applied to developing the GPU portion of
209 the Libre-SOC.
210
211 Our highest priority short-term and medium-term: we need HDL engineers.
212 Particularly those familiar
213 with nMigen or just python. Most of the techniques being used require
214 software engineering skills (OO design, polymorphism) than they do more
215 traditional HDL programming skills. Basically if you have experience in 2
216 of the following you'll do fine: python, nmigen, verilog/VHDL/gate-level
217 design. See [[HDL_workflow]]
218
219 We also need to find a c++ engineer with compiler experience to work on
220 a MESA 3D driver. This will begin life similar to SwiftShader however
221 retaining the vectorisation and predication intrinsics then adding
222 hardware accelerated opcodes (all of which SwiftShader lacks)
223
224 Also, individuals with experience in formal mathematical verification
225 are quite welcome.
226
227 # Documentation
228
229 - [Source Code](/docs/)
230 - [Architecture](3d_gpu/architecture)