diff --git a/README.md b/README.md index 973acda..fdd806f 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ -# CHERIoT Sail model +# CHERIoT Specification and Sail model -This repository contains an implementation of the CHERIoT ISA in [Sail](http://github.com/rems-project/sail). -It contains an executable description of the CHERIoT instruction set that can be used to build an instruction set emulator and also prove [properties](properties) of the ISA using Sail's SMT support. -A full description of the ISA, including extracts from this repository, can be found in the [CHERIoT technical report](https://aka.ms/cheriot-tech-report). +This repository contains the specification for the [CHERIoT](https://cheriot.org) ISA. +It consists of a document written in [latex](/archdoc) which includes exerpts of the [reference model](/src) written in [Sail](http://github.com/rems-project/sail). +The [current draft architecture document](https://microsoft.github.io/cheriot-sail/cheriot-architecture.pdf) built from this repository contains a full description of the ISA and its intended use by [CHERIoT RTOS](https://github.com/microsoft/cheriot-rtos/). +The Sail code is used to build an instruction set simulator which is included in the [CHERIoT RTOS dev containter](https://github.com/microsoft/cheriot-rtos/blob/main/docs/GettingStarted.md). +It can also be used to prove [properties](properties) of the ISA using Sail's SMT support. -The code is dervied from [sail-cheri-riscv](http://github.com/CTSRD-CHERI/sail-cheri-riscv) -and uses the [sail-riscv](http://github.com/rems-project/sail-riscv) model as a submodule. +The architecture is based on the [CHERI specification](https://github.com/CTSRD-CHERI/cheri-specification). +The code is dervied from [sail-cheri-riscv](http://github.com/CTSRD-CHERI/sail-cheri-riscv) and uses [sail-riscv](http://github.com/rems-project/sail-riscv) as a submodule. # Building -The easiest way to use this emulator is to use the dev container for the [CHERIoT RTOS](http://github.com/microsoft/cheriot-rtos). +The easiest way to use the emulator is to use the dev container for the CHERIoT RTOS as described in the [getting started guide](https://github.com/microsoft/cheriot-rtos/blob/main/docs/GettingStarted.md). Alternatively, if you wish to build from source you must first install dependencies, including Sail. For example, on Ubuntu 20.04 we have tested: