Чтобы обновляемой вопрос:
Единственное различие между (enable & (mode == 2'b00))
и (enable & (mode == 2'b00)) ? 1'b1 : 1'b0
является последним выводит Мультиплексор на синтез. Синтез может даже оптимизировать мультиплексор.
Причина, по RLT дизайнер мои хочешь иметь мультиплексор:
- Мультиплексор может иметь более желательный драйвер нагрузки веера из.
- Преднамеренная задержка впрыскивания для фильтрации сглаживания и/или балансировки задержки распространения логики.
- Для проектирования ИС это может сделать ручной ECO проще, заменяя один вход другой сетью.
Приведенные выше причины бессмысленны в 98% случаев при использовании надлежащих инструментов. Хороший инструмент для анализа и анализа времени будет обрабатывать причины 1 и 2. Добавьте хороший инструмент ECO, и третий пункт будет рассмотрен. Остальные 2% в основном относятся к редкому случаю, который вы ожидаете от ECO, а затем принудительный мультиплексор делает конечное местоположение вывода и нагрузку более предсказуемой.
К первоначальному вопросу:
Это является излишним, только если b
и c
являются один бит. Если они имеют ширину нескольких битов, то уравнение не может быть упрощено. a
будет равным 1, если b
и c
оба имеют 1 значение в одних и тех же битовых индексах.
Например, предположим, b
и c
имеют ширину 2 бита: (assign a = (b & c) ? 1'b1 : 1'b0
)
b
= 2 c
= 3, a
будет 1, потому что b & c
= 2
b
= 2 c
= 1, a
будет 0, поскольку b & c
= 0
каковы размеры Ь и с? –
Хороший вопрос. Это упрощенная версия того, что я видел, но я думаю, что b и c были двумя выражениями, которые оценивались на отдельные биты. Мне нужно найти код для просмотра. – nguthrie
Поскольку многие из них указали, что это не избыточно, если мы имеем дело с многобитовыми сигналами, я скорректировал вопрос, чтобы сделать его более понятным. – nguthrie