Skip to content
STIMSMITH

Generated C++ ISS

CodeArtifact WIKI v1 · 5/29/2026

Generated C++ ISS is the C++ instruction-set-simulator core produced from an ITL-based complete property suite in the paper “Generating an Efficient Instruction Set Simulator from a Complete Property Suite.” The artifact is derived from the ISA model used for formal verification, so after the equivalence proof it is intended to comply with both the ISA and the verified RTL design.

Overview

Generated C++ ISS refers to the automatically generated C++ instruction set simulator described in Generating an Efficient Instruction Set Simulator from a Complete Property Suite. The simulator is generated from the same complete property suite used for formal processor verification, rather than from a separately hand-written simulator model or an architecture-description-language reimplementation. This addresses a key risk of traditional ISS development: a simulator independently reimplementing the ISA can diverge from the actual design or ISA. [C1]

The paper presents this artifact as a way to obtain a provably correct simulator with relatively small effort. Because the property suite is used in the formal verification of the processor, the generated simulator is constructed from the ISA model that is checked against the RTL design. [C2]

Source model

The generation flow starts from an ISA description written in the ITL verification language. In the architectural-style property shown in the paper, an instruction is decoded, the current architectural state is read, next_state computes the architectural state after executing the instruction, and the proof obligation relates that next state to the implementation state after one step. The paper states that the next_state function forms the core of the ISA. [C3]

A complete property suite is important because completeness means the properties capture the design behavior uniquely for every possible combination of states and inputs. After formal verification, the set of properties forms a functionally equivalent model of the verified design; any two designs satisfying all properties of a complete property suite are formally equivalent. [C4]

Generated C++ structure

The generated simulator core is a C++ class named Sim. This class contains the code for executing instructions and holds the architectural state. The generated class is not the entire simulation environment by itself: the user supplies a wrapper that calls the generated public functions to execute individual instructions and connects the simulation core to external components such as memories, buses, commercial simulation tools, or debugging tools. [C5]

The paper also describes an optimization in which decoded fields of the current instruction word are kept in an instruction_t structure. This avoids repeated decoding of the same instruction. The authors identify this as useful because software locality, such as loop execution, makes instruction reuse common and can reduce simulation runtime. [C6]

Verification and lifecycle

The ISS can be generated early from the ITL ISA description without first completing the full equivalence proof between the ISA and the RTL or identifying the mapping functions between architectural and implementation state. If the ISA is updated, for example after finding a bug during formal verification, the ISS must be generated again. The paper notes that the ISS is therefore available when verification starts, while full confidence that it complies with the design is obtained at the end of verification. [C7]

Evaluation

The authors report generating an ISS for a small pipelined processor as an initial evaluation, and the abstract states that the approach was shown feasible for an industrial design. The resulting simulator performance is reported as comparable to custom state-of-the-art simulators. [C8]

CITATIONS

8 sources
8 citations
[1] Traditional ISS development often requires a separate ISA reimplementation, creating a risk that the ISS diverges from the design or ISA. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[2] The paper presents automatic generation of an instruction set simulator from a complete property suite used for formal processor verification, yielding a provably correct simulator with relatively small effort. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[3] The generated ISS starts from an ITL ISA description in which instruction decoding, architectural state, and a next_state function define instruction execution; next_state forms the core of the ISA. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[4] A complete property suite uniquely captures design behavior for all state/input combinations and forms a functionally equivalent model of the verified design; designs satisfying all properties of a complete suite are formally equivalent. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[5] The generated C++ class Sim is the core of the ISS, contains instruction-execution code, holds architectural state, and is used with a wrapper for execution control and peripheral integration. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[6] The generated ISS can cache decoded instruction information to avoid repeated decoding, which the paper identifies as efficient because software locality such as loops can reduce simulation runtime. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[7] The ISS can be generated before the full ISA/RTL equivalence proof is completed, but full confidence in compliance with the design is achieved at the end of verification; regeneration is needed when the ISA changes. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[8] The approach was evaluated by generating an ISS for a small pipelined processor, and the paper reports feasibility for an industrial design with performance comparable to custom state-of-the-art simulators. Generating an Efficient Instruction Set Simulator from a Complete Property Suite