主要内容

不计时的SystemC / TLM模拟

这个例子强调了当您使用Simulink®Coder™或Embedded Coder®的tlmgenerator目标从Simulink®模型生成SystemC™/TLM组件时,使用“Untimed”计时模式。万博1manbetx

在Si万博1manbetxmulink®模型中,源和汇之间的数据移动是由信号采样率和中央定时求解器控制的。在SystemC/TLM模型中,数据接收器和数据源之间的交互由SystemC模拟内核控制,时间通过SC_THREADs协同地将控制交付给另一个线程来推进等待调用。

对于非定时SystemC/TLM模拟,该模型忽略通信接口和处理的注释延迟。在这样的模型中,目标只是通过确保启动器和目标能够成功地同步数据的移动,来获得产生正确结果的模拟。没有尝试评估部署系统的性能。在无时间限制的模拟中不应该浪费模拟时间,因为同步是完全基于事件的。

对于这个例子,我们使用Simulink的FIR滤波器万博1manbetx模型作为SystemC/TLM生成的基础。

s manbetx 845运行此演示所需的产品:

  • SystemC 2.3.1(包括TLM库)

  • 为了进行代码验证,在Linux®上创建一个兼容的gnu编译器,gcc,或者在Windows®上创建一个兼容的Visual Studio编译器

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

1.打开预配置模型

打开TLM无时间测试台模型,单击开放模式按钮。

下面的模型在Simulink中打开。万博1manbetx

2.检查TLM生成器目标配置选项

在Simuli万博1manbetxnk工具条中,选择模型设置建模选项卡。在配置参数对话框中,选择TLM发电机视图和选项卡TLM Testbench并查看测试台设置,如下图所示。选择verbose testbench message复选框以查看SystemC/TLM模拟中启动器/目标交互的完整日志。由于这将有数千行,如果需要,取消选择获取SystemC/TLM模拟的简洁日志的选项。

3.构建模型

在模型窗口中,右键单击DualFilter块并选择C/ c++ Code >为这个子系统生成代码在上下文菜单中启动生成TLM组件和测试台.或者你可以在MATLAB命令窗口中执行以下命令:

> > slbuild(“tlmgdemo_uttb / DualFilter”)

当以下消息出现在MATLAB命令窗口时,生成完成:

###成功完成Simuli万博1manbetxnk Coder的模型构建过程:DualFilter build Summary模型重建行动的原因  ============================================================================== DualFilter代码生成的代码生成信息文件不存在。1个模型建立(0个模型已经更新)建立时间:0小时0米24.583秒

4.打开生成的文件

在MATLAB web浏览器中通过点击生成的报告中的'DualFilter_uttb_tlm_tb.cpp'或在MATLAB编辑器中打开生成的testbench源代码:

5.检查生成的代码

“无定时”的规范导致测试台通过一个特殊的配置接口,指示TLM组件在无定时模式下运行,mw_backdoorcfg_IF.如代码所示,定时模式的选择是动态的,可以在仿真过程中改变。因为这个选择纯粹是一个模拟构造,所以它不是通过“前门”TLM事务来编程的。

此外,如代码所示,测试台必须使用正确的计时模式设置本地helper对象,以确保其启动器线程在TLM事务调用中使用正确的同步。

无时间同步类的实现,mw_syncuntimed_tb,在mw_万博1manbetxsupport_tb.cpp文件显示启动器线程和TLM事务使用的各种同步调用的详细信息。如前所述,调用利用SC_ZERO_TIME的等待,并且不允许累积延迟。

6.验证生成的代码

配置参数对话框,进入TLM Testbench配置参数对话框,并推送验证TLM组件按钮在非定时计时模式下运行生成的测试台或在MATLAB命令窗口中执行:

> > verifyTlmgDemoModel(“uttb”)

这一行动将:

  • 构建生成的代码

  • 运行Si万博1manbetxmulink以捕获输入刺激和预期结果

  • 将Simulink数据转万博1manbetx换为TLM向量

  • 运行独立的SystemC/TLM testbench可执行文件

  • 将TLM结果转换回Simulink数据万博1manbetx

  • 执行数据比较

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