主要内容

开始使用TLM生成器

本示例展示了如何配置Simulink®模型,以使用Simulink Code金宝appr™或Embedded Coder®的tlmgenerator目标生成SystemC™/TLM组件。

对于这个例子,我们使用一个FIR滤波器的Simulin金宝appk模型作为SystemC/TLM生成的基础。

运行这个例子的要求:

  • SystemC 2.3.1(包括TLM库)

  • 要进行代码验证,请在Linux®的路径中制作和兼容的gnu编译器gcc,或在Windows®的路径中制作Visual Studio®编译器

注意:该示例包括一个代码生成构建过程。金宝appSimulink不允许您在MATLAB®安装区域中构建程序。如有必要,在开始任何构建之前,请更改到MATLAB安装区域之外的工作目录。

1.开放式预配置模型

打开FIR滤波器模型,按开放模式按钮。

2.将Sim金宝appulink Coder Target设置为TLM Generator

一个。打开配置参数对话框,在模型窗口中选择“仿真>模型配置参数”。

b。配置参数对话框中,选择代码生成在左侧窗格中查看。

c。系统目标文件,单击Browse以选择TLM生成器目标。可以选择tlmgenerator_grt。tlc来使用Simul金宝appink Coder或tlmgenerator_ert。tlc使用嵌入式编码器为HDL代码生成。对于本例,选择tlmgenerator_grt.tlc

3.打开TLM生成器视图

配置参数对话框中,选择TLM发电机在左侧窗格中查看。

TLM发电机视图有五个选项卡:

  • TLM映射

  • TLM处理

  • TLM时机

  • TLM Testbench

  • TLM编译

您需要在每个窗格中设置不同的生成器选项。

4.选择TLM映射选项

TLM映射选项卡,套接字映射允许您选择输入数据、输出数据和控制的套接字数量。选择选项,三个单独的TLM套接字用于输入数据、输出数据和控制

TLM Socket选项允许为生成的TLM组件定义三种不同的内存映射。

在本例中,为输入和输出数据套接字选择以下选项:

  • 自动生成内存映射用于输入和输出数据套接字

  • 单独的输入和输出地址偏移量对于每个数据套接字。该选项生成一个TLM组件,每个模型输出有一个读寄存器,每个模型输入有一个写寄存器。每个Sim金宝appulink模型输入都绑定到其相应的写寄存器,每个输出都绑定到其相应的读寄存器。

您可以考虑的其他内存映射选项有:

  • 没有内存映射:该选项生成的TLM组件只有一个读寄存器和一个写寄存器,没有任何地址。Simu金宝applink模型的输入绑定到写寄存器,输出绑定到读寄存器。

  • [自动生成内存映射]单个输入和输出地址偏移量:该选项生成的TLM组件只有一个读寄存器和一个写寄存器,每个寄存器都有一个地址。Simu金宝applink模型的输入绑定到写寄存器,输出绑定到读寄存器。

在生成带有内存映射的组件时,可以添加命令和状态寄存器、测试和设置寄存器以及可调参数寄存器。

对于本例,为Control TLM套接字选择以下选项:

  • 在内存映射中包含一个命令和状态寄存器。命令和状态寄存器允许您在SystemC仿真过程中写入命令和读取状态;例如,手动缓冲或缓冲状态。

  • 在内存映射中包含可调参数寄存器。可调参数寄存器允许您读取或写入可调参数值。

虽然在本例中没有使用,但是在SystemC模拟过程中,当多个启动器访问组件时,test和set寄存器可以用作互斥锁。

5.选择TLM处理选项

TLM代窗格中,选择TLM处理选项卡。的算法处理接口处理选项允许您为生成的TLM组件定义不同的缓冲和处理行为。

算法执行选项为:

  • SystemC线程:步进函数算法在它自己独立的SystemC线程中执行。

  • 回调函数:步进函数算法在接口调用的回调函数中执行。

  • 周期SystemC线程:步进函数算法在它自己的时间周期独立的SystemC线程中执行。

中的值决定步进函数计时算法步长函数时序(ns)字段。算法计时在线程中使用wait()进行计数。

对于本例,选择SystemC线程在for字段中输入100算法步长函数定时

接口处理选项:

  • 在生成的TLM组件上创建中断请求端口:该选项创建一个中断端口(type signal, bool>),在每次处理一组输入时触发。

在本例中,选择或输入以下选项:

  • 选择在生成的TLM组件上创建中断请求端口

6.选择TLM计时选项

选择TLM时机选项卡。的接口的时机节允许您定义组件输入/输出接口和处理线程的时间。

对于这个示例,输入和输出延迟是通过接口中的wait()计算的。为的每个事务设置5ns的时间值输入数据接口时序输出数据接口定时,控制接口定时

7.选择“TLM Testbench View”

选择TLM Testbench选项卡。TLM Generator目标可以与TLM组件一起生成一个独立的SystemC/TLM测试平台,以在TLM启动器/目标对上下文中验证生成的算法。TLM Testbench视图为何时生成和执行测试台代码提供了运行时选项。

使用TLM测试台选项,您可以:

  • 选择查看SystemC/TLM执行期间显示到命令窗口的详细消息,包括TLM事务和同步消息。

  • 指示测试台架应该使用或不使用定时注释来执行。

  • 指示启动器是否控制在寄存器和缓冲区之间移动输入和输出数据集,或者组件是否自动执行移动。

对于本例,选择生成testbench与时间运行时计时模式,自动对于这两个输入缓冲区触发模式而且输出缓冲区触发模式

成功为组件和测试平台生成代码后,将验证TLM组件按钮变为启用。验证TLM组件执行以下操作:

  • 使用make和生成的make文件构建生成的代码。

  • 运行Sim金宝appulink以获取输入刺激和预期结果。

  • 将Simulink数据转换金宝app为TLM向量。

  • 运行独立的SystemC/TLM测试工作台可执行文件。

  • 将TLM结果转换回Simulink数据。金宝app

  • 执行数据比较。

  • 为任何有数据错误比较的信号生成一个图窗口。

生成文件的编译假设在Linux®的路径中存在make和兼容的gnu编译器gcc,或在Windows®的路径中存在Visual Studio®编译器。

8.选择TLM编译视图

选择TLM编译选项卡。此窗格提供用于控制生成用于编译生成代码的makefile的选项。

编译器选项:

SystemC和TLM包含库路径选项,允许您指定makefile可以在何处找到SystemC和TLM安装。默认值允许您使用环境变量,以便更新SystemC或TLM安装不需要更新Simulink模型。金宝app您可以在调用MATLAB之前设置环境,或者使用MATLAB setenv命令。

在这个例子中,这些环境变量值是通过位于/tools中的标准OSCI安装进行测试的:

  • SYSTEMC_INC_PATH = /工具/ systemc-2.3.0 /包括

  • SYSTEMC_LIB_PATH = /工具/ systemc-2.3.0 / lib-linux64

  • SYSTEMC_LIB_NAME = libsystemc。a (Linux)或systemc。自由(Windows)

  • TLM_INC_PATH = /工具/ systemc-2.3.0 /包括

工具链:

在Windows上,当同一台机器上安装了多个Microsoft Visual Studio版本时,此选项允许您选择一个编译器工具链。在Linux上,这个选项在gcc上是固定的。

组件命名:

此选项允许您将自己的标记添加到生成的组件的名称中。生成的组件名称根据以下情况构建:

  • 如果指定了一个用户标记:modelname_usertag_tlm

  • 如果用户标记字段为空:modelname_tlm

本例中,输入介绍对于用户标签。

9.选择报告

选择报告在左边的窗格中。对于本例,选择创建代码生成报告而且自动打开报表。这些选项在组件生成期间生成html报告。代码生成报告详细说明了每个生成文件的内容。

10.保存TLM生成器选项

点击好吧要应用这些设置并退出配置参数对话框。

11.构建模型

在模型窗口中,右键单击DualFilter块并选择C/ c++代码>为这个子系统生成代码,以启动TLM组件生成。

您也可以在MATLAB命令窗口中执行以下命令:

> > slbuild (' tlmgdemo_intro / DualFilter ');

在执行过程中,系统将提示您选择可调参数。每个系数的下拉列表允许您选择变量的存储类。存储类选项是:

  • 内联—内联参数不可调。

  • 金宝appSimulinkGlobal—Simul金宝appinkGlobal变量可调。

ExportedGlobalImportedExtern而且ImportedExternPointerTLM Gene金宝appration模型不支持。

的选项金宝app仿真软件全球已为本例选择。点击构建。当您在MATLAB命令窗口中看到以下消息时,TLM生成完成:

成功完成Simulink 金宝appCoder模型的构建过程:DualFilter构建摘要构建的顶级模型目标:模型动作重建原因============================================================================== DualFilter代码生成的代码生成信息文件不存在。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 23.427s

12.打开生成的文件

通过单击生成报告中的链接或在MATLAB编辑器中打开MATLAB web浏览器中生成的文件(生成的文件和报告位于您的当前工作目录中):

13.验证生成的代码

一个。打开型号配置参数对话框,在模型窗口中选择“仿真>配置参数”。

b。配置参数对话框中,选择TLM发电机视图,然后选择TLM Testbench选项卡。

c。TLM Testbench窗格中,单击验证TLM组件,运行生成的测试平台

您也可以在MATLAB命令窗口中执行以下命令:

verifyTlmgDemoModel(介绍)

该验证步骤执行以下操作:

  • 构建生成的代码。

  • 运行Sim金宝appulink以获取输入刺激和预期结果。

  • 将Simulink数据转换金宝app为TLM向量。

  • 运行独立的SystemC/TLM测试工作台可执行文件。

  • 将TLM结果转换回Simulink数据。金宝app

  • 执行数据比较。

  • 为任何有数据错误比较的信号生成一个图窗口。

14.评审执行日志

生成测试平台的选项允许您查看测试平台启动器线程如何与目标交互和同步。在日志的末尾查找比较结果,并验证数据比较是否成功。

# # #比较预期vs。实际结果。数据成功相比信号tlmg_out1。数据成功相比信号tlmg_out2。# # #组件验证完成

TLM Generator示例到此结束。