Giter Site home page Giter Site logo

philzook58 / nand2coq Goto Github PK

View Code? Open in Web Editor NEW
53.0 7.0 3.0 843 KB

Build an educational formally verified version of the Nand 2 Tetris course using Coq (and other formal tools).

Coq 45.02% Haskell 8.87% Verilog 9.23% HTML 18.60% CSS 4.25% Python 13.27% Assembly 0.02% Hack 0.17% OCaml 0.44% Standard ML 0.12%
coq fpga formal-methods nand2tetris

nand2coq's Introduction

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/

SiFive is reimplementing Kami. A very worthy README https://github.com/sifive/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/

Coq course https://github.com/vlopezj/coq-course

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

Haskell For Coq Programmer's http://blog.ezyang.com/2014/03/haskell-for-coq-programmers/

Formal verification of microprocessors: a first experiment with the Coq proof assistant https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.39.9165&rep=rep1&type=pdf

RISC-V formal specs: 3 Haskell, 1 SAIL, 1 Kami https://mail.haskell.org/pipermail/haskell-cafe/2019-May/131067.html

https://github.com/stonebuddha/eopl

https://project-oak.github.io/silveroak/demo/tutorial.html

https://github.com/conal/agda-hardware

Pi-Ware Agda https://drops.dagstuhl.de/opus/volltexte/2018/8479/pdf/LIPIcs-TYPES-2015-9.pdf


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/

Awesome HDL list https://github.com/drom/awesome-hdl

nand2coq's People

Contributors

philzook58 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

nand2coq's Issues

Clarify README

apart from formatting issues that impact its readability (which I'll gladly help with), it leaves some questions to be answered, for example it states that coq and other formal tools will be used. So far its seems like the project mainly consist of Haskell, coq, and verilog, is there any plan for this to change? or is the idea, that like for example make a lisp nand2tetris is going to be implemented in as many formal tools as possible? :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.