Генератор TLM экспортирует целевой компонент TLM от подсистемы модели Simulink®. Целевой компонент TLM имеет один сокет TLM, который поддерживает чтение и транзакции записи с помощью типового протокола TLM и типовой полезной нагрузки.
Следующая схема иллюстрирует самое простое поведение, которое можно задать для сгенерированного компонента TLM. Это не содержит карты распределения памяти или команды и регистра состояния, и сразу выполняет транзакции.
Чтобы управлять архитектурой сгенерированного компонента TLM, можно выбрать среди нескольких опций. Слияние карты распределения памяти является одной из самых эффективных опций. Следующая фигура демонстрирует, что поведение сгенерированного компонента TLM с полным дополнением функций включило.
Можно установить опции для следующих функций компонента TLM:
Синхронизация интерфейса — время Модели используется транзакциями в действительной системе.
Осуществление алгоритма — Реализация компонент как поток SystemC или функция обратного вызова.
Автоматически сгенерированная карта распределения памяти с одним адресом
Автоматически сгенерированная карта распределения памяти с отдельными адресами
Никакая опция карты распределения памяти не генерирует компонент TLM только с одним чтением и одним регистром записи ни без какого адреса. Входные параметры модели Simulink представлены регистром записи, и выходные параметры представлены регистром чтения.
Без карты распределения памяти сгенерированный компонент TLM имеет следующие характеристики:
Имеет один входной регистр и один выходной регистр.
Не нуждается — и игнорирует — адрес в чтении и запросах записи во время симуляции SystemC, чтобы выбрать определенные регистры на устройстве.
Получает все входные данные в одном запросе записи, и запрос чтения получает все выходные данные в возвращаемом значении
Имеет регистры ввода и вывода, или измеренные, чтобы содержать целый набор данных, требуемый или созданный компонентом TLM, когда он выполняет поведение (ступенчатая функция алгоритма) в вашей среде виртуальной платформы
Когда введенные регистры полны, это условие триггеры (расписания) выполнение поведения в средстве моделирования SystemC. Выходные регистры обработаны тот же путь.
Все значения по умолчанию для команд и состояния применяются.
Когда вы генерируете компонент TLM с этой опцией, можно использовать его в виртуальной платформе (VP) как:
Автономный компонент в испытательном стенде верификации
Прямой связанный модуль совместной обработки
Устройство, присоединенное к каналу связи с помощью адаптера протокола
Автоматически сгенерированная карта распределения памяти с одной опцией адреса генерирует компонент TLM только с одним регистром данных чтения, и каждый записывает данные регистр с одним адресом каждый.
Входные параметры модели Simulink представлены регистром записи, и выходные параметры представлены регистром чтения. Программное обеспечение HDL Verifier™ автоматически присваивает адреса, требуемые получить доступ к тем определенным регистрам во время генерации кода. Те адреса дают определенные смещения, требуемые обратиться к каждому отдельному регистру через операции чтения и операции записи. Определение базового адреса для целого сгенерированного компонента TLM должно быть задано виртуальной платформой, в которой находится компонент TLM. Определения адреса смещения появляются в файле определения, который сгенерирован наряду с компонентом TLM.
С одной картой распределения памяти адреса сгенерированный компонент TLM имеет следующие характеристики:
Имеет один входной регистр и один выходной регистр, и дополнительную команду и регистр состояния и регистр набора и тест.
Должен иметь адрес в чтении и запросах записи во время симуляции SystemC, чтобы выбрать определенные регистры на устройстве.
Получает все входные данные в одном запросе записи, и запрос чтения получает все выходные данные в возвращаемом значении
Имеет регистры ввода и вывода, или измеренные, чтобы содержать целый набор данных, требуемый или созданный компонентом TLM, когда он выполняет поведение (ступенчатая функция алгоритма) в вашей среде виртуальной платформы
Если команда и регистр состояния не будут использоваться или если команда и регистр состояния будут использоваться, и значения по умолчанию применяются, когда введенный регистр полон, довольный продвинут в буфер, который затем инициировал (то планирует) выполнение поведения в средстве моделирования SystemC. Если команда и регистр состояния используются, и Входная Команда Нажатия установлена в 1, модуль инициатора перемещает набор входных данных от входного регистра до входного буфера. Выходные регистры обработаны тот же путь.
Если команда и регистр состояния не используются, все значения по умолчанию для команд и состояния применяются.
Когда вы генерируете компонент TLM с этой опцией, можно использовать его в виртуальной платформе (VP) как автономный компонент в испытательном стенде, или можно присоединить его к каналу связи.
Автоматически сгенерированная карта распределения памяти с отдельной опцией адреса генерирует компонент TLM с одним регистром данных чтения на выход модели, и запишите данные регистр на вход модели с отдельными адресами.
Каждый вход модели Simulink представлен его соответствующим регистром записи, и каждый выход представлен его соответствующим регистром чтения. Программное обеспечение HDL Verifier автоматически присваивает адреса, требуемые получить доступ к тем определенным регистрам во время генерации кода. Те адреса дают определенные смещения, требуемые обратиться к каждому отдельному регистру через операции чтения и операции записи. Определение базового адреса для целого сгенерированного компонента TLM должно быть задано виртуальной платформой, в которой находится компонент TLM. Определения адреса смещения появляются в файле определения, который сгенерирован наряду с компонентом TLM.
С отдельной картой распределения памяти адреса сгенерированный компонент TLM имеет следующие характеристики:
Каждый входной регистр и каждый выходной регистр имеют свой собственный адрес, а также дополнительную команду и регистр состояния и регистр набора и тест.
Должен иметь адрес в чтении и запросах записи во время симуляции SystemC, чтобы выбрать определенные регистры на устройстве.
К каждому регистру ввода и вывода нужно получить доступ индивидуально.
Модуль инициатора может записать или считать каждый регистр ввода и вывода в нескольких и/или частичных транзакциях.
Размер каждого регистра ввода и вывода является размером данных.
Выполнение инициировано, когда весь вход был записан или когда команда и установила биты регистра, установлены в Автоматический. Если установлено вручную, модуль инициатора перемещает набор входных данных от входного регистра до входного буфера.
Выходные регистры обновляются, когда все выходные регистры были считаны или когда команда и установила биты регистров, установлены в Автоматический. Если установлено вручную, модуль инициатора перемещает набор выходных данных от буфера вывода до выходного регистра.
Когда вы генерируете компонент TLM с этой опцией, можно использовать его в виртуальной платформе (VP) как автономный компонент в испытательном стенде, или можно присоединить его к каналу связи.
Можно принять решение сгенерировать компонент TLM с автоматически сгенерированной картой распределения памяти с адресами. Когда вы делаете так, генератор TLM предлагает вам опцию, чтобы включить Команду и Регистр состояния (CSR) в сгенерированном компоненте TLM. Определение для этого регистра появляется в таблице.
Биты только для записи (WO) утверждают взаимоисключающие команды. Можно утверждать только один бит команды в любой одной операции записи к CSR. Если больше чем один бит команды установлен в записи в CSR, команда не определена. Вы активируете каждую команду путем записи 1 в бит команды в регистре. Затем каждый бит команды автоматически очищен после того, как команда была выполнена. Вы не должны писать 0 в регистр, чтобы очистить бит команды. Биты только для записи всегда возвращаются как 0 в любом чтении CSR. Запись команды не перезаписывает Чтение-запись или биты Только для записи.
Используйте Чтение и Запись (R/W) биты, чтобы получить текущий статус и установку. Битом R/W является sticky, означая, что после того, как вы устанавливаете их путем записи 1 в бит в регистре, бит R/W остается установленным, пока 0 не записан в тот же бит, или команда Сброса вызывается. Биты чтения-и-записи возвращают свои фактические значения к любому чтению CSR.
Одна операция записи к CSR устанавливает все биты Чтения-и-записи в регистре. Можно принять решение установить только некоторые биты и обеспечить предыдущие значения других. Прежде чем вы сделаете так, необходимо сначала считать CSR и затем изменить значения согласно требованиям. После того, как вы завершите модификации, можно записать целые 32 бита обратно к CSR.
Биты только для чтения (RO) обеспечивают информацию о статусе. Сгенерированный компонент TLM автоматически устанавливает и очищает их значения, и модуль инициатора может считать их, чтобы изучить состояние. Биты только для чтения не изменяют свои фактические значения во время никакого чтения или записи CSR.
Следующая таблица содержит целое определение регистра.
Следующая таблица объясняет, как биты заданы.
Бит | Имя | Состояние чтения-записи | Описание |
---|---|---|---|
CSR <0> | Сбросьте команду | Только для записи | Когда установлено в 1, следующее верно:
Автоматически возвращается к 0 после выполнения команды. |
CSR <1> | Запустите команду | Только для записи | Вручную триггерное выполнение поведения компонента TLM с помощью набора входных данных, который находится в настоящее время во входном регистре, когда нет никакой буферизации ввода. Когда буферизация ввода используется, эта команда не определена. |
CSR <2> | Прервите состояние | Только для чтения | Отражает текущее состояние сигнала Прерывания. Обеспечивает состояние только. Наборы и очищают себя автоматически. |
CSR <3> | Запрет прерывания | Чтение-и-запись | Когда установлено в 0, позволяет прерываниям быть сгенерированными на сигнале Прерывания и отраженными в Бите состояния Прерывания CSR. Когда установлено в 1, отключает генерацию прерываний. |
CSR <8> | Продвиньте входную команду | Только для записи | Когда буферизация используется, и Режим ввода равен 0 (ручной режим), эта команда позволяет модулю инициатора перемещать набор входных данных от входного регистра до входного буфера. Это затем инициировало выполнение поведения компонента TLM. Когда буферизация не используется, эта команда не определена. Когда Режим ввода равняется 1 (автоматическому), эта команда не определена. |
CSR <9> | Режим ввода | Чтение-и-запись | Когда установлено в 1 (автоматический), перемещение набора входных данных от входного регистра до входного буфера и выполнения поведения компонента TLM инициировано автоматически, если набор полных данных был записан во входной регистр. Когда установлено в 0 (руководство), перемещение набора входных данных от входного регистра до входного буфера и выполнения поведения должно вручную инициироваться. Сделайте так путем записи бита Команды Запуска в 1, если никакая буферизация не используется, или запись Входной Команды Нажатия к 1, если буферизация присутствует. По умолчанию Режим ввода установлен в 1 (автоматический). Чтобы изменить его в 0 (руководство), задайте его в параметрах конструктора компонента TLM. |
CSR <12> | Вытяните Выходную команду | Только для записи | Когда буферизация используется, и Режим вывода установлен в 0 (ручной режим), эта команда позволяет модулю инициатора перемещать набор выходных данных от главы буфера вывода к выходному регистру. Когда буферизация не используется, эта команда не оказывает влияния. Когда Режим вывода равняется 1 (автоматическому), эта команда не определена. |
CSR <13> | Режим вывода | Чтение-и-запись | Когда установлено в 1 (автоматический), перемещение данных от главы буфера вывода к выходному регистру инициировано автоматически выполнением поведения компонента TLM. Когда установлено в 0 (руководство), перемещение данных от главы буфера вывода к выходному регистру должно вручную инициироваться. Сделайте так путем записи Получению по запросу Выходной Команды в 1, если буферизация присутствует. По умолчанию Режим вывода установлен в 1 (автоматический). Чтобы изменить его в 0 (руководство), задайте его в параметрах конструктора компонента TLM. |
Можно добавить сигнал прерывания, добавленный к сгенерированному компоненту TLM. Компонент TLM утверждает этот сигнал каждый раз, когда новые выходные параметры доступны в любом выходном регистре. Сигнал автоматически очищен каждый раз, когда значение читается из любого выходного регистра.
Сигнал Прерывания является сигналом булевской переменной SystemC, активным высоко. Прерывание Активный бит в Регистре состояния отражает состояние сигнала прерывания.
Можно использовать дополнительный тест и установить регистр управлять доступом к разделяемому компоненту TLM в среде SystemC. Любое чтение этого регистра возвращает текущее значение и устанавливает регистр на новое, утверждаемое значение в атомарной операции. В системах с несколькими модулями инициатора, выполняя эту задачу обычно требует доступа к той же цели. Если так, затем модуль инициатора имеет эксклюзивный доступ к сгенерированному компоненту TLM, пока все другие модули инициатора следуют. Модули инициатора должны считать тест и установить регистр и использовать целевое устройство только, когда та операция чтения возвращает значение 0. Модуль инициатора может проверить, что любое последующее чтение теста и установило регистр, возвращает значение 1, который указывает к другим модулям инициатора, что устройство занято. После получения эксклюзивного доступа к компоненту TLM модуль инициатора выпускает компонент, когда целевые операции завершаются путем записи 0 в регистр набора и тест.
Чтения компонента TLM и вводы и выводы записей непосредственно от интерфейсного регистра во время обработки алгоритма. После того, как инициатор пишет все входные регистры (если в Автоматическом режиме) или когда инициатор написал НАЧИНАТЬ команду в CSR, алгоритм начинает обрабатывать. SystemC ожидает, функция генерирует все синхронизации.
Внимание
Чтобы предотвратить повреждение алгоритма, обрабатывающего результаты, не позволяйте инициатору выполнять чтение или запись регистров во время обработки.
Эта схема показывает Адаптер TLM с зарегистрированными интерфейсами.
Чтения Компонента TLM и вводы и выводы записей через sc_signal
порт (sc_in
или sc_out
). Эти входные параметры/выходные параметры не указаны. Когда ступенчатая функция выполняется, она читает текущее значение sc_in
порты, выполняет и написал результат в sc_out
порты.
Эта схема показывает Адаптер TLM с интерфейсами регистра и sc_in
порт (в красном).