Introduction

Why ILA/ng

ILAng is a modeling and verification platform for systems-on-chips (SoCs) where Instruction-Level Abstraction (ILA) is used as the formal model for hardware components. The ILA formal model targeting the hardware-software interface enables a clean separation of concerns between software and hardware through a uniﬁed model for heterogeneous processors and accelerators. ILAng provides a programming interface for

constructing ILA models,

synthesizing ILA models from templates using program synthesis techniques,

verifying properties on ILA models, and

behavioral equivalence checking between different ILA models, and between an ILA specification and an implementation.

ILAng also provides for translating models and properties into various languages (e.g., Verilog and SMT LIB2) for diﬀerent veriﬁcation settings and use of third-party veriﬁcation tools.

Memory Consistency and Concurrency Reasoning. The ILA model is an operational model that captures program-visible state updates. When integrated with axiomatic memory consistency models that specify orderings between memory operations, the transition relation can be used to reason about concurrent interactions between heterogeneous components. [FMCAD18]

Data Race Checking of GPU Programs. Besides general-purpose processors and accelerators, an ILA model can be synthesized for the Nvidia GPU PTX instruction set using the synthesis engine. This can then been used for data race checking for GPU programs. [ICCAD18]

Other sources

​POSH Upscale: The goal of Upscale project is to develop tools and techniques for verifying and evaluating open-source hardware, with the ILA-based methodology at its core.