Имитатор микропроцессора на основе ПЛИС для функциональной проверки вычислительной системы Костенко В. О., ИМВС РАН, [email protected] Изготовление системной панели – основы вычислительной системы «Эльбрус-3М1» – было запланировано и полностью завершено на 5 месяцев раньше, чем изготовление микропроцессора «Эльбрус». Системная панель, основанная на ПЛИС, требовала функциональной проверки и отладки совместно с прототипом микропроцессора «Эльбрус» на ПЛИС, памятью DDR SDRAM и типовым комплектом устройств I/O. Работы в этом направлении сводились к поиску ошибок как в системной панели и ПЛИС системной логики, так и в прототипе микропроцессора «Эльбрус», их воспроизведению, получению временных диаграмм неправильной работы для определения причин ошибок. Эти работы необходимо было начать, не дожидаясь изготовления микропроцессора «Эльбрус», для чего потребовалось разработать устройство – имитатор микропроцессора «Эльбрус» (CPUIM). Решения, принятые при разработке – Выбран способ управления CPUIM – внешнее управление. необходимо внешнее устройство управления, необходим внешний канал управления, зато возможны варианты и устройства управления, и канала, совместимые между собой. Выбрана элементная основа CPUIM – одна ПЛИС серии Stratix фирмы Altera. Технология 110 нм, тактовая частота более 100 МГц , встроенный анализатор для получения временных диаграмм. Выбран принцип действия CPUIM – согласование обмена данными между каналом управления и системной панелью. Достоинства выбранного принципа действия: Такое согласование несложно выполнить с помощью FIFO-буферов, устройств синхронизации данных и устройств преобразования форматов данных. При этом скорость внешнего канала управления может быть сколь угодно низкой, и в нем не требуется наличие обратной связи для управления потоком данных, такую связь достаточно иметь в передатчике канала. Из практических соображений, было принято решение ограничить внешний канал скоростью 3,2 Гбит/c. Неизбежный недостаток: CPUIM обеспечивает пропускную способность, не превышающую 10 % от способности CPU «Эльбрус» (а практическая реализация быстрого канала управления ограничивает эту величину 1-3 %) – но тестирование, направленное на поиск ошибок при 100 % пропускной способности, проводилось во время логического моделирования системы вместе с двумя CPU. Основное достоинство выбранного принципа действия: В качестве устройства управления может использоваться как специальное оборудование, так и ПЭВМ под управлением специальной программы, что делает возможным автономную отладку с ручным или автоматическим управлением. Для названных целей были разработаны: Интерактивная диалоговая программа с оконным интерфейсом – «ИНЖЕНЕРНЫЙ ПУЛЬТ УПРАВЛЕНИЯ CPUIM». + Позволяет вручную проверить работу любой операции. - От оператора требуется полное понимание работы системы. Устройство сопряжения CPUIM c прототипом микропроцессора «Эльбрус» на ПЛИС. + Позволяет проверить работу системы на стандартном ПО «Эльбрус». (Двоичный транслятор, BIOS, ОС, компилятор, драйверы устройств…) - Требует высокого уровня стабильности работы системы. - Сниженные возможности по воспроизведению ошибок. Общая часть CPUIM для всех вариантов: Устройство сопряжения с системной логикой (100 МГц и 200 МГц DDR): sys_int 32 10 FIFO 10 От 0 до 3,2 Гбит/c (Verilog-2001) Выполняет необходимую буферизацию и уплотнение, предоставляя внутренние 32-разрядные каналы для подключения приемника и передатчика внешнего канала. data 32 40 FIFO 40 32 32 32 Мультиплексор 2 уровня. 300 300 FIFO FIFO ×2 300 150 ×2 300 150 DDR IN data_ac DDR IN data_sn DDR IN data_dc0 DDR IN data_dc1 5 20 75 75 Мультиплексоры 1 уровня. quit_ac 32 5 quit_sn quit 32 10 32 От 0 до 3,2 Гбит/c quit_dc0 32 300 1/4 75 quit_dc1 32 300 1/4 75 Вариант CPUIM с медленным внешним каналом (через JTAG): (Verilog-2001, C, Cygwin) Канал через тестовый порт JTAG и спец. кабель. Разработан на основе готового программноаппаратного решения – готовый порт JTAG и терминал JTAG для ПЭВМ. Порт LPT (IEEE-1284) ПЭВМ Кабель Byte Blaster II OC Windows/ терминал Cygwin jtag_link quit ≤ 2,5 Кбит/c Порт JTAG 32 4 data 32 100 МГц Сеть TCP/IP sys_int Пульт управления CPUIM Системная панель, 100 МГц/ 200 МГц DDR Вариант CPUIM с быстрым внешним каналом (LVDS): (Verilog-2001) Канал LVDS (RJ-45, UTP), два однонаправленных канала, Устройство сопряжения (ПЛИС) Прототип CPU «Эльбрус» на ПЛИС. 333 кГц / 667 кГц «DDR» 533/1067 Мбит/с, сопровождение синхросигналом, 200/400 Мбит/с на lvds_link 3 533 / 1067 Мбит /с lvds_rx sys_int quit 32 витую пару. Синхронизатор принимаемых данных, спец. элементы I/O LVDS 533 / 1067 Мбит /с 3 lvds_tx data 32 100 МГц Системная панель, 100 МГц/ 200 МГц DDR Инженерный пульт управления CPUIM: (Tcl / Tk) Диалоговая программа с оконной графикой. Работает по замкнутому циклу, запускаемому вручную. Основана на программных FIFO-буферах. Работа диалогов содержит элементы логики CPU. Определяет множество ошибок аппаратуры с помощью проверки некоторых действий. CPUIM (JTAG) Чтение TCP/IP Запись TCP/IP Буферизация входных данных Буферизация выходных данных Анализ входных данных Анализ выходных данных Отображение входных данных, Переход в диалоговый режим, Прием выходных данных, Выход из диалогового режима. (Работают элементы логики CPU.) Внешний вид и структура диалогового окна соответствует структуре каналов CPUIM. Удобное представление данных. Итоги работы для проекта «Эльбрус-3М». Все рассмотренные средства, связанные с CPUIM, в разное время применялись или продолжают применяться на практике. С помощью медленного внешнего канала и инженерного пульта управления CPUIM удалось отладить работу DDR SDRAM и EEPROM, после чего быстрый внешний канал был успешно использован для подключения прототипа CPU «Эльбрус» на ПЛИС к рабочей станции, что позволило начать совместную отладку рабочей станции и системного ПО: двоичный транслятор, x86 BIOS, ОС Linux. С помощью CPUIM были найдены ошибки в системной логике, а также своевременно обнаружены проблемы с механическим и электрическим качеством печатных плат проекта. В настоящее время CPUIM совместно с прототипом CPU успешно используется для тестирования логики будущей 2-ой итерации CPU «Эльбрус» на стандартном ПО «Эльбрус». Благодарю за внимание.