Я реализовал модуль SV, который содержит мягкие ограничения. Однако, насколько я знаю, мягкие ограничения поддерживаются только с 1800-х годов. Поэтому я хотел бы добавить альтернативную реализацию в случае использования симулятора, который поддерживает только старые версии.
Есть ли способ, чтобы получить эту информацию с задачей системы или директивой препроцессора таким образом:Есть ли системная задача или предпроцессорная директива в SystemVerilog для извлечения стандартной версии?
if($get_version_specifier == "1800-2012")
// do fancy stuff with soft constraints
else
// alternative fancy stuff
я уже нашел вариант для аналогичной задачи с помощью begin_keywords
, end_keywords
, но я думаю, что не решит мою проблему, поскольку он определяет только набор ключевых слов для определенного стандарта. И если симулятор не поддерживает эту версию, я предполагаю, что произойдет только ошибка.
Заранее благодарен!
sebs
Возможно, вы могли бы эмулировать мягкое ограничение, вызвав randomize() и проверив результат. Если он возвращает 0 (т. Е. Ему не удалось рандомизировать), вы отключите «мягкое ограничение» и снова вызовите randomize(). – Stan
@stan Да, но как вы знаете, если рандомизация потерпела неудачу, потому что это ограничение, а не другое? –
Настройка будет нарушена, если ваши рандомизации могут выйти из строя по другим причинам. Но в большинстве случаев вы не ожидаете, что рандомизация потерпит неудачу, если что-то пойдет не так. – Stan