Accelerator System Top-Level
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.
The SoC wiring is handled in this repository too, along with design and verification for accelerator wrappers.
Re-creating the top-level design
To build this example reference design, the design and sub-modules must be cloned with --recursive flag:
git clone --recursive https://git.soton.ac.uk/soclabs/accelerator-project-secworks-aes-128.git
Then at the top level of this project import the 3rd-party IP AES engine to the suitably named sub-directory:
git clone https://github.com/secworks/aes.git secworks-aes
Then set up the environment variables and paths:
source set_env.sh
This sets the environment variables related to this project and creates visability to the scripts in the flow directory. Because of this, you can now run:
soc-init
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_secworks_aes128 TESTNAME=aes128_tests
This runs the integration test program on the Arm Cortex-M0 processor using the 'system_secworks_aes128.sh' script provided in the simulate/socsim directoty and the logs are produced in the simulate/sim/system_secworks_aes128/logs directory.
To add the secworks-aes IP as a managed git sub-module:
git submodule status
This lists the sub repositories and their branches. Make sure these are all you are expecting. To add the secworks-aes IP as a managed git sub-module:
git submodule add -b main https://github.com/secworks/aes.git
to add the repo into this work area.
You then need to push the .gitmodules file back to remote to save this configuration.