SystemC

редактировать

Для компании британского здравоохранения, см System C.

SystemC - это набор классов и макросов C ++, которые предоставляют интерфейс моделирования, управляемый событиями (см. Также моделирование дискретных событий ). Эти возможности позволяют проектировщику моделировать параллельные процессы, каждый из которых описывается с использованием простого синтаксиса C ++. Процессы SystemC могут обмениваться данными в смоделированной среде реального времени, используя сигналы всех типов данных, предлагаемых C ++, некоторых дополнительных, предлагаемых библиотекой SystemC, а также определяемых пользователем. В некоторых отношениях SystemC намеренно имитирует языки описания оборудования VHDL и Verilog, но более точно описывается как язык моделирования на уровне системы.

SystemC применяется для моделирования на уровне системы, исследования архитектуры, моделирования производительности, разработки программного обеспечения, функциональной проверки и синтеза высокого уровня. SystemC часто ассоциируется с проектированием на уровне электронной системы (ESL) и с моделированием на уровне транзакций (TLM).

Содержание
  • 1 Спецификация языка
  • 2 языковые особенности
    • 2.1 Модули
    • 2.2 Порты
    • 2.3 Сигналы
    • 2.4 Экспорт
    • 2.5 Процессы
    • 2.6 Каналы
    • 2.7 Интерфейсы
    • 2.8 События
    • 2.9 Типы данных
  • 3 История
  • 4 Пример кода
  • 5 Оценка мощности / энергии в SystemC
  • 6 См. Также
  • 7 Примечания
  • 8 ссылки
  • 9 Внешние ссылки
Спецификация языка

SystemC определена и продвигается инициативой Open SystemC (OSCI - теперь Accellera ) и одобрена IEEE Standards Association как IEEE 1666-2011 - Справочное руководство по языку SystemC (LRM). LRM обеспечивает окончательное изложение семантики SystemC. OSCI также предоставляет имитатор с открытым исходным кодом, подтверждающий концепцию (иногда неправильно называемый эталонным симулятором), который можно загрузить с веб-сайта OSCI. Хотя намерением OSCI было, чтобы коммерческие поставщики и научные круги могли создавать оригинальное программное обеспечение, совместимое с IEEE 1666, на практике большинство реализаций SystemC, по крайней мере, частично основывались на имитаторе проверки концепции OSCI.

SystemC имеет семантическое сходство с VHDL и Verilog, но можно сказать, что он имеет синтаксические накладные расходы по сравнению с ними при использовании в качестве языка описания оборудования. С другой стороны, он предлагает более широкий диапазон выражений, аналогичный объектно-ориентированному разделению дизайна и классам шаблонов. Хотя SystemC является строго библиотекой классов C ++, иногда рассматривается как самостоятельный язык. Исходный код можно скомпилировать с библиотекой SystemC (которая включает ядро ​​моделирования), чтобы получить исполняемый файл. Производительность реализации OSCI с открытым исходным кодом обычно менее оптимальна, чем у коммерческих симуляторов VHDL / Verilog при использовании для моделирования уровня передачи регистров.

SystemC версии 1 включает общие функции языка описания оборудования, такие как структурная иерархия и возможность подключения, точность тактового цикла, дельта-циклы, четырехзначная логика (0, 1, X, Z) и функции разрешения шины. Начиная с версии 2, центр внимания SystemC переместился на абстракцию связи, моделирование на уровне транзакций и моделирование виртуальной платформы. В SystemC версии 2 добавлены абстрактные порты, динамические процессы и уведомления о событиях по времени.

Особенности языка

Модули

В SystemC есть понятие контейнерного класса, называемого модулем. Это иерархический объект, в котором могут содержаться другие модули или процессы.

Модули - это основные строительные блоки иерархии проектирования SystemC. Модель SystemC обычно состоит из нескольких модулей, которые обмениваются данными через порты. Модули можно рассматривать как строительный блок SystemC.

Порты

Порты обеспечивают связь изнутри модуля с внешним (обычно с другими модулями) по каналам.

Сигналы

SystemC поддерживает разрешенные и неразрешенные сигналы. У разрешенных сигналов может быть более одного драйвера (шины), в то время как у неразрешенных сигналов может быть только один драйвер.

Экспорт

У модулей есть порты, через которые они подключаются к другим модулям. SystemC поддерживает однонаправленные и двунаправленные порты.

Экспорт включает каналы и обеспечивает связь изнутри модуля с внешним (обычно с другими модулями).

Процессы

Процессы используются для описания функциональности. Процессы содержатся внутри модулей. SystemC предоставляет три различных абстракции процессов для использования разработчиками оборудования и программного обеспечения. Процессы - это основные вычислительные элементы. Они совпадают.

каналы

Каналы - это коммуникационные элементы SystemC. Они могут быть либо простыми проводами, либо сложными механизмами связи, такими как FIFO или шинные каналы.

Элементарные каналы:

  • сигнал: эквивалент провода
  • буфер
  • фифо
  • мьютекс
  • семафор

Интерфейсы

Порты используют интерфейсы для связи с каналами.

События

События позволяют синхронизировать процессы и должны быть определены во время инициализации.

Типы данных

SystemC представляет несколько типов данных, которые поддерживают моделирование оборудования.

Расширенные стандартные типы:

  • sc_int lt; n gt; n -битовое целое число со знаком
  • sc_uint lt; n gt; n -битовое целое число без знака
  • sc_bigint lt; n gt; n -битовое целое число со знаком для n gt; 64
  • sc_biguint lt; n gt; n -битовое целое число без знака для n gt; 64

Типы логики:

  • sc_bit 2-значный одиночный бит
  • sc_logic 4-значный одиночный бит
  • sc_bv lt; n gt; вектор длины n sc_bit
  • sc_lv lt; n gt; вектор длины n из sc_logic

Типы фиксированной точки:

  • sc_fixed lt;gt; шаблонная фиксированная точка со знаком
  • sc_ufixed lt;gt; шаблонная фиксированная точка без знака
  • sc_fix незаметная фиксированная точка со знаком
  • sc_ufix беззнаковая фиксированная точка без знака
История
  • 1999-09-27 Объявлена ​​инициатива Open SystemC
  • 2000-03-01 Выпущен SystemC V0.91
  • 2000-03-28 Выпущен SystemC V1.0
  • 2001-02-01 Выпущена спецификация SystemC V2.0 и исходный код V1.2 Beta
  • 2003-06-03 Выпущен SystemC 2.0.1 LRM (справочное руководство по языку)
  • 2005-06-06 Выпущен стандарт моделирования на уровне транзакций SystemC 2.1 LRM и TLM 1.0
  • 2005-12-12 IEEE утверждает стандарт IEEE 1666–2005 для SystemC
  • 2007-04-13 Выпущен SystemC v2.2
  • 2008-06-09 Выпущена библиотека TLM-2.0.0
  • 2009-07-27 Выпущен TLM-2.0 LRM с библиотекой TLM-2.0.1
  • 2010-03-08 Выпущены расширения SystemC AMS 1.0 LRM
  • 2011-11-10 IEEE утверждает стандарт IEEE 1666–2011 для SystemC
  • 2016-04-06 IEEE утверждает стандарт IEEE 1666.1–2016 для SystemC AMS

SystemC ведет свое происхождение от работы над языком программирования Scenic, описанной в статье DAC 1997 года.

ARM Ltd., CoWare, Synopsys и CynApps объединились для разработки SystemC (CynApps позже стал Forte Design Systems ), чтобы запустить его первый вариант проекта в 1999 году главный конкурент в то время был SpecC другой на основе C пакет с открытым исходным кодом, разработанный UC Irvine персонала и некоторые японские компании.

В июне 2000 года была сформирована группа стандартов, известная как Open SystemC Initiative, чтобы обеспечить нейтральную в отрасли организацию для проведения мероприятий SystemC и дать возможность крупнейшим конкурентам Synopsys, Cadence и Mentor Graphics, демократически представиться в разработке SystemC.

Пример кода

Пример кода сумматора :

#include "systemc.h" SC_MODULE(adder)   // module (class) declaration { sc_inlt;intgt; a, b;  // ports sc_outlt;intgt; sum; void do_add()   // process { sum.write(a.read() + b.read()); //or just sum = a + b } SC_CTOR(adder)   // constructor { SC_METHOD(do_add); // register do_add to kernel sensitive lt;lt; a lt;lt; b; // sensitivity list of do_add } };
Оценка мощности / энергии в SystemC

Оценка мощности / энергии может быть выполнена в SystemC посредством моделирования. Powersim - это библиотека классов SystemC, предназначенная для расчета мощности и энергопотребления оборудования, описываемого на системном уровне. С этой целью отслеживаются операторы C ++, и для каждого типа данных SystemC могут использоваться разные модели энергопотребления. Моделирование с помощью Powersim не требует изменения исходного кода приложения.

Смотрите также
Ноты
Рекомендации
  • 1666-2005 - Справочное руководство по стандартному языку системы C. IEEE. 2006. DOI : 10,1109 / IEEESTD.2006.99475. ISBN   0-7381-4871-7.
  • 1666-2011 - Справочное руководство стандарта IEEE для стандартного языка SystemC. 2012. DOI : 10,1109 / IEEESTD.2012.6134619. ISBN   978-0-7381-6801-2.
  • Т. Грёткер, С. Ляо, Г. Мартин, С. Свон, Проектирование систем с помощью SystemC. Springer, 2002. ISBN   1-4020-7072-1.
  • Linux Live CD на основе SystemC с учебником по C ++ / SystemC
  • Дж. Бхаскер, Учебник по SystemC, второе издание, Star Galaxy Publishing, 2004. ISBN   0-9650391-2-9
  • DC Black, Дж. Донован, SystemC: С нуля, 2-е изд., Springer 2009. ISBN   0-387-69957-0
  • Джордж Фрейзер, SystemC: аппаратно-ориентированные конструкции в C ++
  • Франк Генассия (редактор), Моделирование на уровне транзакций с помощью SystemC: концепции и приложения TLM для встроенных систем, Springer 2006. ISBN   0-387-26232-6
  • Стэн Ю. Ляо, Стивен В.К. Цзян, Раджеш К. Гупта: Эффективная реализация реактивности для моделирования оборудования в среде живописного дизайна. DAC 1997: 70-75
внешние ссылки
  • Официальный веб-сайт
  • SystemC Учебник
  • ESCUG - Европейская группа пользователей SystemC
  • NASCUG - Североамериканская группа пользователей SystemC
  • LASCUG - Латиноамериканская группа пользователей SystemC
  • ISCUG - Индийская группа пользователей SystemC
  • EDA Playground - бесплатная среда разработки C ++ / SystemC на базе веб-браузера
Последняя правка сделана 2023-04-17 02:26:26
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте