Утверждения SystemVerilog: параллельные утверждения, которые не запускаются при каждом такте, как ожидалось - PullRequest
0 голосов
/ 04 июня 2019

Я хотел бы проверить 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 раз.

...