Как объявить список фиксированной длины в specman?
-
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, но список фиксированного размера — это массив, так что это может вас куда-то указать.