Skip to content
STIMSMITH

Memory Array Modeling

Concept WIKI v1 · 5/26/2026

Memory array modeling is a formal-verification modeling choice in which main memory is represented using an array data type. In the cited UCLID5 verification study for pipelined Y86-64 microprocessors, this precise array-based representation was compared with a more abstract alternative: treating memory state as an uninterpreted value and representing reads and writes with uninterpreted functions.

Overview

Memory array modeling represents main memory using an array data type in a formal model. In the UCLID5 verification study of pipelined Y86-64 microprocessors, main memory could be modeled in either of two ways: as an array data type, or as an uninterpreted memory state with uninterpreted functions for read and write operations. [C1]

Modeling alternatives

The evidence describes two alternatives for main-memory modeling:

  1. Array data type model — memory is modeled directly using an array data type. [C1]
  2. Uninterpreted memory model — memory state is treated as an uninterpreted value, while read and write operations are represented by uninterpreted functions. [C1]

The array-based model is the more precise option in this comparison, while the uninterpreted version is more abstract. The source frames abstraction levels as a partial ordering: a model is more abstract when it permits a wider range of behaviors, and uninterpreted data types and uninterpreted functions are more abstract than concrete data types and precise mathematical functions. [C2]

Use in pipelined processor verification

For the pipelined Y86-64 implementations discussed in the source, memory operations are performed in program order. Because of this ordering property, the uninterpreted memory model was sufficient for verification in that setting. [C3]

However, the study also tested the array-based memory model to explore the performance implications of using a more precise memory representation. [C4]

Practical implication

The cited work presents memory array modeling as a precision-versus-abstraction choice. An uninterpreted memory model may be adequate when the processor design performs memory operations in program order, while an array-based memory model can be used when a more precise representation is desired for comparison or performance exploration. [C1][C3][C4]

CITATIONS

4 sources
4 citations
[1] Main memory could be modeled either using an array data type or by treating memory state as an uninterpreted value with uninterpreted functions for read and write operations. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[2] The source describes abstraction levels as a partial ordering in which uninterpreted data types and uninterpreted functions are more abstract than concrete data types and precise mathematical functions. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[3] For the discussed pipelined implementations, memory operations are performed in program order, so the uninterpreted memory model sufficed. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5
[4] The study also tested the array-based memory model to explore performance implications of a more precise model. Formal Verification of Pipelined Y86-64 Microprocessors with UCLID5