SystemC — язык проектирования и верификации моделей системного уровня, реализованный в виде C++ библиотеки с открытым исходным кодом.[2] Библиотека включает в себя ядро событийного моделирования, что позволяет получить исполняемую модель устройства. Язык применяется для построения транзакционных и поведенческих моделей, а также для высокоуровневого синтеза.
SystemC | |
---|---|
Тип | библиотека (программирование) |
Разработчик | Open SystemC Initiative |
Написана на | C++ |
Операционная система | Кроссплатформенный |
Последняя версия | 2.3 |
Репозиторий | github.com/accellera-off… |
Лицензия | Apache License 2.0[1] |
Сайт | systemc.org |
Язык 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.