All Projects → project-oak → Silveroak

project-oak / Silveroak

Licence: apache-2.0
Formal specification and verification of hardware, especially for security and privacy.

Projects that are alternatives of or similar to Silveroak

RiscvSpecFormal
The RiscvSpecKami package provides SiFive's RISC-V processor model. Built using Coq, this processor model can be used for simulation, model checking, and semantics analysis. The RISC-V processor model can be output as Verilog and simulated/synthesized using standard Verilog tools.
Stars: ✭ 69 (+35.29%)
Mutual labels:  hardware, coq
Freespec
A framework for implementing and certifying impure computations in Coq
Stars: ✭ 41 (-19.61%)
Mutual labels:  coq
Onix
ONI-compatible hardware, firmware, and host APIs for advanced neuroscience experiments.
Stars: ✭ 20 (-60.78%)
Mutual labels:  hardware
Iobroker.deconz
Connects to deConz software developed by dresden-elektronik. This software aims to be a universal ZigBee Gateway solution, using hardware from dresden-elektronik the ConBee USB stick and RaspBee a modul for the Raspberry Pi.
Stars: ✭ 33 (-35.29%)
Mutual labels:  hardware
Teleball
Build your own Arduino based retro handheld game console
Stars: ✭ 21 (-58.82%)
Mutual labels:  hardware
Compcert
The CompCert formally-verified C compiler
Stars: ✭ 984 (+1829.41%)
Mutual labels:  coq
Coq Printf
Implementation of sprintf for Coq
Stars: ✭ 15 (-70.59%)
Mutual labels:  coq
Touchbar Systemmonitor
A better simple reactive system monitor on macOS for your MacBook pro. Built with Electron.
Stars: ✭ 45 (-11.76%)
Mutual labels:  hardware
Certint
A Certified Interpreter for ML with Structural Polymorphism
Stars: ✭ 39 (-23.53%)
Mutual labels:  coq
Paramcoq
Coq plugin for parametricity [[email protected]]
Stars: ✭ 32 (-37.25%)
Mutual labels:  coq
Nuprlincoq
Implementation of Nuprl's type theory in Coq
Stars: ✭ 31 (-39.22%)
Mutual labels:  coq
Hott
Homotopy type theory
Stars: ✭ 946 (+1754.9%)
Mutual labels:  coq
Parseque
Total Parser Combinators in Coq
Stars: ✭ 37 (-27.45%)
Mutual labels:  coq
Lsusb
Most popular USB devices and lsusb reports
Stars: ✭ 19 (-62.75%)
Mutual labels:  hardware
Pornview
Porn browser formally-verified in Coq
Stars: ✭ 42 (-17.65%)
Mutual labels:  coq
Gpd pocket Mods
GPD Pocket Modification Staffs
Stars: ✭ 15 (-70.59%)
Mutual labels:  hardware
Calunium
Arduino clone based on the ATmega644P/ATmega1284P
Stars: ✭ 30 (-41.18%)
Mutual labels:  hardware
Htu21d breakout
Breakout board for the HTU21D digital humidity sensor.
Stars: ✭ 34 (-33.33%)
Mutual labels:  hardware
Metalib
The Penn Locally Nameless Metatheory Library
Stars: ✭ 47 (-7.84%)
Mutual labels:  coq
Poleiro
A blog about Coq
Stars: ✭ 42 (-17.65%)
Mutual labels:  coq

Silver Oak

Silver Oak is a research project at Google Research exploring alternative techniques for producing high assurance circuits and systems based on an approach that unifies specification, implementation and formal verification in a single system, specifically the Coq interactive theorem prover. We follow an approach inspired by the vision set out by Adam Chlipala at MIT in his book Certified Programming with Dependent Types.

The Silver Oak project focuses on the design and verification of high assurance variants of some of the peripherals used in the OpenTitan silicon root of trust e.g. the AES crypto-accelerator block. We focus on the specification, implementation and verification of low-level structural circuits built bottom up by composing basic circuit elements (gates, registers, wires) using powerful higher order combinators in the style of Lava. Another Coq-based approache for producing hardware is Kami which encodes aspects of the Bluespec hardware description language as a EDSL in Coq. Kami and Bluespec are powerful tools for designing processor-style control-orientated circuits. We focus instead on "network-style" and "daatpath" low level circuits e.g. hardware accelerators for AES.

A key design goal for our project is to produce hardware which are just as efficient as the existing blocks written by hardware engineers in SystemVerilog. Consequently our design decisions focus on giving the designer a lot of control over the generated circuit netlist by using high level combinators to make low level circuit design more productive and more ameanble to formal verification. The EDSL we are developing for this task is called Cava (Coq + Lava).

Our verification work is focused on specification and verification of circuit designs (i.e. "programs") and not currently on the "compiler" i.e. the infrastructure that maps form Cava EDSL in Coq to SystemVerilog. Complementary work is under way at other research groups that tackle the compiler verification challenge for hardware RTL sythesis to gates e.g. Verified Compilation on a Verified Processor.

The Code

The code is currently very experimental and in constant flux! Please see the contributing guide for how to submit push requests.

Pre-requisites

Please install the following components:

To re-build the OpenTitan system with the Cava versions of the high assurance peripherals you will also need to install OpenTitan.

Building

To build the Cava system and its examples and run tests, type make in the root directory of the repo.

$ cd silveroak
$ make

To remove all automatically generated files:

$ make clean

Cava Examples

See Cava Examples for a few examples of circuits described in Cava, proofs about their behaviour and extraction to SystemVerilog circuits for simulation and FPGA implementation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].