Build an educational formally verified version of the Nand 2 Tetris course using Coq (and other formal tools).
Clone or download
Latest commit 34df4d0 Jan 22, 2019

README.md

nand2coq

The goal of this project is to build an educational formally verified version of the Nand 2 Tetris course using Coq (and other formal tools).

https://www.nand2tetris.org/

https://www.coursera.org/learn/build-a-computer

In the course, a computer is built from the ground up, starting from Nand gates, abstracting to larger digital circuits, a CPU, Assembly, a stack based virtual machine, and finally a high level Java-like language.

This project ideally would become a baby DeepSpec.

https://deepspec.org/

Useful Resources:

Software Foundations, your one stop shop for getting started in Coq. https://softwarefoundations.cis.upenn.edu/

Adam Chlipala's Textbooks http://adam.chlipala.net/cpdt/ http://adam.chlipala.net/frap/ http://plv.csail.mit.edu/kami/

Chlipala & Braibant - Featherweight Synthesis http://braibant.github.io/update/2014/07/31/fe-si.html

Proof General - A Standard Proof Assistant mode for Emacs https://proofgeneral.github.io/

Coq Reference manual. Some useful things here (descriptions of tactics etc) https://coq.inria.fr/refman/index.html

Coq Standard Library. Kind of a Nightmare to look through. https://coq.inria.fr/library/

Mathematical Components Book. A book on using Coq with the Mathemtical Components library https://math-comp.github.io/mcb/

Another Text http://ilyasergey.net/pnp/

Awesome Coq List https://github.com/uhub/awesome-coq

Programming Language Foundations - An Agda Textbook https://plfa.github.io/

A Listing with these links and more https://avigad.github.io/formal_methods_in_education/


It would be super cool to actually run this on an FPGA. The open source FPGA world is blowing up

Seems like a good tutorial getting started with open source FPGA https://medium.com/@luke_73359/getting-started-with-icestorm-verilog-on-the-ice40hx1k-fpga-cbc71ad3947d https://mcmayer.net/first-steps-with-the-icestorm-toolchain/

Good beginner fpga project explanations https://www.fpga4fun.com/

Some interesting blog posts on verifying Verilog using open source tools https://zipcpu.com/

Many freely available cores https://opencores.org/

Icestorm - The project that started the open source FPGA revolution http://www.clifford.at/icestorm/

ECP5 FPGAs - A Work in progress, but I think it is getting there. By far the most powerful FPGA with open source tooling https://github.com/SymbiFlow/prjtrellis

Open Source FPGA Twitter - Good place to hear news https://twitter.com/ico_tc?lang=en

My Garbo: http://www.philipzucker.com/nand2tetris-in-verilog-and-fpga-and-coq/ http://www.philipzucker.com/simple-fpga-stuff/

Some Boards:

Icestick https://www.latticesemi.com/icestick

Icebreaker https://www.crowdsupply.com/1bitsquared/icebreaker-fpga http://icebreaker-fpga.com/

TinyFPGA https://tinyfpga.com/