(no commit message)
[libreriscv.git] / resources.mdwn
1 # Resources and Specifications
2
3 This page aims to collect all the resources and specifications we need
4 in one place for quick access. We will try our best to keep links here
5 up-to-date. Feel free to add more links here.
6
7 [[!toc ]]
8
9 # Getting Started
10
11 This section is primarily a series of useful links found online
12
13 * [FSiC2019](https://wiki.f-si.org/index.php/FSiC2019)
14 * Fundamentals to learn to get started [[3d_gpu/tutorial]]
15
16 ## Is Open Source Hardware Profitable?
17 [RaptorCS on FOSS Hardware Interview](https://www.youtube.com/watch?v=o5Ihqg72T3c&feature=youtu.be)
18
19 # OpenPOWER ISA
20
21 * [3.0 PDF](https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0)
22 * [2.07 PDF](https://openpowerfoundation.org/?resource_lib=ibm-power-isa-version-2-07-b)
23 * Virginia Tech course <https://github.com/w-feng/CompArch-MIPS-POWER>
24 * mini functional simulator https://github.com/god-s-perfect-idiot/POWER-sim
25 * https://raw.githubusercontent.com/linuxppc/public-docs/main/ISA/PowerPC_Assembly_IBM_Programming_Environment_2.3.pdf
26
27 ## Overview of the user ISA:
28
29 * [Raymond Chen's PowerPC series](https://devblogs.microsoft.com/oldnewthing/20180806-00/?p=99425)
30 * Power ISA listings <https://power-isa-beta.mybluemix.net/>
31
32 ## OpenPOWER OpenFSI Spec (2016)
33
34 * [OpenPOWER OpenFSI Spec](http://openpowerfoundation.org/wp-content/uploads/resources/OpenFSI-spec-100/OpenFSI-spec-20161212.pdf)
35
36 * [OpenPOWER OpenFSI Compliance Spec](http://openpowerfoundation.org/wp-content/uploads/resources/openpower-fsi-thts-1.0/openpower-fsi-thts-20180130.pdf)
37
38 # Energy-efficient cores
39
40 * https://arxiv.org/abs/2002.10143
41 * https://arxiv.org/abs/2011.08070
42
43 # Open Access Publication locations
44
45 * <https://open-research-europe.ec.europa.eu/browse/engineering-and-technology>
46
47 # Communities
48
49 * <https://www.reddit.com/r/OpenPOWER/>
50 * <http://lists.mailinglist.openpowerfoundation.org/pipermail/openpower-hdl-cores/>
51 * <http://lists.mailinglist.openpowerfoundation.org/pipermail/openpower-community-dev/>
52 * Open tape-out mailing list <https://groups.google.com/a/opentapeout.dev/g/mailinglist>
53
54 # ppc64 ELF ABI
55
56 * EABI 1.9 supplement <https://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html>
57 * https://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.pdf
58 * v2.1.5 <https://openpowerfoundation.org/specifications/64bitelfabi/>
59
60 # Similar concepts
61
62 * <https://www.tdx.cat/bitstream/handle/10803/674224/TCRL1de1.pdf> Vector registers may be
63 made "ultra-wide" (SX Aurora / Cray)
64
65 # Other GPU Specifications
66
67 *
68 * https://developer.amd.com/wp-content/resources/RDNA_Shader_ISA.pdf
69 * https://developer.amd.com/wp-content/resources/Vega_Shader_ISA_28July2017.pdf
70 * MALI Midgard
71 * [Nyuzi](https://github.com/jbush001/NyuziProcessor)
72 * VideoCore IV
73 * etnaviv
74
75 # JTAG
76
77 * [Useful JTAG implementation reference: Design Of IEEE 1149.1 TAP Controller IP Core by Shelja, Nandakumar and Muruganantham, DOI:10.5121/csit.2016.60910](https://web.archive.org/web/20201021174944/https://airccj.org/CSCP/vol6/csit65610.pdf)
78
79 Abstract
80
81 "The objective of this work is to design and implement a TAP controller IP core compatible with IEEE 1149.1-2013 revision of the standard. The test logic architecture also includes the Test Mode Persistence controller and its associated logic. This work is expected to serve as a ready to use module that can be directly inserted in to a new digital IC designs with little modifications."
82
83 # Radix MMU
84 - [Qemu emulation](https://github.com/qemu/qemu/commit/d5fee0bbe68d5e61e2d2beb5ff6de0b9c1cfd182)
85
86 # D-Cache
87
88 - [A Primer on Memory Consistency and Cache Coherence
89 ](https://www.morganclaypool.com/doi/10.2200/S00962ED2V01Y201910CAC049)
90
91 ## D-Cache Possible Optimizations papers and links
92 - [ACDC: Small, Predictable and High-Performance Data Cache](https://dl.acm.org/doi/10.1145/2677093)
93 - [Stop Crying Over Your Cache Miss Rate: Handling Efficiently Thousands of
94 Outstanding Misses in FPGAs](https://dl.acm.org/doi/abs/10.1145/3289602.3293901)
95
96 # BW Enhancing Shared L1 Cache Design research done in cooperation with AMD
97 - [Youtube video PACT 2020 - Analyzing and Leveraging Shared L1 Caches in GPUs](https://m.youtube.com/watch?v=CGIhOnt7F6s)
98 - [Url to PDF of paper on author's website (clicking will download the pdf)](https://adwaitjog.github.io/docs/pdf/sharedl1-pact20.pdf)
99
100
101 # RTL Arithmetic SQRT, FPU etc.
102
103 ## Wallace vs Dadda Multipliers
104
105 * [Paper comparing efficiency of Wallace and Dadda Multipliers in RTL implementations (clicking will download the pdf from archive.org)](https://web.archive.org/web/20180717013227/http://ieeemilestones.ethw.org/images/d/db/A_comparison_of_Dadda_and_Wallace_multiplier_delays.pdf)
106
107 ## Sqrt
108 * [Fast Floating Point Square Root](https://pdfs.semanticscholar.org/5060/4e9aff0e37089c4ab9a376c3f35761ffe28b.pdf)
109 * [Reciprocal Square Root Algorithm](http://www.acsel-lab.com/arithmetic/arith15/papers/ARITH15_Takagi.pdf)
110 * [Fast Calculation of Cube and Inverse Cube Roots Using a Magic Constant and Its Implementation on Microcontrollers (clicking will download the pdf)](https://res.mdpi.com/d_attachment/energies/energies-14-01058/article_deploy/energies-14-01058-v2.pdf)
111 * [Modified Fast Inverse Square Root and Square Root Approximation Algorithms: The Method of Switching Magic Constants (clicking will download the pdf)](https://res.mdpi.com/d_attachment/computation/computation-09-00021/article_deploy/computation-09-00021-v3.pdf)
112
113
114 ## CORDIC and related algorithms
115
116 * <https://bugs.libre-soc.org/show_bug.cgi?id=127> research into CORDIC
117 * <https://bugs.libre-soc.org/show_bug.cgi?id=208>
118 * [BKM (log(x) and e^x)](https://en.wikipedia.org/wiki/BKM_algorithm)
119 * [CORDIC](http://www.andraka.com/files/crdcsrvy.pdf)
120 - Does not have an easy way of computing tan(x)
121 * [zipcpu CORDIC](https://zipcpu.com/dsp/2017/08/30/cordic.html)
122 * [Low latency and Low error floating point TCORDIC](https://ieeexplore.ieee.org/document/7784797) (email Michael or Cole if you don't have IEEE access)
123 * <http://www.myhdl.org/docs/examples/sinecomp/> MyHDL version of CORDIC
124 * <https://dspguru.com/dsp/faqs/cordic/>
125
126 ## IEEE Standard for Floating-Point Arithmetic (IEEE 754)
127
128 Almost all modern computers follow the IEEE Floating-Point Standard. Of
129 course, we will follow it as well for interoperability.
130
131 * IEEE 754-2019: <https://standards.ieee.org/standard/754-2019.html>
132
133 Note: Even though this is such an important standard used by everyone,
134 it is unfortunately not freely available and requires a payment to
135 access. However, each of the Libre-SOC members already have access
136 to the document.
137
138 * [Lecture notes - Floating Point Appreciation](http://pages.cs.wisc.edu/~markhill/cs354/Fall2008/notes/flpt.apprec.html)
139
140 Among other things, has a nice explanation on arithmetic, rounding modes and the sticky bit.
141
142 * [What Every Computer Scientist Should Know About Floating-Point Arithmetic](https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)
143
144 Nice resource on rounding errors (ulps and epsilon) and the "table maker's dilemma".
145
146 ## Past FPU Mistakes to learn from
147
148 * [Intel Underestimates Error Bounds by 1.3 quintillion on
149 Random ASCII – tech blog of Bruce Dawson ](https://randomascii.wordpress.com/2014/10/09/intel-underestimates-error-bounds-by-1-3-quintillion/)
150 * [Intel overstates FPU accuracy 06/01/2013](http://notabs.org/fpuaccuracy)
151 * How not to design an ISA
152 <https://player.vimeo.com/video/450406346>
153 Meester Forsyth <http://eelpi.gotdns.org/>
154
155 # Khronos Standards
156
157 The Khronos Group creates open standards for authoring and acceleration
158 of graphics, media, and computation. It is a requirement for our hybrid
159 CPU/GPU to be compliant with these standards *as well* as with IEEE754,
160 in order to be commercially-competitive in both areas: especially Vulkan
161 and OpenCL being the most important. SPIR-V is also important for the
162 Kazan driver.
163
164 Thus the [[zfpacc_proposal]] has been created which permits runtime dynamic
165 switching between different accuracy levels, in userspace applications.
166
167 [**SPIR-V Main Page Link**](https://www.khronos.org/registry/spir-v/)
168
169 * [SPIR-V 1.5 Specification Revision 1](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html)
170 * [SPIR-V OpenCL Extended Instruction Set](https://www.khronos.org/registry/spir-v/specs/unified1/OpenCL.ExtendedInstructionSet.100.html)
171 * [SPIR-V GLSL Extended Instruction Set](https://www.khronos.org/registry/spir-v/specs/unified1/GLSL.std.450.html)
172
173 [**Vulkan Main Page Link**](https://www.khronos.org/registry/vulkan/)
174
175 * [Vulkan 1.1.122](https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/index.html)
176
177 [**OpenCL Main Page**](https://www.khronos.org/registry/OpenCL/)
178
179 * [OpenCL 2.2 API Specification](https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html)
180 * [OpenCL 2.2 Extension Specification](https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_Ext.html)
181 * [OpenCL 2.2 SPIR-V Environment Specification](https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_Env.html)
182
183 * OpenCL released the proposed OpenCL 3.0 spec for comments in april 2020
184
185 * [Announcement video](https://youtu.be/h0_syTg6TtY)
186 * [Announcement video slides (PDF)](https://www.khronos.org/assets/uploads/apis/OpenCL-3.0-Launch-Apr20.pdf)
187
188 Note: We are implementing hardware accelerated Vulkan and
189 OpenCL while relying on other software projects to translate APIs to
190 Vulkan. E.g. Zink allows for OpenGL-to-Vulkan in software.
191
192 # Open Source (CC BY + MIT) DirectX specs (by Microsoft, but not official specs)
193
194 https://github.com/Microsoft/DirectX-Specs
195
196 # Graphics and Compute API Stack
197
198 I found this informative post that mentions Kazan and a whole bunch of
199 other stuff. It looks like *many* APIs can be emulated on top of Vulkan,
200 although performance is not evaluated.
201
202 <https://synappsis.wordpress.com/2017/06/03/opengl-over-vulkan-dev/>
203
204 * Pixilica is heading up an initiative to create a RISC-V graphical ISA
205
206 * [Pixilica 3D Graphical ISA Slides](https://b5792ddd-543e-4dd4-9b97-fe259caf375d.filesusr.com/ugd/841f2a_c8685ced353b4c3ea20dbb993c4d4d18.pdf)
207
208 # 3D Graphics Texture compression software and hardware
209
210 * [Proprietary Rad Game Tools Oddle Texture Software Compression](https://web.archive.org/web/20200913122043/http://www.radgametools.com/oodle.htm)
211
212 * [Blog post by one of the engineers who developed the proprietary Rad Game Tools Oddle Texture Software Compression and the Oodle Kraken decompression software and hardware decoder used in the ps5 ssd](https://archive.vn/oz0pG)
213
214 # Various POWER Communities
215 - [An effort to make a 100% Libre POWER Laptop](https://www.powerpc-notebook.org/en/)
216 The T2080 is a POWER8 chip.
217 - [Power Progress Community](https://www.powerprogress.org/campaigns/donations-to-all-the-power-progress-community-projects/)
218 Supporting/Raising awareness of various POWER related open projects on the FOSS
219 community
220 - [OpenPOWER](https://openpowerfoundation.org)
221 Promotes and ensure compliance with the Power ISA amongst members.
222 - [OpenCapi](https://opencapi.org)
223 High performance interconnect for POWER machines. One of the big advantages
224 of the POWER architecture. Notably more performant than PCIE Gen4, and is
225 designed to be layered on top of the physical PCIE link.
226 - [OpenPOWER “Virtual Coffee” Calls](https://openpowerfoundation.org/openpower-virtual-coffee-calls/)
227 Truly open bi-weekly teleconference lines for anybody interested in helping
228 advance or adopting the POWER architecture.
229
230 # Conferences
231
232 see [[conferences]]
233
234
235 # Coriolis2
236
237 * LIP6's Coriolis - a set of backend design tools:
238 <https://www-soc.lip6.fr/equipe-cian/logiciels/coriolis/>
239
240 Note: The rest of LIP6's website is in French, but there is a UK flag
241 in the corner that gives the English version.
242
243 # Logical Equivalence and extraction
244
245 * NETGEN
246 * CVC https://github.com/d-m-bailey/cvc
247
248 # Klayout
249
250 * KLayout - Layout viewer and editor: <https://www.klayout.de/>
251
252 # image to GDS-II
253
254 * https://nazca-design.org/convert-image-to-gds/
255
256 # The OpenROAD Project
257
258 OpenROAD seeks to develop and foster an autonomous, 24-hour, open-source
259 layout generation flow (RTL-to-GDS).
260
261 * <https://theopenroadproject.org/>
262
263 # Other RISC-V GPU attempts
264
265 * <https://fossi-foundation.org/2019/09/03/gsoc-64b-pointers-in-rv32>
266
267 * <http://bjump.org/manycore/>
268
269 * <https://resharma.github.io/RISCV32-GPU/>
270
271 TODO: Get in touch and discuss collaboration
272
273 # Tests, Benchmarks, Conformance, Compliance, Verification, etc.
274
275 ## RISC-V Tests
276
277 RISC-V Foundation is in the process of creating an official conformance
278 test. It's still in development as far as I can tell.
279
280 * //TODO LINK TO RISC-V CONFORMANCE TEST
281
282 ## IEEE 754 Testing/Emulation
283
284 IEEE 754 has no official tests for floating-point but there are
285 well-known third party tools to check such as John Hauser's TestFloat.
286
287 There is also his SoftFloat library, which is a software emulation
288 library for IEEE 754.
289
290 * <http://www.jhauser.us/arithmetic/>
291
292 Jacob is also working on an IEEE 754 software emulation library written
293 in Rust which also has Python bindings:
294
295 * Source: <https://salsa.debian.org/Kazan-team/simple-soft-float>
296 * Crate: <https://crates.io/crates/simple-soft-float>
297 * Autogenerated Docs: <https://docs.rs/simple-soft-float/>
298
299 A cool paper I came across in my research is "IeeeCC754++ : An Advanced
300 Set of Tools to Check IEEE 754-2008 Conformity" by Dr. Matthias Hüsken.
301
302 * Direct link to PDF:
303 <http://elpub.bib.uni-wuppertal.de/servlets/DerivateServlet/Derivate-7505/dc1735.pdf>
304
305 ## Khronos Tests
306
307 OpenCL Conformance Tests
308
309 * <https://github.com/KhronosGroup/OpenCL-CTS>
310
311 Vulkan Conformance Tests
312
313 * <https://github.com/KhronosGroup/VK-GL-CTS>
314
315 MAJOR NOTE: We are **not** allowed to say we are compliant with any of
316 the Khronos standards until we actually make an official submission,
317 do the paperwork, and pay the relevant fees.
318
319 ## Formal Verification
320
321 Formal verification of Libre RISC-V ensures that it is bug-free in
322 regards to what we specify. Of course, it is important to do the formal
323 verification as a final step in the development process before we produce
324 thousands or millions of silicon.
325
326 * Possible way to speed up our solvers for our formal proofs <https://web.archive.org/web/20201029205507/https://github.com/eth-sri/fastsmt>
327
328 * Algorithms (papers) submitted for 2018 International SAT Competition <https://web.archive.org/web/20201029205239/https://helda.helsinki.fi/bitstream/handle/10138/237063/sc2018_proceedings.pdf> <https://web.archive.org/web/20201029205637/http://www.satcompetition.org/>
329 * Minisail <https://www.isa-afp.org/entries/MiniSail.html> - compiler
330 for SAIL into c
331
332 Some learning resources I found in the community:
333
334 * ZipCPU: <http://zipcpu.com/> ZipCPU provides a comprehensive
335 tutorial for beginners and many exercises/quizzes/slides:
336 <http://zipcpu.com/tutorial/>
337 * Western Digital's SweRV CPU blog (I recommend looking at all their
338 posts): <https://tomverbeure.github.io/>
339 * <https://tomverbeure.github.io/risc-v/2018/11/19/A-Bug-Free-RISC-V-Core-without-Simulation.html>
340 * <https://tomverbeure.github.io/rtl/2019/01/04/Under-the-Hood-of-Formal-Verification.html>
341
342 VAMP CPU
343
344 * Formal verification of a fully IEEE compliant floating point unit
345 <https://publikationen.sulb.uni-saarland.de/bitstream/20.500.11880/25760/1/ChristianJacobi_ProfDrWolfgangJPaul.pdf>
346 * <https://www-wjp.cs.uni-sb.de/forschung/projekte/VAMP/?lang=en>
347 * the PVS/hw subfolder is under the 2-clause BSD license:
348 <https://www-wjp.cs.uni-sb.de/forschung/projekte/VAMP/PVS/hw/COPYRIGHT>
349 * <https://alastairreid.github.io/RelatedWork/papers/beyer:ijsttt:2006/>
350
351 ## Automation
352
353 * <https://www.ohwr.org/project/wishbone-gen>
354
355 # Bus Architectures
356
357 * Avalon <https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_avalon_spec.pdf>
358 * CXM <https://www.computeexpresslink.org/download-the-specification>
359
360 # Vector Processors
361
362 * THOR <https://github.com/robfinch/Thor/blob/main/Thor2021/doc/Thor2021.pdf>
363 * NEC SX-Aurora
364 * RVV
365 * MRISC32 <https://github.com/mrisc32/mrisc32>
366
367 # LLVM
368
369 ## Adding new instructions:
370
371 * <https://archive.fosdem.org/2015/schedule/event/llvm_internal_asm/>
372
373 # Branch Prediction
374
375 * <https://danluu.com/branch-prediction/>
376
377 # Python RTL Tools
378
379 * <https://ieeexplore.ieee.org/document/9591456> pylog fpga
380 <https://github.com/hst10/pylog>
381 * [Migen - a Python RTL](https://jeffrey.co.in/blog/2014/01/d-flip-flop-using-migen/)
382 * [Migen Tutorial](http://blog.lambdaconcept.com/doku.php?id=migen:tutorial>)
383 * There is a great guy, Robert Baruch, who has a good
384 [tutorial](https://github.com/RobertBaruch/nmigen-tutorial) on nMigen.
385 He also build an FPGA-proven Motorola 6800 CPU clone with nMigen and put
386 [the code](https://github.com/RobertBaruch/n6800) and
387 [instructional videos](https://www.youtube.com/playlist?list=PLEeZWGE3PwbbjxV7_XnPSR7ouLR2zjktw)
388 online.
389 There is now a page [[docs/learning_nmigen]].
390 * [Using our Python Unit Tests(old)](http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2019-March/000705.html)
391 * <https://chisel.eecs.berkeley.edu/api/latest/chisel3/util/DecoupledIO.html>
392
393 # Other
394
395 * <https://github.com/chrische-xx/mpw7> 10-bit SAR ADC
396 * Cray-1 Pocket Reference
397 <https://nitter.it/aka_pugs/status/1546576975166201856>
398 <https://ftp.libre-soc.org/cray-1-pocket-ref/>
399 <https://www.computerhistory.org/collections/catalog/102685876>
400 * <https://github.com/tdene/synth_opt_adders> Prefix-tree generation scripts
401 * <https://debugger.medium.com/why-is-apples-m1-chip-so-fast-3262b158cba2> N1
402 * <https://codeberg.org/tok/librecell> Libre Cell Library
403 * <https://wiki.f-si.org/index.php/FSiC2019>
404 * <https://fusesoc.net>
405 * <https://www.lowrisc.org/open-silicon/>
406 * <http://fpgacpu.ca/fpga/Pipeline_Skid_Buffer.html> pipeline skid buffer
407 * <https://pyvcd.readthedocs.io/en/latest/vcd.gtkw.html> GTKwave
408 * <https://github.com/Ben1152000/sootty> - console-based vcd viewer
409 * <https://github.com/ics-jku/wal> - Waveform Analysis
410 * <http://www.sunburst-design.com/papers/CummingsSNUG2002SJ_Resets.pdf>
411 Synchronous Resets? Asynchronous Resets? I am so confused! How will I
412 ever know which to use? by Clifford E. Cummings
413 * <http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf>
414 Clock Domain Crossing (CDC) Design & Verification Techniques Using
415 SystemVerilog, by Clifford E. Cummings
416 In particular, see section 5.8.2: Multi-bit CDC signal passing using
417 1-deep / 2-register FIFO synchronizer.
418 * <http://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-143.pdf>
419 Understanding Latency Hiding on GPUs, by Vasily Volkov
420 * Efabless "Openlane" <https://github.com/efabless/openlane>
421 * example of openlane with nmigen
422 <https://github.com/lethalbit/nmigen/tree/openlane>
423 * Co-simulation plugin for verilator, transferring to ECP5
424 <https://github.com/vmware/cascade>
425 * Multi-read/write ported memories
426 <https://tomverbeure.github.io/2019/08/03/Multiport-Memories.html>
427 * Data-dependent fail-on-first aka "Fault-tolerant speculative vectorisation"
428 <https://arxiv.org/pdf/1803.06185.pdf>
429 * OpenPOWER Foundation Membership
430 <https://openpowerfoundation.org/membership/how-to-join/membership-kit-9-27-16-4/>
431 * Clock switching (and formal verification)
432 <https://zipcpu.com/formal/2018/05/31/clkswitch.html>
433 * Circuit of Compunit <http://home.macintosh.garden/~mepy2/libre-soc/comp_unit_req_rel.html>
434 * Circuitverse 16-bit <https://circuitverse.org/users/17603/projects/54486>
435 * Nice example model of a Tomasulo-based architecture, with multi-issue, in-order issue, out-of-order execution, in-order commit, with reservation stations and reorder buffers, and hazard avoidance.
436 <https://www.brown.edu/Departments/Engineering/Courses/En164/Tomasulo_10.pdf>
437 * adrian_b architecture comparison <https://news.ycombinator.com/item?id=24459041>
438 * ericandecscent RISC-V <https://libre-soc.org/irclog/%23libre-soc.2021-07-11.log.html>
439
440 # Real/Physical Projects
441
442 * [Samuel's KC5 code](http://chiselapp.com/user/kc5tja/repository/kestrel-3/dir?ci=6c559135a301f321&name=cores/cpu)
443 * <https://chips4makers.io/blog/>
444 * <https://hackaday.io/project/7817-zynqberry>
445 * <https://github.com/efabless/raven-picorv32>
446 * <https://efabless.com>
447 * <https://efabless.com/design_catalog/default>
448 * <https://wiki.f-si.org/index.php/The_Raven_chip:_First-time_silicon_success_with_qflow_and_efabless>
449 * <https://mshahrad.github.io/openpiton-asplos16.html>
450
451 # ASIC tape-out pricing
452
453 * <https://europractice-ic.com/wp-content/uploads/2020/05/General-MPW-EUROPRACTICE-200505-v8.pdf>
454
455 # Funding
456
457 * <https://toyota-ai.ventures/>
458 * [NLNet Applications](http://bugs.libre-riscv.org/buglist.cgi?columnlist=assigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Ccf_budget&f1=cf_nlnet_milestone&o1=equals&query_format=advanced&resolution=---&v1=NLnet.2019.02)
459
460 # Good Programming/Design Practices
461
462 * [Liskov Substitution Principle](https://en.wikipedia.org/wiki/Liskov_substitution_principle)
463 * [Principle of Least Astonishment](https://en.wikipedia.org/wiki/Principle_of_least_astonishment)
464 * <https://peertube.f-si.org/videos/watch/379ef007-40b7-4a51-ba1a-0db4f48e8b16>
465 * [It's not a zero-sum game](https://smallcultfollowing.com/babysteps/blog/2019/04/19/aic-adventures-in-consensus/)
466
467 * <https://youtu.be/o5Ihqg72T3c>
468 * <http://flopoco.gforge.inria.fr/>
469 * Fundamentals of Modern VLSI Devices
470 <https://groups.google.com/a/groups.riscv.org/d/msg/hw-dev/b4pPvlzBzu0/7hDfxArEAgAJ>
471
472 # 12 skills summary
473
474 * <https://www.crnhq.org/cr-kit/>
475
476 # Analog Simulation
477
478 * <https://github.com/Isotel/mixedsim>
479 * <http://www.vlsiacademy.org/open-source-cad-tools.html>
480 * <http://ngspice.sourceforge.net/adms.html>
481 * <https://en.wikipedia.org/wiki/Verilog-AMS#Open_Source_Implementations>
482
483 # Libre-SOC Standards
484
485 This list auto-generated from a page tag "standards":
486
487 [[!inline pages="tagged(standards)" actions="no" archive="yes" quick="yes"]]
488
489 # Server setup
490
491 * [[resources/server-setup/web-server]]
492 * [[resources/server-setup/git-mirroring]]
493 * [[resources/server-setup/nagios-monitoring]]
494
495 # Testbeds
496
497 * <https://www.fed4fire.eu/testbeds/>
498
499 # Really Useful Stuff
500
501 * <https://github.com/im-tomu/fomu-workshop/blob/master/docs/requirements.txt>
502 * <https://github.com/im-tomu/fomu-workshop/blob/master/docs/conf.py#L39-L47>
503
504 # Digilent Arty
505
506 * https://store.digilentinc.com/pmod-sf3-32-mb-serial-nor-flash/
507 * https://store.digilentinc.com/arty-a7-artix-7-fpga-development-board-for-makers-and-hobbyists/
508 * https://store.digilentinc.com/pmod-vga-video-graphics-array/
509 * https://store.digilentinc.com/pmod-microsd-microsd-card-slot/
510 * https://store.digilentinc.com/pmod-rtcc-real-time-clock-calendar/
511 * https://store.digilentinc.com/pmod-i2s2-stereo-audio-input-and-output/
512
513 # CircuitJS experiments
514
515 * [[resources/high-speed-serdes-in-circuitjs]]
516
517 # Logic Simulator 2
518 * <https://github.com/dkilfoyle/logic2>
519 [Live web version](https://dkilfoyle.github.io/logic2/)
520
521 > ## Features
522 > 1. Micro-subset verilog-like DSL for coding the array of logic gates (parsed using Antlr)
523 > 2. Monaco-based code editor with automatic linting/error reporting, smart indentation, code folding, hints
524 > 3. IDE docking ui courtesy of JupyterLab's Lumino widgets
525 > 4. Schematic visualisation courtesy of d3-hwschematic
526 > 5. Testbench simulation with graphical trace output and schematic animation
527 > 6. Circuit description as gates, boolean logic or verilog behavioural model
528 > 7. Generate arbitrary outputs from truth table and Sum of Products or Karnaugh Map
529
530 [from the GitHub page. As of 2021/03/29]
531
532 # ASIC Timing and Design flow resources
533
534 * <https://www.linkedin.com/pulse/asic-design-flow-introduction-timing-constraints-mahmoud-abdellatif/>
535 * <https://www.icdesigntips.com/2020/10/setup-and-hold-time-explained.html>
536 * <https://www.vlsiguide.com/2018/07/clock-tree-synthesis-cts.html>
537 * <https://en.wikipedia.org/wiki/Frequency_divider>
538
539 # Geometric Haskell Library
540
541 * <https://github.com/julialongtin/hslice/blob/master/Graphics/Slicer/Math/GeometricAlgebra.hs>
542 * <https://github.com/julialongtin/hslice/blob/master/Graphics/Slicer/Math/PGA.hs>
543 * <https://arxiv.org/pdf/1501.06511.pdf>
544 * <https://bivector.net/index.html>
545
546 # Handy Compiler Algorithms for SimpleV
547
548 Requires aligned registers:
549
550 * [Graph Coloring Register Allocation for Processors with Multi-Register Operands](https://dl.acm.org/doi/pdf/10.1145/93548.93552)
551
552 More general:
553
554 * [Retargetable Graph-Coloring Register Allocation for Irregular Architectures](https://user.it.uu.se/~svenolof/wpo/AllocSCOPES2003.20030626b.pdf)
555
556 # TODO investigate
557
558 ```
559 https://www.nextplatform.com/2022/08/22/the-expanding-cxl-memory-hierarchy-is-inevitable-and-good-enough/
560 https://github.com/idea-fasoc/OpenFASOC
561 https://www.quicklogic.com/2020/06/18/the-tipping-point/
562 https://www.quicklogic.com/blog/
563 https://www.quicklogic.com/2020/09/15/why-open-source-ecosystems-make-good-business-sense/
564 https://www.quicklogic.com/qorc/
565 https://en.wikipedia.org/wiki/RAD750
566 The RAD750 system has a price that is comparable to the RAD6000, the latter of which as of 2002 was listed at US$200,000 (equivalent to $284,292 in 2019).
567 https://theamphour.com/525-open-fpga-toolchains-and-machine-learning-with-brian-faith-of-quicklogic/
568 https://github.blog/2021-03-22-open-innovation-winning-strategy-digital-sovereignty-human-progress/
569 https://github.com/olofk/edalize
570 https://github.com/hdl/containers
571 https://twitter.com/OlofKindgren/status/1374848733746192394
572 You might also want to check out https://umarcor.github.io/osvb/index.html
573 https://www.linkedin.com/pulse/1932021-python-now-replaces-tcl-all-besteda-apis-avidan-efody/
574 “TCL has served us well, over the years, allowing us to provide an API, and at the same time ensure nobody will ever use it. I will miss it”.
575 https://sphinxcontrib-hdl-diagrams.readthedocs.io/en/latest/examples/comb-full-adder.html
576 https://sphinxcontrib-hdl-diagrams.readthedocs.io/en/latest/examples/carry4.html
577 FuseSoC is used by MicroWatt and Western Digital cores
578 OpenTitan also uses FuseSoC
579 LowRISC is UK based
580 https://antmicro.com/blog/2020/12/ibex-support-in-verilator-yosys-via-uhdm-surelog/
581 https://cirosantilli.com/x86-paging
582 https://stackoverflow.com/questions/18431261/how-does-x86-paging-work
583 http://denninginstitute.com/modules/vm/red/i486page.html
584 ```