在 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"
. 请注意,您的命令必须带引号!
默认情况下,在容器内,您将充当uid
您gid
自己的用户。它应该可以防止您遇到权限问题。如果您需要使用不同的uid
and 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
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。