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

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

"Используй неблокирующее присваивание во всех блоках 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

@@ -216,26 +216,26 @@ module tequila (
);
parameter logic [3:0] PICKLE = 4'b1100;
always_comb begin
a <= 1'b0; // значения по-умолчанию
b <= 1'b0;
c <= 1'b1;
d <= 1'b0;
a = 1'b0; // значения по-умолчанию
b = 1'b0; // обратите внимание, что в блоке
c = 1'b1; // always_comb используется оператор
d = 1'b0; // блокирующего присваивания
case(cucumber)
// ... какие-то еще комбинации
PICKLE: begin // если на cucumber значение PICKLE
c <= 1'b0;
case (size)
1'b0: b <= 1'b1; // если на size значение 1'b0
1'b1: d <= 1'b1; // если на size значение 1'b1
endcase
end
// ... какие-то еще обработчики
default: begin // так как описаны не все значения
a <= 1'b0; // cucumber, то чтобы case не было
b <= 1'b0; // защелки (latch) на выходе
c <= 1'b1; // нужно обязательно добавлять
d <= 1'b0; // default
end
// ... какие-то еще комбинации
PICKLE: begin // если на cucumber значение PICKLE
c = 1'b0;
case (size)
1'b0: b = 1'b1; // если на size значение 1'b0
1'b1: d = 1'b1; // если на size значение 1'b1
endcase
end
// ... какие-то еще обработчики
default: begin // так как описаны не все значения
a = 1'b0; // cucumber, то чтобы case не было
b = 1'b0; // защелки (latch) на выходе
c = 1'b1; // нужно обязательно добавлять
d = 1'b0; // default
end
endcase
end