Функциональное покрытие для ТБ на основе Verilog - PullRequest
0 голосов
/ 13 июля 2020

В настоящее время я разрабатываю модель Testbench на основе Verilog для DUT, у меня есть опыт работы с System Verilog TB и Verification IP, и я впервые разрабатываю чистый Verilog TB.

Я завершил базовую подготовку c блоков для запуска симуляции и ее работы должным образом. Но я застрял на реализации функционального покрытия (что я хочу сделать в блоке Sample Monitor). Я извлек функциональное покрытие из спецификаций, но как мне реализовать его в коде Verilog?

У нас есть ниже ( пример кода для демонстрации синтаксиса) поддержка в System Verilog для функционального покрытия,

covergroup example_group @ (posedge en);
  parity : coverpoint  par {
    bins even  = {0};
    bins odd   = {1};
  }
endgroup

Есть ли способ реализовать функциональное покрытие в виде бункеров, точек и групп (в System Verilog) для отслеживания общего функционального покрытия в коде на основе verilog ?

Изменить: Я понял, что нет альтернативного синтаксиса для покрытия в Verilog, и я не хочу усложнять и тратить больше времени на реализацию покрытия счетчики. Также я не могу преобразовать свой Verilog TB в System Verilog из-за некоторых внутренних проблем с соглашением.

1 Ответ

0 голосов
/ 13 июля 2020

Да, группа покрытия эквивалентна этому коду Verilog

always @(posedge en) begin : example_group
                       integer even=0;
                       integer odd=0;
                       if (par == 0) even = even + 1;
                       if (par == 1) odd = odd + 1;
                     end

Но реальная часть затрат времени - написание кода, который собирает все эти счетчики, объединяет данные из разных тестов и генерирует отчеты. Кажется глупым изобретать это заново. Большинство инструментов предоставляют вам эту возможность в SystemVerilog.

...