Мітки у програмі

Зміст Наступна

Вивчення VHDL

Мітки у програмі

У мові VHDL будь-який оператор може мати мітку. Мітка – це ідентифікатор, який є унікальним у межах даної програмної одиниці, який відділений від оператора двокрапкою. Так, у синтаксисі оператора циклу вказується, що він може мати мітку, яка використовується для організації вкладених циклів і роботи операторів запуску наступної ітерації та виходу із циклу. Такі оператори, як generate, вставки компонента, зобов’язані мати мітки.

Зазвичай програмісти зневажають розміщенням міток. VHDL і так вимагає багато текстового опису (в ~1,5 рази більше, ніж Verіlog), а тут ще й мітки… Але мітки – це всеж-таки непогано. Як можна більш широке застосування міток обумовлене наступними причинами:

1) В операторах процесу, блоку та ін. зустрічаються оголошення констант, процедур і функцій, які видимі в межах даного оператора. Щоб вони були видимі в іншому місці, можна використовувати опис use, у якому як адреса оголошення, вказується мітка.

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

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

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

5) При трансляції програми в логічну схему компілятор-синтезатор кожному паралельному оператору ставить у відповідність логічну схему або бібліотечний компонент з ім’ям, яке відповідає мітці оператора. Якщо мітка відсутня, то компілятор ставить довільне ім’я, наприклад, букву з порядковим номером. Таке ім’я утрудняє подальші налагодження і тестування проекту на рівні логічної схеми і схеми після розміщення та трасування. А по унікальній і змістовній мітці можна легко знайти той самий вентиль або тригер в EDІF -файлі, або VHDL- моделі після розведення, у які відобразився відповідний оператор з вихідної програми. По-іншому це зробити значно важче, тому що розміри зазначених файлів можуть досягати декількох сотень тисяч рядків.

6) Ім’я мітки може відображати специфіку і алгоритм функціонування даного оператора. Наприклад, процес, що моделює регістр із акумулятором, може позначатися міткою RG_ACC. У цьому випадку іншому програмістові легше розібратися в програмі. Тому вставка змістовних міток операторів це обов’язкова вимога для проектів, призначених для повторного використання.

Але при створенні змістовної мітки, як і змістовних імен змінних, сигналів, об’єктів проекту, не можна перестаратися з довжиною імен. Існує практика написання довгих імен у програмуванні на Сі, яка незастосовна в програмуванні на VHDL.

Справа в тому, що якщо проект ієрархічний, то при його синтезі компілятор приводить його до одного рівня. При цьому імена вентилів і ліній зв’язку будуються як об’єднання імен відповідних сигналів, міток екземплярів об’єктів на всіх рівнях проекту. В результаті, в EDІF -файлі, або VHDL- моделі після розведення можуть з’явитися імена довжиною в сотні символів, які не вміщаються в одному рядку, не кажучи вже про довжину самих файлів.

Тому доцільно обмежувати довжину міток і інших імен 10-12 символами.

Анатолій Сергієнко
E-mail: aser@comsys.kpi.ua