使用 Pycharm 编写 gem5 配置脚本

Writing gem5 configuration scripts with Pycharm

为了更方便地开发复杂的 gem5 python 配置脚本 IDE 必须添加 gem5 库 到项目。然而,对于那些不擅长 python 和 Pycharm 的人(比如我自己) 有一些困难。

对于那些不熟悉gem5的人来说,这是 简短说明:

gem5 是一个检查硬件架构的开源模拟器。 可以从 github: link to github 下载。 安装过程描述如下link

<gem5_installation_dir>/gem5/configs/learning_gem5/part1

在上面的路径里面,有一个基本的python脚本文件:simple.py 该文件包含一些导入。 使用 Pycharm 编辑此文件需要一些位于 gem5 安装目录中的依赖项。 问题: 1) 如何将gem5 的那些依赖添加到Pycharm?
2) 如何使用gem5 执行命令配置Pycharm?

如有任何帮助,我们将不胜感激。

我在 gem5/configs/learning_gem5/part1/two_level.py 下的 gem5 d9cb548d83fa81858599807f54b52e5be35a6b03(2020 年 5 月)上看到的一些提示:

  • from common: common 位于 configs/common 处,由于上述 m5.util.addToPath('../../') 调用而被发现,因此将 configs/ 添加到 PYTHONPATH 中,如图所示在:PyCharm and PYTHONPATH

  • import m5 来自 src/python/m5 所以将 src/python 添加到上面的 PYTHONPATH

  • from caches import * 来自同级 learning_gem5/part1/caches.py,因此 PyCharm 可能会自动找到它。否则将该目录添加到 PYTHONPATH。

  • from m5.objects import *:这可能是您真正感兴趣的对象,因为它包含所有有趣的对象,但不幸的是 PyCharm 根本无法处理它,我相信自从 SimObjects在启动时通过 PyBind11 本机模块 + 代码生成以非常复杂的方式动态添加到该命名空间。

    更详细地描述了它是如何工作的can be found here,但基本上每个 SimObject class 都会通过一些繁重的代码自动生成来完成这项工作,例如src/cpu/simple/AtomicSimpleCPU.py 由于 SimObject('AtomicSimpleCPU.py')src/cpu/simple/SConscript.

    截至 2017 年,PyCharm 表示他们没有适当的本机 C/C++ 扩展设置的计划:https://intellij-support.jetbrains.com/hc/en-us/community/posts/206018984-Developing-Python-extension-in-C-using-PyCharm

话虽如此,我发现不值得为 gem5 的 Python 部分使用 IDE。这是因为 Python 往往很容易理解 with IPDB (or impossible to setup an IDE for), and if you just grep stuff you tend to quickly guess what is going on. For C++ though I do recommend setting up Eclipse: How to setup Eclipse IDE for gem5 development?

相关:Add custom modules to PyCharm Linter