SystemC

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
SystemC
Тип библиотека (программирование)
Разработчик Open SystemC Initiative
Написана на С++
Операционная система Кроссплатформенный
Последняя версия 2.3
Сайт 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[править | править код]

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

  1. About SystemC (англ.) (недоступная ссылка). — краткое описание языка SystemC. Дата обращения: 13 августа 2009. Архивировано 28 октября 2007 года.
  2. OSCI Drafts Under Public Review (англ.) (недоступная ссылка). — список черновиков стандартов OSCI. Дата обращения: 13 августа 2009. Архивировано 21 марта 2012 года.
  3. IEEE-SA GetIEEE 1666 Terms of Use (недоступная ссылка). Дата обращения: 16 ноября 2008. Архивировано 18 мая 2008 года.
  4. Aldec — Technologies — SystemC Архивировано 22 марта 2009 года.
  5. Cadence C-to-Silicon Compiler
  6. System Studio
  7. Catapult C Synthesis — Correct-by-Construction, High-Quality RTL, 10-100x Faster — Mentor Graphics
  8. Cynthesizer Closes the ESL-to-Silicon Gap (недоступная ссылка). Дата обращения: 28 ноября 2008. Архивировано 12 мая 2008 года.
  9. Calypto | SLEC System
  10. JEDA Products | ESL Model Validation Automation
  11. SystemCrafter — Products

Литература[править | править код]

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