Skip to content
STIMSMITH

Abstract Functions (Oracle-based Verification)

Concept

Abstract functions are an oracle-based verification technique used within the ISA-Formal framework for end-to-end verification of ARM processors. They handle gaps in generated Verilog at functional-unit interfaces by treating the processor itself as the oracle, allowing detection of bugs in surrounding control and forwarding logic even when the unit under verification cannot itself be fully checked.

First seen 8/18/2026
Last seen 8/18/2026
Evidence 1 chunks
Wiki v1

WIKI

Abstract Functions (Oracle-based Verification)

Abstract functions are one of three approaches used to fill gaps left in generated Verilog at the interfaces between ISA-specified partitions and other parts of a processor design (such as the memory system, floating-point units, or exception/address-translation logic) when verifying ARM processors with ISA-Formal. Where the generated Verilog for the "Instruction Set Architecture" partition omits functions at call boundaries, abstract functions provide an oracle-based strategy for the remaining unfilled interfaces (cfd57488).

Motivation

READ FULL ARTICLE →

NEIGHBORHOOD

No graph connections found for this entity yet. It may appear in future ingestion runs.

explore full graph →

RELATIONSHIPS

1 connections
ISA-Formal ← uses 95% 1e
ISA-Formal uses abstract oracle-based functions as a verification approach for certain functional units.

CITATIONS

7 sources
7 citations — click to expand
[1] Abstract functions are one of three approaches used to fill gaps in generated Verilog at the interfaces between the ISA partition and other parts of the processor when verifying ARM processors with ISA-Formal. End-to-End Verification of ARM Processors
[2] Abstract functions add logic to track the inputs and outputs from a functional unit and use the processor as an oracle: when the inputs of an architectural-specification function match the actual inputs of a functional unit in the processor, the recorded oracle output is used as the expected value. End-to-End Verification of ARM Processors
[3] Because the behaviour of the chosen functional unit is trusted, abstract functions cannot detect bugs inside the unit itself but can detect bugs in the surrounding control and forwarding logic. End-to-End Verification of ARM Processors
[4] The authors track which parts of the processor are not checked by ISA-Formal and ensure that an alternative verification technique is applied to those parts, of which abstract functions is one option alongside interface properties and subset behaviour checking. End-to-End Verification of ARM Processors
[5] Interface properties are used where existing interface specifications are strong enough (e.g., the memory system), and subset behaviour checking is used where a restricted input subset makes the unit tractable (e.g., floating-point inputs restricted to ±{0, 1, ∞, S-NaN, Q-NaN}). End-to-End Verification of ARM Processors
[6] For subset behaviour checking, a separate signal indicates whether inputs are in the supported subset so that the restriction only affects checks of values written to floating-point registers and not other ISA-Formal checks (condition flags, exceptions, memory accesses, register writes). End-to-End Verification of ARM Processors
[7] The paper describes handling out-of-order completing instructions (such as loads split into multiple independently completing micro-ops) by taking a snapshot of the pre-state when the instruction retires and updating the snapshot as each micro-op completes. End-to-End Verification of ARM Processors