Модельно-ориентированный подход существенно сокращает издержки разработки встраиваемого аппаратного и программного обеспечения. Это достигается за счёт интенсивного использования математического моделирования, автоматической генерации кода и всесторонней верификации алгоритмов. Сложность и количество встраиваемых алгоритмов растут, потому позднее внедрение данного подхода является риском для современного конструкторского бюро.

  Моделирование алгоритма  Фиксированная точка  Автоматическая генерация кода  Аппаратная оптимизация кода  Верификация кода 

Моделирование алгоритма

Первым преимуществом модельно-ориентированного проектирования является создание алгоритма в графическом виде с возможностью динамического запуска. Наличие библиотек с готовыми алгоритмами даёт возможность разработчику не только перепробовать самые разные варианты решения, но и формально доказать, что это решение является наилучшим и соответствует техническим требованиям. Навык моделирования алгоритмов приобретаемый, потому самый простой команде разработчиков освоить его - это пройти путь разработки алгоритма вместе с нами для передачи необходимого опыта.

  • Отладка алгоритма до написания какого-либо кода
  • Создание встраиваемых алгоритмов силами прикладных специалистов, а не программистов
  • Широкие библиотеки для создания произвольных алгоритмов: конечные автоматы, ЦОС, САУ, обработка изображений и видео, искусственный интеллект и т.д.
  • Быстрый перенос имеющихся алгоритмов в модель из других языков программирования
  • Проведение ручных и автоматизированных тестов на уровне модели


Моделирование алгоритма

Фиксированная точка

Разделение роли математика-алгоритмиста и программиста встраиваемой системы сопровождается длительными и многочисленными итерациями, так как эти специалисты «разговаривают» на разных языках, и алгоритмы сложны для понимания, и ресурсы вычислителя ограничены для реализации. Модельно-ориентированный подход позволяет перевести алгоритмы из представления в двойной точности в одинарную или целочисленную, что позволяет оценить понижение точности при аппаратной реализации и необходимые ресурсы для запуска алгоритма на вычислителе. Мы готовы передать наш опыт моделирования алгоритмов с учетом аппаратной реализации непосредственно на вашем проекте.

  • Автоматизированный перевод алгоритмов из double в single или int8, int16, int32
  • Выявление и устранение ошибок переполнения на уровне модели
  • Доказательство достаточной точности алгоритма при аппаратной реализации


Фиксированная точка

Автоматическая генерация кода

Ключевым аспектом модельно-ориентированного проектирования является автоматическая генерация кода из моделей алгоритмов. Помимо очевидного сокращения времени и улучшения качества кода за счёт такой автоматизации, команда разработчиков получает возможность быстро переносить разработанные алгоритмы из одного проекта в другой проект, и с одной ЭКБ на другую, просто поменяв настройки генератора кода. Таким образом гарантируется удобство хранения, тестирования и переиспользования разрабатываемых алгоритмов. Технология автоматической генерации кода существует и активно используется более 25 лет, но ее освоение является трудоемким процессом, так как для получения эффективного кода нужно понимать более 300 различных настроек. Мы научим вашу команду пользоваться автоматической генерацией кода, настроив вид и интерфейсы кода точно под ваш проект.

  • Автоматическая генерация кода для микропроцессоров, ПЛИС, ПЛК и графических процессоров
  • Быстрый перенос алгоритмов между проектами и ЭКБ
  • Исключения ошибок человеческого кодирования
  • Стандартизированный, читаемый и быстрый программный код


Embedded Coder генерирует портируемый ANSI C или ISO C++ код

Embedded Coder генерирует портируемый ANSI C или ISO C++ код

Аппаратная оптимизация кода

На ранних этапах проекта оценка требуемых вычислительных ресурсов делается грубо, и когда дело доходит до реализации алгоритмов, оказывается, что выбранное алгоритмическое решение не вмещается. Для решения данной проблемы критически важно уметь быстро перебирать различные варианты реализации или оптимизации алгоритмов. С применением модельно-ориентированного проектирования различные варианты оптимизации проверяются с помощью изменения настроек модели и повторной генерации кода, в то время как при ручном кодировании пришлось бы переписать большую часть проекта. Мы готовы передать навыки и программные пакеты для аппаратной оптимизации кода вашей команде.

  • Оптимизация Verilog/VHDL кода по скорости и занимаемой площади для конкретной ПЛИС
  • Подстановка оптимальных функций на С/С++ с учетом архитектуры микропроцессора
  • Профилирование сгенерированного кода непосредственно на вычислителе
  • Отчеты о занимаемых ресурсах на вычислителе для сгенерированного кода


Embedded Coder использует математические библиотеки такие как CMSIS DSP для генерации платформозависимого оптимизированного кода

Embedded Coder использует математические библиотеки, такие как CMSIS DSP, для генерации платформозависимого оптимизированного кода

Верификация кода

Модельно-ориентированное проектирование гарантирует прозрачность и протестированность проекта от требований до работающего на вычислителе алгоритма. Это достигается за счёт воспроизводимости функциональных тестов на модели, на коде и на целевом вычислителе и с помощью различных автоматизаций тестирования, таких как генерация тестовых сценариев и формальные методы доказательства отсутствия ошибок. Для выстраивания процесса разработки надежного ПО лучше всего пройти этот путь с нами на вашем «боевом» проекте, убедившись в экономической эффективности такого подхода.

  • Формальные методы доказательства отсутствия ошибок run-time ошибок как в модели, так и в коде
  • Повторяемость функциональных тестов как на любом этапе жизненного цикла проекта
  • Автоматизированное создание тестовых сценариев для достижения полного покрытия кода тестами
  • Применение стандартов моделирования и кодирования, таких как MAB и MISRA C
  • Прослеживаемость и прозрачность разработки от технического задания до вычислителя
  • Удобная среда для управления тестами и CI

Более подробно изучить вопросы сертификации и разработки систем повышенной надежности вы можете по ссылке.

Узнать детали верификации кода критических систем c LDRA можно здесь.

Polyspace Code Prover обнаруживает ошибки времени исполнения в коде

Polyspace Code Prover обнаруживает ошибки времени исполнения в коде