Skip to content

nmoroze/kronos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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