Skip to content

nmoroze/kronos

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
.ci
 
 
doc
 
 
fw
 
 
soc
 
 
 
 
 
 
 
 
 
 
 
 

Kronos

Build Status

This repository contains code for my MEng thesis, "Kronos: Verifying leak-free reset for a system-on-chip with multiple clock domains". Kronos consists of a SoC based on a subset of OpenTitan, with a security property called "output determinism" verified using Racket/Rosette.

For more information, see the thesis!

Getting Started

Dependencies

Running

Once dependencies are installed, run make verify in the top-level to run the build flow and all top-level verification scripts.

Project Structure

fw/

Contains verified boot code for resetting SoC's state.

soc/

Contains all of our HDL code. This directory contains a fork of OpenTitan as a Git submodule, and the top level and crossbar implementations for our subset. The OpenTitan fork contains two types of modifications: some to let it work nicely with our toolchain, and some to fix violations of our output determinism property. The fork's commit messages provide a bit of detail about each change.

verify/

Contains Racket verification code. The following files are top-level entry points:

  • verify/core/main.rkt - proof of core output determinism
  • verify/peripheral/spi-in.rkt - proof of peripheral output determinism for SPI-in clock domain
  • verify/peripheral/spi-out.rkt - proof of peripheral output determinism for SPI-out clock domain
  • verify/peripheral/usb.rkt - proof of peripheral output determinism for USB clock domain
  • verify/fifo/main.rkt - FIFO auxiliary proof for all verified sizes of sync and async FIFO

Related Projects

This project is based on Notary, which also uses Racket/Rosette to verify a security property for an open-source RISC-V SoC (based on the PicoRV32).

About

My MEng thesis code - verifying a security property for an SoC with Rosette

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published