Home

Awesome

RISC-V Cryptography Extension

RISC-V cryptography extensions standardisation work.

NOTE: 2024-Feb-16 (mjos): Since both scalar cryptography and vector cryptography extensions have been ratified, the documentation here is being merged into the unprivileged specifications. This repository will be eventually archived after the process is done.

The only remaining work item in this repository is related to the Zvbc32e/Zvkgs fast track extension. There is no other active development.


About

This repository is used to develop standardisation proposals for scalar and vector cryptographic instruction set extensions for the RISC-V architecture.

For a general overview of the extension status and ratification progress, please see our page on the RISC-V Wiki.

Specification

To see the latest draft release of the proposals, look at the Releases tab of the Github Repository.

Source code and supplementary information is found in the doc/ directory.

Formal Model

There is a work-in-progress formal-model implementation of the crypto instructions in the sail/ directory. See the README file for information on how to build and use it.

Toolchain

See tools/README.md for instructions on how to build the experimental toolchain.

There is also a task list for implementing an upstreamable patch. If you can implement this patch, please get in touch.

Spike

Spike is included as a submodule (extern/riscv-isa-sim), since we have upstream Spike support which is periodically updated as the specification progresses. See tools/README.md for instructions on how to build Spike.

Architectural Tests

See tests/compliance/README.md for information on how to run the work-in-progress RISC-V Architectural Test suite for the cryptography extension. You will need to setup the toolchain, spike and SAIL before you can do this.

There is also a work-in-progress test plan for the Scalar cryptography extensions.

Note: This was formally known as the riscv-compliance test suite. Hence there are some references or directories to "compliance". These have been left in some cases to preserve widely shared links, especially to the test plan.

Benchmarks

See benchmarks/README.md for how to get started with the benchmarking flow and how to contribute new benchmarks.

Verilog RTL Prototypes

See the rtl/ directory for information on experimental RTL implementations of the proposed instructions.