开始使用TLM生成器
这个例子展示了如何配置一个仿真软件®模型来生成一个SystemC™/ TLM万博1manbetx组件使用tlmgenerator目标仿真软件程序员™或嵌入式程序员®。
对于本例,我们使用仿真软件模型的冷杉过滤器System万博1manbetxC / TLM生成的基础。
要求运行这个例子:
SystemC 2.3.1(包括TLM库)
代码验证,使和兼容的gnu编译器gcc,在你的路径在Linux®,或Visual Studio®编译器在你的路径在Windows®
注意:示例包含一个代码生成构建过程。万博1manbetx仿真软件不允许您构建程序的MATLAB®安装区域。如有必要,更改工作目录,不是开始任何之前在MATLAB安装区域构建。
1。开放预配置模型
打开冷杉滤波器模型,单击开放模式按钮。
2。设置仿真万博1manbetx软件编码器目标TLM生成器
一个。打开配置参数对话框中通过选择模拟>模型在模型窗口中配置参数。
b。在配置参数对话框中,选择代码生成在左边的窗格中。
c。下系统目标文件,单击Browse选择TLM生成器的目标。你可以选择tlmgenerator_grt。薄层色谱使用仿真软件编万博1manbetx码器或tlmgenerator_ert。薄层色谱使用嵌入式编码器HDL代码生成。对于这个示例,选择tlmgenerator_grt.tlc。
3所示。打开TLM发生器视图
在配置参数对话框中,选择TLM发电机在左边的窗格中。
的TLM发电机观点有五个选项卡:
TLM映射
TLM处理
TLM时机
TLM Testbench
TLM编译
您将需要设置不同的发电机选项在每个面板中。
4所示。选择TLM映射选项
在TLM映射选项卡,套接字映射允许您选择的套接字数量输入数据,输出数据,和控制。选择该选项,三个独立的TLM套接字的输入数据、输出数据和控制。
TLM套接字选项允许您定义三种不同的内存映射为您生成TLM组件。
对于这个示例,选择以下的输入和输出数据套接字:
自动生成的内存映射输入和输出数据的套接字
单独的输入和输出的地址偏移量为每个数据插座。该选项生成TLM组件与一个读每个模型输出寄存器和一个写个人地址登记每个模型的输入。每个仿真软万博1manbetx件模型输入绑定到其相应的写寄存器,每个输出绑定到其相应的读取寄存器。
你可以考虑其他内存映射选择:
没有内存映射:该选项生成TLM组件只有一个读和写注册没有任何地址。仿真软件万博1manbetx模型输入绑定到写寄存器和输出绑定到读寄存器。
(自动生成内存地图)单一的输入和输出的地址偏移量:该选项生成TLM组件只有一个读和写注册一个地址。仿真软件万博1manbetx模型输入绑定到写寄存器和输出绑定到读寄存器。
当你与内存映射生成组件,您可以添加一个命令和状态寄存器,一组测试和注册,和可调参数寄存器。
对于这个示例,选择以下的控制TLM套接字:
包括一个命令和状态寄存器的内存映射。命令和状态寄存器允许您编写命令和阅读状态在SystemC模拟;例如,手动缓冲或缓冲状态。
包括可调参数内存映射寄存器。可调参数寄存器允许读或写可调参数的值。
虽然不习惯在这个例子中,一个测试并设置寄存器可以作为互斥当多个发起者SystemC模拟期间访问组件。
5。选择TLM处理选项
在TLM代窗格中,选择TLM处理选项卡。的算法处理和接口处理选项允许你定义不同的缓冲和处理行为生成TLM组件。
该算法执行选项:
SystemC线程:阶跃函数算法是在它自己的独立SystemC线程中执行。
回调函数:阶跃函数算法执行回调函数的接口调用。
周期性SystemC线程:阶跃函数算法执行的时间定期独立SystemC线程。
阶跃函数的时机是由价值决定的阶跃函数算法时间(ns)字段。时间的算法计算等()的线程。
对于这个示例,选择SystemC线程和输入100阶跃函数算法时间。
接口处理选项:
创建一个中断请求端口生成的TLM组件上:这个选项创建一个中断端口(输入信号,bool >),每次一组触发输入处理。
对于这个示例,选择或输入以下选择:
选择创建一个中断请求端口生成的TLM组件上。
6。选择TLM时机的选择
选择TLM时机选项卡。的接口的时机部分允许您定义组件输入/输出接口的时机和处理线程。
对于这个示例,输入和输出延迟计算等()的接口。设置一个时间价值5为每个事务的ns输入数据接口时机,输出数据连接时间,控制接口的时机。
7所示。选择TLM Testbench视图
选择TLM Testbench选项卡。TLM生成器目标可以生成一个独立的SystemC / TLM试验台与TLM组件来验证生成的算法在一双TLM发起者/目标的上下文。的TLM Testbench视图提供了运行时选项时,试验台代码生成和执行。
用TLM Testbench选项,您可以:
选择看到详细信息回应命令窗口SystemC / TLM执行期间包括TLM事务和同步消息。
表明,该试验台应该有或没有执行时机注释。
表明是否启动程序控制移动之间的输入和输出数据寄存器和缓冲区是否组件自动执行动作。
对于这个示例,选择生成testbench,与时间为运行时定时模式,自动对于这两个输入缓冲区触发模式和输出缓冲区触发模式。
代码生成成功后发生组件和试验台验证TLM组件按钮的状态变为可用。验证TLM组件执行以下:
构建生成的代码使用和生成makefile。
运行仿真软万博1manbetx件来捕捉输入的刺激和预期结果。
将模型数据转换为TLM向量万博1manbetx。
运行独立SystemC / TLM testbench可执行文件。
转换TLM结果返回给模型数据。万博1manbetx
执行一个数据比较。
生成一个图窗口数据mis-compares的任何信号。
编译生成的文件假设的存在使和兼容的gnu编译器gcc,在你的路径在Linux®,或Visual Studio®编译器在你的路径在Windows®。
8。选择TLM编译视图
选择TLM编译选项卡。此窗格提供选项来控制生成makefile用来编译生成的代码。
编译器选项:
SystemC和TLM包括库路径选项允许您指定的makefile在哪里可以找到SystemC和TLM安装。默认值允许你使用环境变量,以便更新SystemC或TLM安装不需要更新你的仿真软件模型。万博1manbetx你可以设置环境之前调用MATLAB或使用MATLAB setenv命令。
对于这个示例,这些环境变量值与标准OSCI设施位于/测试工具:
SYSTEMC_INC_PATH = /工具/ systemc-2.3.0 /包括
SYSTEMC_LIB_PATH = /工具/ systemc-2.3.0 / lib-linux64
SYSTEMC_LIB_NAME = libsystemc。(Linux)或systemc。自由(Windows)
TLM_INC_PATH = /工具/ systemc-2.3.0 /包括
工具链:
在Windows上这个选项允许您选择一个编译器工具链当多个版本的微软Visual Studio安装在同一台机器上。在gcc在Linux上这个选项是固定的。
组件命名:
这个选项允许您添加自己的标签生成的组件的名称。生成的组件名称建立根据下列情形:
如果用户指定标签:modelname_usertag_tlm
如果用户标记字段为空:modelname_tlm
对于这个示例,输入介绍用户标签。
9。选择报告
选择报告在左边的窗格中。对于这个示例,选择创建代码生成报告和自动打开报告。在组件生成这些选项生成一个html报告。代码生成的报告细节每个生成的文件的内容。
10。保存TLM发生器的选择
点击好吧应用这些设置并退出配置参数对话框。
11。构建模型
在模型窗口中,右键单击DualFilter块并选择C / c++代码>为这个子系统生成的代码在上下文菜单中开始TLM组件的一代。
或者,您可以在MATLAB命令窗口中执行以下命令:
> > slbuild (' tlmgdemo_intro / DualFilter ');
在执行期间,系统将提示您选择可调参数。每个系数的下拉列表允许您选择变量的存储类。存储类的选项是:
内联——不内联参数可调。
万博1manbetxSimulinkGlobal——Simu万博1manbetxlinkGlobal变量是可调的。
ExportedGlobal,ImportedExtern和ImportedExternPointer不支持TLM生成万博1manbetx模型。
的选项万博1manbetx仿真软件全球已经选择了这个例子。点击构建。TLM一代完成当你看到以下消息出现在MATLAB命令窗口:
# # #开始仿真软件编码万博1manbetx器模型构建过程:DualFilter # # #成功完成仿真软件编码器模型构建过程:DualFilter模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = DualFilter代码生成。代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米16.067秒
12。打开生成的文件
打开生成的文件在web浏览器MATLAB生成的报告中通过单击链接或在MATLAB编辑器(生成的文件和报告都位于当前工作目录中):
DualFilter_VP / DualFilter_intro_tlm_doc / html / DualFilter_codegen_rpt.html
DualFilter_VP / DualFilter_intro_tlm / DualFilter_intro_tlm.xml
DualFilter_VP / DualFilter_intro_tlm / include / DualFilter_intro_tlm_def.h
DualFilter_VP / DualFilter_intro_tlm / include / DualFilter_intro_tlm.h
DualFilter_VP / DualFilter_intro_tlm / src / DualFilter_intro_tlm.cpp
DualFilter_VP / DualFilter_intro_tlm_tb / src / DualFilter_intro_tlm_tb.h
DualFilter_VP / DualFilter_intro_tlm_tb / src / DualFilter_intro_tlm_tb.cpp
DualFilter_VP / DualFilter_intro_tlm_tb / src / DualFilter_intro_tlm_tb_main.cpp
13。验证生成的代码
一个。打开模型配置参数对话框中通过选择模拟>配置参数在模型窗口中。
b。在配置参数对话框中,选择TLM发电机视图,然后选择TLM Testbench选项卡。
c。在TLM Testbench窗格中,单击验证TLM组件,运行生成的testbench。
或者,您可以在MATLAB命令窗口中执行以下命令:
verifyTlmgDemoModel(介绍)
这个验证步骤执行以下动作:
构建生成的代码。
运行仿真软万博1manbetx件来捕捉输入的刺激和预期结果。
将模型数据转换为TLM向量万博1manbetx。
运行独立SystemC / TLM试验台可执行文件。
转换TLM结果返回给模型数据。万博1manbetx
执行一个数据比较。
生成一个图窗口数据mis-compares的任何信号。
14。审查执行日志
选项来生成试验台可以看出试验台启动程序线程和同步与目标交互。寻找比较结果的日志,并验证数据比较成功。
# # #比较预期vs。实际结果。数据成功相比为信号tlmg_out1。数据成功相比为信号tlmg_out2。# # #组件验证完成
这就是开始使用TLM生成器的例子。