Давайте рассмотрим простой пример d-flip-flop с асинхронным сбросом.как написать утверждение для поведения асинхронного сброса
q должно быть обновлено с помощью d на следующем фронте часов, это можно записать с помощью простого утверждения оператора implication.
Однако как зафиксировать поведение сброса в утверждении. Я попытался следующие несколько
assert @(posedge rst) (1'b1 |-> !Q);
assert @(posedge rst) (1'b1 ##0 !Q);
обе эти утверждения не получится, я думаю, потому что нет рядом posedge из RST?
assert @(posedge clk) ($rose(rst) |-> !Q);
проходит, но требует свободного хода часов и утверждается между 2 кромками часов (не апп inteded поведение для RST)
assert #0 (not (rst & Q));
Согласно моему пониманию это правильное немедленным утверждение, однако я могу Не вижу этого, проходящего/сбой в окне просмотра осциллограмм. Более того, я думаю, что не буду писать обложку по последнему типу утверждения.
Спасибо, обновлено мое утверждение. проходят предварительные испытания. Я возьму костюм и посмотрю результат. Прямо сейчас мне не нужно запускать его с задержками r2q, но хорошо знать :) – wisemonkey