Обновление указания по использованию присваиваний

Ранее давалось более простое правило:

"Используй неблокирующее присваивание во всех блоках always", которое
конфликтует с правилами, описанными в документе по присваиваниям.
Правила были обновлены, таким образом, чтобы сохранить простоту и
устранить конфликт.
This commit is contained in:
Andrei Solodovnikov
2024-02-03 12:18:12 +03:00
parent d215a215b8
commit 765a0a3f3e
3 changed files with 28 additions and 25 deletions

View File

@@ -71,7 +71,10 @@ assign Y = S==1 ? D1 : D0;
Мультиплексор можно описать в любом из этих блоков, разница будет лишь в том, к чему именно будет подключен выход мультиплексора: к проводу, регистру, или защелке.
При присваивании внутри блоков `always` используйте специальный оператор **неблокирующего присваивания** `<=`. Бывает еще оператор **блокирующего присваивания** `=`, объяснение различий в этих операторах требует отдельного документа, поэтому на текущий момент, во избежание проблем в будущем просто запомните: **внутри любого блока always необходимо использовать только оператор неблокирующего присваивания <=**. Подробно о различиях между блокирующими и неблокирующими присваиваниями рассказано в [этом документе](Assignments.md).
При присваивании внутри блоков `always` используйте специальный оператор **неблокирующего присваивания** `<=`. Бывает еще оператор **блокирующего присваивания** `=`. Подробно о различиях этих операторов рассказано в [этом документе](Assignments.md). До его прочтения запомните:
- внутри блока `always_ff` необходимо использовать оператор неблокирующего присваивания (`<=`);
- внутри блока `always_comb` необходимо использовать оператор блокирующего присваивания (`=`).
```SystemVerilog
logic Y;