Skip to content
Snippets Groups Projects
user avatar
dam1n19 authored
bd7a8aff
History

AES-128 Example Accelerator System Project

This repo is the top-level repository which contains an example accelerator based on the secworks AES engine integrated in SoC Labs provided nanosoc chip design IP in forms of git subrepositories.

Please Fork this repository in order to build your own custom project. This can be done through the git.soton.ac.uk/soclabs/accelerator-project website and create your own custom project folder which you can then customise to suit your needs.

Cloning this repository

This Repository contains multiple sub-repositories. In order to clone them with this repository, please use the following command:

git clone --recurse https://git.soton.ac.uk/soclabs/accelerator-project.git

This will clone this base repository. Change the url in the command above to clone your fork instead of the base repository.

Setting up the Project Environment

In order to checkout all the sub-repositories in your project to their branches and set up your local environment variables, from the top-level of this project run:

source set_env.sh

Adding a Custom Accelerator Repository

Custom accelerator repsitories can be added to your forked project using the following commands:

cd $SOCLABS_PROJECT_DIR; git submodule add youracceleratorurl.git

Once this has been done, you should see a folder at the top-level of your project containing your accelerator repository. This will be on a hash and not on a branch.

To get this repository to checkout to a branch, modify the top-level projbranch file to add your repository name (this should be the name of the directory it is in), followed by a colon and the name of the branch you wish it to check out to.

Then re-run the set environment script and force it to checkout all subrepositories:

source set_env.sh -f

The last thing you will wish to do it to modify the env/dependency_env.sh file. In here you can set an environment variable for your repsotry so it can be used in scripts and commands. Once this has been added, again run set environment command:

source set_env.sh

Setting up your environment

Every time you wish to run commands in this project, you will need to make sure the set environment script has been run for your current terminal session. This is done by moving to the top-level of the project and running:

source set_env.sh

This sets the environment variables related to this project and creates visability to the scripts in the flow directory.

Running the simulation

This design instantiates a custom (AMBA-AHB) wrapper around the AES core to implement a memory-mapped 128-bit AES encrypt/decrypt accelerator that can be used as a software-driven peripheral or a semi-autonomous DMA subystem when 128-bit keys and variable length data payloads can be set up as scatter/gather descriptor chains for background processing.

To run the simulation the 'socsim' command executes the makefile in the 'nanosoc_tech' microcontroller framework. (Edit the simulator target in nanosoc_tech/system/makefile for the simulator EDA tool used). Then use the:

socsim system_aes128 TESTNAME=aes128_tests

This runs the integration test program on the Arm Cortex-M0 processor using the 'system_aes128.sh' script provided in the simulate/socsim directory and the logs are produced in the simulate/sim/system_aes128/logs directory.