Overview
Instruction-Injector is a component of a cross-level processor verification setup for randomized, coverage-guided instruction stream generation. In the described flow, endless instruction streams are generated for co-simulation of an RTL core against an Instruction Set Simulator (ISS) reference model, with runtime coverage information used to guide generation. The architecture includes an Instruction-Injector and a Coverage-Observer between the instruction generators and the compared RTL/ISS executions.
Purpose
The Instruction-Injector injects instruction sequences into random test generators while staying compliant with each generator's internal state. This state awareness is necessary because injecting without regard to internal generator state can make the generators produce different instruction streams, which may lead to a false Comparator result.
Operation
The tool supports legal injection by measuring how many instructions have executed before the current random-generator state is reached. It then schedules the injection for the same near-future instruction count across all instruction generators. The paper states that this is valid because deterministic random sources initialized with the same cryptographic seed provide the same random sequences.
Interaction with Coverage-guided Aging
Instruction-Injector is used together with the Coverage-Observer in the Coverage-guided Aging extension. The Coverage-Observer samples executed instructions, maps them to coverage points, and maintains aging counters. When a counter reaches its minimum limit, the Coverage-Observer gives the Instruction-Injector a hint: a random instruction sequence needed to cover the relevant coverage point. The sequence is built from instructions dynamically sampled during the run.
Context in verification flow
The overall verification approach targets broad and deep randomized testing by generating endless, unrestricted instruction streams that evolve at runtime based on observed coverage. The setup uses an ISS as a reference model in tight co-simulation with an RTL core. Within this context, the Instruction-Injector is the mechanism that inserts coverage-motivated instruction sequences without breaking synchronization between the generated streams.