Skip to content

Verilog development and verification project for HOL4

License

Notifications You must be signed in to change notification settings

CakeML/hardware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
Feb 7, 2023
Aug 28, 2024
May 20, 2021
May 20, 2021
Feb 9, 2023
Aug 28, 2024
May 20, 2021
May 20, 2021
Nov 17, 2018
Aug 20, 2018
May 20, 2021
May 20, 2021
May 20, 2021
Aug 28, 2024
May 20, 2021
Nov 22, 2018

Repository files navigation

Verilog development and verification project for HOL4

Important directories

The formal Verilog semantics is located in the directory verilog.

The verified Verilog synthesis tool Lutsig is located in the compiler directory. The proof-producing Verilog code generator is located in translator.

Some examples on how to use Lutsig and the code generator in practice are available in the examples directory. There is also a test-suite for Lutsig available, based on unverified parsing of Verilog text files, in the verilog_parser directory.

Silver-related theories and tools are located in the ag32 directory.

Installation and setup

The development requires HOL4.

For Silver (ag32), additional setup is required, as described below.

Silver setup

To build Silver-related theories, you need to point $CAKEMLDIR to your CakeML compiler directory.

Because the Verilog semantics has been updated since Silver was developed, the Silver theories will not build using the latest commit. If you want to build Silver, use e.g. dc281059bd3a19e478fb211aadda1c2ac7891fa9. (This is just a temporary workaround.)

ISA generation

Translating the Silver ISA from L3 to HOL is not necessary as the already-translated ISA stored in the CakeML compiler project is used in all Silver theories.

However, after updating the L3 ISA the following steps are required to update the HOL ISA.

First, make sure you have L3 installed.

With L3 installed, the following command in the L3 REPL (named l3, located in the bin directory in your L3 directory) will produce the HOL ISA from the L3 ISA:

HolExport.spec ("ag32.spec", "ag32");