Skip to main content

在 Docker 容器中运行 ARTIQ 的工具。

项目描述

Dockerized ARTIQ

该存储库提供了在 dockerized 环境中使用 ARTIQ 操作的工具。它使 ARTIQ 的工作独立于外部二进制存储库。

您从映像中获得的是完整的 ARTIQ 安装,可以实例化并用作 Docker 容器。dartiq脚本充当您和 Docker 之间的接口,并使用 dockerized ARTIQ 用户友好。

安装

DARTIQ 脚本在 PyPI 上可用:

python3 -m pip install dartiq

运行支持 ARTIQ 的 shell

例如,要获得安装了 ARTIQ 的 shell,只需键入dartiq shell. 这会将您放入 shell,并将您当前的工作目录安装为 /workspace容器中的目录。可以使用--workspace 选项覆盖它。

运行单个命令

您可以使用选项在 Docker 容器中运行单个命令run,例如dartiq run "artiq_run ./experiment.py". 请注意,您的命令必须带引号!

默认情况下,在容器内,您将充当uidgid自己的用户。它应该可以防止您遇到权限问题。如果您需要使用不同的uidand gid,请使用--user-group选项。

注意:为了能够访问容器内的 USB 设备, /dev/bus/usb已安装并且容器以特权模式运行(您被警告了!)。这可以通过添加--without-usb选项来禁用。

赛灵思 Vivado 支持

为了能够为 Xilinx FPGA 构建 ARTIQ 固件,您需要在容器内提供 Xilinx Vivado 套件。如果您settings64.sh在运行之前获取 Xilinx Vivado(您需要在您的主机系统上安装 Vivado)dartiq,则安装 Vivado 的路径将安装在容器中,您的 Vivado 安装就可以使用了。

如果您需要向 Xilinx Vivado 提供许可证信息,您可以使用任一选项传递适当的信息--copy-env-var XILINXD_LICENSE_FILE ,将给定变量复制到容器环境,或者通过添加新变量与--add-env-var XILINXD_LICENSE_FILE=<...>.

外部 Python 模块

您可能想添加一些 Python 模块以在容器内使用。值得注意的是,您可能对 ARTIQ、MiSoC 或 Migen 的略微修改版本感兴趣。你可以用--add-module <MODULE PATH>选项来做到这一点。这会将您的模块安装在/modules目录中,并在PYTHONPATH.

注意:如果您想使用 ARTIQ 作为附加模块,建议使用用于构建 DARTIQ 映像的提交作为基本提交以避免依赖问题。您始终可以使用命令检查用于构建映像的 ARTIQ 提交dartiq version

将文件挂载到容器

如果在运行时,您需要不在当前工作目录下的文件或目录(即不在您的工作区中),您可以使用 -f命令行选项挂载它们。/mountpoints这将在容器内挂载选定的文件/目录 。此外,在容器环境中,将创建一个以文件/目录基本名称命名的变量,将点替换为下划线并转换为大写。此变量将保存已安装目录的路径。

选项语法是-f <path to file/directory>[:alias]. 别名是可选的,可用于挂载不同名称的文件/目录。例如 -f /home/john/foo:bar.a将mount/home/john/foo/mountpoints/bar.a 并添加BAR_A=/mountpoints/bar.a到执行环境中。

获取 ARTIQ 版本信息

dartiq version可用于获取有关 DARTIQ 图像源提交的信息,包括用于构建 DARTIQ 图像的 ARTIQ 提交和 Nix Scripts 存储库的修订。

配置文件

可以将脚本配置作为 JSON 文件传递​​。这对于定义每个项目的配置可能很有用。默认情况下dartiq.json,使用当前目录中的文件。可以使用 --config参数覆盖配置文件路径。

包含所有支持参数的示例配置文件内容:

{
    "image": "technosystem/dartiq:latest",
    "worksapce": "./",
    "xilinx_vivado_path": null,
    "xilinx_ise_path": null,
    "with_usb": true,
    "docker_options": [
        "--privileged"
    ],
    "python_modules": [
        "modules/artiq",
        "modules/misoc"
    ],
    "verbose": false,
    "copy_env_var": [
        "XILINXD_LICENSE_FILE"
    ],
    "add_env_var": [
        "FOO=BAR"
    ]
}

命令行选项会覆盖配置文件设置或在附加模块、Docker 选项和环境变量的情况下扩展它们。

通过容器访问设备

默认情况下,容器以 USB 支持和特权模式启动。但是,因为在容器中您充当普通用户(您当前的uid),所以需要适当udev的规则。您可以在没有主机系统的情况下访问设备这一事实sudo可能不足以让容器中的用户可以访问它们,因为该用户不是您主机上可能可用的其他组的成员(例如plugdev)。

要不受限制地访问最常与 ARTIQ 一起使用的设备,您可以创建包含/etc/udev/rules.d/99-dartiq.rules以下内容的文件(在 Ubuntu 18.04 主机上测试):

# FT232H Single HS USB-UART FIFO IC, aka Digilent HS-3 JTAG
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="666"

# FT4232H Quad HS USB-UART/FIFO IC, found on Kasli, Sayma, Metlino
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="666"

使用示例

# Display help message
dartiq --help

# Run experiment
dartiq run "artiq_run ./experiment.py"

# Display artiq_run help message
dartiq run "artiq_run --help"

# Running shell with ARTIQ from specified directory
dartiq shell -m ~/repos/artiq/artiq

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

dartiq-1.0.0.tar.gz (8.9 kB 查看哈希)

已上传 source

内置分布

dartiq-1.0.0-py3-none-any.whl (8.7 kB 查看哈希)

已上传 py3