SystemC
SystemC — язык проектирования и верификации моделей системного уровня, реализованный в виде C++ библиотеки с открытым исходным кодом.[2] Библиотека включает в себя ядро событийного моделирования, что позволяет получить исполняемую модель устройства. Язык применяется для построения транзакционных и поведенческих моделей, а также для высокоуровневого синтеза. Язык SystemC использует ряд понятий, схожих с теми, которые имеют языки описания аппаратуры VHDL и Verilog: интерфейсы, процессы, сигналы, событийность, иерархия модулей. Стандарт SystemC не вносит ограничения на использование языка C++ при описании моделей систем. Разработан черновик стандарта на синтез SystemC, целью которого является определить подмножество языков C++ и SystemC, пригодное для поведенческого и RTL синтеза.[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 или шин. Базовые каналы:
Интерфейсы (interface)Порты используют интерфейсы для общения через каналы. События (events)Должны быть описаны во время инициализации. Позволяют синхронизировать процессы. Типы данныхSystemC содержит несколько типов данных, поддерживающих моделирование аппаратуры. Расширение стандартных типов:
Логические типы:
Типы чисел с фиксированной точкой (Fixed point types):
Список приложений, поддерживающих SystemC
Примечания
Литература
См. также |