Основна доповідь Intel щодо формального розтягування розуму

Основна доповідь Intel щодо формального розтягування розуму

Вихідний вузол: 2528571

Synopsys опублікував на сайті SolvNet захоплюючу доповідь доктора Тео Дрейна з Intel Graphics. Тема – перевірка еквівалентності шляху даних. Це може звучати як чергова офіційна підтримка Synopsys VC DPV, але ви все одно повинні її переглянути. Це захоплююче обговорення використання та міркувань у формальності, яке виведе вас за межі рутинного посібника користувача на більш захоплюючу територію.

Офіційна доповідь Intel

Інтелектуальне розуміння проти тестування за зразком

Тестове моделювання у всіх його формах є чудовим і часто незамінним у перевірці правильності специфікації проекту або реалізації. Також легко почати. Просто напишіть тестову програму та почніть симулювати. Але зворотна сторона цієї простоти полягає в тому, що нам цього не потрібно повністю зрозуміти, що ми тестуємо, щоб почати. Ми переконуємо себе, що уважно прочитали специфікацію та розуміємо всі кутові випадки, але для того, щоб перевершити наше розуміння, не потрібна складна складність.

Formal заохочує вас зрозуміти функціональність на глибокому рівні (принаймні, якщо ви хочете отримати цінний результат). У наведеному вище прикладі просте запитання – чи може Z коли-небудь бути лише одиницями – не може продемонструвати приклад у мільярді циклів на симуляторі. Не дивно, адже це крайній кутовий випадок. Формальний тест надає конкретний і дуже неочевидний приклад за 1 секунд і може довести, що це єдиний такий випадок за трохи менший час.

OK formal зробив те, що не могло зробити динамічне тестування, але, що важливіше, ви дізналися те, про що симулятор міг ніколи не сказати вам. Що існував лише один можливий випадок, у якому ця умова могла статися. Formal допоміг вам краще зрозуміти дизайн на інтелектуальному рівні, а не просто як імовірнісний підсумок для кінцевого набору тестів.

Проблеми зі специфікацією

Наступний приклад Тео заснований на автоматі з продажу помилок (так називається, тому що коли ви натискаєте кнопку, ви отримуєте помилку). Це виглядає як досить проста проблема перевірки еквівалентності C до RTL, модель C ліворуч, модель RTL праворуч. Однією несподіванкою для Тео в його перші дні у формальній роботі було те, що поведінка правого зсуву в C-моделі не повністю визначена в стандарті C, навіть якщо gcc поводитиметься розумно. Однак DPV скаржиться на невідповідність у порівнянні з RTL, як і належить. Покладатися на невизначену поведінку небезпечно.

Формально, як автомат з продажу помилок

Порівняння специфікацій між C і RTL пов’язане з іншими небезпеками, особливо навколо бітової ширини. Усічення або втрата біта переносу в проміжному сигналі (№3 вище) є хорошими прикладами. Це проблеми зі специфікаціями? Можливо, сіра зона між вибором специфікації та реалізації.

Крім перевірки еквівалентності

Основна мета DPV, здається, полягає в перевірці еквівалентності між посиланням C або RTL і реалізацією RTL. Але така потреба зустрічається відносно рідко, і є інші корисні способи застосування такої технології, якщо це трохи нестандартно. Спочатку класика у світі реалізації – я вніс зміни, виправив помилку – чи в результаті я вніс нові помилки? Трохи схоже на перевірку SEQ після додавання стробування годинника. Іншим корисним застосуванням у деяких випадках може бути аналіз доступності в блокових виходах.

Не просто перевірка еквівалентності

Тео стає ще більш креативним, просячи слухачів використовувати контрприклади, щоб краще зрозуміти дизайн, розгадувати судоку or розкласти цілі числа на множники. Він визнає, що DPV є дивним способом підходу до таких проблем, але зазначає, що його намір полягає в тому, щоб розбити ілюзію, що DPV призначена лише для перевірки еквівалентності. Цікава ідея і, безперечно, напружує розум, щоб продумати такі виклики. (Зізнаюся, я одразу почав думати про проблему судоку, щойно він згадав про неї.)

Завершіть

Тео завершує обговорення методологій, важливих для використання у виробництві, навколо обмежень, регресії та порівняння із застарілими моделями RTL. Також проблеми з визначенням того, чи дійсно те, що ви перевіряєте, відповідає специфікації природної мови верхнього рівня.

Дуже енергійна розмова, варта перегляду тут на SolvNet!

Поділитися цим дописом через:

Часова мітка:

Більше від Semiwiki