Jump to content

СистемаC

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

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

Спецификация языка [ править ]

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

с ЛПВП сравнению По

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

Версии [ править ]

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

Начиная с версии SystemC 2, основное внимание уделялось абстракции связи, моделированию на уровне транзакций и моделированию виртуальной платформы. Также были добавлены абстрактные порты, динамические процессы и уведомления о событиях по времени.

Языковые особенности [ править ]

Модули [ править ]

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

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

Порты [ править ]

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

Сигналы [ править ]

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

Экспорт [ править ]

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

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

Процессы [ править ]

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

Каналы [ править ]

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

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

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

Интерфейсы [ править ]

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

События [ править ]

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

Типы данных [ править ]

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

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

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

Типы логики:

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

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

  • sc_fixed<> шаблонная фиксированная точка со знаком
  • sc_ufixed<> шаблонная фиксированная точка без знака
  • sc_fix нешаблонная фиксированная точка со знаком
  • sc_ufix нешаблонная фиксированная точка без знака

История [ править ]

  • 27 сентября 1999 г. объявлено об инициативе Open SystemC.
  • 01 марта 2000 г. выпущен SystemC V0.91.
  • 28 марта 2000 г. выпущен SystemC V1.0.
  • 01 февраля 2001 г. выпущена спецификация SystemC V2.0 и исходный код бета-версии V1.2.
  • 03.06.2003 выпущен SystemC 2.0.1 LRM (справочное руководство по языку).
  • 6 июня 2005 г. выпущен стандарт моделирования на уровне транзакций SystemC 2.1 LRM и TLM 1.0.
  • 12 декабря 2005 г. IEEE утверждает стандарт IEEE 1666–2005 для SystemC.
  • 13 апреля 2007 г. выпущена SystemC v2.2.
  • 09.06.2008 Выпущена библиотека TLM-2.0.0.
  • 27 июля 2009 г. выпущен TLM-2.0 LRM в сопровождении библиотеки TLM-2.0.1.
  • 2010-03-08 SystemC AMS 1.0 LRM Выпущены расширения
  • 10 ноября 2011 г. IEEE утверждает стандарт IEEE 1666–2011 для SystemC. [3]
  • 06 апреля 2016 г. IEEE утверждает стандарт IEEE 1666.1–2016 для SystemC AMS.
  • 05.06.2023 IEEE утверждает стандарт IEEE 1666–2023.

SystemC берет свое начало от работы над языком программирования Scenic, описанным в статье DAC 1997 года. [4]

ARM Ltd., CoWare , Synopsys и CynApps объединились для разработки SystemC (позже CynApps стала Forte Design Systems ) и выпустила ее первую черновую версию в 1999 году. [5] [6] Главным конкурентом в то время был SpecC, еще один пакет с открытым исходным кодом на основе C, разработанный сотрудниками Калифорнийского университета в Ирвине и некоторыми японскими компаниями.

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

Пример кода [ править ]

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

#include "systemc.h"

SC_MODULE(adder)          // module (class) declaration
{
  sc_in<int> a, b;        // ports
  sc_out<int> 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 << a << b;  // sensitivity list of do_add
  }
};

Оценка мощности и энергии в SystemC [ править ]

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

См. также [ править ]

Примечания [ править ]

  1. ^ «Просмотр стандартов» . Standards.ieee.org .
  2. ^ www.systemc.org, веб-сайт Open SystemC Initiative. Архивировано 6 октября 2008 г. на Wayback Machine.
  3. ^ (10 ноября 2011 г.) IEEE утверждает пересмотренный стандарт IEEE 1666™ «Язык SystemC» для проектирования электронных систем, добавляющий поддержку моделирования на уровне транзакций.
  4. ^ Ляо, Стэн; Цзян, Стив; Гупта, Раджеш (1997). «СценическийDAC1997» . стр. 100-1 70–75. CiteSeerX   10.1.1.56.6483 .
  5. ^ Synopsys and Co-Ware Inc., которые выполнили большую часть работы над SystemC — http://www.electronicsweekly.com/Articles/1999/12/07/13906/stm-synopsys-in-3-year- рампа-deal.htm
  6. ^ « ARM рада, что Synopsys , CoWare и другие компании объединились в SystemC, потому что, если она будет принята отраслью, это упростит наш мир», — сказал Тюдор Браун , технический директор ARM Ltd» в Babel о конкурирующих языках. на роль в SoC - http://www.eetimes.com/ip99/ip99story1.html
  7. ^ Загрузка Powersim | SourceForge.net

Ссылки [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 96addc91f4b276e79780ed541db50f73__1712160300
URL1:https://arc.ask3.ru/arc/aa/96/73/96addc91f4b276e79780ed541db50f73.html
Заголовок, (Title) документа по адресу, URL1:
SystemC - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)