SystemC

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
SystemC
Тип библиотека (программирование)
Разработчик Open SystemC Initiative
Написана на C++
Операционная система Кроссплатформенный
Последняя версия 2.3
Репозиторий github.com/accellera-off…
Лицензия Apache License 2.0[1]
Сайт systemc.org

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

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

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

  • IEEE Std. 1666—2005 IEEE Standard SystemC Language Reference Manual[4]

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

#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).

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

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

Литература

[править | править код]
  • Алехин В.А. SystemC. Моделирование электронных систем. — М.: Горячая линия - Телеком, 2018. — 320 с. — 500 экз. — ISBN 978-5-9912-0722-5.