Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2003
Тип роботи:
Методичні вказівки до лабораторної роботи
Предмет:
Проектуванння периферійних комп’ютерних мікросистем

Частина тексту файла (без зображень, графіків і формул):

МIНIСТЕРСТВО ОСВIТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" МЕТОДИЧНІ ВКАЗІВКИ до циклу лабораторних робiт з дисципліни "Проектуванння периферійних комп’ютерних мікросистем" для студентiв спецiальностей 7.091503 та 8.091503 "Спеціалізовані комп'ютерні системи" Затверджено на засiданнi кафедри "Електроннi обчислювальнi машини". Протокол № вiд 2003 р. Львiв - 2003 Методичні вказівки до циклу лабораторних робiт з дисципліни "Проектуванння периферійних комп’ютерних мікросистем" для студентiв спецiальностей 7.091503 та 8.091503 "Спеціалізовані комп'ютерні системи". /Укл.: Парамуд Я.С., Хомич С.В., Хомуляк М.О. – Львів: Національний університет ''Львівська політехніка'', 2003. - с. Укладачі Парамуд Я.С., канд. техн. наук, доц. Хомич С.В., ст. викл. Хомуляк М.О., асист. Рецензенти Пуйда В.Я., канд. техн. наук, доц. Наконечний М.В., канд. техн. наук, доц. Відповідальний за випуск Черкаський М.В., д-р техн. наук, проф. ЗМІСТ Вступ................................................................................................................................................ 1 1. Загальна теоретична частина..................................................................................................... 1 1.1. Система автоматизованого проектування НВІС Alliance.................................................... 1 1.2. Головні програми системи Alliance........................................................................................ 1 1.3. Бібліотеки елементів кристалу та параметричні генератори............................................... 1 1.3.1. Основні стандартні бібліотеки............................................................................................. 1 1.3.2. Основні параметричні генератори....................................................................................... 1 1.4. Приклад синтезу кристалу за допомогою пакету програм Alliance.................................... 1 1.4.1. Місцезнаходження пакету Alliance..................................................................................... 1 1.4.2. Принципова електрична схема для синтезу кристалу....................................................... 1 1.4.3. Методика проектування....................................................................................................... 1 1.4.4. Встановлення додаткових змінних оточення..................................................................... 1 2. Лабораторна робота №1. Симуляція на функціональному рівні............................................ 1 3. Лабораторна робота №2. Розробка на структурному рівні..................................................... 1 4. Лабораторна робота №3. Проектування на фізичному рівні.................................................. 1 5. Лабораторна робота №4. Верифікація...................................................................................... 1 6. Лабораторна робота №5. Отримання технологічного файлу................................................. 1 Список літератури........................................................................................................................... 1 ВСТУП Даний цикл лабораторних робіт укладений відповідно до навчальної програми з дисципліни “Проектуванння периферійних комп’ютерних мікросистем” та містить п’ять лабораторних робіт. Цикл лабораторних робіт побудовано на застосуванні системи автоматизованого проектування (САПР) Alliance для підготовки до виготовлення кристалів великих інтегральних схем (ВІС) периферійних вузлів комп’ютера, в тому числі: інтерфейсних модулів, засобів спряження з керуючими комплексами та системами, засобів захисту інформації, апаратури підтримки телекомунікацій, апаратних прискорювачів тощо. Введення інформації про проект здійснюється у формі тексту мовою проектування апаратури VHDL, що дозволяє об’єднати можливість компактного представлення складних логічних схем з відносною простотою пошуку помилок та внесення змін до проекту. Виконання лабораторних робіт передбачає: - створення і перевірку функціональної VHDL-моделі кристалу; - створення і перевірку структурних VHDL-описів кристалу та зовнішніх корпусних контактних майданчиків; - створення відтрасованого шару елементів на підкладинці та готової топології кристалу; - наскрізне тестування результатів попередніх етапів; - створення технологічного файлу; - перегляд топології кристалу в середовищі X-Window. Лабораторні роботи орієнтовані на наявну на кафедрі ЕОМ лабораторну базу – лабораторію кімнати 505 5-го навчального корпусу. Методичні вказівки допоможуть студентам ефективно використати відведений час на виконання лабораторних робіт, вчасно виконати та захистити звіти. 1. ЗАГАЛЬНА ТЕОРЕТИЧНА ЧАСТИНА 1.1. Система автоматизованого проектування НВІС Alliance Alliance - це набір програм, що реалізують повний САПР НВІС. Вхідною інформацією є VHDL-опис мікросхеми, на виході отримаємо закінчений технологічний файл, за яким виробники мікросхем можуть створити кристал. Пакет Alliance в першу чергу зорієнтований на технології КМДН (CMOS), але за допомогою нового підходу символьного представлення проміжних форматів проектування досягається незалежність проектувальника від виробника та переносимість результатів проміжних рівнів проектування між існуючими САПР. Alliance - це результат 10 років роботи лабораторії MASI університету Марії Кюрі (UPMC) в Парижі. Пакет розрахований на роботу під керуванням операційної системи UNIX. Його графічна частина вимагає X Windows та Motif-середовище. Він може працюваті на UNIX-машині будь-якої архітектури, зокрема і386, Sparc Stations, DEC Stations та ін. Робота із системою Alliance ведеться за текстовими терміналами (окрім завершального етапу відображення на Х-терміналах). Програми пакету Alliance можуть працювати окремо одна від одної, а можуть об’єднуватись разом, утворюючи середовище розробника ВІС. Пропонована система Alliance за своїми характеристиками не поступається, а за деякими параметрами випереджує існуючі комерційні системи проектування ВІС. За її допомогою легко моделюються та готуються до виготовлення кристали класу Intel i8086...i80386, Motorola MC6800, RISC DLX та інші. До складу системи Alliance входять окремі програми (редактор модулів, автоматичний компонувальник, автоматичний трасувальник), засоби верифікації для кожного з етапів проектування та CMOS-бібліотеки елементів. Розробити кристал в системі Alliance означає послідовно пройти через усі етапи проектування. Цих етапів є п’ять: 1). Симуляція на функціональному рівні. 2). Розробка на структурному рівні. 3). Проектування на фізичному рівні. 4). Верифікація. 5). Отримання технологічного файлу. Якщо на деякому з етапів проектування виникає помилка, то проектувальник може повернутись на попередні рівні. Наведений рис. 1.1 показує взаємозв’язок етапів проектування. На рисунку показані основні програми системи та інформаційні зв’язки між програмами і етапами. Призначення та особливості основних програм системи описані в наступних підрозділах даних методичних вказівок.  EMBED Word.Picture.8  Рис. 1.1. Взаємозв’язок етапів проектування 1.2. Головні програми системи Alliance Файли даних в системі Alliance можуть містити опис НВІС на одному з трьох рівнів: 1). Функціональний рівень (Behavional view). 2). Структурний рівень (Structural view). 3). Фізичний рівень (Physical view). Кожна програма системи Alliance передбачає простий та прозорий інтерфейс для обміну даними з іншими програмами та для забезпечення процесу проектування. Крім цього, більшість програм може використовуватись незалежно завдяки підтримці декількох стандартних форматів, наведених у табл. 1.1. Таблиця 1.1. Підтримка програм стандартними форматами Програми в системі Alliance взаємодіють та групуються навколо функціонального, структурного та фізичного рівнів даних за схемою, наведеною на рис. 1.2. Рис. 1.2. Взаємозв’язок програм в системі Alliance Наведемо короткий перелік головних утиліт (є ще багато допоміжних): ASIMUT - VHDL-симулятор. Дозволяє симуляцію на функціональному та структурному рівнях (без часової інформації). GENPART - мова-інтерпретатор для ефективної генерації тестових наборів. Ці набори можуть транслюватись в MSA-формат для тестера Tektronics LV500. LOGIC - Логічний синтезатор. Переводить функціональний VHDL-oпис в структурний, підключаючи бібліотечні елементи. Програма може також працювати без зовнішніх бібліотек завдяки вбудованому компілятору стандартних комірок. GENLIB - Інтерпретатор процедурної мови із синтаксисом мови С. Дає змогу описати схему у термах (бібліотечних елементах), щоб отримати структурний VHDL-опис. Використовується також для побудови параметричних генераторів. GENVIEW - Це GENLIB та додатковий графічний відлагоджувач. Працює в стандартному X-Motif оточенні. SCR - Автоматичний компанувальник та трасувальник. Він створює відтрасований шар елементів на підкладинці кристалу (кремнієвий компілятор). RING - Трасувальник зовнішніх зв’язків. Він поєднує відтрасовану топологію кристалу із зовнішніми корпусними контактними майданчиками, враховуючи аспекти мінімізації. VERSATIL/DRUC - Контрольна утиліта. Перевіряє готову топологію кристалу на відповідність правилам проектування за відомими стандартами. Тут використовується спеціальний віконний алгоритм для підвищення продуктивності. LYNX - Декомпілятор відтрасованого шару елементів на підкладинці кристалу. На виході отримують структурний опис на транзисторному рівні з врахуванням паразитних ємностей. LVX - Утиліта порівняння. Порівнює два структурних VHDL-описи одного і того ж пристрою на їх логічну однаковість. DESB - Функціональний абстрактний дизасемблер для CMOS інтегральних схем. Він створює функціональний VHDL-опис схеми за його структурним описом на транзисторному рівні. Відмінність від комерційного абстрактора полягає в тому, що DESB не вимагає наперед визначеної бібліотеки. PROOF - Утиліта порівняння. Порівнює два функціональних VHDL-описи одного і того ж пристрою на їх логічну ідентичність. S2R - Утиліта заключного етапу проектування кристалу. Переводить символьне представлення топології кристалу в технологічний файл (Symbolic to Real). Технологічний файл містить повну інформацію, що є достатня для виготовлення кристалу на технологічній лінії. S2R для цього використовує вхідний параметричний файл, що залежить від технології виготовлення кристалу. EXTASE/TAS - Аналізатори часових характеристик. EXTASE відображає часові діаграми кристалу, працюючи в стандартному X-Modif-оточенні. TAS відображає часові характеристики в текстовій формі. GRAAL/ALC - Редактор готової топології кристалу. Дозволяє переглядати або редагувати топологію кристалу в стандартному X-Modif-оточенні. MBK2PS - Конвертер. Переводить файл з описом топології кристалу в стандартний Adobe PostScript файл для роздруку. 1.3. Бібліотеки елементів кристалу та параметричні генератори Пакет програм Alliance передбачає два шляхи проектування кристалів: за допомогою стандартних бібліотек елементів та за допомогою власних створених елементів (рис. 1.3 та рис. 1.4). Рис. 1.3. Схема проектування за допомогою стандартних бібліотек елементів Особливості схеми: а) невисока технологічність кристалу; б) швидке проектування. Рис. 1.4. Схема проектування за допомогою власних створених елементів Особливості схеми: а) висока технологічність кристалу; б) повільне проектування. 1.3.1. Основні стандартні бібліотеки Пакет Alliance має потужну бібліотеку елементів кристалу (понад 600 елементів). Для спрощення переносимості та сумісності бібліотек поміж різних технологій виготовлення кристалів кожен елемент має три види описів: 1). Символьний опис технології комірки. 2). Опис термів транзисторних міжз’єднань. 3). Функціональний VHDL-опис. Технологічно залежними елементи стають лише на завершальному етапі, коли утиліта S2R робить трансляцію символьних описів в технологічний файл в залежності від параметричного файлу конкретної технології виготовлення кристалу. Дослідження показали, що створена бібліотека системи Alliance добре оптимізована. Вона дає лише 10% - 20% втрат площі кристалу в порівнянні з бібліотечними технологіями синтезу кристалів. Alliance розрізняє два різновиди стандартних бібліотек: статичні та динамічні. Cтатичні бібліотеки SCLIB складаються з комірок логічних функцій, буферів, мультиплексорів, тригерів та ін. Всі комірки мають однакову висоту, однакове розміщення земляної шини та шини живлення. Однаковим є також двохстороннє розміщення металізованих контактних майданчиків зовнішніх виводів. Такі комірки легко компонуються та трасуються на поверхні підкладинки кристалу кремнієвим компілятором SCR. Динамічні бібліотеки DPLIB складаються з комірок щільного монтажу. Переважно вони призначені для логічного та арифметичного опрацювання сигналів. Розміри комірок та розміщення металізованих зовнішніх виводів відрізняються. Трасування таких комірок складне. Воно здійснюється за допомогою компілятора FITPATH. 1.3.2. Основні параметричні генератори Параметричні генератори - це програми генерації функціональних VHDL-описів або бібліотечних комірок типу DPLIB за певними параметрами, що вказуються на вході. Система Alliance має набір стандартних параметричних генераторів та надає можливість створення своїх власних за допомогою утиліти GENLIB. Стандатні параметричні генератори: RSA - швидкий суматор із часом затримки log2nb. Може мати дві або три вхідні шини, якщо потрібно - вхід переносу від попереднього розряду. Може використовуватись як суматор або віднімач; nb - розрядність (3..128) bit; cin - наявність входу переносу; csa - наявність третього входу; ovr - наявність прапорця переповнення. RFG - генератор статичного регістрового файлу. Він має одну адресу для запису і одну або дві адреси для читання; nb - розрядність (2..64) bit; nw - кількість слів (2..256); bus - кількість шин для читання (1/2). low_power - зменшене споживання. BSG - Barrel Shifter, що виконує операції логічного, арифметичного та кільцевого зсувів вправо та вліво; nb - розрядність (3..64) bit; AMG - Швидкий матричний перемножувач двох чисел; схема може бути конвейєризованою; nx - розрядність x операнду (8..64) bit; ny - розрядність y операнду (8..64) bit; ps - число сходинок конвейєра (0..min(nx/2, ny/2)-1). GROG - Генератор ПЗП; інтерфейс включає шину адреси, синхронізацію, дозвіл виходу, вихідну шину даних; вміст комірок постійної пам’яті задається VHDL-описом; nb - розрядність (1..64) bit; nw - число слів (64..n*512); hz - вихід з третім станом. RAGE - Генератор ОЗП; інтерфейс включає шину адреси, шину даних, синхронізацію, сигнали на запис/читання; nb - розрядність (2..128) bit; nw - число слів (128..4096); aspect - густина монтажу; nd - об’єднання входу/виходу даних. 1.4. Приклад синтезу кристалу за допомогою пакету програм Alliance 1.4.1. Місцезнаходження пакету Alliance Стандартне місце знаходження пакету Alliance у файловій системі Unix: /usr/alliance. Змінна оточення ТОР повинна вказувати на цей каталог: для Cshell: > setenv TOP /usr/alliance для Bash: > TOP=/usr/alliance; export TOP Виконавчі програми пакету Alliance знаходяться в каталозі, ім’я якого залежить від архітектури комп’ютера: /usr/alliance/archi/pc/bin де pc - для архітектури РС і386. Змінна оточення MACHINE повинна містити назву архітектури комп’ютера: для Cshell: > setenv MACHINE pc для Bash: > MACHINE = pc; export MACHINE Щоб викликати утиліти Alliance, знаходячись у довільному каталозі, потрібно вказати шлях доступу до них: для Cshell: > setenv PATH $TOP/archi/$MACHINE/bin:$PATH для Bash: > PATH = $TOP /apchi/$MACHINE/bin:$PATH; export PATH Для користування довідковою інформацією системи Alliance необхідно зробити відповідну модифікацію змінної оточення MANPATH: для Cshell: > setenv MANPATH $TOP/man:$MANPATH для Bash: > MANPATH = $TOP/man:$MANPATH; export MANPATH Надалі усі операції над змінними оточення будуть наводитись для Bash. 1.4.2. Принципова електрична схема для синтезу кристалу Будемо розглядати схему чотирирозрядного накопичувального суматора, що зображений на рис. 1.5 та рис. 1.6. Рис. 1.5. Функціональна схема чотирирозрядного накопичувального суматора Рис. 1.6. Принципова схема вузла суматора Схема виконує додавання b[3:0] та a[3:0], якщо sel=0, або додавання b[3:0] та outreg, якщо sel=1. Вміст регістру переписується результатом суматора за додатнім перепадом сигналу clk. Чотирирозрядний суматор розглядається як послідовне включення чотирьох однорозрядних суматорів. 1.4.3. Методика проектування Будемо проводити проектування кристалу в п’ять етапів: 1). Симуляція на функціональному рівні. 2). Проектування на структурному рівні. 3). Проектування на фізичному рівні. 4). Верифікація. 5). Отримання технологічного файлу. Етапи 2 та 3 будемо використовувати окремо безпосередньо для схеми кристалу (core) та для зовнішніх корпусних контактних майданчиків (addaccu). Отже, ієрархія складових частин кристалу addaccu буде мати вигляд, як показано на рис. 1.7. Рис. 1.7. Ієрархія складових частин кристалу. Кристал addaccu складається з власне схеми кристалу core та бібліотечних контактних майданчиків pads. В свою чергу власне схема кристалу core складається з набору бібліотечних елементів standard cells. 1.4.4. Встановлення додаткових змінних оточення Програми пакету Alliance отримують більшу частину своїх вхідних параметрів через змінні оточення, за допомогою яких вказуються шлях до бібліотеки елементів кристалу, робочий каталог, формати даних файлів та інше. У нашому прикладі будуть використовуватись бібліотеки /cells/scr та cells/ring. Для цього потрібно встановити змінну оточення MBK_CATA_LIB: > MBK_CATA_LIB = $TOP/cells/ scr $$TOP/cells/ring; export MBK_CATA_LIB Робочим каталогом, як правило, є поточний каталог. За це відповідає змінна оточення MBK_WORK_LIB: > MBK_WORK_LIB =. ; export MBK_WORK_LIB Серед великої кількості форматів даних, що розуміють програми пакету Alliance, є рекомендовані. Так, для структурного VHDL-опису слід використовувати формат vst, для функціонального VHDL-опису - vbe, для файлу топології кристалу - al і т.д. ПРИКЛАД: > MBK_OUT_LO = vst; export MBK_OUT_LO В подальшому перед викликом кожної з програм пакету Alliance будемо вказувати необхідні змінні оточення. 2. ЛАБОРАТОРНА РОБОТА №1 СИМУЛЯЦІЯ НА ФУНКЦІОНАЛЬНОМУ РІВНІ Мета роботи: Створення і перевірка функціональної VHDL-моделі кристалу. Проектування кристалу (див. рис. 1.1) починається з його функціонального опису на мові VHDL. Отже, за допомогою текстового редактора створюється файл, в якому описується VHDL-модель майбутнього кристалу. Часові затримки не вказуються - це, так звана, функціональна часово-незалежна VHDL-модель. На цьому етапі також створюється файл з тестовими наборами для перевірки правильності роботи описаної моделі. Цей файл можна створити за допомогою текстового редактора, або за допомогою спеціальної програми-генератора GENPAT. Далі за допомогою VHDL-симулятора ASIMUT перевіряється робота тестових наборів на функціональній VHDL-моделі проектованого кристалу. При наявності помилок слід перевірити правильність моделі та тестових наборів. Послідовність виконання роботи 1. Зареєструватись з термiналу в системi. 2. Ознайомитись з прикладом симуляції на функціональному рівні чотирирозрядного накопичувального суматора. 3. Отримати та виконати iндивiдуальне завдання. 4. Оформити та захистити у викладача звіт про лабораторну роботу. Приклад симуляції на функціональному рівні чотирирозрядного накопичувального суматора За допомогою текстового редактора створимо файл addaccu.vbe, в якому дамо функціональний VHDL-опис наведеної схеми накопичуючого суматора: ENTITY addaccu IS PORT( a : IN BIT_VECTOR(0 TO 3); b : IN BIT_VECTOR(0 TO 3); sel : IN BIT ; ck : IN BIT ; s : OUT BIT_VECTOR(0 TO 3); vdd, vss, vdde, vsse : IN BIT ); END addaccu; ARCHITECTURE functional OF addaccu IS SIGNAL outmux, outreg, sum : BIT_VECTOR(0 TO 3) ; SIGNAL carry : BIT_VECTOR(0 TO 2) ; SIGNAL reg : REG_VECTOR(0 TO 3) REGISTER; BEGIN -- Живлення ASSERT(vdd = '1' AND vss = '0') REPORT "Wrong power supplies" SEVERITY WARNING; ASSERT(vdde = '1' AND vsse = '0') REPORT “Wrong power external supplies” SEVERITY WARNING; -- Мультиплексор WITH sel SELECT outmux <= a WHEN '0', outreg WHEN '1'; -- Суматор sum(0) <= outmux(0) XOR b(0); carry(0) <= outmux(0) AND b(0); sum(1) <= outmux(1) XOR b(1) XOR carry(0); carry(1) <= (outmux(1) AND b(1)) OR (outmux(1) AND carry(0)) OR (b(1) AND carry(0)); sum(2) <= outmux(2) XOR b(2) XOR carry(1); carry(2) <= (outmux(2) AND b(2)) OR (outmux(2) AND carry(1)) OR (b(2) AND carry(1)) ; sum(3) <= outmux(3) XOR b(3) XOR carry(2) ; s <= sum; -- Регістр з інвертором L0 : BLOCK ((ck = '0') AND NOT ck'STABLE) BEGIN reg <= GUARDED NOT sum; END BLOCK ; outreg <=NOT reg; END; Для перевірки правильності функціонального опису VHDL-симулятор запускається в спеціальному режимі без симуляції: > asimut -b -c addaccu [0] addaccu.vbe - розширення в програмах пакету Alliance не вказуються (використовуються змінні оточення) лише компіляція без симуляції (для симуляції необхідні тестові набори) функціональний опис (behavioural description) VHDL-симулятор Для симуляції спочатку необхідно створити файл з тестовими наборами. Отже за допомогою текстового редактора створюємо файл addaccu.pat з наступним вмістом: IN vdde; #- вхідні терми IN vsse; IN vdd; IN vss; IN a(3 to 0); IN b(3 to 0); IN sel;; IN ck;;; OUT s(3 to 0); # - вихідний терм BEGIN # a=0, b=3, sel=direct input, we expect value 3 on s pat_1 : 1 0 1 0 0000 0011 0 0 ?0011 ; # a=1, b=3, sel=direct input, we expect value 4 on s pat_2 : 1 0 1 0 0001 0011 0 0 ?0100 ; # a=7, b=3, sel=direct input, we expect value bin 1010 on s pat_3 : 1 0 1 0 0111 0011 0 0 ?1010 ; # a=7, b=3, sel=direct input, we set ck to 1, we still expect bin 1010 on s pat_4 : 1 0 1 0 0111 0011 0 1 ?1010 ; # when ck falls to 0, the computed value (7+3=bin 1010) is stored in accu pat_5 : 1 0 1 0 0111 0011 0 0 ?1010 ; # if we choose sel=accu output, we expect value bin 1010 + 4= bin 1110 on s # even if a=1111 pat_6 : 1 0 1 0 1111 0100 1 0 ?1110 ; # back to normal mode, 5+4=9 pat_7 : 1 0 1 0 0101 0100 0 0 **** ; END; Формат файлу дуже простий. В ньому задаються вхідні двійкові комбінації, які порівнюються з вихідними. Для двійкової інформації про формат файлу задайте команду: > man 5 pat Тепер ми можемо просимулювати роботу нашої схеми накопичуючого суматора на тестових наборах: # ###-------------------------------------------------------------------------### # check the correctness of specifications (Data-FLow VHDL) # # running the logic simulation # # ###------------------------------------------------------------------------### asimut -b addaccu addaccu specifications [1] Вихідний файл з результатами тестування addaccu.pat addaccu.vbe Функціональний опис, симуляція на функціональному рівні VHDL-симулятор Повідомлення системи при виконанні програми ASIMUT з тестовими наборами показано на рис. 2.1. @ @@@@ @ @ @@@@@@@@@@ @ @ @@ @@@ @ @@ @ @@@ @@ @ @ @ @@ @ @@@ @@@ @@@ @@ @@@ @@@ @@@@ @@ @ @@ @@@@ @@@@ @@@ @@ @@ @@ @@ @@ @ @@ @@@@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@@ @@ @@ @@ @@ @@ @@ @@ @@@@@@@ @ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@@ @ @@ @@ @@ @@ @@ @@@ @@ @@@@ @@@@ @ @@@@ @@@@@@ @@@@ @@@ @@@ @@@@ @@ @@@@@@ A SIMUlation Tool Alliance CAD System 3.2b, asimut v2.0 Copyright (c) 1991-2002, ASIM/LIP6/UPMC E-mail support: alliance-support@asim.lip6.fr Paris, France, Europe, Earth, Solar system, Milky Way, ... Initializing ... Searching `addaccu` ... BEH : Compiling `addaccu.vbe` (Behaviour) ... Making GEX ... Searching pattern file : `addaccu` ... Restoring ... Linking ... ###----- processing pattern 0 -----### ###----- processing pattern 1 -----### ###----- processing pattern 2 -----### ###----- processing pattern 3 -----### ###----- processing pattern 4 -----### ###----- processing pattern 5 -----### ###----- processing pattern 6 -----### Рис. 2.1. Повідомлення системи при виконанні програми ASIMUT з тестовими наборами Задаючи різні тестові комбінації, можна симулювати роботу схеми у різних режимах. Повний набір тестових комбінацій можна отримати за допомогою програми GENPAT. Отже, на етапі симуляції на функціональному рівні потрібно відлагодити функціональний опис схеми та сформулювати правильний та достатній набір тестових комбінацій. ЗАУВАЖЕННЯ: Довідкову інформацію про програми та формати файлів системи Alliance можна отримати, запускаючи програму з опцією -- help: ><ім’я_програми> -- help або викликаючи утиліту man: >man <ім’я_програми>. 3. ЛАБОРАТОРНА РОБОТА №2 РОЗРОБКА НА СТРУКТУРНОМУ РІВНІ Мета роботи: Створення і перевірка структурних VHDL-описів кристалу та зовнішніх корпусних контактних майданчиків. На цьому етапі переходять від функціонального опису кристалу до структурного (див. рис. 1.1). Тут кристал розбивається на два конструктиви: 1). Безпосередньо схема кристалу (core). 2). Зовнішні корпусні контактні майданчики (pads). Структурний рівень передбачає опис цих двох конструктивів мовою структурного опису VHDL. Відмінність структурного опису VHDL від функціонального полягає в тому, що в структурному описі оперують реальними бібліотечними елементами кристалу. Створити структурний опис, який за обсягом на кілька порядків більший за функціональний, важко. Тому пакет Alliance передбачає два незалежних способи автоматизоавного отримання структурного опису для core та pads: 1) За допомогою текстового редактора створюється файл мовою С. Цей файл є проміжним форматом для створення структурного опису. У ньому за допомогою викликів спеціальних функцій формується виборка необхідних елементів з бібліотеки кристалу. Далі програмою-компілятором GENLIB проміжний С-файл переводять у необхідний структурний опис. У системі Alliance цей спосіб є рекомендованим. 2) Другий спосіб не вимагає додаткового набору інформації. Достатньо скористатись програмою-генератором LOGIC, на вхід якої задають функціональний VHDL-опис, а на виході отримують структурний VHDL-опис. Виборка бібліотечних елементів кристалу відбувається автоматично. Після отримання структурних описів для core та pads, виконується симуляція на структурному рівні. Користуючись симулятором ASIMUT, перевіряють роботу тестових наборів на структурній VHDL-моделі безпосередньо схеми кристалу core. При виникненні помилки слід повернутись на попередні рівні. Симуляція для структурного опису зовнішніх корпусних контактних майданчиків pads не потрібна, оскільки цей опис не містить логічних перетворень сигналів. Послідовність виконання роботи 1. Зареєструватись з термiналу в системi. 2. Ознайомитись з прикладом розробки на структурному рівні чотирирозрядного накопичувального суматора. 3. Отримати та виконати iндивiдуальне завдання. 4. Оформити та захистити у викладача звіт про лабораторну роботу. Приклад розробки на структурному рівні чотирирозрядного накопичувального суматора Розробку структурного опису проводимо в три кроки: 1). Описуємо на проміжній структурній мові власне схему кристалу core.c. 2). Описуємо на проміжній структурній мові зовнішні корпусні контактні майданчики addaccu.c. 3). Отримуємо результуючий структурний VHDL-опис за допомогою компілятора GENLIB. Опис на проміжній структурній мові включає підключення стандартних бібліотечних елементів, логічні функції яких є необхідні для реалізації схеми. Проміжна мова - це мова С з викликами спеціальних функцій, головні з яких DEF_LOFIG, LOCON та LOINS. Для їх використання необхідно підключити хедер-файл genlib.h: #include <genlib.h> DEF_LOFIG - визначає ім’я результуючого структурного VHDL-опису; LOCON - включає новий елемент; LOINS - включає наперед визначений блок. Для детальної інформації потрібно користуватись командою man для кожної з функцій. С-файли компілюються утилітою GENLIB. Змінні оточення MBK_IN_LO та MBK_OUT_LO повинні вказувати на тип формату структурного VHDL-опису. Рекомендованим є формат vst на відміну від al (al-формат може включати такі елементи, як конденсатори, які неможливо описати мовою VHDL.) Отже, створюємо за допомогою текстового редактора наступний проміжний структурний опис для core.c: /* genlib.h is required for all genlib programs. it defines the set of functions we will use for schematic capture */ #include <genlib.h> /* core.c is to become the `core' executable program. So we must define a main procedure main() */ main() { int i; /* We will build regular structure using a loop, i is its index */ /* When executed, the addaccu program opens the netlist view "core". Operations performed after opening "accu" are taken into account. */ DEF_LOFIG("core"); /* The description of the addaccu netlist begins with the instanciation of input/output terminals */ /* We start with the input terminals. Note that ‘a[0:3]’ defines a[0], a[1], a[2] and a[3] as if three calls to `LOCON' had been performed. Only signals and connectors can be vectorized. */ LOCON("a[0:3]", IN, "a[0:3]"); /* input bus a */ LOCON("b[0:3]", IN, "b[0:3]"); /* input bus b */ LOCON("sel", IN, "sel" ); /* selection switch */ LOCON("ck", IN, "ck" ); /* clock */ /* Then, the output terminals. */ LOCON("s[0:3]", INOUT, "s[0:3]"); /* output bus */ /* Then the supplies. They are inputs, but we like them better at the end of the description. */ LOCON("vdd", IN, "vdd" ); /* power supply */ LOCON("vss", IN, "vss" ); /* ground */ /* Now we describe the circuit's schematic in instanciating standard cells. */ /* bit 0 */ LOINS("xr2_y", "xr0", "mux[0]", "b[0]", "s[0]", "vdd", "vss", 0); /* S(0)<= mux(0) XOR b(0);*/ LOINS("a2_y", "an0", "mux[0]", "b[0]", "carry[0]", "vdd", "vss", 0); /* carry(0) <= mux(0) AND b(0);*/ /* bit 1 */ LOINS("xr2_y", "xr1", "mux[1]", "b[1]", "int[1]", "vdd", "vss", 0); /* int(1) <= mux(1) XOR b(1);*/ LOINS("xr2_y", "xr2", "int[1]", "carry[0]", "s[1]", "vdd", "vss", 0); /* S(1) <= int(1) XOR carry (0);*/ LOINS("a2_y", "an1", "mux[1]", "b[1]", "int[2]", "vdd", "vss", 0); /* int(2) <= mux(1) AND b(1);*/ LOINS("a2_y", "an2", "mux[1]", "carry[0]", "int[3]", "vdd", "vss", 0); /* int(3) <= mux(1) AND carry(0);*/ LOINS("a2_y", "an3", "b[1]", "carry[0]", "int[4]", "vdd", "vss", 0); /* int(4) <= b(1) AND carry(0); */ LOINS("o3_y", "an4", "int[2]", "int[3]", "int[4]", "carry[1]", "vdd", "vss", 0); /* carry(1) <= int(2) OR int(3) OR int(4);*/ /* bit 2 */ LOINS("xr2_y", "xr3", "mux[2]", "b[2]", "int[5]", "vdd", "vss", 0); /* int(5) <= mux(2) XOR b(2);*/ LOINS("xr2_y", "xr4", "int[5]", "carry[1]", "s[2]", "vdd", "vss", 0); /* S(2) <= int(5) XOR carry(1);*/ LOINS("a2_y", "an5", "mux[2]", "b[2]", "int[6]", "vdd", "vss", 0); /* int(6) <= mux(2) AND b(2);*/ LOINS("a2_y", "an6", "mux[2]", "carry[1]", "int[7]", "vdd", "vss", 0); /* int(7) <= mux(2) AND carry(1);*/ LOINS("a2_y", "an7", "b[2]", "carry[1]", "int[8]", "vdd", "vss", 0); /* int(80 <= b(2) AND carry(1);*/ LOINS("o3_y", "an8", "int[6]", "int[7]", "int[8]", "carry[2]", "vdd", "vss", 0); /* carry(2) <= int(6) OR int(7) OR int(8);*/ /* bit 3 */ LOINS("xr2_y", "xr5", "mux[3]", "b[3]", "int[9]", "vdd", "vss", 0); /* int(9) <= mux(3) XOR b(3);*/ LOINS("xr2_y", "xr6", "int[9]", "carry[2]", "s[3]", "vdd", "vss", 0); /* S(3) <= int(9) XOR carry(2);*/ /* mux 2 to 1 */ LOINS("n1_y", "n10", "sel", "nsel", "vdd", "vss", 0); /* nsel <= NOT sel;*/ /* The `NAME' function allows to indice a name automatically */ for (i = 0; i < 4; i++) { LOINS("mx2_y", NAME("mux%d", i), NAME("a[%d]", i), "nsel", NAME("regout[%d]", i), "sel", NAME("mux[%d]", i), "vdd", "vss", 0); /* */ LOINS("ms_y", NAME("l%d", i), NAME("s[%d]", i), "ck", NAME("regout[%d]", i), "vdd", "vss", 0); } /* */ SAVE_LOFIG(); exit(0); /* necessary for the proper run of the Makefile */ } Перетворюємо проміжний структурний опис core.c в структурний VHDL-опис core.vst за допомогою компілятора GENLIB: # ###--------------------------------------------------------------------------### # generate structural description of the circuit's core # # core.c is the schematic capture of the core, using # # the genlib language # # the environment variable specify the structural VHDL format # # ###--------------------------------------------------------------------------### MBK_IN_LO=vst ;\ MBK_OUT_LO=vst ;\ MBK_CATA_LIB=$TOP/cells/scr ;\ export MBK_IN_LO MBK_OUT_LO MBK_CATA_LIB ;\ genlib core [2] core.c --> core.vst Виконання програми GENLIB показано на рис. 2. Отримуємо такий структурний VHDL-опис core.vst: Далі за допомогою текстового редактора створюємо наступний проміжний структурний опис для addaccu.c: #include <genlib.h> main() { int i; DEF_LOFIG("addaccu"); LOCON("a[0:3]", IN, "a[0:3]"); /* input bus a */ LOCON("b[0:3]", IN, "b[0:3]"); /* input bus b */ LOCON("sel", IN, "sel" ); /* selection switch */ LOCON("ck", IN, "ck" ); /* clock */ LOCON("vdd", IN, "vdd" ); /* core power supply */ LOCON("vss", IN, "vss" ); /* core ground */ LOCON("vdde", IN, "vdde" ); /* pads power supply */ LOCON("vsse", IN, "vsse" ); /* pads ground */ LOCON("s[0:3]", OUT, "s[0:3]"); /* output */ /* power supplies: pxxxe_p are external power supplies, ie used only by the buffers inside the pads. pxxxi_p are internal power supplies, for core logic only. */ LOINS ("pvsse_sp", "p15", "cki", "vdde", "vdd", "vsse", "vss", 0); LOINS ("pvsse_sp", "p16", "cki", "vdde", "vdd", "vsse", "vss", 0); LOINS ("pvdde_sp", "p17", "cki", "vdde", "vdd", "vsse", "vss", 0); LOINS ("pvssi_sp", "p18", "cki", "vdde", "vdd", "vsse", "vss", 0); LOINS ("pvddi_sp", "p19", "cki", "vdde", "vdd", "vsse", "vss", 0); /* have not logic functions;*/ /* core to pads connections are point to point connections in the case of this circuit, because no three state ouput pads are used. We use a loop to avoid copy/paste kind of things that may lead to errors easilly. */ for (i = 0; i < 4; i++) LOINS("pi_sp", NAME("p%d", i), /* pi: a[i]<= ad[i];*/ NAME("a[%d]", i), NAME("aa[%d]", i), "cki", "vdde", "vdd", "vsse", "vss", 0); for (i = 0; i < 4; i++) LOINS("pi_sp", NAME("p%d", i + 4), /* pi+4: b[i]<= bb[i];*/ NAME("b[%d]", i), NAME("bb[%d]", i), "cki", "vdde", "vdd", "vsse", "vss", 0); for (i = 0; i < 4; i++) LOINS("po_sp", NAME("p%d", i + 8), /* pi+8: s[i]<= ss[i];*/ NAME("ss[%d]", i), NAME("s[%d]", i), "cki", "vdde", "vdd", "vsse", "vss", 0); LOINS("pi_sp", "p12", "sel", "selsel", /* p12: sel<= selsel;*/ "cki", "vdde", "vdd", "vsse", "vss", 0); LOINS("pi_sp", "p13", "ck", "clock", /* p13: ck<=clock;*/ "cki", "vdde", "vdd", "vsse", "vss", 0); LOINS("core", "core", "aa[0:3]", "bb[0:3]", "selsel", "clock", "ss[0:3]", "vdd", "vss", 0); /* a[i]<=aa[i]; b[i]<=bb[i]; sel<= selsel; ck<= clock; s[i]<= ss[i];*/ SAVE_LOFIG(); exit(0); /* necessary for the proper run of the Makefile */ } Перетворюємо проміжні структурні описи addaccu.c та core.c, які включаються в addaccu.c, в результуючий структурний VHDL-опис addaccu.vst за допомогою компілятора GENLIB: # ###--------------------------------------------------------------------------### # generate structural description of the complete circuit # # addaccu.c is the schematic capture of the circuit, using # # the genlib language # # the circuit can be generated only if the core is generated # # the environment variable specify the structural VHDL format # # ###--------------------------------------------------------------------------### MBK_IN_LO=vst ;\ MBK_OUT_LO=vst ;\ MBK_CATA_LIB=$TOP/cells/scr:$TOP/cells/ring ;\ export MBK_IN_LO MBK_OUT_LO MBK_CATA_LIB ;\ genlib addaccu [3] addaccu.c --> addaccu.vst Повідомлення системи при виконанні програми GENLIB показано на рис. 3.1. @@@@ @ @@@@@@ @ @@@ @@ @@ @@ @@@ @@ @@ @ @@ @ @@ @@ @@@@@ @@@ @@@ @@ @@ @@ @@ @ @ @@@ @ @@ @@@@ @@@ @@ @@ @@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@@@@@@@@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@@ @@ @@@@ @@@@ @@@@ @@@@ @@@@@@@@@@ @@@@@@ @@@ @@ Procedural Generation Language Alliance CAD System 3.2b, genlib 3.3 Copyright (c) 1991-2002, ASIM/LIP6/UPMC E-mail support: alliance-support@asim.lip6.fr Generating the Makefile Compiling, ... Current execution environment MBK_CATA_LIB : /usr/alliance/cells/scr:/usr/alliance/cells/ring MBK_WORK_LIB : . MBK_IN_LO : vst MBK_OUT_LO : vst MBK_IN_PH : ap MBK_OUT_PH : ap MBK_CATAL_NAME : CATAL Executing ... Removing tmp files ... Рис. 3.1. Повідомлення системи при виконанні програми GENLIB Для отримання результуючого структурного VHDL-опису є і іншій шлях. Можна за допомогою утиліти LOGIC отримати структурний VHDL-опис із функціонального VHDL-опису (.vbe --> .vst). При цьому проміжний структурний опис є зайвим. Крім цього утиліта LOGIC дозволяє провести глобальну оптимізацію схеми: >MBK_IN_LO = vst; export MBK_IN_LO >MBK_OUT_LO = vst; export MBK_OUT_LO >MBK_WORK_LIB = . ; export MBK_WORK_LIB >MBK_TARGET_LIB = $TOP/cells/scr;export MBK_TARGET_LIB #бібліотека елементів кристалу, що використовується > logic -0 addaccu addaccuo вихідний о...
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!