exponenta event banner

Архитектура компонентов TLM

Обзор компонентов

Генератор TLM экспортирует целевой компонент TLM из подсистемы модели Simulink ®. Целевой компонент TLM имеет один сокет TLM, который поддерживает транзакции чтения и записи с использованием общего протокола TLM и общей полезной нагрузки .

Следующая диаграмма иллюстрирует простейшее поведение, которое можно задать для созданного компонента TLM. Он не содержит карты памяти или регистра команд и состояния и выполняет транзакции немедленно.

Для управления архитектурой созданного компонента TLM можно выбрать один из нескольких вариантов. Включение карты памяти - один из наиболее эффективных вариантов. На следующем рисунке показано поведение созданного компонента TLM с включенным полным набором функций.

Можно задать опции для следующих компонентов TLM:

Отображение памяти

Нет карты памяти

Опция карты без памяти генерирует компонент TLM только с одним регистром чтения и записи без какого-либо адреса. Входы модели Simulink представлены регистром записи, а выходы представлены регистром считывания.

Без карты памяти сгенерированный компонент TLM имеет следующие характеристики:

  • Имеет один входной регистр и один выходной регистр.

  • Не требует - и игнорирует - адрес в запросах на чтение и запись во время моделирования SystemC для выбора конкретных регистров на устройстве.

    • Получает все входные данные в одном запросе на запись, а запрос на чтение получает все выходные данные в возвращаемом значении

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

  • Когда входные регистры заполнены, это условие запускает (планирует) выполнение поведения в симуляторе SystemC. Выходные регистры обрабатываются одинаково.

  • Применяются все значения по умолчанию для команд и состояния.

При создании компонента TLM с помощью этой опции его можно использовать в виртуальной платформе (VP) как:

  • Автономный компонент в испытательном стенде для проверки

  • Блок прямой совместной обработки

  • Устройство, подключенное к каналу связи с помощью адаптера протокола

Автоматически генерируемая карта памяти с одним адресом

Автоматически генерируемая карта памяти с опцией одного адреса генерирует компонент TLM только с одним регистром считываемых данных и одним регистром записываемых данных с одним адресом каждый.

Входы модели Simulink представлены регистром записи, а выходы представлены регистром считывания. Программное обеспечение HDL Verifier™ автоматически назначает адреса, необходимые для доступа к этим конкретным регистрам во время генерации кода. Эти адреса дают конкретные смещения, необходимые для обращения к каждому отдельному регистру посредством операций чтения и записи. Определение базового адреса для всего сгенерированного компонента TLM должно определяться виртуальной платформой, в которой находится компонент TLM. Определения адресов смещения отображаются в файле определений, который создается вместе с компонентом TLM.

При использовании карты памяти с одним адресом сгенерированный компонент TLM имеет следующие характеристики:

  • Имеет один входной регистр и один выходной регистр, а также дополнительный регистр команд и состояния и регистр тестирования и установки.

  • Должен иметь адрес в запросах на чтение и запись во время моделирования SystemC для выбора конкретных регистров на устройстве.

    • Получает все входные данные в одном запросе на запись, а запрос на чтение получает все выходные данные в возвращаемом значении

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

  • Если команда и регистр состояния не используются или если используются команда и регистр состояния и применяются значения по умолчанию, когда входной регистр заполнен, содержимое помещается в буфер, который затем инициирует (планирует) выполнение поведения в симуляторе SystemC. Если используется команда и регистр состояния, а команда Push Input имеет значение 1, модуль инициатора перемещает набор входных данных из входного регистра во входной буфер. Выходные регистры обрабатываются одинаково.

  • Если команда и регистр состояния не используются, применяются все значения по умолчанию для команд и состояния.

При создании компонента TLM с помощью этой опции его можно использовать в виртуальной платформе (VP) в качестве автономного компонента на испытательном стенде или подключить к каналу связи.

Автоматически генерируемая карта памяти с отдельными адресами

Автоматически генерируемая карта памяти с опцией индивидуального адреса генерирует компонент TLM с одним регистром считываемых данных на вывод модели и регистром записываемых данных на вход модели с индивидуальными адресами.

Каждый вход модели Simulink представлен своим соответствующим регистром записи, и каждый выход представлен своим соответствующим регистром считывания. Программное обеспечение HDL Verifier автоматически назначает адреса, необходимые для доступа к этим конкретным регистрам во время генерации кода. Эти адреса дают конкретные смещения, необходимые для обращения к каждому отдельному регистру посредством операций чтения и записи. Определение базового адреса для всего сгенерированного компонента TLM должно определяться виртуальной платформой, в которой находится компонент TLM. Определения адресов смещения отображаются в файле определений, который создается вместе с компонентом TLM.

При использовании карты памяти отдельных адресов сгенерированный компонент TLM имеет следующие характеристики:

  • Каждый входной регистр и каждый выходной регистр имеют свой собственный адрес, а также необязательный регистр команд и состояния и регистр тестирования и установки.

  • Должен иметь адрес в запросах на чтение и запись во время моделирования SystemC для выбора конкретных регистров на устройстве.

    • Доступ к каждому входному и выходному регистру должен осуществляться индивидуально.

  • Модуль инициатора может записывать или считывать каждый входной и выходной регистр в нескольких и/или частичных транзакциях.

  • Размер каждого входного и выходного регистра - это размер данных.

  • Выполнение запускается, когда все входные данные записаны или когда биты регистра команды и набора установлены на Automatic. Если установлено значение manual, модуль инициатора перемещает набор входных данных из входного регистра во входной буфер.

  • Выходные регистры обновляются, когда считаны все выходные регистры или когда биты команд и наборов регистров устанавливаются в Automatic. Если установлено значение manual, модуль инициатора перемещает набор выходных данных из выходного буфера в выходной регистр.

При создании компонента TLM с помощью этой опции его можно использовать в виртуальной платформе (VP) в качестве автономного компонента на испытательном стенде или подключить к каналу связи.

Регистр команд и состояния

Можно создать компонент TLM с автоматически генерируемой картой памяти с адресами. При этом генератор TLM предоставляет возможность включения регистра команд и состояний (CSR) в созданный компонент TLM. Определение этого регистра отображается в таблице.

Биты только для записи

Биты только для записи (WO) утверждают взаимоисключающие команды. В любой отдельной операции записи в CSR можно установить только один бит команды. Если в записи в CSR установлено более одного командного бита, команда не определена. Активируйте каждую команду, записав бит 1 в командный бит в регистре. Затем каждый бит команды автоматически сбрасывается после выполнения команды. Вам не нужно записывать 0 в регистр, чтобы очистить бит команды. Только запись - биты всегда возвращаются как 0 при любом чтении CSR. При записи команды биты «чтение/запись» или «только запись» не перезаписываются.

Биты чтения и записи

Используйте биты чтения и записи (R/W) для получения текущего состояния и настроек. Биты R/W являются липкими, что означает, что после их установки путем записи 1 в бит в регистре бит R/W остается установленным до тех пор, пока 0 не будет записан в тот же бит или не будет вызвана команда Reset. Биты чтения и записи возвращают свои фактические значения любому считыванию CSR.

Одна операция записи в CSR устанавливает все биты чтения и записи в регистре. Можно задать только некоторые биты и сохранить предыдущие значения других. Перед этим необходимо сначала прочитать CSR, а затем изменить значения в соответствии с требованиями. После завершения изменений можно записать все 32 бита обратно в CSR.

Биты только для чтения

Биты только для чтения (RO) предоставляют информацию о состоянии. Сгенерированный компонент TLM автоматически устанавливает и очищает их значения, и модуль инициатора может считывать их для получения статуса. Биты только для чтения не изменяют свои фактические значения во время чтения или записи CSR.

Определение регистра

Следующая таблица содержит все определение регистра.

В следующей таблице объясняется, как определяются биты.

БитИмяСостояние чтения/записиОписание
CSR < 0 >Команда сбросаТолько запись

Если установлено значение 1, выполняются следующие условия:

  • Содержимое входного регистра признано недопустимым.

  • Содержимое выходного регистра признано недопустимым.

  • Все биты CSR имеют значение 0, за исключением следующих:

    • Бит пустого входного буфера установлен в 1.

    • Пустой бит выходного буфера установлен в 1.

    • Для параметра «Автоматический режим ввода» установлено значение по умолчанию.

    • По умолчанию установлен автоматический режим вывода.

Автоматически возвращается к 0 после выполнения команды.

КСО < 1 >Запустить командуТолько запись

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

При использовании буферизации ввода эта команда не определена.

CSR < 2 >Состояние прерыванияТолько для чтенияОтражает текущее состояние сигнала прерывания. Предоставляет только статус. Автоматически устанавливает и очищает себя.
CSR < 3 >Отключить прерываниеПрочтите и напишите

Если установлено значение 0, позволяет генерировать прерывания в сигнале прерывания и отражать их в бите состояния прерывания CSR.

Если установлено значение 1, отключает генерацию прерываний.

CSR < 8 >Команда Push InputТолько запись

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

Если буферизация не используется, эта команда не определена.

Если для параметра «Режим ввода» установлено значение 1 (автоматически), эта команда не определена.

CSR < 9 >Режим вводаПрочтите и напишите

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

Если установлено значение 0 (вручную), перемещение набора входных данных из входного регистра во входной буфер и выполнение поведения должно быть инициировано вручную. Для этого следует записать бит Start Command в 1, если буферизация не используется, или команду Push Input в 1, если буферизация присутствует.

По умолчанию для параметра «Режим ввода» установлено значение 1 (автоматически). Чтобы изменить его на 0 (вручную), укажите его в параметрах конструктора компонентов TLM.

КСО < 12 >Команда Pull OutputТолько запись

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

Если буферизация не используется, эта команда не действует.

Если для параметра «Режим вывода» установлено значение 1 (автоматически), эта команда не определена.

КСО < 13 >Режим выводаПрочтите и напишите

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

Если установлено значение 0 (вручную), перемещение данных из головки выходного буфера в выходной регистр должно инициироваться вручную. Для этого запишите команду Pull Output в значение 1, если имеется буферизация.

По умолчанию для параметра «Режим вывода» установлено значение 1 (автоматически). Чтобы изменить его на 0 (вручную), укажите его в параметрах конструктора компонентов TLM.

Перерыв

К сгенерированному компоненту TLM можно добавить сигнал прерывания. Компонент TLM подает этот сигнал всякий раз, когда в любом выходном регистре имеются новые выходы. Сигнал автоматически очищается при каждом считывании значения из любого выходного регистра.

Сигнал прерывания является логическим сигналом SystemC, активным до высокого значения. Бит Interrupt Active в регистре состояния отражает состояние сигнала прерывания.

Реестр тестов и наборов

Для управления доступом к совместно используемому компоненту TLM в среде SystemC можно использовать дополнительный тест и установить регистр. Любое считывание этого регистра возвращает текущее значение и устанавливает регистр в новое, утвержденное значение в атомной операции. В системах с несколькими модулями инициатора выполнение этой задачи обычно требует доступа к одному и тому же целевому объекту. Если это так, то модуль инициатора имеет эксклюзивный доступ к сгенерированному компоненту TLM, пока следуют все остальные модули инициатора. Модули инициатора должны считывать тест и устанавливать регистр и использовать целевое устройство только тогда, когда операция считывания возвращает значение 0. Модуль инициатора может проверить, что любое последующее считывание регистра теста и набора возвращает значение 1, которое указывает другим модулям инициатора, что устройство занято. После получения монопольного доступа к компоненту TLM модуль инициатора освобождает компонент, когда целевые операции завершаются, записывая 0 в регистр тестирования и установки.

Регистры и сигнальные порты

Регистры

Компонент TLM считывает и записывает входы и выходы непосредственно из регистра интерфейса во время обработки алгоритма. После того, как инициатор записывает все входные регистры (если в режиме AUTO) или когда инициатор записывает команду START в CSR, алгоритм начинает обработку. Функция ожидания SystemC генерирует все моменты времени.

Внимание

Чтобы предотвратить повреждение результатов обработки алгоритма, не разрешайте инициатору выполнять чтение или запись регистров во время обработки.

На этой схеме показан адаптер TLM с зарегистрированными интерфейсами.

Сигнальный порт

Компонент TLM считывает и записывает входные и выходные данные через sc_signal порт (sc_in или sc_out). Эти входы/выходы не регистрируются. При выполнении пошаговой функции считывается текущее значение sc_in порты, выполняет и записывает результат в sc_out порты.

На этой схеме показан адаптер TLM с интерфейсами регистров и sc_in порт (красным цветом).