[systemc][tlm2.0]父模块与子模块的实现

2023-10-31

一、windows下环境配置

尝试1:

visual studio 配置systemc环境:systemC学习笔记3 vs开发环境搭建 - 知乎 (zhihu.com)

(32 封私信 / 80 条消息) 流浪码农 - 知乎 (zhihu.com)

之前配置总是不通过,不知道是不是因为systemc版本的问题,2.3.3上述文章中说新版本systemc不支持很多

尝试2:

报错很多,使用systemc2.3.0(3条消息) Windows Visual Studio 2017 下搭建SystemC环境_能吃能睡不能学的博客-CSDN博客

打开时提示必须要对2.3.0版本中的文件进行更改以适应visual studio 更改后systemc2.3.0编译不通过,×

尝试3:

最终成功使用systemc:使用systemc2.3.3,使用example中的文件,at_mixed_targets,打开文件时提示升级。。以适应visual studio,按默认配置进行,按照下述过程进行配置,其中<一劳永逸>中无目标Microsoft.Cpp.Win32.user文件,按照每次重新配置的方法,经过编译,获得目标输出(3条消息) Windows Visual Studio 2017 下搭建SystemC环境_能吃能睡不能学的博客-CSDN博客

二、建立父模块与子模块框架

1、 使用simple_与tlm_initiator_socket

其中tlm_initiator_socket没有回调函数,需要显示继承tlm::tlm_bw_transport_if<>, tlm::tlm_fw_transport_if<>,显示继承后,需要定义纯虚函数

其中initiator部分:

target部分:

top绑定

其中需要注意:(1)simple_initiator/target_socket的绑定方式为init_socket(tar_socket);tlm_initiator/target_socket的绑定方式为init_socket.bind(tar_socket);当两者混合使用,与tlm_initiator/target_socket相关的均采用.bind方式;(2)绑定前后关系均为from(to)

 上述是tlm_initiator/target_socket的实现,来源于《IEEE Standard for Standard SystemC® Language Reference Manual》,simple_initiator/target_socket的实现较简单,见模型建立流程部分总结笔记

各种debug

(1) 但是在实现过程中遇见,“不允许使用抽象类类型”,报错

根据(3条消息) c++ 错误提示:不能使用抽象类对象_后青春了的博客-CSDN博客

检查纯虚函数是否填写完整 ,发现原来是拼写返回值TLM_COMPLETE时的拼写错误

(2) 编译后,提示错误: LNK2019    无法解析的外部符号 "public: enum tlm::tlm_sync_enum __thiscall bmod_target1::targetNBTransport(class tlm::tlm_generic_payload &,class tlm::tlm_phase &,class sc_core::sc_time &)" (?targetNBTransport@bmod_target1@@QAE?AW4tlm_sync_enum@tlm@@AAVtlm_generic_payload@3@AAVtlm_phase@3@AAVsc_time@sc_core@@@Z),函数 "public: __thiscall bmod_target1::bmod_target1(class sc_core::sc_module_name)" (??0bmod_target1@@QAE@Vsc_module_name@sc_core@@@Z) 中引用了该符号    parent-child   \parent-child\sc_main.obj    1    

发现原来是simple_target_socket注册的回调函数未定义

(3)继续编译,又报错:0x7C598E66 (vcruntime140d.dll)处(位于 parent-child.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFA1F7B0 时发生访问冲突。

查找,可能是堆栈使用存在问题 

(3条消息) 读取/写入位置发生访问冲突_gkzscs的博客-CSDN博客_发生访问冲突

测试是否是子模块new之后未释放

总是在sc_start 和sc_thread处报错,转到linux下eclipse试试

linux下报错 有关simple_target_socket

发现是忘记在头文件中加入:#define SC_INCLUDE_DYNAMIC_PROCESS

需要在所有.h文件中加上,并且需要在 include systemc.h头文件之前,不能在cpp文件中使用该语句

原因是在systemc库升级到2.1时,官方文件说是为了头文件引用的正确性,还是不清楚确切的原因是什么:

困扰我三天的问题,错误就出在这里,以前也遇见过,但是又忘了,所以说,总结流程步骤,核对流程步骤的重要性

有时会报一些错误,已经在.h中引用过的头文件,还需要在引用过该.h文件的.cpp中再引用一次,不知道问题是什么

debug 一下,验证成功,在windows里同样测试一下,还是不行,不知道怎么弄了,暂时放弃windows下的debug

2、使用multi_passthrough_initiator/target_socket

官方给出的例子如下:

 

 

 

3、使用tlm_initiator/target_socket

systemc2.3.3库中的 at_mixed_targets等例子都是采用这种方式连接父模块与子模块

三、总结

目前在网上查找实现父模块与子模块端口绑定的方式有这三种方法,经过测试实现了第一种方法,第二和第三种方法有待验证,但本身我对multi_passthrough_initiator/target_socket了解和使用不多,可以继续开发。

另外,附上过程中所见到的套接字属性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[systemc][tlm2.0]父模块与子模块的实现 的相关文章

  • jEdit 可以用作 IDE 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JavaScript 调试器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有一个非常好的调试 JavaScript 的编辑器 除了 Visual Studio 2008
  • Linux 上 Objective-C 的 IDE [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在学习 Objective C 我想知道在哪里可以找到 Linux 上 Objective C 的
  • VS 2017 颜色主题编辑器 - 如何更改 Intellisense 自动完成背景颜色

    我已使用颜色主题编辑器导入了透明主题 并且正在尝试更改自动完成框的背景颜色 目前 如下所示 它是透明的 并且很难阅读下面几行的文本 我尝试了多种元素 但找不到合适的元素 谷歌一无所获 如何更改自动完成 智能感知自动完成框背景颜色 将树视图背
  • PyCharm:Scapy 未解决的参考

    我正在开发一个使用 scapy 用 python 编写的网络工具 我使用 Pycharm 作为 IDE 我的代码有效 因此 如果我运行它 一切都会按预期进行 我的问题是 PyCharm 给了我一些错误 它标志着每次使用IP TCP Ethe
  • Visual Studio 2012 - “添加”上下文菜单的项模板

    我成功创建新的项模板并将其添加到 Visual Studio 2012 现在我可以使用右键单击来创建新项目 解决方案资源管理器 添加 新项目 dialog But how I can add this Item Template to ap
  • 如何清除“运行”->“参数”菜单中的“参数”字段?

    我正在使用 CodeGear RAD Studio IDE 为了使用命令行参数测试我的应用程序 我多次使用 运行 gt 参数 菜单中的 参数 字段 但每次我为它提供一个新值时 它都无法从 下拉框 中删除 我需要清理这个字段 删除所有值 因为
  • 自动同步 Visual Studio 的类视图

    是否可以让 Visual Studio 的 类视图 窗格 在 视图 gt 类视图 下可用 自动同步到当前符号 基本上只要当前符号发生变化就会执行 View SynchronizeClassView See here https stacko
  • 汤博乐开发工具

    我想创建 Tumblr 主题 有趣的是有没有 IDE Netbeans Eclipse PHPStorm 插件或开发工具 理想的情况是在浏览器中预览我的主题 而不将其上传到 Tumblr 谢谢 我找到了自己的方法来使用 PhpStorm 或
  • Visual Studio:从撤消/重做堆栈中排除大纲

    Visual Studio 中有一些非常烦人的事情 当我展开或折叠方法或代码区域时 此操作会被推送到撤消堆栈上 因此 如果我在方法中编辑某些代码 然后折叠该方法 然后想要撤消我的更改 我必须撤消两次 一次用于折叠操作 一次用于代码更改 如果
  • 如何在 Eclipse 中启用列选择模式?

    News 写道 Eclipse 3 5 终于支持列选择 不幸的是我不知道如何启用它 我尝试按 ALT 键 就像我在 Visual Studio 和所有其他 Microsoft 产品中习惯的那样 但这没有效果 如何在 Eclipse 中标记垂
  • Eclipse 中是否有键盘快捷键可以折叠当前方法/块?

    问题说明了一切 我在 Eclipse v3 4 中打开了折叠功能 并且不必单击页面装订线中的小 我想知道是否有一个键盘快捷键 折叠当前方法 快速浏览一下 Eclipse 中的菜单和其他内容不会显示它的菜单项 所以也许您无法做到这一点 Any
  • 在 Visual Studio 中进行嵌入式代码开发(尤其是使用 C18 的 PIC)

    我使用 Visual Studio 编写桌面应用程序 我发现它非常用户友好且易于使用 如果可能的话 我还想在Visual Studio中编写嵌入式代码 例如 是否可以使用 C18 或任何其他类似的基于 C 的语言为 PIC18Fxxx 系列
  • 免费的 C 语言 IDE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谷歌搜索 c ide C 会产生太多 C 结果以及不相关的结果 这些搜索词似乎太短 无法产生相关结果 有人有免费的 Win32 C IDE
  • 在 Codeblocks 中启用编译器输出窗格

    This is probably a really noob question but the fact of the matter is that my Code blocks wouldn t show me errors when i
  • 如何在 IntelliJ IDEA 中的当前文件上运行外部工具

    我需要通过 scp 将当前编辑的 JSP 上传到服务器 我的 Windows 计算机上的路径上有 pscp 如何设置 intellij idea 以一键单击当前打开的文件来执行此操作 我可以在 eclipse 中设置它 通过 运行工具 和参
  • 如何在 IDE 中输入提示上下文?

    我在用Closure call http php net manual en closure call php http php net manual en closure call php 在类上下文中调用外部闭包 这是一个简单的重现 c
  • android studio 和 android SDK 捆绑的 eclipse 版本有什么区别

    我没有 Android 开发经验 我想开始编写应用程序 The 官方开发者工具页面 http developer android com tools index html包含两个不同 IDE 的链接 第一个包含捆绑的 ADT 版本Eclip
  • 设置 Emacs 进行 Erlang 编程

    Emacs 是 Erlang 编程的首选 IDE 有很多好的模式 distel erlware mode 默认的 erlang 模式 但是您对设置 Emacs 进行专业 Erlang 开发有何建议 按照中所述设置 erlang mode自述
  • Emacs:在缓冲区求值期间将参数传递给下级 Python shell

    最近我开始使用 Emacs 作为 Python IDE 它不太直观 我现在遇到的问题是当使用 C c C c 评估缓冲区时如何将命令行参数传递给下级 python shell 感谢帮助 这似乎并不容易实现 管理的劣质流程python el模

随机推荐