Definition
The Sequential Reference Model (SEQ) is the sequential processor model used as the reference version of the Y86-64 ISA in the cited verification framework. The ISA-level specification is based on sequential processing, meaning instructions execute in strict sequential order and define effects on architectural state such as registers, the program counter, and memory. [C1]
Role in verification
In the verification task, SEQ serves as the reference against which the pipelined PIPE implementations are checked for functional equivalence. The work specifically frames the task as determining whether SEQ and seven PIPE variants are functionally equivalent. [C2]
SEQ is easier to test by conventional simulation than the more complex pipelined implementations, although the source notes that SEQ itself could still be incorrect. [C3]
Relationship to PIPE
SEQ and PIPE share functional elements such as instruction decoding logic and the ALU. Their main differences are PIPE's additional pipeline registers and PIPE-specific control logic. [C4]
The verification framework includes control signals that allow PIPE to run in normal or flushing mode, allow SEQ state elements to import corresponding values from PIPE, and allow SEQ to operate. During execution, state variables are captured as UCLID5 variables and assertions are checked over those values. [C5]
Correspondence checking
The cited framework uses a Burch-Dill-style abstraction function, α, that maps a pipeline state to the architectural state obtained after flushing partially executed instructions until they complete. After flushing, the architectural state is transferred to SEQ and saved. [C6]
Correspondence checking compares two symbolic simulation sequences:
- one sequence performs one PIPE step, flushes the pipeline, and saves the resulting architectural state;
- the other sequence flushes the same initial PIPE state, transfers the resulting architectural state to SEQ, saves it, executes one SEQ step, and saves the new SEQ state. [C7]
The required correspondence condition is that the architectural state after the PIPE step and flush equals either the state after one SEQ step or the pre-step SEQ state. The first case corresponds to a PIPE cycle that eventually completes an instruction; the second corresponds to a stall or canceled instruction, so the cycle has no architectural effect. [C8]
State compared
The UCLID5 verification condition checks that PIPE operation is consistent with SEQ operation by comparing saved state components including the program counter when appropriate, register file, condition codes, memory, and status. [C9]
Modeling and generation
The control logic for both SEQ and PIPE is described in HCL, the Hardware Control Language. HCL definitions are translated into UCLID5 macro definitions, and shared functional-block definitions are duplicated into the two models to maintain consistency. [C10]