Reference. Formalized High Level Synthesis with Applications to Cryptographic Hardware
Cite
Cites 62 works (3 here)
With notes (3)
Dijkstra monads for all maillard-2019-dijkstra
This paper proposes a general semantic framework for verifying programs with arbitrary monadic side-effects using Dijkstra monads, which we define as monad-like structures indexed by a specification monad. We prove that any monad morphism between a computational monad and a specification monad gives rise to a Dijkstra monad, which provides great flexibility for obtaining Dijkstra monads tailored to the verification task at hand. We moreover show that a large variety of specification monads can be obtained by applying monad transformers to various base specification monads, including predicate transformers and Hoare-style pre- and postconditions. For defining correct monad transformers, we propose a language inspired by Moggi’s monadic metalanguage that is parameterized by a dependent type theory. We also develop a notion of algebraic operations for Dijkstra monads, and start to investigate two ways of also accommodating effect handlers. We implement our framework in both Coq and F*, and illustrate that it supports a wide variety of verification styles for effects such as exceptions, nondeterminism, state, input-output, and general recursion.
Just do it: simple monadic equational reasoning gibbons-2011-just
Formal verification of a realistic compiler leroy_formal_2009
This paper reports on the development and formal verification (proof of semantic preservation) of CompCert, a compiler from Clight (a large subset of the C programming language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Such a verified compiler is useful in the context of critical software and its formal verification: the verification of the compiler guarantees that the safety properties proved on the source code hold for the executable compiled code as well.
External (59)
- Automatic Generation of Architecture-Level Models from RTL Designs for Processors and Accelerators (2022)
- Model Validation Codebase (artifact) (2022)
- Fuzzing High-Level Synthesis Tools (2021)
- A Mechanized Semantic Metalanguage for High Level Synthesis (2021)
- Lutsig: a verified Verilog compiler for verified circuit development (2021)
- Generating Architecture-Level Abstractions from RTL Designs for Processors and Accelerators Part I: Determining Architectural State Variables (2021)
- A High-Performance Low-Power Barrett Modular Multiplier for Cryptosystems (2021)
- High-level synthesis tools should be proven correct (2021)
- VeriFormal: an executable formal model of a hardware description language (2021)
- The essence of Bluespec: a core language for rule-based hardware design (2020)
- Mechanized semantics and verified compilation for a dataflow synchronous language with reset (2020)
- Verifiable Security Templates for Hardware (2020)
- Rigorous engineering for hardware security: Formal modelling and proof in the CHERI design and implementation process (2020)
- A Hierarchy of Monadic Effects for Program Verification Using Equational Reasoning (2019)
- A Proof-Producing Translator for Verilog Development in HOL (2019)
- The Mechanized Marriage of Effects and Monads with Applications to High-assurance Hardware (2019)
- The state of Sail (2019)
- Calculating a backtracking algorithm: an exercise in monadic program derivation (2019)
- Ready, set, verify! applying hs-to-coq to real-world Haskell code (experience report) (2018)
- Concurrency-Aware Thread Scheduling for High-Level Synthesis (2018)
- Kami: a platform for high-level parametric hardware specification and its modular verification (2017)
- A Principled Approach to Secure Multi-core Processor Design with ReWire (2017)
- Hardware Synthesis of Weakly Consistent C Concurrency (2017)
- Trustworthy specifications of ARM® v8-A and v8-M system level architecture (2016)
- Π-Ware: hardware description and verification in Agda (2015)
- There is no fork (2014)
- The Coinductive Resumption Monad (2014)
- Semantics-Driven Design and Implementation of High-Assurance Hardware (2014)
- Chisel (2012)
- Formal verification of monad transformers (2012)
- HOLCF 2011: A Definitional Domain Theory for Verifying Functional Programs (2012)
- Higher-Order Abstraction in Hardware Descriptions with CλaSH (2011)
- A Coinductive Calculus for Asynchronous Side-Effecting Processes (2011)
- Translation Validation of High-Level Synthesis (2011)
- ABC: An Academic Industrial-Strength Verification Tool (2010)
- A formal executable semantics of Verilog (2010)
- Principles of Program Analysis (2010)
- Some Domain Theory and Denotational Semantics in Coq (2009)
- Bootstrapping Inductive and Coinductive Types in HasCASL (2008)
- Kiwi: Synthesis of FPGA Circuits from Parallel Programs (2008)
- From algebraic semantics to denotational semantics for Verilog (2008)
- Beauty in the beast (2007)
- Into the Loops: Practical Issues in Translation Validation for Optimizing Compilers (2005)
- Relating Event and Trace Semantics of Hardware Description Languages (2002)
- A resumption monad transformer and its applications in the semantics of concurrency (2001)
- Contemporary Logic Design (2000)
- Translation validation for an optimizing compiler (2000)
- Formal Semantics and Proof Techniques for Optimizing VHDL Models (1999)
- Lava (1998)
- Translation validation (1998)
- The semantic challenge of Verilog HDL (1995)
- Formal Semantics for VHDL (1995)
- Notions of computation and monads (1991)
- muFP, a language for VLSI design (1984)
- Advice on structuring compilers and proving them correct (1973)
- Definitional interpreters for higher-order programming languages (1972)
- A method for synthesizing sequential circuits (1955)
- Will the future success of reconfigurable computing require a paradigm shift in our research community's thinking? (keynote, ARC)
- Yosys Open SYnthesis Suite