Architectural States

Defining inputs/states

There are three major types supported in ILAng:

  • Boolean -- flags or one-bit signals in the design

  • Bit-vector -- multi-bit registers (or sometimes one-bit signals)

  • Memory (array) -- buffers, memory system, etc.

Input signals

To define an Boolean (one-bit) input signal of the ILA model:

auto cmd = m.NewBoolInput("Cmd");

To define a bit-vector (multi-bits) type input signal:

auto in_addr = m.NewBvInput("InAddr", 32);
auto in_data = m.NewBvInput("InData", 8);

Note that, currently, ILAng does not support memory/array typed input signals.

State variables

In ILAng, architectural state variables are those that can be updated by the instruction commands. It can be one of the output signals or some intermediate signal/register. To define a Boolean (one-bit) state variable:

auto check_pass = m.NewBoolState("CheckPass");

To define a bit-vector (multi-bits) state variable, you need to provide the bit-width:

You can also define memory/array typed state variables by specifying the bit-width of the address and the data (key and element).

Accessing inputs/states

The architectural state variables can be accessed by their name.

It can also be enumerated.

Last updated