(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.</p>
5
6 <p>A chip with lots of peripherals. And a VPU. And 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
72
73 | Date | Task | bug |
74 | -------- | ----------------------------------------- | ----- |
75 | Oct 2020 | Integer OpenPOWER ISAv3.0 implemented | |
76 | Sep 2020 | ECP5 FPGA running basic bare metal | |
77 | TODO | 180nm GDS-II IMEC tapeout Jun 9th | |
78 | TODO | Complete MMU for GNU/Linux OSes | |
79 | TODO | ISA Simulators | |
80 | TODO | binutils support for SVP64 | |
81 | TODO | gcc support for SVP64 | |
82 | TODO | SVP64 Vectorisation | |
83 | TODO | Video Instructions and libraries | |
84 | TODO | Video Instructions and libraries | |
85 | TODO | IEEE754 FP HDL Library | |
86 | TODO | MESA 3D Vulkan Driver | |
87 | TODO | 3D instructions | |
88 | TODO | cryptographic and bitmanip instructions | |
89 | TODO | Crypto-router ASIC (130nm?) | |
90 | TODO | Kestrel BMC Port | |
91 | TODO | Debug Working Group (JTAG, DMI, FSI) | |
92
93 # How Can I Help?
94
95 If you would like to fund us, see [[funding]]. We currently have some
96 funding and always appreciate more! If you are a Corporation or an
97 individual you can donate tax-free to NLNet, and they can in turn gift
98 our developers. Contact lkcl@lkcl.net for more information.
99
100 # How Can I Help as a Developer? <a name="help_as_developer"></a>
101
102 If you want to write code with us (and receive donations from NLNet
103 for doing so), keep reading. If you want to *learn*
104 so that you can write code with us, see "How can I learn" section,
105 below. If there is anything else,
106 just get in touch on the list, there is plenty to do.
107
108 1. First, join the
109 [mailing list](http://lists.libre-soc.org/mailman/listinfo/libre-soc-dev),
110 introduce yourself (people will happily say "hello" back") and
111 the Freenode IRC channel
112 [#libre-soc](https://libre-soc.org/irclog/latest.log.html).
113 Read through
114 [recent posts](http://lists.libre-soc.org/pipermail/libre-soc-dev/)
115 and the [[charter]], ask questions if you have any and let everyone know,
116 on the list that you're happy with it and agree to it.
117 2. The next thing you should do is read through the
118 [bugs list](http://bugs.libre-soc.org) and
119 see if there are any bugs that pique your interest.
120 A fascinating way to do that is to view the
121 [dependency graph](https://bugs.libre-soc.org/showdependencygraph.cgi?id=1&display=web&rankdir=LR)
122 3. After that, go ahead and take a look at the
123 [git repositories](https://git.libre-soc.org).
124 4. If you plan to do HDL work, you should familiarize yourself with our
125 [[HDL_workflow]]. If you would like to help with the ASIC layout,
126 see [[HDL_workflow/coriolis2]]
127 5. We do have funding available (see [[nlnet]]) upon completion of issues -
128 we are also working on procuring more funding which gets the project to
129 nanometre scale tapeout.
130 6. After all this, if you feel that Libre-SOC is a something
131 that you would like to contribute to, add yourself to the
132 [current_members](about_us) page, fill in some information about yourself,
133 and join the mailing list and say hello.
134
135 Also note that you can edit this wiki. You can experiment in the [[Sandbox]].
136
137 ## Quick peek at the code
138
139 Here is an example process of how to play with the soc code. The last
140 step you will have needed to install yosys:
141
142 pip3 install virtualenv requests
143 mkdir ~/.virtualenvs && cd ~/.virtualenvs
144 python3 -m venv libresoc
145 source ~/.virtualenvs/libresoc/bin/activate
146
147 cd ~; mkdir libresoc; cd libresoc
148 git clone https://git.libre-soc.org/git/nmigen.git
149 git clone https://git.libre-soc.org/git/nmigen-soc.git
150 git clone https://git.libre-soc.org/git/nmutil.git
151 git clone https://git.libre-soc.org/git/openpower-isa.git
152 git clone https://git.libre-soc.org/git/c4m-jtag.git
153 git clone https://git.libre-soc.org/git/ieee754fpu.git
154 git clone https://git.libre-soc.org/git/soc.git
155
156 cd nmigen; python setup.py develop; cd ..
157 cd nmigen-soc; python setup.py develop; cd ..
158 cd c4m-jtag; python setup.py develop; cd ..
159 cd nmutil; make develop; cd ..
160 cd openpower-isa; make develop; cd ..
161 cd ieee754fpu; make develop; cd ..
162 cd soc; make gitupdate; make develop
163
164 python3 src/soc/decoder/power_decoder.py
165 yosys -p "read_ilang decoder.il; show dec31"
166
167 The full install process may be automated using scripts found
168 here: <https://git.libre-soc.org/?p=dev-env-setup.git;a=summary>
169 which you can clone with:
170
171 git clone https://git.libre-soc.org/git/dev-env-setup.git
172
173 ## How can I learn?
174
175 The whole purpose of this project is to be a learning environment as well
176 as an actual business. If you want to learn how to do ASIC design, with
177 a view to contributing or starting your own ASIC business, start here:
178 [[3d_gpu/tutorial]]. Yes, really: do not let anyone tell you that you
179 can't learn this stuff too.
180
181 Along the way, if you find any [[resources]] or links that you found
182 particularly helpful, please add them to that page so that other people
183 can also benefit (and you have a place to remember them, too).
184
185 ## Needed Skills
186
187 Most labor is currently being applied to developing the GPU portion of
188 the Libre-SOC.
189
190 Our highest priority short-term and medium-term: we need HDL engineers.
191 Particularly those familiar
192 with nMigen or just python. Most of the techniques being used require
193 software engineering skills (OO design, polymorphism) than they do more
194 traditional HDL programming skills. Basically if you have experience in 2
195 of the following you'll do fine: python, nmigen, verilog/VHDL/gate-level
196 design. See [[HDL_workflow]]
197
198 We also need to find a c++ engineer with compiler experience to work on
199 a MESA 3D driver. This will begin life similar to SwiftShader however
200 retaining the vectorisation and predication intrinsics then adding
201 hardware accelerated opcodes (all of which SwiftShader lacks)
202
203 Also, individuals with experience in formal mathematical verification
204 are quite welcome.
205
206 # Documentation
207
208 - [Source Code](/docs/)
209 - [Architecture](3d_gpu/architecture)