MicroTESK (Microprocessor Testing and Specification Kit) is a toolkit that automates development of test program generators for microprocessors and other programmable devices. Test program generator (TPG), or instruction stream generator (ISG), is a utility for producing randomized assembly code aimed at functional verification of RTL models, FPGA-based emulators, and ICs.
MicroTESK follows a specification-based approach, meaning that a TPG is automatically constructed from formal description of the instruction set architecture (ISA). In a sense, MicroTESK is a retargetable TPG being customized with ISA-specific information. Specifications are written in two languages: nML (instructions syntax and semantics) and mmuSL (memory management logic).
MicroTESK provides a Ruby-based language to express test scenarios, so-called templates. The language supports constructs for producing instruction sequences and generating test data: instruction iterators and combinators, probability distributions, constraints, etc. There are built-in TPG engines for verifying branch processing and memory management units. The toolkit is extendable with user-defined engines.
MicroTESK is applicable to a wide range of microprocessor architectures including RISC (ARM, MIPS, Power, RISC-V, SPARC, etc.), CISC (x86, etc.), VLIW/EPIC (Elbrus, Itanium, etc.), DSP, GPU, etc. Our experience mainly relates to RISC; in cooperation with our partners, we have developed MicroTESK-based TPGs for MIPS64, ARMv8, RISC-V, and custom DSP architectures.
For more information, visit the project page.