主要内容

不计时的SystemC / TLM模拟

当您使用tlmgenerator目标从Simulink®Coder™或Embedded Coder®从Simulink®模型生成SystemC™/TLM组件时,此示例突出了“Untimed”计时模式的使用。金宝app

在Si金宝appmulink®模型中,源和汇之间的数据移动是由信号采样率和中央定时求解器控制的。在SystemC/TLM模型中,数据接收器和源之间的交互由SystemC模拟内核控制,时间通过SC_THREADs合作地将控制交给另一个线程等待调用。

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

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

下载188bet金宝搏运行此演示所需的产品:

  • SystemC 2.3.1(包括TLM库)

  • 对于代码验证,请在Linux®上的路径中使用make和兼容的gnu编译器gcc,或者在Windows®上的路径中使用Visual Studio®编译器

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

1.打开预配置模型

打开TLM非定时测试平台模型,单击开放模式按钮。

下面的模型在Simulink中打开。金宝app

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

在Simuli金宝appnk Toolstrip中,选择模型设置建模选项卡。在配置参数对话框中,选择TLM发电机视图和选项卡TLM Testbench然后查看测试台设置,如下图所示。选择详细的testbench消息复选框,以查看SystemC/TLM模拟中启动器/目标交互的完整日志。由于这将有数千行,如果需要,请取消选择该选项以获得SystemC/TLM模拟的简要日志。

3.构建模型

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

> > slbuild(“tlmgdemo_uttb / DualFilter”)

当MATLAB命令窗口出现如下信息时,生成完成:

### #启动Simuli金宝appnk Coder构建过程的模型:DualFilter模型重建行动的原因  ============================================================================== DualFilter代码生成的代码生成信息文件不存在。建立1个模型中的1个(0个已经更新的模型)建立时间:0h 0m 24.583

4.打开生成的文件

在MATLAB web浏览器中,点击生成报告中的'DualFilter_uttb_tlm_tb.cpp'或在MATLAB编辑器中,打开生成的测试台源代码:

5.检查生成的代码

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

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

非定时同步类的实现,mw_syncuntimed_tb,在mw_金宝appsupport_tb.cpp文件显示启动器线程和TLM事务使用的各种同步调用的详细信息。如前所述,调用利用SC_ZERO_TIME的等待,不允许累积延迟。

6.验证生成的代码

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

> > verifyTlmgDemoModel(“uttb”)

这一行动将:

  • 构建生成的代码

  • 运行Si金宝appmulink以捕获输入刺激和预期结果

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

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

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

  • 执行数据比较

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