randc в спецмане

Как вы создаете реализацию типа «randc», используя gen в specman?
Пример:

list_l : list of uint(bits:3);
keep list_1.size () == 8;

Я хочу сгенерировать таким образом, чтобы все элементы списка не имели случайного числа между (0-7).


person user2021736    schedule 29.01.2013    source источник


Ответы (2)


Текущие ограничения списка обеспечат создание списка со всеми значениями в диапазоне [0..7].
Использование gen приведет к созданию списка в соответствии с требованиями.

Пример

list_l : list of uint(bits:3);
keep list_l.size () == 8;
generate_list() is {
    gen list_l;
}

Если вы хотите, чтобы все элементы списка были уникальными, добавьте в список следующее ограничение:

keep list_l.all_differnt(it);
person Kalev    schedule 29.01.2013
comment
Чтобы уточнить, что говорил alpeka, каждый элемент list_l будет между 0 и 7, потому что Specman знает, каков диапазон uint(bits:3). Если вам нужно ограничить элементы в списке подмножеством чисел, разрешенных типом данных, вы можете сделать что-то вроде: keep for each (e) in list_l) { e in [1..3,5..6]; }; - person Ross Rogers; 30.01.2013

Можно использовать псевдометод "is_a_permutation()" для однократного заполнения списка каждым значением.

Пример

list_l : list of uint(bits:3);
keep list_1.is_a_permutation(all_values(uint(bits:3)));

or

keep list_1.is_a_permutation({0;1;2;3;4;5;6;7});

Обратите внимание, что в этом примере "is_a_permutation()" ограничивает размер списка ровно 8.

person Marat    schedule 09.02.2013