Різниця між RTL та поведінковим verilog


10

Може хтось скаже мені, в чому різниця між RTL та поведінковим кодом Verilog? Чи є чітке розмежування між проектами на цих двох рівнях?

Відповіді:


5

Поведінковий код вищого рівня і зазвичай його неможливо синтезувати. Конструкти, такі як петлі, затримки та "початкові" заяви, є поведінковими.

RTL-код нижчого рівня і призначений для синтезу. Він визначає схему як поєднання взаємопов'язаних регістрів і операцій, що виконуються над сигналами між цими регістрами.

Взяте з відповідей Yahoo і знайдене негайно в Google!


1
петлі можуть використовуватися в коді rtl за умови обмеження кількості ітерацій. Деякі інструменти також підтримують використання вбудованих блоків для визначення умов живлення.
Пітер Грін

Це питання / відповідь була фактично першою відповіддю, яку мені дав Google
Дрюстер

3

Код "Реєстр передачі рівня" - це код, описаний в термінах регістрів і комбінаторної логіки, який сидить між ними і призначений для використання як вхід до інструменту синтезу. Код дотримується синтезованого підмножини [1] мови. Явних затримок немає, усі терміни розраховані на кромки годин. Структури, що представляють засувки, що спрацьовують за рівнем, як правило, уникають. Зазвичай регістри замикаються на невеликій кількості годин, деталі яких можуть бути надані аналізатору синхронізації. Як правило, очікується, що комбінаторна логіка [2] осідає в межах одного тактового циклу, що обмежує її складність. Це вищий рівень, ніж модель рівня воріт, але він все ще визначає, яке значення має кожен реєстр для кожного тактового циклу.

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

[1] Точний дозволений підмножина змінюється між інструментами синтезу.
[2] Якщо він не вирішиться протягом одного циклу, ніж моделювання і синтез може дати різні результати, і аналізатор хронометражу покаже порушення, якщо прямо не наказано.


2

Більш узагальнене визначення.

Код поведінки: За визначенням він визначає поведінку цифрового компонента. Він не дає інформації про те, як це буде впроваджено у фактичну ГВ (синтез). Він не дасть інформацію про те, як реєстри та ворота будуть реалізовані для виконання необхідної операції. Це більше схоже на написання алгоритму або FSM в C.

RTL: Це більш точна форма цифрового компонента. Він дає інформацію про те, як буде реалізований код як фактичний HW (після синтезу). Також він дає інформацію про те, як передаватимуться дані між регістрами та воротами.


1

Це одна і та ж мова, але використовуються різні стилі. Отримавши досвід, ви можете їх швидко розрізнити, ось декілька рис кожного:

Код підтвердження поведінки, як правило, більше нагадує послідовну комп'ютерну програму, що працює вгорі в initial beginблоці. Ви можете виявити, що немає портів вводу / виводу, визначених у поведінкових модулях верхнього рівня, оскільки вихід може бути для засобів тренажеру, наприклад консолі $display()чи файлової системи з $openабо дампером форми сигналу з $dumpfileта $dumpvars. Слідкуйте за затримками між операторами, реалізованими за допомогою тривалих час очікування моделювання, наприклад, #4000та викликом завдань wishbone_master.checked_read(addr, value). Для цих конструкцій вищого рівня чи не очевидно, яким би / міг бути синтезований еквівалент технології.

Verilog для синтезу завжди має порти вводу / виводу, оскільки без підключених портів модуль не має побічних ефектів і його можна усунути [1]. Затримки, ймовірно, реалізовані шляхом підрахунку циклів певного годинника. Зауважте, що деякі функції системи Verilog, наприклад, $clog2(PARAMETER)можуть бути дозволені в коді для синтезу, тому присутність $functionне є гарантією. Код для синтезу, як правило, містить безліч незалежних "процесів", кожен зі списком чутливості. Деякі технології дозволяють initial beginблокувати блоки для ініціалізації пам'яті, так що це не є гарантією.

Зрештою, дизайнер знає призначення коду, який вони пишуть, і належним чином викликатиме його за допомогою набору інструментів синтезу чи в тренажері.

[1] за винятком певних блоків IP, які можуть здійснювати підключення задніх дверей до внутрішніх мікросхем, наприклад, JTAG

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.