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