Общий обзор

HDL Simulator является частью боле мощной системы Delta Design, в которой он будет в качестве одного из средств разработки сложных электронных систем. Вся проектная информация Delta Design (в том числе и HDL Simulator) хранится на высокопроизводительном сервере объектно-гиперграфовой БД IPR[1]. Это сделано для упрощения взаимодействия между подсистемами Delta Design, для создания возможности параллельной работы нескольких пользователей и для централизации хранения результатов работы. Мы постарались сделать так, чтобы работа с данными, хранящимися в IPR, как можно меньше отличалась от работы с привычными файлами и папками. Delta Design в целом и HDL Simulator в частности позволяют предоставить любую информацию для сторонних инструментов.
Delta Design HDL Simulator состоит из пользовательского интерфейса, транслятора языков описания аппаратуры и системы моделирования. Для компиляции кода программ используются внешние пакеты, например, gcc, сконфигурированный в качестве кросс-компилятора[2].
Набор инструментов симулятора стандартен и мало отличается от обычных систем разработки программ или электронных устройств. Наиболее используемые инструменты вынесены на панели инструментов, все инструменты без исключения доступны через основное меню программы и контекстное меню.
Последовательность использования инструментов также не отличается от обычных интегрированных сред. Цикл «редактирование-компиляция-запуск-отладка» присутствует и здесь. Он немного расширен спецификой предметной области – вы можете посмотреть на развитие состояния системы во времени, в том числе значения перерменных, заданных в коде программы-прошивки.
Для проектировщиков, использовавших другие среды разработки электронных устройств, структура работы с проектами может показаться несколько непривычной. По сравнению с типовыми продуктами HDL Simulator предполагает более жесткую схему работы, которая позволяет лучше структурировать процесс работы над сложными проектами.
Проект, описывающий части электронного устройства, представляет собой законченный набор ссылок на (под)проекты, набор моделей устройств и определений. Каждый проект имеет свои собственные тесты и свой набор файлов, не разделяемых с другими проектами. Таким образом, разработчики не могут менять один файл в своих проектах, провоцируя расхождение функциональности и версий. Система ссылок на проекты гарантирует, что проект должен оставаться цельной единицей, которую можно транслировать отдельно от использующих его проектов.

Назначение Delta Design HDL Simulator

На сегодняшний день HDL Simulator решает следующие задачи:
  • Совместная разработка и отладка аппаратуры («железа») и программного обеспечения (ПО)
  • Проектирование встраиваемых систем
  • Простая стыковка моделей аппаратуры с разрабатываемым программным обеспечением

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

Работа с Delta Design HDL Simulator

Решения и Проекты. Создание и организация работы

Решения группируют проекты разного рода, объединённые общей целью. Изменения в составе проекта или его параметрах можно производить только у подключенных к решению проектах. Пошаговая отладка производится тоже только среди файлов, входящих в состав проектов, подключённых к решению. Решение, как средство группировки проектов, ограждает от распыления усилий и распространению зависимостей между проектами. К решению Delta Design HDL Simulator можно подключать проекты моделей аппаратуры и программные проекты.
Проекты могут иметь ссылки на другие проекты. Проще всего рассматривать такие ссылки на проекты, как на использование библиотек. Проекты моделей аппаратуры могут ссылаться на другие проекты моделей аппаратуры и на программные проекты. Программные проекты могут ссылаться только на программные проекты.
В проектах моделей аппаратуры программы используются в качестве параметров моделей процессорных ядер. Из них формируется специальный список констант, значения которых могут быть использованы в качестве параметров моделей процессорных ядер.
Программные проекты ссылаются на проекты, которые подключаются в виде библиотек. Для программы-прошивки сначала будут скомпилированы проекты, на которые она ссылается. Из этих проектов будут скомпилированы библиотеки, которые, в свою очередь, будут использоваться для сборки текущего проекта.
Проекты могут быть без исходных файлов - достаточно подключить вместо файлов скомпилированную библиотеку. В проект можно добавлять файлы из файловой системы, можно создать новые файлы, а также можно исключать файлы проекта из компиляции. Для проектов моделей устройств не важен порядок файлов - компилятор автоматически определит нужную последовательность компиляции файлов. Файлы проектов можно группировать с помощью папок - проект имеет древовидную структуру для удобства разработчика.
Проекты можно экспортировать в файловую систему для передачи в другие системы разработки.
Работа с решениями и проектами организована максимально просто и прозрачно.

Моделирование

В HDL Simulator процесс разработки модели устройства мало отличается от подобного процесса в других средствах разработки.Создаётся решение, в него добавляются новые проекты или уже существующие в других решениях. В проект добавляются файлы с моделями и тестами. К проекту могут добавляться ссылки на другие проекты – моделей устройств и программ.
Моделирование запускается путём нажатия клавиши F5 или выбора инструмента в панели инструментов. Вот здесь уже появляется одно из отличий нашего симулятора от большинства тех существующих систем, которые можно назвать аналогами (хотя и с большой натяжкой, если забыть о совместном проектировании прошивок). Delta Design HDL Simulator имеет быстрый отклик при старте симуляции, а её запуск может быть выполнен одним действием без каких-либо промежуточных шагов. При этом результаты моделирования доступны сразу же после начала симуляции. Виртуальные осциллографы, позволяют просматривать результаты моделирования он-лайн. Проект может содержать несколько осциллографов с разным и отображаемыми данными.


Надо отметить, что частичный отчёт о моделировании появляется практически сразу. Этим можно пользоваться, создавая тесты, проверяющие варианты работы устройства как можно быстрее.
Установив точки останова, можно прервать моделирование и перейти в режим пошаговой отладки. Осциллограф можно вынести отдельным окном и наблюдать изменения сигналов параллельно с отладкой модели.
Во время отладки доступен просмотр стека вызовов, значений локальных переменных и управление точками останова (включение/выключение).
При этом после пошаговой отладки можно возобновить моделирование с текущего состояния симуляции.

Важной особенностью Delta Design HDL Simulator является совместное моделирование и отладка. Наша система предоставляет инструменты для проектирования и тестирования сложных систем, содержащих процессорные ядра. Если модель вашего устройства содержит процессорное ядро, и это ядро использует программу-прошивку, то вы можете одновременно отлаживать и программу, и устройство. Модели процессорных ядер – такие же устройства описанные на HDL. Для работы с моделью процессорного ядра необходимо добавить подключение к шине данных, тактовой частоте и задать программу через параметр elf_file. После правильного задания параметров модели процессорного ядра можно расставить точки останова в нужных местах модели устройства и программы и запустить моделирование.

Разработка встраиваемых систем

Процесс разработки встраиваемых систем практически не отличается от процесса разработки цифровых микросхем. Все описания модели на HDL уже разработаны и необходимо только правильно их соединить и написать управляющую программу.
Если все компоненты системы уже разработаны, то можно сразу приступать к разработке программ для встраиваемых систем.
Благодаря иерархической работе с проектами HDL Simulator позволяет легко заменять одну модель микроконтроллера на другую, изменять программу, или состав системы. Также можно сделать модель собственного устройства, задав ему необходимый алгоритм работы. Тогда появляется возможность отлаживать программы, пока параллельно происходит поиск аналогов.
Для систем-на-кристалле, совместная разработка программ и моделей устройств, реализуемая в HDL Simulator, позволяет писать библиотеки, которые станут драйверами для реальных операционных систем. Для проектирования встраиваемых систем Delta Design HDL Simulator предоставляет расширяемую и постоянно пополняемую базу моделей.

 

Настройка наборов инструментов

Для удобства работы в Delta Design HDL Simulator предусмотрена возможность настройки набора инструментов автоматически предоставляемых при разработке/моделировании. Таким образом, при создании моделей или программ от разработчика скрыты инструменты, предназначенные исключительно для симуляции, и наоборот. Это позволяет снизить визуальную нагрузку и сделать использование симулятора простым и комфортным (нет необходимости приходится искать нужные инструменты в множестве кнопок и меню, которые не используются на данном этапе разработки). Дружелюбный к пользователю интерфейс - одна из тех задач, которая реализовалась при разработке Delta Design HDL Simulator. Сложные итерфейсы сред моделирвоания, это актуальная проблема области разработки железа (наглядный пример - Mentor Graphics Modelsim).

Базовый функционал и развитие

Базовый функционал:
  • Разработка модели аппаратуры с использованием языков описания аппаратуры (HDL)
    • VHDL
    • Verilog / SystemVerilog
  • Разработка программ прошивок
    • C
    • C++
  • Совместное моделирование и отладка HDL-описаний и программ прошивок.
В будущем планируется:
  •  Система Контроля Версий.
  •  Моделирование аналоговых процессов с поддержкой VHDL-AMS.
  •  Расширение возможности по стыковке VHDL и Verilog / SystemVerilog описаний.
  •  Подключение виртуальных устройств.

Ограничения бета-версии.

На данный момент не поддерживается:
  • VHPI, т.к. основная работа по поддержке взаимодействия с высокоуровневыми языками направлена на разработку нового продвинутого способа интеграции, более простого и предоставляющего большие возможности.
  • Стандарт VHDL-2008.
  • Выбор переменных для отображения в осциллографе.
  • Отображение переменных в осциллографе.
  • Поддержка высокоуровневых языков.
  • Поддержка Verilog, SystemVerilog.
  • Фильтрация и группировка переменных в осциллографе.
  • Фокусировка на место в исходнике по выбранному сигналу/переменной в осциллографе.
  • Установка assert'ов в окне осциллографа.
  • Watch.
Ограничена поддержка:
  • Встроенные библиотеки VHDL поддержаны частично, что проявляется в недостаточном быстродействии.
  • Проверка locally_static, globally_static, static_name. На данный момент у нас можно больше, чем по стандарту VHDL.
  • Работа с курсорами в осциллографе: отсутствует выделение области.

[1] IPR – Item-Property-Relation, высокопроизводительный сервер баз данных, разработанный специально для хранения проектной информации. Он позволяет сочетать гибкость объектно-ориентированного и гиперграфового подходов с производительностью современных реляционных БД.

[2] Компилятор, создающий код в системе команд другого процессора. Например, создающий код для ARMv7/Linux, но запускающийся под Windows.

[3] Он останется в системе и, при желании, его можно снова подсоединить.

02.02.2016