Использование оператора нарезки списка также не работает, потому что path
в ограничении for..each
ограничено простым path
(например, переменная списка).Следующее также не работает:
keep for each (layer) using index (i) in layer_l[0..2] {
//...
};
Это ограничение Specman.
Чтобы форсировать циклы над подсписком, ваша единственная ставка - создать этот подсписок как отдельныйпеременная:
layer_subl: list of layer_s;
keep layer_subl.size() == 3;
keep for each (layer) using index (i) in layer_subl {
layer == layer_l[i];
};
Теперь вы можете зациклить только первые 3 элемента в пределах вашего ограничения for..each
:
keep for each (layer) in layer_subl {
layer.a == 7;
};
Это позволяет избежать использования импликации внутри ограничения.Стоит ли это решать вам.Также обратите внимание, что списки будут содержать одинаковые объекты (это хорошо).Никаких дополнительных struct
объектов не создается.
Создание подсписка, подобного этому, является стандартным кодом, который может обрабатываться самим инструментом.Это сделало бы код более кратким и читабельным.Вы можете связаться с вашим поставщиком и запросить эту функцию.