В этом примере показано использование режима синхронизации «Untimed» при создании компонента SystemC™/TLM из модели Simulink ® с использованием tlmgenerator target для Simulink ® Coder™ или Embedded Coder ®.
В моделях Simulink ® перемещение данных между источниками и приемниками контролируется частотой дискретизации сигнала и централизованным вычислителем времени. В моделях SystemC/TLM взаимодействие между приемниками данных и источниками контролируется ядром моделирования SystemC, и время продвигается через SC_THREADs, совместно уступая управление другому потоку черезwait вызовы.
При несвоевременном моделировании SystemC/TLM модель игнорирует аннотированные задержки для коммуникационных интерфейсов и обработки. В таких моделях цель состоит только в том, чтобы иметь моделирование, которое дает правильные результаты, гарантируя, что инициаторы и цели могут успешно синхронизировать перемещение данных. Нет попыток оценить производительность развернутой системы. Время моделирования не должно истекать при несинхронизированном моделировании, поскольку синхронизация полностью основана на событии.
В этом примере используется модель Simulink фильтра FIR в качестве основы для генерации SystemC/TLM.
Продукты, необходимые для запуска этой демонстрации:
SystemC 2.3.1 (включает библиотеку TLM)
Для проверки кода сделайте и совместимый GNU-компилятор, gcc, в вашем пути в Linux ® или компилятор Visual Studio ® в вашем пути в Windows ®
Примечание.Пример включает процедуру создания кода. Simulink не позволяет создавать программы в области установки MATLAB. При необходимости перед запуском сборки перейдите в рабочую папку, которая отсутствует в области установки MATLAB.
Чтобы открыть модель TLM untimed testbench, нажмите кнопку Open Model.
Следующая модель откроется в Simulink.

На панели инструментов Simulink выберите «Параметры модели» на вкладке «Моделирование». В диалоговом окне Configuration Parameters выберите вид TLM Generator и вкладку TLM Testbench и просмотрите настройки testbench, как показано на следующем рисунке. Установите флажок подробного сообщения testbench для просмотра полного журнала взаимодействия инициатора/цели в моделировании SystemC/TLM. Поскольку это будет тысячи строк, при необходимости отмените выбор опции для получения terse log моделирования SystemC/TLM.

В окне модели щелкните правой кнопкой мыши по блоку DireFilter и выберите «C/C + + Code > Generate Code for this Subsystem» в контекстном меню, чтобы запустить создание TLM-компонента и testbench. Также в окне команд MATLAB можно выполнить следующую команду:
>> slbuild('tlmgdemo_uttb/DualFilter')Генерация завершается, когда в окне команд 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.515s
Откройте сгенерированный исходный код testbench в веб-браузере MATLAB, щелкнув «DityFilter _ uttb _ tlm _ tb.cpp» в созданном отчете или в редакторе MATLAB:
Спецификация «Without timing» (без синхронизации) приводит к тому, что testbench предписывает компоненту TLM работать в несинхронизированном режиме с помощью специального конфигурационного интерфейса, mw_backdoorcfg_IF. Как показывает код, выбор режима синхронизации является динамическим и может быть изменен в ходе моделирования. Поскольку этот выбор является чисто имитационной конструкцией, он не программируется посредством транзакции TLM «входная дверь».
Кроме того, как указывает код, testbench должен установить локальный вспомогательный объект с правильным режимом синхронизации, чтобы гарантировать, что его потоки инициатора используют правильную синхронизацию в вызовах транзакций TLM.

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

В Configuration Parameters диалоговое окно, войти в TLM Testbench диалоговое окно параметров конфигурации и нажмите клавишу Verify TLM Component для запуска сгенерированных средств тестирования в режиме несинхронизированной синхронизации или в окне команд MATLAB выполните следующее:
>> verifyTlmgDemoModel('uttb')Это действие:
построить сгенерированный код
запустить Simulink, чтобы зафиксировать входной стимул и ожидаемые результаты
преобразовать данные Simulink в векторы TLM
запустить автономный тестовый файл SystemC/TLM
преобразовать результаты TLM обратно в данные Simulink
выполнить сравнение данных
создать окно «Рисунок» для любых сигналов, для которых неверно сравниваются данные