УДК 004

Обзор языков описания аппаратуры для разработки виртуальных прототипов встраиваемых систем

Гаврилова Дарья Александровна – студент бакалавриата Института микроприборов и систем управления имени Л. Н. Преснухина Национального исследовательского университета «Московский институт электронной техники».

Аннотация: Виртуальные прототипы позволяют создавать и тестировать программное обеспечение аппаратуры одновременно с разработкой самой аппаратуры. Для разработки виртуальных прототипов используются языки описания аппаратуры. Каждый из них подходит для своих определенных задач. Они позволяют создавать модели с разными уровнями абстракции, которые определяются разными уровнями детализации и сложностью моделируемых объектов.

Ключевые слова: Виртуальный прототип, языки описания аппаратуры, HDL, VHDL, Verilog, SystemC, SystemVerilog, C++.

Встраиваемые системы имеют две основные составляющие: физическую часть и программное обеспечение. Для создания такой системы с нуля требуется много ресурсов. Одним из вариантов улучшения производства будет создание виртуального прототипа. Виртуальный прототип – это компьютерная модель, симулирующая поведение продукта или системы. За счет использования модели аппаратуры, нет необходимости ждать создания электронного прототипа для разработки ПО для него (рис. 1). Виртуальные прототипы могут иметь разный уровень абстракции в зависимости от конечных задач прототипа [1].

Виртуальный прототип решает сразу несколько проблем:

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

1

Рисунок 1. Процесс проектирования архитектуры а) метод без использования виртуального прототипа, б) метод с использованием виртуального прототипа.

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

При создании виртуальных прототипов используется специализированное программное обеспечение, как правило, основанное на языках описания аппаратуры (Hardware Description Language, HDL). HDL - это языки программирования, предназначенные для описания аппаратуры и создания цифровых схем и систем. С их помощью можно моделировать аппаратные системы на разных уровнях абстракции. Чем выше уровень абстракции, тем более абстрактным и общим является описание схемы. Использование HDL упрощает верификацию, позволяя проверять корректность описания аппаратуры и ее соответствие заданным требованиям. Рассмотрим несколько основных языков описания аппаратуры.

Одни из первых языков появились VHDL и Verilog, они же наиболее распространенные на данный момент языки описания аппаратуры. VHDL основан на языке программирования (ЯП) ADA и наследует многие его свойства. Он обладает более формализованным синтаксисом и более мощными средствами для проверки, что позволяет создавать более сложные модели, а также предоставляет возможность создания архитектур и компонентов, которые могут быть повторно использованы в других проектах. Пример программы выглядит так:

entity T_HelloWorld is

end entity;

architecture sim of T_HelloWorld is

begin

process is

begin

report "Hello World!";

wait;

end process;

end architecture;

Verilog и VHDL ориентированы на одни задачи и являются конкурентными. Синтаксис Verilog похожий на синтаксис ЯП С, что упрощает его освоение. Сохранении простоты и понятности языка было достигнуто путем уменьшения инструментов и возможностей. Например, отсутствует возможность создавать свои тип данных. Таким образом, Verilog уступает в мощности VHDL, но более прост в освоении, особенно для начинающих разработчиков [2]. Синтаксис языка можно увидеть ниже:

module T_HelloWorld;

analog

begin

@(initial_step)

$strobe("Hello World!");

end

endmodule

SystemVerilog позволяют описывать системы на более высоком уровне абстракции, чем VHDL и Verilog. Он содержит в себе как HDL-описание аппаратуры, так и элементы объектно-ориентированного программирования. Их используют для описания функционального поведения системы, а не только логических элементов. SystemVerilog можно назвать расширением Verilog, который упрощает разработку и увеличивает возможности тестирования. Добавленные функции и инструменты подходящие для сложных задач проектирования и верификации, таких как проектирование устройств System-on-Chip (SoC). SoC - это микросхема, объединяющая на одном кристалле несколько модулей с принципиально различными функциями и выполняющая задачи целого устройства. Синтаксис языка выглядит как у языка Verilog [3].

Языки VHDL и Verilog столкнулись с трудной задачей - растущей сложностью проектов и необходимостью универсального описания, пригодного для всех уровней проектирования и независимого от формы реализации проектов. Одним из подходов к решению этих проблем стал язык SystemC, который используется для высокоуровневого моделирования, а также для совместного проектирования и совместной верификации аппаратных и программных систем. Он основан на однородном описании С++, что позволяет моделировать и тестировать системы, а также рассматривать альтернативные архитектуры. Кроме того, проектировщикам может быть предложено развернутое описание процесса работы всей системы в виде программы на С++, которая при исполнении ведет себя так же, как и система [4]. Код будет выглядеть так:

#include "systemc.h"

SC_MODULE (T_HelloWorld) {

SC_CTOR(T_HelloWorld) {}

void say_hello() {

cout << "Hello world!\n";

}

};

int sc_main(int argc, char **argv) {

T_HelloWorld hello("HELLO");

hello.say_hello();

return(0);

}

Создание виртуальные прототипов наиболее высоких уровней абстракции поддерживается и на языке программирования С++. Являясь языком высокого уровня, C++ используется в качестве основного средства разработки программного обеспечения и создания моделей высокого уровня абстракции. Преимуществами языка являются его низкая стоимость средств программирования, простота в освоении и использовании. Поведенческую модель придется писать самостоятельно из-за отсутствия библиотек системного уровня [5]. Синтаксис языка приведен ниже:

#include <iostream>

int main() {

std::cout << "Hello World!";

return 0;

}

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

Список литературы

  1. Bailey B., Martin G. ESL Models and Their Application: Electronic System Level Design and Verification in Practice. - Springer Science & Business Media, 2009.
  2. Поляков А. К. Языки VHDLи VERILOG в проектировании цифровой аппаратуры. - М.: СОЛОН-Пресс, 2010. - 320 с.: ил. - (Серия «Системы проектирования»).
  3. Chris Spear, Greg Tumbush SystemVerilog for Verification A Guide to Learning the Testbench Language Features. - Springer, 2012.
  4. Grötker T. et al System Design with SystemC™. - Springer Science & Business Media, 2007.
  5. Chandan Sengupta Financial Modeling Using C++. - Wiley, 2007.

Интересная статья? Поделись ей с другими: