всегда @* блок с одним неблокирующим присваиванием — хорошо, плохо или не имеет значения?

Общее эмпирическое правило, упомянутое во всех книгах, которые я до сих пор читал, заключается в том, что вы должны использовать неблокирующие присваивания в всегда блоках, которые управляются нарастающим или спадающим фронтом тактового сигнала. Наоборот, для описания комбинаторной логики необходимо использовать блокирующие присваивания. Это правило кажется мне понятным, и авторы примеров тщательно его соблюдают.

Однако я заметил следующий фрагмент Verilog в одном из рабочих кодов:

always @* begin
   in_ready <= out_ready || ~out_valid;
end

Обратите внимание, что используется неблокирующее присваивание <=. Я не думаю, что в этом случае это имеет какое-либо значение, потому что нет множественных назначений. Однако я не могу найти никакого объяснения этому. Так вот вопрос - имеет это значение или нет, как в рамках данного всегда блока, так и в рамках более крупной конструкции?

7
задан toolic 21 June 2012 в 14:54
поделиться