There is no such thing as high assurance without high assurance hardware. High assurance hardware is essential because any and all high assurance systems ultimately depend on hardware that conforms to, and does not undermine, critical system properties and invariants. And yet, high assurance hardware development is stymied by the conceptual gap between formal methods and hardware description languages used by engineers. This article advocates a semantics-directed approach to bridge this conceptual gap. We present a case study in the design of secure processors, which are formally derived via principled techniques grounded in functional programming and equational reasoning. The case study comprises the development of secure single-and dual-core variants of a single processor, both based on a common semantic specification of the ISA. We demonstrate via formal equational reasoning that the dual-core processor respects a "nowrite-down" information flow policy. The semantics-directed approach enables a modular and extensible style of system design and verification. The secure processors require only a very small amount of additional code to specify and implement, and their security verification arguments are concise and readable. Our approach rests critically on ReWire, a functional programming language providing a suitable foundation for formal verification of hardware designs. This case study demonstrates both ReWire's expressiveness as a programming language and its power as a framework for formal, high-level reasoning about hardware systems.CCS Concepts: r Security and privacy → Logic and verification; Security in hardware; r Hardware → Hardware description languages and compilation; Functional verification; r Software and its engineering → Functional languages;Additional Key Words and Phrases: Equational reasoning, monads, hardware security, reconfigurable computing ACM Reference Format: Adam Procter, William L. Harrison, Ian Graves, Michela Becchi, and Gerard Allwein. 2017. A principled approach to secure multicore processor design with ReWire.