Инструкция по умолчанию в случае SystemVerilog
Я пытаюсь понять следующий сценарий:
typedef enum logic [2:0] {
ONE, TWO, THREE, FOUR, FIVE
} enum_t;
Заявление о ситуации с enum_t
введите в случае выражения:
enum_t case_expression;
logic [2:0] result;
case (case_expression)
ONE: result = 3'b000;
TWO: result = 3'b001;
THREE: result = 3'b010;
FOUR: result = 3'b011;
FIVE: result = 3'b100;
endcase
Я не уверен или не уверен в следующем:
- Это нормально, чтобы не иметь
default case
заявление дляresult
?case_expression
являетсяenum
только с 5 действительными значениями. Однако это 3 бита. Так как инструмент синтеза будет оценивать эту логику? Будет ли выводить защелки? - Все кейсы являются взаимоисключающими. Так я могу использовать
unique
Ключевое слово здесь, чтобы помочь синтезу инструмент для оптимизации дизайна?
У меня нет особого опыта в синтезе. Поэтому я был бы признателен за любые отзывы. Спасибо!
3 ответа
Это зависит от того, насколько сильно напечатан ваш инструмент синтеза. К сожалению, существует несколько способов, которыми ваше case_expression может иметь значение 3'b111 (посредством приведения и плохой проверки ошибок в некоторых инструментах моделирования). Поэтому для безопасности лучше всего установить значение по умолчанию.
Если case_expression принимает значение x, оператор case не сможет определить, какой регистр вводить. Если указать регистр по умолчанию, он плавно перейдет в регистр по умолчанию. Вы увидите ошибку времени выполнения, если case_expression принимает значение «x», если значение по умолчанию не указано.
Я считаю, что «уникальный случай» - это указание на инструмент синтеза, в котором перечислены все случаи. Это предотвратит защелку. Если при моделировании ни одно из значений ENUM не находится в выражении case, то во время моделирования будет сообщено об ошибке выполнения.