Sail architecture definition language
Browse cluster: OCaml Systems and Utilities →Sail is a language for defining instruction-set architecture (ISA) semantics—the formal specification of how processor machine instructions behave—developed by researchers at the University of Cambridge, University of Edinburgh, and other institutions. Given a Sail ISA specification, the toolchain can type-check it using the Z3 SMT solver, generate executable emulators in C or OCaml, produce documentation in LaTeX or AsciiDoc, create theorem-prover definitions in Coq, Isabelle, or HOL4, and support symbolic evaluation and concurrent testing through integration with tools like Isla. The language itself is a first-order imperative language with lightweight dependent typing for numeric types and bitvector lengths, and Sail specifications have been created for numerous processor architectures including Arm, RISC-V, MIPS, x86, IBM Power, and CHERI-extended variants of several of these.