Как напечатать значение корзины покрытия Verilog системы в конце симуляции? - PullRequest
0 голосов
/ 29 июня 2019

Я хочу узнать, сколько раз конечный автомат проходил следующую последовательность состояний, отображая счет в конце симуляции.

Я не смог найти способ сбросить значениеbin "b" в коде ниже.

interface i;
typedef enum { S0, S1, S2, S3} state_e;
state_e  state;
assign state = dut1.sm_state;

covergroup my_cg @(state);
    coverpoint state {
        bins b = (S0 => S1 => S2 => S3);
    }
endgroup
my_cg cg1 = new();

final begin
    $display("COVERAGE:CG1.state:%0d", cg1.state.get_coverage());
end

endinterface

В настоящее время вывод дает 100, если sm прошел дугу хотя бы один раз.Вместо этого я хотел бы посчитать, сколько раз он прошел через дугу.

1 Ответ

0 голосов
/ 29 июня 2019

get_coverage не дает вам счетчик попаданий в бункеры & mdash; он только дает вам процент попаданий в бункеры или отношение количества попаданий в бинов к общему количеству бинов. Для повышения производительности большинство инструментов перестают считать после того, как корзина выполнила требуемые минимальные попадания, по умолчанию только 1 попадание. Это сохраняет не только подсчет, но и оценку набора выражений выбора, которые определяют, какой бин ударить.

Для отладки большинство инструментов дают вам возможность сообщать фактическое количество попаданий в бин для всей симуляции.

...