В SystemC вводятся следующие основные дополнительные типы данных:
Для облегчения описания взаимодействия модулей, кроме портов, в SystemC предлагаются более сложные каналы sc_mutex, sc_fifo и sc_semaphore.
Пример 4 иллюстрирует реализацию простого мультиплексора (см. рис. 1.4) на языке SystemC.
В отличие от VHDL и Verilog, в которых может использоваться интерпретатор описания для моделирования системы, в SystemC задается полная исполняемая модель, и описание на SystemC компилируется в исполняемый файл на инструментальной машине обычным компилятором C++ с использованием специальных библиотек SystemC. В начале симуляции модели, аналогично методу main в С, в SystemC управление передается в метод sc_main(argc, argv), в котором происходит инициализация модулей системы и, в конечном итоге, запуск параллельных процессов инициализированных модулей с помощью функции sc_start(). SC_MODULE (mux) { public: sc_in c, d, e, f; sc_in > s; sc_out mux_out;
SC_CTOR (mux) { SC_METHOD (do_mux); sensitive temp_s = s.read(); switch (temp_s) { case 0: mux_out = c.read(); break; case 1: mux_out = d.read(); break; case 2: mux_out = e.read(); break; default: mux_out = f.read(); } } }
Пример 4. Простой мультиплексор на SystemC.