Введение
Этап валидации разработки электронной схемы. Функциональная верификация – это задача подтверждения соответствия логического проекта спецификации. Функциональная верификация призвана ответить на вопрос: "Выполняет ли предлагаемый проект то, для чего он предназначен?". Это сложный процесс, требующий значительных затрат времени и усилий (до 70% времени проектирования и разработки).
Functional verification is the task of verifying that the logic design conforms to specification. Functional verification attempts to answer the question "Does this proposed design do what is intended?" This is complex and takes the majority of time and effort (up to 70% of design and development time)
Предыстория
Хотя количество транзисторов увеличивалось экспоненциально в соответствии с законом Мура, рост числа инженеров и времени, затрачиваемого на создание проектов, увеличивается лишь линейно. С увеличением сложности транзисторов растет и количество ошибок в коде. Большинство ошибок в логическом кодировании вызваны небрежным кодированием (12,7%), недостаточной коммуникацией (11,4%) и проблемами микроархитектуры (9,3%). Таким образом, инструменты автоматизированного проектирования электроники (EDA) создаются для соответствия возрастающей сложности проектирования транзисторов. Вместе с инструментами EDA вводятся языки, такие как Verilog и VHDL. Функциональная верификация крайне сложна из-за огромного количества возможных тестовых случаев, существующих даже в простом проекте. Зачастую для всесторонней верификации проекта требуется более 10^80 возможных тестов – число, недостижимое за время жизни человека. Эта задача эквивалентна верификации программного обеспечения и является NP-трудной или даже сложнее – и не найдено решения, которое бы эффективно работало во всех случаях. Однако к ней можно подступиться различными методами. Ни один из них не идеален, но каждый может быть полезен в определенных ситуациях: логическое моделирование имитирует работу логики до ее физической реализации. Ускорение моделирования применяет специализированное аппаратное обеспечение для решения задач логического моделирования. Эмуляция создает версию системы на основе программируемой логики. Это дорогостоящий метод, который всё ещё значительно медленнее реального оборудования, но на несколько порядков быстрее, чем моделирование. Его можно использовать, например, для загрузки операционной системы на процессоре. Формальная верификация пытается математически доказать, что определенные требования (также формально заданные) выполняются, или что определенные нежелательные ситуации (например, взаимная блокировка) не могут возникнуть. Интеллектуальная верификация использует автоматизацию для адаптации тестовой среды к изменениям кода на уровне передачи регистров. Специализированные версии HDL и другие эвристические методы используются для выявления распространенных проблем.
Logic simulation simulates the logic before it is built. Simulation acceleration applies special purpose hardware to the logic simulation problem. Emulation builds a version of system using programmable logic. This is expensive, and still much slower than the real hardware, but orders of magnitude faster than simulation. It can be used, for example, to boot the operating system on a processor. Formal verification attempts to prove mathematically that certain requirements (also expressed formally) are met, or that certain undesired behaviors (such as deadlock) cannot occur. Intelligent verification uses automation to adapt the testbench to changes in the register transfer level code. HDL specific versions of lint, and other heuristics, are used to find common problems.