Hello,

I am having some problems with building my own gateware from a json file (following instructions from https://m-labs.hk/artiq/manual/developing.html). Everything was going well until I got to python -m artiq.gateware.targets.kasli_generic file.json. When I run that I get the error main: unshare: No space left on device. This is triggered from something failing in vivado.py and raising an OSError. When I ran df I could see that there is plenty of space and I made sure that the path in vivado.nix is correct. I also tried simplifying the json file down to a singular board, but got the same error. If I run the command with --no-compile-gateware, the software is able to build fine. Any suggestions or advice on how to troubleshoot or where to look would be greatly appreciated as I am sort of stuck.

Here is the complete error traceback
(process:8412): ERROR **: 15:08:08.275: main: unshare: No space left on device
build_top.sh: line 4: 7980 Trace/breakpoint trap (core dumped) vivado -mode batch -source top.tcl
Traceback (most recent call last):
File "/nix/store/qy5z9gcld7dljm4i5hj3z8a9l6p37y81-python3-3.8.8/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/nix/store/qy5z9gcld7dljm4i5hj3z8a9l6p37y81-python3-3.8.8/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/artiq/gateware/targets/kasli_generic.py", line 169, in <module>
main()
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/artiq/gateware/targets/kasli_generic.py", line 165, in main
build_artiq_soc(soc, builder_argdict(args))
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/artiq/build_soc.py", line 70, in build_artiq_soc
builder.build()
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/misoc/integration/builder.py", line 190, in build
self.soc.build(build_dir=os.path.join(self.output_dir, "gateware"),
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/misoc/integration/soc_core.py", line 206, in build
self.platform.build(self, *args, **kwargs)
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/migen/build/xilinx/platform.py", line 59, in build
return self.toolchain.build(self, *args, **kwargs)
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/migen/build/xilinx/vivado.py", line 218, in build
_run_vivado(build_name)
File "/nix/store/60d006fhv308lijhgj9n3i6sbqgf8mji-python3-3.8.8-env/lib/python3.8/site-packages/migen/build/xilinx/vivado.py", line 69, in _run_vivado
raise OSError("Subprocess failed")
OSError: Subprocess failed

Thanks!
Raffi

The error message is incorrect, all it really means is Vivado wasn't found.

Thank you for your replies. This was a tricky error as it appeared Vivado was found as I changed the path in Vivado.nix in the nix-scripts, but within Vivado, you need to change the path in settings64.csh, settings64.sh, .settings64-vivado.sh, and .settings64-vivado.sh. This was a particularly frustrating problem as I did not change the installation location, Xilinx must have changed the file structure changing the path from /opt/Vivado/2020.1 to /opt/Xilinx/Vivado/2020.1 and not updated.

Good!

That's why I think it is better to place Vivado anywhere you want, symlink it to /opt/ and don't touch the .nix files.
Weird though that the (probably) generated .sh files were faulty.

@sb10q maybe that could be worth it to update in the manual? Suggest a symlink instead of fiddling with the .nix files?