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