Я хотел бы проверить DUT, который по сути является FSM, благодаря средствам тестирования SystemVerilog с утверждениями SVA.
Поэтому сначала я устанавливаю параллельные утверждения для состояний FSM, чтобы выяснить, как работает SVA.Мой тестовый стенд управляет FSM, который проходит через различные состояния, как и планировалось.
Моя проблема в том, что эти параллельные утверждения не запускаются при каждом цикле тактирования.
Я хотел увидеть, когда не удалось выполнить параллельное утверждение, поэтому я написал простое утверждение для первого состояния FSM,Я также подсчитываю количество проверок и ошибок, вот как я узнал, что утверждения запускались не очень часто.
assert property (@(posedge clk) dut.state==ST_SHUT_DOWN)
nb_checks=nb_checks+1;
else begin
nb_checks=nb_checks+1;
nb_errors=nb_errors+1;
$warning("[%g ns] (Test assert) Not in the ST_SHUT_DOWN state", $time);
end;
Мое моделирование, выполненное Simvision, выполняется в течение ~ 350 тактов, но утверждениесрабатывает только 6 раз.