Floorplan — язык описания аппаратуры¶
Floorplan — это язык описания (IDL, от англ. interface description language), предназначенный для формализованного представления структуры аппаратной части вычислительных систем: процессоров, систем на кристалле (SoC), периферийных контроллеров и их взаимосвязей. Разработан в рамках проекта OpenPOWER и используется как основа для генерации моделей, документации и средств верификации аппаратуры.
¶История и назначение
Язык был создан в IBM в конце 2000-х годов в контексте разработки процессоров семейства POWER. Первоначально он использовался внутри команд проектирования для описания регистров, памяти, интерфейсов и их адресного пространства. В 2013 году IBM открыла спецификацию языка и передала его в проект OpenPOWER Foundation, что позволило сторонним разработчикам создавать совместимые с POWER инструменты и модели.
Основная задача floorplan — обеспечить единый машинночитаемый источник истины о том, как устроено устройство: какие у него регистры, где они расположены в адресном пространстве, какими свойствами обладают поля, как устроены прерывания и DMA-интерфейсы. Такой файл обычно сопровождает проект на этапе проектирования и далее используется для генерации заголовков, документации, тестов и моделей эмуляции.
¶Структура описания
Файл floorplan представляет собой текстовый документ, в котором описывается иерархия компонентов устройства. Каждый компонент (блок, контроллер, регистр) объявляется с указанием его типа, адреса, размера и свойств. Основные конструкции языка включают:
device— описание целого устройства или подблока;register— описание регистра с указанием смещения, ширины и типа доступа;field— описание отдельного поля регистра (битовой группы) с его значением по умолчанию и допустимыми значениями;memory— описание области памяти;interrupt— описание источника прерывания;connection— описание связи между компонентами (шина, канал данных).
Пример упрощённого описания регистра:
``text register STATUS at 0x10 { width 32; field READY at 0 { width 1; access ro; }; field ERROR at 1 { width 1; access ro; }; field CODE at 8 { width 8; access rw; }; }; ``
Такое описание позволяет однозначно определить, что по адресу 0x10 находится 32-битный регистр состояния, младший бит которого отражает готовность устройства, следующий — наличие ошибки, а биты 8–15 хранят код ошибки.
¶Применение
¶Генерация документации
Из файла floorplan автоматически строится документация на устройства: таблицы регистров, описания полей, диаграммы адресного пространства. Это исключает расхождения между документацией и реальной реализацией, поскольку оба артефакта выводятся из одного источника.
¶Генерация кода
Инструменты на основе floorplan генерируют заголовочные файлы для прошивок и драйверов: структуры, описания смещений, макросы доступа к регистрам. Это ускоряет разработку программного обеспечения и снижает вероятность ошибок адресации.
¶Верификация и моделирование
Файл используется для построения моделей устройств в эмуляторах и симуляторах. В частности, в проекте OpenPOWER модели процессоров и периферии строятся на основе floorplan-описаний, что позволяет запускать и отлаживать программное обеспечение ещё до изготовления кристалла.
¶Обратная инженерия и анализ
В ряде исследований floorplan-описания применяются при анализе закрытых аппаратных платформ, где документация недоступна, а структура восстанавливается по поведению устройства.
¶Отличия от других форматов
| Формат | Назначение | Отличие от floorplan |
|---|---|---|
| IP-XACT | Описание IP-ядер и систем | Более широкий стандарт, ориентированный на интеграцию IP; floorplan проще и сфокусирован на регистровом уровне |
| SVD (CMSIS) | Описание периферии микроконтроллеров ARM | Формат XML, распространён в экосистеме ARM; floorplan — текстовый язык с собственной грамматикой |
| SystemRDL | Описание регистров | Сфокусирован исключительно на регистрах; floorplan описывает иерархию устройства целиком |
¶Ограничения
Язык изначально проектировался под архитектуру POWER и аппаратуру IBM, поэтому описание специфичных для других архитектур конструкций (например, сложных схем прерываний ARM GIC) требует дополнительных соглашений. Спецификация языка развивается медленно, и часть возможностей остаётся фактически задокументированной только примерами.
¶См. также
- OpenPOWER Foundation
- POWER (архитектура)
- IP-XACT
- SystemRDL
¶Источники
- OpenPOWER Foundation. Floorplan Language Specification.
- IBM. POWER Architecture Reference Documentation.
- IEEE Std 1685 (IP-XACT) — стандарт описания IP-ядер.
