RISC-V is a relatively new, open instruction set architecture with a mature ecosystem and an official formal machine-readable specification. It is therefore a promising playground for formal-methods research. However, we observe that different formal-methods research projects are interested in different aspects of RISC-V and want to simplify, abstract, approximate, or ignore the other aspects. Often, they also require different encoding styles, resulting in each project starting a new formalization from-scratch. We set out to identify the commonalities between projects and to represent the RISC-V specification as a program with holes that can be instantiated differently by different projects. Our formalization of the RISC-V specification is written in Haskell and leverages existing tools rather than requiring new domain-specific tools, contrary to other approaches. To our knowledge, it is the first RISC-V specification able to serve as the interface between a processor-correctness proof and a compiler-correctness proof, while supporting several other projects with diverging requirements as well.
翻译:RISC-V是一个相对较新的开放式教学结构,具有成熟的生态系统和正式的机器可读规格,因此是一个有希望的正规方法研究的游乐场。然而,我们注意到,不同的正规方法研究项目对RISC-V的不同方面感兴趣,希望简化、抽象、近似或忽略其他方面。它们通常也需要不同的编码样式,导致每个项目开始从脱钩开始新的正规化。我们着手确定项目之间的共同点,并代表RISC-V规格,将其作为一个有不同项目可以同步化的漏洞的方案。我们用Haskell书写了RISC-V规格,并利用了现有工具,而不是要求新的特定领域工具,而与其他方法相反。据我们所知,它也是第一个RISC-V规格,能够作为处理或校正证据与编者校准证据之间的接口,同时支持其他几个要求不同的项目。