Update README.md

v1.3 from Upstream
PC typo, include EL version of gcc, provision script
This commit is contained in:
Aadi Desai 2020-11-25 18:50:36 +00:00
parent dd5789d8cc
commit 044132117c

View file

@ -22,6 +22,10 @@ Revision log
- 2020/10/20 : v1.0 - Updated with harvard and bus to provide simpler learning curve. - 2020/10/20 : v1.0 - Updated with harvard and bus to provide simpler learning curve.
- 2020/11/16 : v1.1 - Minor tweaks based on lab results. - 2020/11/16 : v1.1 - Minor tweaks based on lab results.
- 2020/11/20 : v1.2 - Added missing environment/standards part. - 2020/11/20 : v1.2 - Added missing environment/standards part.
- 2020/11/25 : v1.3 - Various tweaks and clarifications
- Added the ability to include a provision script
- Fixed the typo related to PC on reset.
- Added gcc-mipsel-linux-gnu as explicitly available package.
Overall goals Overall goals
============= =============
@ -352,7 +356,7 @@ The reason for this choice is intimately related to the reset conditions
and [MIPS O32 ABI](https://en.wikipedia.org/wiki/MIPS_architecture#Calling_conventions); and [MIPS O32 ABI](https://en.wikipedia.org/wiki/MIPS_architecture#Calling_conventions);
in particular, this choice exploits the following existing requirements: in particular, this choice exploits the following existing requirements:
- For the reset, we require that all registers (including the PC) are set to 0. - For the reset, we require that all registers (excluding the PC) are set to 0.
- The MIPS ABI also specifies that integer return values from functions are placed in register $v0, which is defined to be register 2. - The MIPS ABI also specifies that integer return values from functions are placed in register $v0, which is defined to be register 2.
- The MIPS ABI also specifies that the return address for a function is stored in register $ra, which is defined to be register 31. - The MIPS ABI also specifies that the return address for a function is stored in register $ra, which is defined to be register 31.
@ -617,14 +621,33 @@ packages will be installed, along with the following packages:
- `build-essential` (g++, make) - `build-essential` (g++, make)
- `git` - `git`
- `gcc-mips-linux-gnu` - `gcc-mipsel-linux-gnu` and `gcc-mips-linux-gnu`
- `qemu-system-mips` - `qemu-system-mips`
- `python3` - `python3`
- `cmake` - `cmake`
- `verilator` - `verilator`
- `libboost-dev` - `libboost-dev`
- `parallel` - `parallel`
Provisioning
------------
If there is a particular package that you want to use, such as a python
library or standard Ubuntu package, then you can include a script called `provision.sh`
which can install such packages. You can assume that this package will be
run once as root before your test-bench is installed.
Note that this script is completely optional. Most teams probably won't need one.
Exactly two types of package are allowed:
- Ubuntu package installation via `apt install`. This must be a standard Ubuntu package,
with no use of PPAs or other package sources.
- Python package installation via `pip install` or `pip3 install`. This must be a package
coming from the standard pip set of packages.
Clarifying notes Clarifying notes
================ ================
@ -655,4 +678,3 @@ decode and execute logic is mostly the same. It is only the
parts that deal with instruction timing and memory that are parts that deal with instruction timing and memory that are
different. So you can have a single shared execution core different. So you can have a single shared execution core
that is used by two variants. that is used by two variants.