Skip to content
STIMSMITH

Stream Generation

Concept WIKI v1 · 5/26/2026

Stream generation is the test-program generation level that decides which instructions appear in a generated test and in what order. In Genesys-Pro, it is primarily driven by sequencing-control statements in a user test template, uses stream solvers that recursively invoke substatement solvers, and ultimately delegates concrete instruction creation to a single-instruction solver.

Definition

Stream generation is one of the two levels of test program generation described for Genesys-Pro. It determines which instructions appear in a test and the order in which they appear, while instruction-level generation creates the specific instruction instances. [C1]

Role in Genesys-Pro

Genesys-Pro's generation engine takes a test template and a declarative architecture model as input and produces a test program matching the scenario requested by the template. The generator is pseudorandom and uses generic biasing constraints so that repeated invocations can exercise the requested scenario in different contexts. [C2]

Within this process, stream generation handles the sequencing of the test. The evidence describes test program generation as occurring at two levels: stream and single instruction. [C1]

Drivers and solver structure

Sequencing-control statements in the user's test template are the primary drivers of stream generation. For each control statement, Genesys-Pro associates a separate stream solver. That solver recursively invokes solvers for its substatements, and each recursive path terminates by invoking the single-instruction solver. [C3]

For example, for a select statement, the associated stream solver randomly chooses one of the statement's substatements, such as an Add instruction, and invokes that substatement's solver. [C3]

Dependencies across instructions

The user can express dependencies between different instructions in the stream through shared variables and generic biases. The evidence gives examples such as a shared variable reg and a resource dependency bias. [C4]

When generating a particular statement, the engine considers previously generated instructions, but it does not consider requests that follow the current statement in the template. This can increase the chance that later statements fail to generate. [C5]

Failure handling

Genesys-Pro uses two strategies to reduce failures caused by the forward-generation approach. First, it can detect failures before they occur and inject special instructions into the test. One example is register reloading, where load instructions are injected into the stream to set registers to desired values when bounded resources such as floating-point registers can no longer be set directly to a requested value. [C6]

Second, each stream solver has rollback capabilities. If generation of a substatement fails, the solver can roll back to the state before the failed attempt and select another substatement. The evidence gives an example in which a failed Add generation attempt in a select statement is rolled back and another substatement such as Sub is selected. [C7]

Reentrant and concurrent streams

The stream solver supports controlled generation of reentrant instructions that execute more than once in a single test run, including procedure calls, recurring interrupts, user-defined loops, and self-modifying code. Randomly generated loops can be prohibited to avoid generating infinite loops. [C8]

For multiprocessor or multithreaded designs, the stream solver creates separate instruction sequences for each processor or thread. The evidence notes that this can involve additional synchronization mechanisms. [C9]

Relationship to instruction-level generation

Stream generation and instruction-level generation use different techniques. Stream generation decides instruction presence and ordering; instruction-level generation handles the construction of individual instruction instances. In the described Genesys-Pro flow, a stream-generation path eventually invokes the single-instruction solver, which formulates an instruction request as a constraint satisfaction problem and solves it to produce an instruction instance satisfying the constraints. [C1] [C10]

CITATIONS

10 sources
10 citations
[1] C1: Test program generation occurs at stream and single-instruction levels; stream-level generation determines which instructions appear and their order, while instruction-level generation creates specific instruction instances. [PDF] Genesys-pro: innovations in test program generation for functional ...
[2] C2: The Genesys-Pro generation engine takes a test template and declarative architecture model as input, produces a scenario-compliant test program, and uses pseudorandom generation with generic biasing constraints to vary noncritical parameters. [PDF] Genesys-pro: innovations in test program generation for functional ...
[3] C3: Sequencing-control statements in the user test template primarily drive stream generation; Genesys-Pro associates stream solvers with control statements, recursively invokes substatement solvers, and terminates recursive paths with the single-instruction solver. [PDF] Genesys-pro: innovations in test program generation for functional ...
[4] C4: Users can express dependencies between instructions in the stream through shared variables and generic biases. [PDF] Genesys-pro: innovations in test program generation for functional ...
[5] C5: When generating a statement, the engine considers only previously generated instructions and not later requests, which can increase the possibility of later generation failures. [PDF] Genesys-pro: innovations in test program generation for functional ...
[6] C6: Genesys-Pro can reduce generation failures by detecting failures before they occur and injecting special instructions, including register reloading through injected load instructions for bounded resource families such as floating-point registers. [PDF] Genesys-pro: innovations in test program generation for functional ...
[7] C7: Stream solvers have rollback capabilities that let them retry substatement generation after failure, such as rolling back a failed Add generation attempt and selecting another substatement such as Sub. [PDF] Genesys-pro: innovations in test program generation for functional ...
[8] C8: The stream solver allows controlled generation of reentrant instructions such as procedure calls, recurring interrupts, user-defined loops, and self-modifying code; prohibiting randomly generated loops protects against infinite loops. [PDF] Genesys-pro: innovations in test program generation for functional ...
[9] C9: For multiprocessor or multithreaded designs, the stream solver creates separate instruction sequences for each processor or thread and may involve synchronization mechanisms. [PDF] Genesys-pro: innovations in test program generation for functional ...
[10] C10: Generating a single instruction is handled as a constraint satisfaction problem in which the engine formulates the request as a CSP, the instruction solver finds a solution, and an instruction instance satisfying constraints is produced. [PDF] Genesys-pro: innovations in test program generation for functional ...