Как объявить список фиксированной длины в specman?

StackOverflow https://stackoverflow.com/questions/20696

  •  09-06-2019
  •  | 
  •  

Вопрос

В E (specman) я хочу объявить переменные, представляющие собой списки, и зафиксировать их длину.

Это легко сделать для члена структуры:

thread[2] : list of thread_t;

а для «обычной» переменной в функции вышеизложенное не работает, и мне нужно сделать что-то вроде:

var warned : list of bool;
gen warned keeping {
    it.size() == 5;
};

Есть ли лучший способ объявить список фиксированного размера?

Это было полезно?

Решение

Жесткое сохранение, подобное вашему, фиксирует размер только при инициализации, но элементы все равно можно добавлять или удалять позже. Вы пытаетесь защититься от этого условия?Единственный способ, который я могу придумать, чтобы гарантировать, что элементы не будут добавлены или удалены позже, - это создать событие, синхронизированное по размеру! = заранее определенному количеству:

event list_size_changed is true (wanted.size() != 5) @clk;

Единственное, что я могу предложить, это немного синтаксического сахара для твердости:

var warned : list of bool;
keep warned.size() == 5;

Другие советы

Я ничего не знаю о specman, но список фиксированного размера — это массив, так что это может вас куда-то указать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top