From 044132117c0cce192edbd01068330d9b65bed0e2 Mon Sep 17 00:00:00 2001 From: supleed2 <21363892+supleed2@users.noreply.github.com> Date: Wed, 25 Nov 2020 18:50:36 +0000 Subject: [PATCH] Update README.md v1.3 from Upstream PC typo, include EL version of gcc, provision script --- README.md | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4af3f5c..b05fcd3 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,10 @@ Revision log - 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/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 ============= @@ -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); 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 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) - `git` -- `gcc-mips-linux-gnu` -- `qemu-system-mips` +- `gcc-mipsel-linux-gnu` and `gcc-mips-linux-gnu` +- `qemu-system-mips` - `python3` - `cmake` - `verilator` - `libboost-dev` - `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 ================ @@ -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 different. So you can have a single shared execution core that is used by two variants. -