Введение

Этап валидации разработки электронной схемы. Функциональная верификация – это задача подтверждения соответствия логического проекта спецификации. Функциональная верификация призвана ответить на вопрос: "Выполняет ли предлагаемый проект то, для чего он предназначен?". Это сложный процесс, требующий значительных затрат времени и усилий (до 70% времени проектирования и разработки).

Предыстория

Хотя количество транзисторов увеличивалось экспоненциально в соответствии с законом Мура, рост числа инженеров и времени, затрачиваемого на создание проектов, увеличивается лишь линейно. С увеличением сложности транзисторов растет и количество ошибок в коде. Большинство ошибок в логическом кодировании вызваны небрежным кодированием (12,7%), недостаточной коммуникацией (11,4%) и проблемами микроархитектуры (9,3%). Таким образом, инструменты автоматизированного проектирования электроники (EDA) создаются для соответствия возрастающей сложности проектирования транзисторов. Вместе с инструментами EDA вводятся языки, такие как Verilog и VHDL. Функциональная верификация крайне сложна из-за огромного количества возможных тестовых случаев, существующих даже в простом проекте. Зачастую для всесторонней верификации проекта требуется более 10^80 возможных тестов – число, недостижимое за время жизни человека. Эта задача эквивалентна верификации программного обеспечения и является NP-трудной или даже сложнее – и не найдено решения, которое бы эффективно работало во всех случаях. Однако к ней можно подступиться различными методами. Ни один из них не идеален, но каждый может быть полезен в определенных ситуациях: логическое моделирование имитирует работу логики до ее физической реализации. Ускорение моделирования применяет специализированное аппаратное обеспечение для решения задач логического моделирования. Эмуляция создает версию системы на основе программируемой логики. Это дорогостоящий метод, который всё ещё значительно медленнее реального оборудования, но на несколько порядков быстрее, чем моделирование. Его можно использовать, например, для загрузки операционной системы на процессоре. Формальная верификация пытается математически доказать, что определенные требования (также формально заданные) выполняются, или что определенные нежелательные ситуации (например, взаимная блокировка) не могут возникнуть. Интеллектуальная верификация использует автоматизацию для адаптации тестовой среды к изменениям кода на уровне передачи регистров. Специализированные версии HDL и другие эвристические методы используются для выявления распространенных проблем.