exponenta event banner

Начало работы с генератором TLM

В этом примере показано, как настроить модель Simulink ® для создания компонента SystemC™/TLM с использованием tlmgenerator target для Simulink Coder™ или Embedded Coder™.

В этом примере используется модель Simulink FIR-фильтра в качестве основы для генерации SystemC/TLM.

Требования к выполнению этого примера:

  • SystemC 2.3.1 (включает библиотеку TLM)

  • Для проверки кода сделайте и совместимый GNU-компилятор, gcc, в вашем пути в Linux ® или компилятор Visual Studio ® в вашем пути в Windows ®

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

1. Открыть предварительно сконфигурированную модель

Чтобы открыть модель FIR-фильтра, нажмите кнопку Открыть модель (Open Model).

2. Установка цели кодера Simulink в генератор TLM

А. Откройте диалоговое окно Параметры конфигурации (Configuration Parameters), выбрав Моделирование (Simulation) > Параметры конфигурации модели (Model Configuration Parameters) в окне модели.

b. В диалоговом окне «Параметры конфигурации» выберите представление «Создание кода» на левой панели.

c. В разделе Системный целевой файл (System target file) нажмите кнопку Обзор (Browse), чтобы выбрать целевой объект генератора TLM. Можно выбрать tlmgenerator_grt.tlc использования Simulink Coder или tlmgenerator_ert.tlc использования Embedded Coder для создания кода HDL. В этом примере выберите tlmgenerator_grt.tlc.

3. Открыть представление генератора TLM

В диалоговом окне «Параметры конфигурации» выберите вид «Генератор TLM» на левой панели.

Представление генератора TLM имеет пять вкладок:

  • Сопоставление TLM

  • Обработка TLM

  • Синхронизация TLM

  • TLM Testbench

  • Компиляция TLM

На каждой панели необходимо задать различные параметры генератора.

4. Выбор параметров сопоставления TLM

На вкладке TLM Mapping, Socket Mapping позволяет выбрать количество сокетов для входных данных, выходных данных и управления. Выберите опцию Три отдельных разъема TLM для входных данных, выходных данных и управления.

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

В этом примере выберите следующее для сокетов входных и выходных данных:

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

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

Другие варианты карты памяти, которые вы можете рассмотреть:

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

  • [Автоматическое создание карты памяти с] Смещение одного входного и выходного адреса: Эта опция генерирует компонент TLM только с одним регистром чтения и записи с одним адресом. Входы модели Simulink связаны с регистром записи, а выходы - с регистром считывания.

При создании компонента с картой памяти можно добавить регистр команд и состояния, регистр тестов и наборов и настраиваемые регистры параметров.

В этом примере выберите для параметра Control TLM Socket следующее:

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

  • Включить настраиваемые регистры параметров в карту памяти. Настраиваемые регистры параметров позволяют считывать или записывать настраиваемые значения параметров.

Хотя в этом примере регистр теста и набора не используется, он может использоваться как мьютекс, когда несколько инициаторов обращаются к компоненту во время моделирования SystemC.

5. Выбор параметров обработки TLM

На панели Создание TLM выберите закладку Обработка TLM. Опции Обработка алгоритма (Algorithm Processing) и Обработка интерфейса (Interface processing) позволяют определить различные варианты буферизации и обработки для созданного компонента TLM.

Варианты выполнения алгоритма:

  • SystemC Thread: Алгоритм ступенчатой функции выполняется в собственном независимом потоке SystemC.

  • Функция обратного вызова: Алгоритм функции шага выполняется в функции обратного вызова, вызываемой из интерфейса.

  • Periodic SystemC Thread: Алгоритм ступенчатой функции выполняется в собственном временном периодическом независимом SystemC потоке.

Синхронизация ступенчатой функции определяется значением в поле Algorithm step function timing (ns). Синхронизация алгоритма подсчитывается с помощью функции wait () в потоке.

В этом примере выберите SystemC Thread и введите 100 в поле Algorithm step function timing.

Параметры обработки интерфейса:

  • Создание порта запроса прерывания на сгенерированном компоненте TLM: Эта опция создает порт прерывания (type signal, bool >), который запускается каждый раз при обработке набора входных данных.

В этом примере выберите или введите следующие варианты:

  • Выберите Create a interrupt request port on the сгенерированный компонент TLM.

6. Выберите опции синхронизации TLM

Выберите закладку TLM Timing. В разделе Interface Timing (Синхронизация интерфейса) можно определить синхронизацию интерфейса ввода/вывода компонента и потока обработки.

В этом примере задержки ввода и вывода подсчитываются с помощью wait () в интерфейсе. Установка значения времени 5 нс для каждой транзакции синхронизации интерфейса входных данных, синхронизации интерфейса выходных данных и синхронизации интерфейса управления.

7. Выбор формы TLM Testbench

Выберите закладку TLM Testbench. Целевое устройство генератора TLM может генерировать автономный стенд тестирования SystemC/TLM вместе с компонентом TLM для проверки сгенерированного алгоритма в контексте пары инициатор/цель TLM. Режим просмотра TLM Testbench предоставляет опции времени выполнения при формировании и выполнении кода тестового стенда.

Опции TLM Testbench позволяют:

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

  • Укажите, что тестовый стенд должен выполняться с аннотациями синхронизации или без них.

  • Укажите, управляет ли инициатор перемещением входных и выходных наборов данных между регистрами и буферами, или компонент выполняет перемещения автоматически.

В этом примере выберите Generate testbench, With timing for Run-time timing mode и Automatic для режимов запуска буфера ввода и буфера вывода.

После успешного создания кода для компонента и тестового стенда кнопка Verify TLM Component становится активной. Проверьте, что компонент TLM выполняет следующее:

  • Создает созданный код с помощью make и созданных make-файлов.

  • Запускает Simulink, чтобы зафиксировать входной стимул и ожидаемые результаты.

  • Преобразует данные Simulink в векторы TLM.

  • Запускает автономный тестовый файл SystemC/TLM.

  • Преобразует результаты TLM обратно в данные Simulink.

  • Выполняет сравнение данных.

  • Создает окно «Рисунок» для любых сигналов, для которых неверно сравниваются данные.

Компиляция созданных файлов предполагает наличие make и совместимого GNU-компилятора, gcc, в пути в Linux ® или компилятора Visual Studio ® в пути в Windows ®.

8. Выбор представления компиляции TLM

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

Параметры компилятора:

Параметры пути к библиотеке SystemC и TLM позволяют указать, где makefile могут находить установки SystemC и TLM. Значения по умолчанию позволяют использовать переменные среды, так что обновления для установок SystemC или TLM не требуют обновления моделей Simulink. Можно настроить среду перед вызовом MATLAB или использовать команду MATLAB setenv.

В этом примере приведены значения переменных среды, которые были протестированы со стандартными установками OSCI, расположенными в/tools:

  • SYSTEMC_INC_PATH=/tools/systemc-2.3.0/include

  • SYSTEMC_LIB_PATH=/tools/systemc-2.3.0/lib-linux64

  • SYSTEMC_LIB_NAME=libsystemc.a (Linux) или systemc.lib (Windows)

  • TLM_INC_PATH=/tools/systemc-2.3.0/include

Цепочка инструментов:

В Windows этот параметр позволяет выбрать цепочку инструментов компилятора, если на одном компьютере установлено несколько версий Microsoft Visual Studio. В Linux этот параметр исправлен в gcc.

Именование компонентов:

Эта опция позволяет добавить собственный тег к имени созданного компонента. Созданное имя компонента строится в следующих случаях:

  • Если указан тег пользователя: modelname_usertag_tlm

  • Если поле тега пользователя пустое: modelname_tlm

В этом примере введите intro для тега пользователя.

9. Выбрать отчет

Выберите Отчет на левой панели. В этом примере выберите Создать отчет о создании кода и Открыть отчет автоматически. Эти параметры генерируют HTML-отчет во время создания компонента. Отчет о создании кода содержит подробные сведения о каждом созданном файле.

10. Сохранить параметры генератора TLM

Нажмите кнопку ОК, чтобы применить эти настройки и выйти из диалогового окна Параметры конфигурации (Configuration Parameters).

11. Модель построения

В окне модели щелкните правой кнопкой мыши по блоку DireFilter и выберите в контекстном меню пункт C/C + + Code > Generate Code for this Subsystem для запуска генерации компонентов TLM.

В качестве альтернативы в окне команд MATLAB можно выполнить следующую команду:

> > slbuild ('tlmgdemo _ intro/DityFilter');

Во время выполнения вам будет предложено выбрать настраиваемые параметры. Раскрывающийся список каждого коэффициента позволяет выбрать класс хранения переменной. Параметры класса хранения:

  • Inlined - параметры inlined не настраиваются.

  • SimulinkGlobal - переменные SimulinkGlobal настраиваются.

В модели TLM Generation не поддерживаются функции «Глобальный», «Внешний» и «Внешний указатель».

Для этого примера выбрана опция Simulink Global. Щелкните Сборка. Создание TLM завершается, когда в окне команды MATLAB появится следующее сообщение:

### Starting Simulink Coder build procedure for model: DualFilter
### Successful completion of Simulink Coder build procedure for model: DualFilter

Build Summary

Top model targets built:

Model       Action          Rebuild Reason                                    
==============================================================================
DualFilter  Code generated  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 16.197s

12. Открыть созданные файлы

Откройте созданные файлы в веб-браузере MATLAB, щелкнув ссылки в созданном отчете или в редакторе MATLAB (созданные файлы и отчет находятся в текущей рабочей папке):

13. Проверить созданный код

А. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters), выбрав Моделирование (Simulation) > Параметры конфигурации (Configuration Parameters) в окне модели.

b. В диалоговом окне «Параметры конфигурации» выберите представление «Генератор TLM», а затем перейдите на вкладку «TLM Testbench».

C. На панели TLM Testbench щелкните Verify TLM Component (Проверка компонента TLM), чтобы запустить созданное средство тестирования.

В качестве альтернативы в окне команд MATLAB можно выполнить следующую команду:

  verifyTlmgDemoModel('intro')

На этом шаге проверки выполняются следующие действия:

  • Создает созданный код.

  • Запускает Simulink, чтобы зафиксировать входной стимул и ожидаемые результаты.

  • Преобразует данные Simulink в векторы TLM.

  • Запускает автономный тестовый стенд SystemC/TLM.

  • Преобразует результаты TLM обратно в данные Simulink.

  • Выполняет сравнение данных.

  • Создает окно «Рисунок» для любых сигналов, для которых неверно сравниваются данные.

14. Просмотреть журнал выполнения

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

### Comparing expected vs. actual results.
Data successfully compared for signal tlmg_out1.
Data successfully compared for signal tlmg_out2.
### Component verification completed

На этом завершается пример «Начало работы с генератором TLM».