«Работать добросовестно — значит: работать, повышая свою квалификацию, проявляя инициативу в совершенствовании продукции, технологий, организации работ, оказывая не предусмотренную должностными инструкциями помощь другим сотрудникам (включая и руководителей) в общей им всем работе.

Спец курс (Избранные главы VHDL)/Верификация описания — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Слайд:Что такое покрытие (Coverage)?)
(Слайд: Виды покрытия кода в ModelSim)
Строка 114: Строка 114:
 
== Слайд: Виды покрытия кода в ModelSim ==
 
== Слайд: Виды покрытия кода в ModelSim ==
  
* Statement coverage — counts the execution of each statement on a line individually, even if there are multiple statements in a line.
+
* {{Сн|'''Statement coverage'''}} покрытие состояний
  
* Branch coverage — counts the execution of each conditional “if/then/else” and “case” statement and indicates when a true or false condition has not executed.
+
* {{Сн|'''Branch coverage'''}} покрытие ветвлений
  
* Condition coverage — analyzes the decision made in “if” and ternary statements and can be considered as an extension to branch coverage.
+
* {{Сн|'''Condition coverage'''}} покрытие условий
  
* Expression coverage — analyzes the expressions on the right hand side of assignment statements, and is similar to condition coverage.
+
* {{Сн|'''Expression coverage'''}} покрытие выражений
  
* Toggle coverage — counts each time a logic node transitions from one state to another.
+
* {{Сн|'''Toggle coverage'''}} покрытие принимаемых значений
  
* FSM coverage — counts the states, transitions, and paths within a finite state machine.
+
* {{Сн|'''FSM coverage'''}} покрытие состояний автомата
 +
 
 +
== Слайд: Мониторинг покрытия кода в ModelSim ==
  
 
==Слайд:Эталонная модель на языке ''{{Зел| <big>SystemC</big>}}''==
 
==Слайд:Эталонная модель на языке ''{{Зел| <big>SystemC</big>}}''==

Версия 15:06, 21 ноября 2012

Заголовок
Верификация описания.
Автор
Зайцев В.С.
Нижний колонтитул
Спец курс (Избранные главы VHDL)/Верификация описания
Дополнительный нижний колонтитул
Зайцев В.С., 13:16, 2 декабря 2013

Содержание

Слайд:Методы верификации проекта

  • Имитационная верификация - верификация с использованием моделирования
  • Формальная верификация -проверка модели с целью доказательства ее корректности и эквивалентности спецификации
(Пример: пакет FormulPro ф. MentorGraphics, пакеты фирмы Verplex, www.verplex.com)


Слайд:Верификация описания

Процевв верификации.png

Слайд:Верификация описания:step

  • Среда моделирования
    • Active-HDL™
    • Riviera-PRO™
    • NC-Sim®
    • ModelSim®
    • QuestaSim®
    • VCS-MX®
  • Структура проекта
    • Тестовое окружение
    • RTL-модель (Verilog,VHDL)
    • Эталонная модель (SystemC)
    • Assert'ы (psl, OVVM, UVM)
    • Отчеты и базы по результатам моделирования

Слайд: Типы тестов ФК

На что проверяем:
  • Детерминистский - Проверяет обычные режимы работы системы, а также функционирование в граничных условиях на основе фиксированного набора тестов
  • Случайный - Предполагает наличие генератора случайных входных воздействий
  • Транзакционный - Фиксирует внимание на проверке интерфейсов и прохождению пакетов данных через них
Способ проведения проверки:
  • "Черный ящик"
  • "Серый ящик"
  • "Прозрачный ящик"

Слайд:Средства верификации

  • Прямые тесты (Directed tests)
  • Псевдослучайные тесты (Random tests)
  • Управляемые псевдослучайные тесты (Constrained Random tests)
  • Верификация управляемая покрытием (на основе покрытия) (Coverage driven verification)
    • Покрытие кода (Code coverage)
    • Функциональное покрытие (Functional coverage )
  • Верификация на основе утверждений (Assertion based verification)
  • Эмуляция (Emulation)
  • Формальная верификация (Formal verification)

Слайд:Что такое покрытие (Coverage)?

  • Покрытие является крайне неоднозначным термином, когда используется сам по себе.

Можно сказать, что (в электронике):

Информация

Покрытие (Coverage) является одной из разновидностей метрик проекта, которая сообщает, если определённые аспекты проекта были правильно выполнены во время процедуры тестирования.

  • Обычно уточняют термин покрытия, говоря какой аспект был протестирован:
    • Тестирование качества кода — покрытие кода (code coverage)
    • Проверка свойств/утверждений — покрытие свойств/утверждений (property coverage)
    • Сбор значений переменных проекта — функциональное покрытие (functional coverage).

Слайд:Покрытие кода vs. функциональное покрытие

Code quality-vs-functionality.png

Слайд: Полнота тестов

  • Nuvola apps error.pngВ реальных условия обычно полный перебор невозможен
  • 200px-Yes check.pngПоэтому поступают следующим образом. Например для сумматора:
  1. Тестируют как "Серый ящик" и проверяют простейшие случаи 0+0, 0+1, FFFF+FFFF, 0+FFFF
  2. Затем целенаправленно проверяют граничные условия - переполнение, перенос
  3. Затем тестирую как "Черный ящик" на случайном наборе тестов
  4. Оценивают полноту проверки модели

Слайд: Метрики оценки полноты тестов

Bombilla amarilla - yellow Edison lamp.pngНеобходимое условие : Управляемость (выполняется строка или переход)

Bombilla amarilla - yellow Edison lamp.pngДостаточное условие : Наблюдаемость (результат исполнения влияет на выход сравниваемый с эталоном)

  • Эвристические метрики - основанные на статистике появления ошибок
  • Программные метрики
  • Автоматно-метрический подход (лучший вариант использовать формальную верификацию для автоматов)
  • Моделирование неисправностей (в модель вносится неисправность)
  • Мониторинг событий

Слайд: Эвристические метрики

  • Календарное время между моментами обнаружения ошибок проекта (к концу процесса верификации оно увеличивается);
  • Общее количество промоделированных тактов работы проектируемого устройства;
  • Общее число обнаруженных ошибок в проекте и т.д.
  • Число обнаруженных ошибок в день, неделю, месяц

Слайд: Программные метрики

  • Полнота покрытия тестом строк кода модели
  • Полнота покрытия переходов (число пополнений ветвей оператора if и case )
  • Полнота покрытия путей (Branch coverage) (все пути в графе программы)
  • Полнота покрытия выражений (Expression coverage) (оценка числа вычислений выражения по различных наборах)
  • Полнота переключений из 0 в 1 и из 1 в 0 каждого бита (Toggle coverage)

Слайд: Метрики в ModelSim

200px-Yes check.png В ModelSim для учета метрик покрытия при компиляции проекта нужно задать в меню Compile->Compiler option

Опции компиляции покрытия.jpg

Слайд: Виды покрытия кода в ModelSim

  • Statement coverage — покрытие состояний
  • Branch coverage — покрытие ветвлений
  • Condition coverage — покрытие условий
  • Expression coverage — покрытие выражений
  • Toggle coverage — покрытие принимаемых значений
  • FSM coverage — покрытие состояний автомата

Слайд: Мониторинг покрытия кода в ModelSim

Слайд:Эталонная модель на языке SystemC

  1. Высокий уровень абстракции
  2. Скорость моделирования
  3. Возможности языка C++
  4. Инструменты для автоматизации
  5. Совместное моделирование с другими HDL-языками