stringtranslate.com

СистемаC AMS

SystemC AMS — это расширение SystemC для аналоговых, смешанных сигналов и радиочастотных функций. [1] Стандарт SystemC AMS 2.0 был выпущен 6 апреля 2016 г. как IEEE Std 1666.1-2016.

Спецификация языка

ToDo: описание

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

ToDo: описание

MoC — модель вычислений

Модель вычислений (MoC) — это набор правил, определяющих поведение и взаимодействие между примитивными модулями SystemC AMS. SystemC AMS определяет следующие модели вычислений: синхронизированный поток данных (TDF), линейный поток сигналов (LSF) и электрические линейные сети (ELN).

TDF — синхронизированный поток данных

В модели временного потока данных (TDF) компоненты периодически обмениваются друг с другом аналоговыми значениями с выбранной частотой дискретизации, например каждые 10 микросекунд. По теореме дискретизации этого будет достаточно для передачи сигналов с полосой пропускания до 50 МГц без артефактов наложения спектров. Модель TDF определяет метод под названием «processing()», который вызывается с соответствующей частотой по мере продвижения времени моделирования. Так называемый кластер моделей имеет статический график того, когда им следует общаться. Это устанавливает относительный порядок вызовов методов обработки() каждого экземпляра TDF в кластере. Периодическое поведение TDF позволяет ему работать независимо от основного ядра SystemC, управляемого событиями, используемого для цифровой логики.

ЭЛН - Электрические линейные сети

Библиотека электрических линейных сетей (ELN) SystemC предоставляет набор стандартных электрических компонентов, которые позволяют запускать моделирование в стиле SPICE. Разумеется, доступны три основных компонента: резисторы, конденсаторы и катушки индуктивности. Дополнительные варианты, управляемые напряжением, такие как усилитель крутизны (генератор тока, управляемый напряжением), позволяют легко создавать большинство полевых транзисторов и других полупроводниковых моделей.

Ток, протекающий в сетях резисторов ELN, можно решить с помощью подходящего средства одновременного решения уравнений. Они называются узловыми уравнениями. Если включены изменяющиеся во времени компоненты, такие как конденсаторы и катушки индуктивности, для их моделирования обычно применяется метод Эйлера. Метод Эйлера — это простой подход к решению задач во временной области с конечной разностью (FDTD). Например, для моделирования проблемы заряда конденсатора (слева ниже) выбирается временной шаг delta\_t, который обычно составляет около одного процента от постоянной времени, и выполняется итерация внизу справа.

Ошибка в методе Эйлера уменьшается квадратично с меньшими временными шагами, но слишком маленький временной шаг приводит к медленному моделированию для сложного моделирования методом конечных элементов. Но это не проблема во многих ситуациях, когда часть сложной SoC или контроллера установки работает вместе с моделью установки, которая имеет всего несколько переменных состояния, например, в системе автомобильной трансмиссии, поскольку существует разница в константах времени на порядки (например, Тактовая частота 100 МГц в сравнении с минимальной инерционной постоянной времени 1~мс). Тогда имеет смысл моделировать аналоговую подсистему внутри симулятора RTL. Более того, в большинстве ситуаций управления объектом используется отрицательная обратная связь с обратной связью, при этом контроллер так же хорошо справляется с управлением моделью объекта с небольшими ошибками, как и реальной моделью.

В соответствии с формализмом ELN циклы инициализации и моделирования SystemC расширены для поддержки решения уравнений узлового потока. Решение узловых уравнений обычно решается итеративно, а не с использованием прямых методов, таких как метод исключения Гаусса или на основе обратных матриц. Итеративные методы имеют тенденцию иметь большую стабильность и быстроту, когда состояние лишь незначительно продвинулось вперед по сравнению с предыдущим временным шагом. Когда ядро ​​удаляет событие с опережением времени из очереди событий, время моделирования увеличивается. Аналоговая часть симулятора поддерживает квант времени, по истечении которого узловые уравнения необходимо пересчитывать. Этот квант динамически регулируется в зависимости от поведения уравнений. Если уравнения являются «изгибными», то есть линейная экстраполяция с использованием метода Эйлера по кванту приведет к слишком большой ошибке, шаг по времени уменьшается, в противном случае его можно постепенно увеличивать на каждом шаге. В целом необходимы две формы итерации: первая — это итерация по времени для решения узловых уравнений с достаточной точностью. Второй – между временными шагами. В простой реализации, как только время моделирования выходит за пределы кванта Эйлера, аналоговая подсистема решается повторно. Если ошибки экстраполяции слишком велики, симулятор должен вернуться к последнему временному шагу и снова смоделировать вперед, используя меньший аналоговый квант. Этот механизм также является основой моделирования SPICE. Каждая аналоговая переменная, которая является аргументом «перекрестия» или другой аналоговой чувствительности, затем проверяется на предмет того, была ли инициирована новая работа в цифровой области. Если это так, новые события добавляются в очередь дискретных событий для текущего времени моделирования.

LSF — линейный поток сигналов

Библиотека линейного потока сигналов (LSF) SystemC предоставляет набор примитивных аналоговых операторов, таких как сумматоры и дифференциаторы, которые позволяют создавать все базовые структуры, встречающиеся в дифференциальных уравнениях, в самодокументируемой и исполняемой форме. Преимущество построения системы на основе стандартной библиотеки операторов состоит в том, что возможно «отражение»: другой код может анализировать структуру и выполнять аналитическое дифференцирование, суммирование, интегрирование и другие формы анализа, такие как анализ чувствительности для определения подходящего временного шага. Это было бы невозможно для реализации, использующей специальное кодирование. В общем программировании под отражением понимается способность программы читать собственный исходный код.

Порты

Определение входа/выхода TDF:

sca_tdf:: sca_in <ТипПорта> sca_tdf:: sca_out <ТипПорта>

Определение входа/выхода преобразователя TDF:

sca_tdf:: sc_in <PortType> // DE → вход TDF sca_tdf:: sc_out <PortType> // TDF → выходной порт DE

Определение терминала ELN:

sca_eln:: sca_terminal

Узлы

sca_eln:: sca_node // узел ELN sca_eln:: sca_node_ref // опорный узел ELN

Кластер

ToDo: описание

Отслеживание

sca_trace_file * tf = sca_create_tabular_trace_file ( «trace_file_name.dat» ); sca_trace ( tf , < ПОРТ | СИГНАЛ | УЗЕЛ > , "имя" );      

Пример кода

ИВС

Модель нижних частот 1-го порядка с временным потоком данных:

#include <systemc-ams> использование пространства имен sca_util ; // введено для удобства: sca_util::sca_vector<TYPE> → sca_vector<TYPE> с использованием пространства имен sca_core ; // введено для удобства: sca_core::sca_time() → sca_time() с использованием пространства имен sca_ac_anaанализ ; // введено для удобства: sca_ac_anaанализ::sca_ac() → sca_ac()         SCA_TDF_MODULE ( tdf_low_pass ) { // порты TDF sca_tdf :: sca_in < double > inp ; sca_tdf :: sca_out < двойной > outp ;      // параметры double fcut ; // частота среза    // методы void инициализировать (); // обратный вызов симулятора для инициализации void ac_processing (); // обратный вызов симулятора для реализации поведения AC void Processing (); // обратный вызов симулятора для реализации времени          // конструктор SCA_CTOR ( tdf_low_pass ) { fcut = 1.0e3 ; // частота среза 1 кГц }       частный : sca_vector < двойной > число ; // коэффициенты числителя sca_vector < double > den ; // коэффициенты дечислителя sca_vector < double > state ; // вектор состояния sca_tdf :: sca_ltf_nd ltf_nd ; // линейная передаточная функция (тип числителя/счетчика) };               

линейная передаточная функция:

// инициализируем коэффициенты линейной передаточной функции void tdf_low_pass::initialize (){ num ( 0 ) = 1.0 ; ден ( 0 ) = 1,0 ; ден ( 1 ) = 1,0 / ( 2,0 * M_PI * fcut ); }          

ToDo: описание

// реализация AC void tdf_low_pass::ac_processing (){ sca_ac ( outp ) = sca_ac_ltf_nd ( num , den , sca_ac ( inp )); }      

ToDo: описание

// реализация во временной области void tdf_low_pass::processing (){ outp = ltf_nd ( num , den , state , inp ); }       

ЭЛЬ Н

Список цепей нижних частот электрических-линейных сетей 1-го порядка:

SC_MODULE ( eln_low_pass_netlist ) { // терминалы eln sca sca_eln :: sca_terminal n1 ; sca_eln :: sca_terminal n2 ;      // внутренние узлы sca_eln :: sca_node_ref gnd ;   // модули eln sca_eln :: sca_r i_r ; sca_eln :: sca_c i_c ;     SC_CTOR ( eln_low_pass_netlist ) : i_r ( «i_r» ), i_c ( «i_c» ) { i_r . значение = 1,0 ; я_р . п . связать ( n1 ); я_р . н . связать ( n2 );          IC . значение = 1,0 / ( 2,0 * M_PI * 1,0e3 ); IC . п . связать ( n2 ); IC . н . привязать ( земля ); } };     

ЛСФ

Список соединений с линейным потоком сигналов:

История

Исследовательская группа SystemC AMS была основана в 2002 году для разработки и поддержки аналоговых и смешанных расширений SystemC, а также для создания рабочей группы OSCI (инициатива Open SystemC) SystemC-AMS. Исследовательская группа провела первоначальные исследования, определила и внедрила расширение SystemC, чтобы продемонстрировать осуществимость этого подхода. В 2006 году была профинансирована рабочая группа SystemC AMS, которая продолжила работу исследовательской группы внутри OSCI и теперь продолжает работу над SystemC AMS в рамках Accellera Systems Initiative, в результате чего в 2010 году появился стандарт AMS 1.0. После выпуска стандарт Accellera SystemC AMS 2.0 в 2013 году, в 2014 году этот стандарт был передан Ассоциации стандартов IEEE для дальнейшего внедрения и поддержки в отрасли. Стандарт SystemC AMS был выпущен 6 апреля 2016 года как IEEE Std 1666.1-2016. [2] [3] COSEDA Technologies вместе с COSIDE предоставляет первую коммерчески доступную среду проектирования, основанную на стандарте SystemC AMS.

Рекомендации

  1. ^ "SystemC AMS". Accellera.org . Проверено 1 августа 2016 г.
  2. ^ «SystemC AMS (аналоговый/смешанный сигнал)» . Accellera.org . Проверено 1 августа 2016 г.
  3. ^ «SystemC-AMS и проектирование встроенных систем смешанных сигналов». www.systemc-ams.org . Проверено 1 августа 2016 г.

Внешние ссылки