«Случай — это псевдоним Бога, когда Он не хочет подписываться своим собственным именем.» А. Франс

Coverage Cookbook/Метрики и процессы покрытия (Теория)/ru — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
м (Классификация покрытий)
м (Классификация покрытий)
Строка 112: Строка 112:
 
[[Файл:300px-Explicit_implicit_coverage.gif|300px|frame|center|Различные категории измерений покрытия]]
 
[[Файл:300px-Explicit_implicit_coverage.gif|300px|frame|center|Различные категории измерений покрытия]]
  
Например, функциональное покрытие является одним из примеров явного измерения покрытия, которое было определено вручную, а затем осуществляется инженером. В то же время, покрытие строк и покрытие выражений ({{Жел|expression}}) являются двумя примерами неявных метрик покрытия, так как их определение и реализация автоматически получены и извлечены из RTL описания.
+
Например, функциональное покрытие является одним из примеров явного измерения покрытия, которое было определено вручную, а затем осуществляется инженером. В то же время, покрытие строк и покрытие выражений являются двумя примерами неявных метрик покрытия, так как их определение и реализация автоматически получены и извлечены из RTL описания.
 
<!-- ====  Coverage Classification  ====
 
<!-- ====  Coverage Classification  ====
  

Версия 12:23, 13 марта 2013

Aqua pencil.png Эта статья требует перевода на русский язык
Проект Диплом

Литература

Coverage Cookbook (en)

OVM методология

* OS-VVM *

Содержание

Покрытие/Что такое покрытие

Как говорится, "Что нельзя измерить, не может быть сделано." И это, конечно, верно в случаях, когда мы пытаемся определить прогресс верификации проекта или пытаемся ответить на вопрос: "Все готово?" Будь ваша методика моделирования основана на методе направленного тестирования или на ограниченно случайной верификации, чтобы понять ход вашей верификации вам необходимо ответить на следующие вопросы:

  • Все ли конструктивные особенности и требования, определенные в плане теста, были верифицированы?
  • Есть ли такие строки кода или структуры в проекте, которые никогда не были использованы?

Покрытие — это измерения, которое мы используем в процессе моделирования, чтобы ответить на эти вопросы. Тем не менее, как только измерения покрытия стали неотъемлемой частью нашего процесса верификации, это дает возможности для более точных прогнозов работы проекта, а также предоставление средств для оптимизации нашего общего процесса верификации. На данном этапе мы можем задавать такие вопросы как:

  • Когда мы тестировали функцию X, мы когда-нибудь проверяли функцию Y в то же самое время?
  • Зависал ли наш прогресс верификации по неожиданным причинам?
  • Существуют ли тесты, которые можно устранить, чтобы ускорить выполнение нашего набора регрессионных тестов и все ещё достигать наших целей покрытия?

Таким образом, покрытие — это измерение в моделировании, которое мы используем для измерения прогресса верификации и завершенности.


Наблюдаемость и управляемость

Основой для обсуждения покрытия является понимание понятий управляемость и наблюдаемость. Фактически, управляемость относится к возможности влиять или активировать встроенный конечный автомат, структуру, специальные строки кода или поведение в проекте, стимулируя различные порты ввода. Обратите внимание, что в то время как в теории моделирования тестовая программа имеет высокую управляемость портов ввода модели проекта во время верификации, она может иметь очень низкую управляемость внутренней структуры в рамках этой модели. В отличие от управления, наблюдение относится к возможности наблюдать эффекты конкретного внутреннего состояния конечного автомата, структуры или стимулированной строки кода. Таким образом, тестовая программа, как правило, имеет ограниченную возможность наблюдения, если она наблюдает только за внешними портами модели проекта (потому что внутренние сигналы и структуры часто неявно скрыты от тестовой программы).

Чтобы определить ошибку в проекте, используя подход моделирования тестовой программы, следующие условия должны выполняться:

  1. Тестовая программа должна создавать надлежащие входные воздействия для активации ошибки в проекте.
  2. Тестовая программа должна создавать надлежащие входные воздействия для распространения всех последствий (явлений), связанных с ошибкой в проекте, на выходной порт.
  3. Тестовая программа должна содержать монитор, который может обнаружить ошибку в проекте, которая была сначала активирована, затем распространена в точку, где может быть обнаружена.

Вполне возможно создать условия, где входной сигнал активирует ошибку проектирования, которая не распространяется на наблюдаемые выходные порты. В этих случаях принимается первое условие приведенное выше; однако, второе условие отсутствует, как показано на рисунке 1.

Рисунок 1. Плохое наблюдение и управление не попадает ошибки

В целом, покрытие — это измерение, которое мы используем для определения качества управления тестовой программы. Например, покрытие кода может непосредственно определить строки кода, которые не были активированы из-за плохой управляемости исходящей от входного сигнала моделирования. Кроме того, функциональное покрытие может определить ожидаемые поведения, которые никогда не были активированы во время моделирования из-за плохой управляемости.

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

Резюме

Так что же такое покрытие? Проще говоря, покрытие — это измерение в моделировании, которое мы используем для измерения прогресса верификации и её завершенности. Измерение покрытия говорит нам, какая часть проекта была активирована во время моделирования (то есть, качества управления тестовой программы). Или, что еще более важно, измерение покрытия определяет части проекта, которые не были активированы в процессе моделирования, что позволяет нам корректировать наш входной сигнал для улучшения верификации.

Существуют различные виды измерений покрытий доступные вам, и процесс, как их использовать описан в Coverage Cookbook examples.

Покрытие/Виды покрытия

Нет единственной метрики, которой было бы достаточно при полной характеризации процесса верификации. Например, мы могли бы добиться 100% покрытия кода во время регрессионного моделирования. Однако, это не означает, что 100% функциональности было верифицировано. Причиной этого является то, что покрытие кода не измеряет одновременное взаимодействие поведения внутри или между несколькими блоками проекта, а также не измеряет временной последовательности функциональных событий, которые происходят в проекте. Кроме того, мы могли бы достичь 100% функционального покрытия, но только достигнув 90% покрытия кода. Это может означать, что либо есть проблемы с точностью в нашей функциональной модели покрытия (то есть важное поведение в проекте отсутствовало в модели покрытия), или, возможно, некоторая функциональность была реализована так, что там не определены начальные значения (например, возможно, спецификация и план тестирования должны быть обновлены на некотором последующем шаге с изменением в требований). Таким образом, чтобы получить полное представление о ходе верификации проекта нам часто нужно несколько измерений.

Классификация покрытий

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

Различные категории измерений покрытия

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

Классификация пространства покрытия

Покрытие, связанное с двумя категориями, которые мы только что описали, может быть объединено, чтобы сформировать область покрытия, которое часто называют модель покрытие [1]. Например, точная область покрытия спецификации состоит из метрик покрытия, которые созданы вручную инженером, выделенные из требований проекта или спецификации. Другим видом точного покрытия является приспособление (инструментарий?), созданное инженером, которое основано на поведении скрытом реализацией проекта, таким как события заполнения или опустошения (стека), связанных с конкретным FIFO в RTL модели.

Кроме того, implicit implementation пространство покрытия состоит из измерений покрытия, которые автоматически извлекаются с помощью инструментов (таких как симулятор), и полученные от реализации проекта (например, RTL модели). Другая часть implicit specification пространство покрытия состоит из измерений покрытия, которые автоматически извлекаются с помощью инструмента, и полученные из спецификации проекта. Эта часть пространства покрытия в настоящее время область научных исследований, although there have been a few EDA tools recently emerge that attempt to automatically extract higher-level coverage properties by observing the effects of simulation patterns on an implementation. Отметим, что поведения более высокого уровня функционального не могут автоматически извлекаться из реализации в одиночку, поэтому они попадают в измерения покрытия, связанные с implicit implementation пространством покрытия

Измерения покрытий

Существуют две основные формы измерения покрытий используемые сегодня в производстве:

Ссылки

[1] A. Piziali, Functional Verification Coverage Measurement and Analysis, Kluwer Academic Publishers, 2004.