Проверка формальной эквивалентности

редактировать

этап проверки проектирования электронных схем

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

Содержание
  • 1 Проверка эквивалентности и уровни абстракции
  • 2 Эквивалентность синхронной машины
  • 3 Методы
  • 4 Коммерческие приложения для проверки эквивалентности
  • 5 Обобщения
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Проверка эквивалентности и уровни абстракции

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

  • Наиболее распространенный подход заключается в рассмотрении проблемы машинной эквивалентности, которая определяет две спецификации синхронного проектирования, функционально эквивалентные, если часы за часом они производят точно такую ​​же последовательность выходных сигналов для любой допустимой последовательности ввода.
  • Разработчики микропроцессоров используют проверку эквивалентности для сравнения функций, указанных для архитектуры набора команд (ISA) с реализацией уровня передачи регистров (RTL), гарантируя, что любая программа, выполняемая на обеих моделях, вызовет идентичное обновление содержимого основной памяти. Это более общая проблема.
  • Процесс проектирования системы требует сравнения между моделью уровня транзакции (TLM), например, написанной в SystemC, и соответствующей ей спецификацией RTL. Такая проверка становится все более интересной в среде проектирования системы на кристалле (SoC).
Эквивалентность синхронной машины

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

Исходный список соединений обычно претерпевает ряд преобразований, таких как оптимизация, добавление Design For Проверьте структуры (DFT) и т. Д., Прежде чем они будут использованы в качестве основы для размещения логических элементов в физическом макете. Современное программное обеспечение для физического проектирования иногда также вносит значительные изменения (такие как замена логических элементов эквивалентными аналогичными элементами, которые имеют более высокий или низкий уровень) в список соединений. На каждом этапе очень сложной, многоэтапной процедуры необходимо поддерживать исходную функциональность и поведение, описываемое исходным кодом. Когда окончательный выход на магнитную ленту сделан из цифрового чипа, множество различных программ EDA и, возможно, некоторые ручные правки изменят список соединений.

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

На практике в программах есть ошибки, и было бы серьезным риском предположить, что все шаги от RTL до окончательного списка соединений на ленте были выполнены без ошибок. Кроме того, в реальной жизни разработчики обычно вносят вручную изменения в список соединений, обычно известный как Engineering Change Orders, или ECO, тем самым вводя серьезный дополнительный фактор ошибки. Следовательно, вместо того, чтобы слепо предполагать, что ошибок не было, необходим этап проверки, чтобы проверить логическую эквивалентность окончательной версии списка соединений исходному описанию проекта (золотой эталонной модели).

Исторически одним из способов проверки эквивалентности было повторное моделирование, используя окончательный список соединений, тестовых примеров, которые были разработаны для проверки правильности RTL. Этот процесс называется логическим моделированием логического уровня. Однако проблема заключается в том, что качество проверки зависит от качества тестовых примеров. Кроме того, моделирование на уровне шлюза, как известно, выполняется медленно, что является серьезной проблемой, поскольку размер цифровых проектов продолжает расти экспоненциально.

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

Формальная проверка эквивалентности может выполняться между любыми двумя представлениями проекта: RTL <>список соединений, список соединений <>netlist или RTL <>RTL, хотя последнее встречается редко по сравнению с первыми двумя. Как правило, инструмент формальной проверки эквивалентности также с большой точностью указывает, в какой момент существует разница между двумя представлениями.

Методы

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

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

Основные продукты в области проверки логической эквивалентности (LEC) EDA:

Обобщения
  • Проверка эквивалентности восстановленных схем: Иногда полезно переместить логику с одной стороны регистра на другую, и это усложняет проблему проверки.
  • Последовательная проверка эквивалентности: Иногда две машины совершенно разные на комбинационном уровне, но должны давать одинаковые выходные данные, если им даны одинаковые входные данные. Классический пример - два одинаковых конечных автомата с разными кодировками состояний. Поскольку это не может быть сведено к комбинационной проблеме, требуются более общие методы.
  • Эквивалентность программ, то есть проверка того, эквивалентны ли две четко определенные программы, которые принимают N входов и производят M выходов: Концептуально, вы можете превратить программное обеспечение в конечный автомат (это то, что делает комбинация компилятора, поскольку компьютер и его память образуют очень большой конечный автомат). Тогда, теоретически, различные формы проверки свойств могут гарантировать, что они производят одинаковый результат. Эта проблема даже сложнее, чем последовательная проверка эквивалентности, поскольку выходные данные двух программ могут появляться в разное время; но это возможно, и исследователи работают над этим.
См. также
Ссылки
  • Electronic Design Automation For Integrated Circuits Handbook, Lavagno, Martin, and Scheffer, ISBN 0-8493-3096-3 Обзор поля. Эта статья была взята с разрешения Фабио Соменци и Андреаса Кюльмана из тома 2, главы 4, «Проверка эквивалентности».
  • R.E. Брайант, Графические алгоритмы для манипулирования логическими функциями, IEEE Transactions on Computers., C-35, pp. 677–691, 1986. Первоначальная ссылка на BDD.
  • Последовательная проверка эквивалентности для моделей RTL. Нихил Шарма, Гаган Хастир и Венкат Кришнасвами. EE Times.
Внешние ссылки
Последняя правка сделана 2021-05-20 11:39:23
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте