SystemC

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
SystemC
Тип

библиотека (программирование)

Разработчик

Open SystemC Initiative

Написана на

С++

Операционная система

Кроссплатформенный

Последняя версия

2.3

Сайт

http://www.systemc.org

SystemC — язык проектирования и верификации моделей системного уровня, реализованный в виде C++ библиотеки с открытым исходным кодом.[1] Библиотека включает в себя ядро событийного моделирования, что позволяет получить исполняемую модель устройства. Язык применяется для построения транзакционных и поведенческих моделей, а также для высокоуровневого синтеза.

Язык SystemC использует ряд понятий, схожих с теми, которые имеют языки описания аппаратуры VHDL и Verilog: интерфейсы, процессы, сигналы, событийность, иерархия модулей. Стандарт SystemC не вносит ограничения на использование языка C++ при описании моделей систем.

Разработан черновик стандарта на синтез SystemC, целью которого является определить подмножество языков С++ и SystemC, пригодное для поведенческого и RTL синтеза.[2]

Стандарты[править | править вики-текст]

  • IEEE Std. 1666-2005 IEEE Standard SystemC Language Reference Manual[3]

Пример[править | править вики-текст]

Пример описания модели сумматора:

#include "systemc.h"      // подключение заголовочного файла библиотеки SystemC
 
SC_MODULE(adder)          // декларация модуля (класса)
{
  sc_in<int> a, b;        // порты
  sc_out<int> sum;
 
  void do_add()           // процесс
  {
    sum = a + b;
  }
 
  SC_CTOR(adder)          // конструктор
  {
    SC_METHOD(do_add);    // регистрация процесса do_add в ядре моделирования
    sensitive << a << b;  // список чувствительности процесса do_add
  }
};

Особенности языка[править | править вики-текст]

Модули (module)[править | править вики-текст]

Модули - базовые строительные блоки в SystemC. Модель в SystemC обычно состоит из нескольких модулей, которые общаются через порты.

Сигналы (signal)[править | править вики-текст]

Сигналы в SystemC являются эквивалентом посылки по проводу (wire).

Порты (port)[править | править вики-текст]

Через порты происходит общение модуля с внешним миром (обычно с другими модулями).

Процессы (process)[править | править вики-текст]

Процессы - главные вычислительные элементы. Процессы выполняются параллельно.

Каналы (channel)[править | править вики-текст]

Через каналы в SystemC происходит общение элементов. Каналы могут быть простыми проводами или сложными соединительными механизмами наподобие очередей FIFO или шин.

Базовые каналы:

  • signal
  • buffer
  • fifo
  • mutex
  • semaphore

Интерфейсы (interface)[править | править вики-текст]

Порты используют интерфейсы для общения через каналы.

События (events)[править | править вики-текст]

Должны быть описаны во время инициализации. Позволяют синхронизировать процессы.

Типы данных[править | править вики-текст]

SystemC содержит несколько типов данных, поддерживающих моделирование аппаратуры.

Расширение стандартных типов:

  • sc_int<> 64-разрядное знаковое целое число
  • sc_uint<> 64-разрядное беззнаковое целое число
  • sc_bigint<> знаковое целое число произвольной разрядности
  • sc_biguint<> беззнаковое целое число произвольной разрядности

Логические типы:

  • sc_bit 2-значный бит
  • sc_logic 4-значный бит
  • sc_bv<> вектор (одномерный массив) из sc_bit
  • sc_lv<> вектор sc_logic

Типы чисел с фиксированной точкой (Fixed point types):

  • sc_fixed<> templated signed fixed point
  • sc_ufixed<> templated unsigned fixed point
  • sc_fix untemplated signed fixed point
  • sc_ufix untemplated unsigned fixed point

Список приложений, поддерживающих SystemC[править | править вики-текст]

Примечания[править | править вики-текст]

См. также[править | править вики-текст]