Project

General

Profile

News

MicroTESK: 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: 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
(191-200/364)

Also available in: Atom