Project

General

Profile

News

MicroTESK 2.3.22 beta released

Added by Andrei Tatarnikov about 8 years ago

The new release contains the following changes:

  • Test Templates: support for assigning default test situations to instructions and instruction groups
  • Test Templates: support for preparator overriding
  • Test Templates: new instruction permulation methods (permutator and obfuscator engines)
  • Test Templates: data is now printed in the end of a test program
  • Several bug fixes and general improvements

The MicroTESK distribution package can be downloaded from here: http://forge.ispras.ru/projects/microtesk/files

MicroTESK 2.3.21 beta released

Added by Andrei Tatarnikov about 8 years ago

The new release contains the following changes:

  • Branch engine: parameter limit was renamed to branch_exec_limit
  • Branch engine: new parameter trace_count_limit that bounds the number of execution traces was introduced
  • Test templates: support for named preparators was implemented
  • Test templates: atomic was renamed to sequence
  • nML translator: some general improvements were made

The MicroTESK distribution package can be downloaded from here: http://forge.ispras.ru/projects/microtesk/files

MicroTESK 2.3.20 beta released

Added by Andrei Tatarnikov about 8 years ago

The new release contains the following changes:

  • Support for randomizing preparators (random selection between several preparator variants) was implemented (*)
  • Some issues in the branch generation engine were fixed

The MicroTESK distribution package can be downloaded from here: http://forge.ispras.ru/projects/microtesk/files

What's new (*):

Preparator Randomization

Now it is possible to specify several variants of a preparator, which can be selected at random when the preparator is instantiated. Syntax is the following:

preparator(:target => 'REG') {
  variant(:name => '1', :bias => 50) {
    comment 'Variant 1'
    lui target, value(16, 31)
    ori target, target, value(0, 15)
  }

  variant(:name => '2', :bias => 50) {
    comment 'Variant 2'
    ori target, zero, value(16, 31)
    sll target, target, 16
    addi target, target, value(0, 15)
  }
}

A variant description has two optional parameters: name and bias.

The name attribute allows specifying a preferred preparator variant when a preparator is explicitly inserted by using the prepare function. For example:

prepare t1, 0xdeadbeef, :variant => '1' # Preparator '1' is chosen.
prepare t2, 0xbaadf00d, :variant => '2' # Preparator '2' is chosen.

Search by variant name is performed after a suitable preparator is chosen according to value mask and argument values. So if a variant with the specified name is not defined for the chosen preparator, MicroTESK reports a warning and uses a randomly chosen variant of the given preparator.

The bias attribute is used set up a bias for the current variant. It works in a similar way as the dist construct which is for selecting random values. The atribute can be skipped if you want to define equally probable variants.

MicroTESK 2.3.19 beta released

Added by Andrei Tatarnikov over 8 years ago

The new release contains the following changes:

  • Support for instruction permutations in test template blocks was implemented (*)

The MicroTESK distribution package can be downloaded from here: http://forge.ispras.ru/projects/microtesk/files

What's new (*):

Instruction Permutations

Test template blocks how have a new parameter permutator that specifies the permutation method to be applied to instruction sequences described by these blocks. Currently, two methods are supported:

  1. trivial - order of instruction is not changed
  2. random - instructions come in random order

For example, the following code produces a random permutation of the specified instructions:

atomic(:permutator => 'random') {
  Add reg(_), reg(_), reg(_)
  Sub reg(_), reg(_), reg(_)
  And reg(_), reg(_), reg(_)
  Or  reg(_), reg(_), reg(_)
  Nor reg(_), reg(_), reg(_)
  Xor reg(_), reg(_), reg(_)
}.run

MicroTESK 2.3.15 beta released

Added by Andrei Tatarnikov over 8 years ago

The new release contains the following changes:

  • Support for explicit invocation of preparators in test templates (*)
  • Support for MMU-related constraints in test situations (*)
  • Some bug fixes and general improvements

The MicroTESK distribution package can be downloaded from here: http://forge.ispras.ru/projects/microtesk/files

What's new (*):

Explicit Preparators Invocation

A preparator can be explicitly inserted into code using the prepare method. Supported use cases:

1. Preparators can be invoked explicitly anywhere in a test template to assign constant or random values to registers. For example:

prepare t0, 0xDEADBEEF
prepare t1, rand(1, 63)

2. Preparators can be invoked explicitly inside of preparator and buffer_preparator blocks to initialize registers with values provided when the block is instantiated. For example:

buffer_preparator(:target => 'L1') {
  prepare t0, address
  lw t1, 0, t0
}

Constraint for Memory-Related Situations

Now test situations for MMU can be specified using constraints. There are two kinds of constraints: event-based (hit, mist and event with distribution) and equality-based (for a single value, array, range and distribution). Syntax is the following:

simple_dist = dist(range(:value => 0,      :bias => 50),
                   range(:value => 1..3,   :bias => 25),
                   range(:value => [5, 7], :bias => 25))

lw s0, 0, t0 do situation('address',
    :path => constraints(eq('L1.V', 0), hit('L1'))) end

lw s0, 0, t0 do situation('address',
    :path => constraints(eq('L1.V', [0, 2]), hit('L1'))) end

lw s1, 0, t1 do situation('address',
    :path => constraints(eq('L1.V', 0..3), miss('L1'))) end

lw s0, 0, t0 do situation('address',
    :path => constraints(eq('L1.V', simple_dist), hit('L1'))) end

lw s1, 0, t1 do situation('address',
    :path => constraints(eq('L1.V', 0), event('L1', :hit => 50, :miss => 50))) end
(81-90/135)

Also available in: Atom