Can
Can is a ChaCha20 cryptographic accelerator based on a No-Instruction-Set Computer (NISC) architecture.
This is a COMP6200 MSc Project.
Building and Running
# Run the Scala code to run the Chisel/FIRRTL compiler to generate HDL
sbt run
A few files will be generated under the current working directory:
-
Can.anno.json
: A serialization of FIRRTL annotations. * -
Can.fir
: A FIRRTL file compiled from Chisel sources. -
Can.v
: A synthesizable Verilog file compiled from FIRRTL.
Use Can.v
to further synthesize / fit / map it in other tools.
Testing and Simulating
# Run all test benches
sbt test
# Generate coverage report
sbt coverage test coverageReport
ChiselTest is used to perform unit testing. Test cases are written with ScalaTest and simulation is performed on Treadle. Alternatively, the compiled HDL file can be used in other simulators, but this is not tested yet.
The coverage report will be generated under path target/scala-2.12/scoverage-report/
.
License
This project is REUSE 3.0 compliant. Every file in this repository either contains a comment header or has a corresponding .license
file identifying the license of the file, so different files may be licensed under different terms. In general:
- Hardware design files are licensed under the CERN OHL 2.0 - Weakly Reciprocal.
- Software source files are licensed under the GNU GPL v3, or later versions.
- Configuration files are (un)licensed under the CC0 1.0.
- General documentation files are licensed under the CC-BY-SA 4.0.
The corresponding full license texts are available under the LICENSES
folder. In addition, the LICENSE
file is available for non-REUSE practices.