# Documentation A draft version of the specification is available at # Codebase Structure The SOC is partitioned into four repositories. The subrepositories are intended as general purpose standalone projects useful outside of LibreSOC. For example, the IEE754 FPU repository is a general purpose IEEE754 toolkit for the construction of FSMs and arbitrary length pipelines. | Git Repo | Online docs | Description | Pypi | |----------|---------------|---------------|-------- | [SOC](https://git.libre-soc.org/?p=soc.git;a=tree) | [Libre-SOC](https://docs.libre-soc.org/soc/) | Main OpenPOWER Hybrid CPU-GPU | TBD | | [FPU](https://git.libre-soc.org/?p=ieee754fpu.git;a=tree) | [ieee754fpu](https://docs.libre-soc.org/ieee754fpu/) | Equivalent to hardfloat-3 | [libresoc-ieee754fpu](https://pypi.org/project/libresoc-ieee754fpu) | | [nmutil](https://git.libre-soc.org/?p=nmutil.git;a=tree) | [nmutil](https://docs.libre-soc.org/nmutil/) | Equivalent to Chisel3.util | [libresoc-nmutil](https://pypi.org/project/libresoc-nmutil) | | [OpenPOWER ISA](https://git.libre-soc.org/?p=nmutil.git;a=tree) | [OpenPOWER ISA](https://docs.libre-soc.org/openpower-isa/) | Simulator, ISA spec compiler, co-simulation infrastructure | [libresoc-openpower-isa](https://pypi.org/project/libresoc-openpower-isa/) | # Installing the Codebase Installation is much easier when using the [install scripts](https://git.libre-soc.org/?p=dev-env-setup.git;a=blob;f=hdl-dev-repos;hb=HEAD). A separate script also helps install [dependencies](https://git.libre-soc.org/?p=dev-env-setup.git;a=blob;f=install-hdl-apt-reqs;hb=HEAD) and a third can be used to set up a [debootstrap chroot]( https://git.libre-soc.org/?p=dev-env-setup.git;a=blob;f=mk-deb-chroot;hb=HEAD). The chroot is useful to ensure stability and repeatable builds: no errors or issues introduced by libraries being wrong versions. Also relevant is the [gdb gcc build](https://git.libre-soc.org/?p=dev-env-setup.git;a=blob;f=ppc64-gdb-gcc;hb=HEAD). For a simple set of commands to follow, see [[HDL_workflow/devscripts]]. If you prefer to do a manual install and explicitly install dependencies yourself, in order to verify them, see [[HDL_workflow]] # Tutorials and documentation * [[SOC Architecture|3d_gpu/architecture]] * Gtkwave Tutorial [[docs/gtkwave_tutorial]] * Formal proof notes [[docs/notes_on_formal_proofs]] * Learning nmigen [[docs/learning_nmigen]] * Test API [[docs/testapi]] * Pinmux and JTAG Boundary Scan [[docs/pinmux]] * pypowersim python-based command-line simulator [[docs/pypowersim]] * First steps [[docs/firststeps]] * Adding an instruction [[docs/adding_instr]] - see also below # SVP64 Currently in Draft form, [[openpower/sv/svp64]] is the basis of the Supercomputing Cray-style Vectorisation of the Power ISA. # Checklist for adding an instruction TODO. use the commit diffs for these instructions as a guide * fmvis * avgadd etc. * int min/max * ternlogi which included adding a hardware implementation as well