MicroTESK 2.2.0 alpha released
New minor version MicroTESK 2.2.0 alpha has been released.
The new minor version of MicroTESK contains the following new features and changes:
- Support for automated extraction of coverage information that allows building constraints for named paths in instruction control flow (*)
- Possibility to process test templates in a stream manner (block by block), which allows processing larger test templates
- The
trace
method of the test template language now accepts objects created by therand
method - Several minor bug fixes and general improvements
The MicroTESK distribution package can be downloaded from here: http://forge.ispras.ru/projects/microtesk/files
What's new (*):
Coverage Information Extraction
The main feature of the new release is extraction of test situations for named paths in the instruction control flow. Test situations are described as constraints on input parameters which should be satisfied in order to cause execution of a specific path. Test data is generated by solving the constraints specified in a test template.
Paths can be marked in ISA specifications using the mark
function. For example, here is a part of the miniMIPS ADD instruction specification where two possible execution paths are marked as normal
and overflow
:
op add (rd: REG, rs: REG, rt: REG)
syntax = format("add %s, %s, %s", rd.syntax, rs.syntax, rt.syntax)
image = format("000000%s%s%s00000100000", rs.image, rt.image, rd.image)
action = {
temp = rs<31>::rs + rt<31>::rt;
if temp<32> != temp<31> then
mark("overflow");
exception("IntegerOverflow");
else
mark("normal");
rd = temp<31..0>;
endif;
}
Test situations to be covered by tests are specified in test templates using the name of the instruction and the name of the path. For example:
add t0, t1, t2 do situation('add.overflow') end
add t3, t4, t5 do situation('add.normal') end
NOTE: To generate test data based on constraints, MicroTESK requires the Z3 solver to be installed. See Installation Guide for more information.
Comments