Ограничение выдает предупреждение о несоответствии диапазонов

#specman

#specman

Вопрос:

следующий код создает предупреждение для DEPR_NEG_OR_LARGE_SELECT_WEIGHT:

 keep soft MyVar == select {
 0xffffffffff: 0;
 10: [1..10];
 10: [11..20];
};
keep MyVar != 0;
  

я бы ожидал, что проверка будет учитывать только соответствующие диапазоны…

Ответ №1:

0xffffffffff не является допустимым синтаксисом выбранного веса. Допустимы только значения от 0 до MAX_INT .

Инструмент просто защищает вас от недопустимых выражений. Точно так же, как вы получаете ошибку времени загрузки / компиляции, если вы пишете любой другой незаконный код. Он не пытается понять более глубокий смысл или вообще вызывается ли код.

Ответ №2:

Этого должно быть достаточно для ваших нужд.

 keep soft MyVar == select {

  1: [1..10];

  1: [11..20];

};

keep MyVar != 0;

keep soft MyVar in [1..20]; // This is also enough in place of weighted random constraint.