使用 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
为了更方便地开发复杂的 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 PYTHONPATHimport m5
来自src/python/m5
所以将src/python
添加到上面的 PYTHONPATHfrom 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