Skip to content

Repository with notes and resources of my diploma work

Notifications You must be signed in to change notification settings

e1turin/bachelor-diploma

Repository files navigation

Бакалаврский диплом

тема: «Реализация модуля моделирования аппаратуры для SCADA-систем»

Ссылки

Controls.kt:

Центр научного программирования МФТИ

Альтернативы

Сравнение: COMPARISON_TABLE.md

AnyLogic

LabView

MathWorks: Mathlab & Simulink

Amesim

ЦИТМ Экспонента

CIRCT

CIRCT — Circuit IR Compilers and Tools

Основан на MLIR и предлагает свои диалекты для описания различной логики аппаратуты: https://circt.llvm.org/docs/Dialects/

Arcilator

Arcilator — симулятор моделей на диалектах CIRCT (MLIR) (компилятор в llvm и/или исполнение этого кода)

video 2023 LLVM Dev Mtg - Arcilator: Fast and cycle-accurate hardware simulation in CIRCT

video 2024 EuroLLVM - Arcilator for ages five and up: flexible self-contained hardware simulation made..

  • slides
    • диалект немного устарел и теперь другой — в проекте ИПКН

slides: Circuit IR for Compilers and Tools, Creating hardware for ML

issues

Тесты

ИПКН DevTools проект

CHISEL

CHISEL —

Зависимость на

FIRRTL — Промежуточное представление для Chisel, теперь диалект CIRCT

Kotlin/Native

Project Panama — https://openjdk.org/projects/panama/

JNI

Different samples of native interop

Knee -- seamlessly interop

Прочее

ПИШ ИТМО: https://pish.itmo.ru/

ВИТШ ИТМО: https://itmo.ru/ru/viewfaculty/115/

Сообщество FPGA Systems: https://t.me/fpgasystems

Venus rv32i — Kotlin RISC-V emulator:

MiL/SiL/PiL/HiL

Quokka:

Verik:

FPGA Twitch 03 - Введение в высокоуровневый синтез - High Level Synthesis (часть 1 из 2):

ИРИС – инструментарий разработки интегральных схем в среде С++:

Название инструмента

  • Kotlin
  • IR
  • *iL = * in the Loop
  • HardWare
  • CIRCT = Circuit IR Compilers & Tools
  • Controls.kt ~ ctl, ctrl

Размышления

Хочется иметь возможность симулировать систему прямо в Kotlin, вместе с остальной системой, но главная задача это сделать транслятор в промежуточное представление. Отсяда вопрос: на каком уровне должно быть это *представление? Ведь у нас может быть "низкоуровневое" типа CIRCT или какое-то повыше в виде схемы данных в Kotlin через композицию Data-классов, к примеру.

При условии того, что компилятор свой разрабатывать выглядит очень расточительным, можно ограничиться функциональным DSL, который в результате запуска будет давать IR или напрямую симулировать аппаратуру, т.к. обычно это какой-то Top-модуль, в который интегрируются все другие функциональные компоненты. Что-то вроде Gradle получится. Остается еще учесть специфику Controls.kt и его архитектурные подходы через делегирование пропертей и, видимо, непрерывное время нетипичное для моделей аппаратуры.

Наверное было бы хорошо иметь возможность переключать режимы работы модуля: трансляция в IR и симуляция поведения.

Еще как альтернативный вариант это всегда получать промежуточное предтавление и потом через сторонник инструменты взаимодействовать с ними, условно, скомпилировать в CIRCT и запустить модель через arcilator, к которому подключается модель из Kotlin через Native.

  • Либо пойти дальше и написать модуль выполняющий симуляцию по данному IR, что пока выглядит нецелесообразно из-за сложности такого предприятия и непригодности JVM для таких симуляций; по сути придется сделать декомпилятор из IR в Kotlin (?).

Задание...

1. Основные вопросы, подлежащие разработке

Информация для заполнения блока задания:

1.1. техническое задание:

Реализовать программный модуль для моделирования аппаратуры совместимый с фреймворком Controls.kt.

1.2. исходные данные к работе:

  1. Репозиторий исходных кодов и документация проекта Controls.kt.
  2. Документация к проектам CIRCT, Chisel, Verik.

1.3. содержание работы:

Выпускная квалификационная работа предполагает реализацию программного модуля предоставляющего возможности по моделированию аппаратуры совместимого с фреймворком для создания и моделирования SCADA-систем Controls.kt.

1.4. цель:

Предоставление возможности моделирования и тестирования системы на уровне цифровых схем.

1.5. задачи работы:

  1. Изучение и анализ архитектуры фреймворка Controls.kt.
  2. Исследование имеющихся решений для моделирования аппаратуры.
  3. Проектирование архитектуры программного модуля.
  4. Разработка программного модуля.
  5. Тестирование разработанного модуля и проверка совместимости с системой Controls.kt.
  6. Документирование разработанных компонентов.

1.6. перечень подлежащих разработке вопросов:

  1. Архитектур SCADA-систем и систем моделирования.
  2. Языки описания аппаратуры.
  3. Проект CIRCT.
  4. ...

1.7. рекомендуемые материалы и пособия для выполнения работы и т.д.:

2. Форма представления материалов ВКР

Информация для заполнения блока задания:

  1. форма представления основных или дополнительных результаты ВКР:
  2. форма представления Приложений (например: программный код, чертежи, презентация, и пр.):

Отчет. Пояснительная записка, программный код, презентация.

3. Дата выдачи задания

14 октября 2024 год.

4. Срок представления готовой ВКР

Рекомендации: Срок сдачи готовой работы не позднее даты начала ГИА (по графику учебного процесса).  Срок загрузки итоговой версии ВКР для проверки в системе «Антиплагиат» - не позднее чем за 10 дней до даты защиты ВКР (см.Положении о ВКР)

25 мая 2025 год.

5. Дополнительно

Можете конкретизировать график представления материалов ВКР или указать любую другую информацию по этапам работы на ВКР.

Защита

Предзащита

google presentation (comments)

Тема ВКР: Реализация модуля моделирования аппаратуры для SCADA-систем

Контекст:

Controls.kt — фреймворк для создания легковесных SCADA-систем на языке программирования Kotlin, основан на DataForge-control.

Инструмент развивается Центром научного программирования МФТИ.

Актуальность темы:

  • Активно развивающийся фреймворк Фокус фреймворка сместился в сторону встраивания аналитики и моделирования с целью тестирования подобно подходам MiL/SiL/PiL/HiL.
  • Современные технологии Фреймворк облегчает процесс создания SCADA-систем.

    • Современные инструменты расширяют сферу применимости технологий.
    • Единый язык для описания всех компонентов системы.
  • Circuit IR Compilers and Tools

    • Инфраструктура для создания промежуточного представления цифровых схем на базе MLIR (проект LLVM). → Симуляция работы и синтез специализированных приборов.
  • Controls.kt (former DataForge-control):

Если интересен пример - сейчас я работаю над моделью анализатора крови [URIT-5360/5380/5381 5-Part-Diff Auto Hematology Analyzer]. Это достаточно сложное устройство из многих составных частей, со своими особенностями.

Цель и задачи ВКР:

Цель:

Предоставление возможности моделирования и тестирования системы на уровне цифровых схем.

Задачи:

  1. Изучение и анализ архитектуры фреймворка Controls.kt.
  2. Исследование имеющихся решений для моделирования аппаратуры.
  3. Проектирование архитектуры программного модуля.
  4. Разработка программного модуля.
  5. Тестирование разработанного модуля и проверка совместимости с системой Controls.kt.
  6. Документирование разработанных компонентов.

План работы:

  1. Анализ существующих решений для моделирования аппаратуры.
  2. изучение архитектуры фреймворка.
  3. Анализ требований к программному модулю.
  4. Проектирование
  5. Разработка архитектуры программного модуля.
  6. Определение интерфейсов взаимодействия с Controls.kt.
  7. Документирование архитектурных решений.
  8. Разработка программного модуля.
  9. Тестирование этого модуля.
  10. Разработка функциональных тестов.
  11. Интеграционное тестирование с Controls.kt
  12. Анализ и устранение выявленных дефектов.
  13. Документирование разработанных компонентов.

Возможные вопросы

  1. А какие еще есть технологии для разработки SCADA-систем? Зачем Controls.kt?

About

Repository with notes and resources of my diploma work

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages