I had fresh installed PYNQ-Z2 with PYNQ 2.6 image, I follow 3 steps to install this great thing.
It update PYNQ to 2.7.
I tried to run " [01_composable_overlay_intro.ipynb]"
But I got error at first step to load bitstream
from composable_pipeline import ComposableOverlay
ol = ComposableOverlay("../overlay/cv_dfx_4_pr.bit")
cpipe = ol.composable
I got these error message, How to install xclbinutil in PYQN-Z2?
I have search internet. But have no idea about it.
FileNotFoundError Traceback (most recent call last)
in ()
1 from composable_pipeline import ComposableOverlay
2
----> 3 ol = ComposableOverlay(“…/overlay/cv_dfx_4_pr.bit”)
4
5 cpipe = ol.composable
/usr/local/lib/python3.6/dist-packages/composable_pipeline/composable.py in init(self, bitfile_name, dtbo, download, ignore_version, device)
288 “”"
289
→ 290 super().init(bitfile_name, dtbo, download, ignore_version, device)
291
292 switch = list()
/usr/local/lib/python3.6/dist-packages/pynq/overlay.py in init(self, bitfile_name, dtbo, download, ignore_version, device)
338 self._register_drivers()
339
→ 340 self.parser = self.device.get_bitfile_metadata(self.bitfile_name)
341
342 self.ip_dict = self.gpio_dict = self.interrupt_controllers = \
/usr/local/lib/python3.6/dist-packages/pynq/pl_server/embedded_device.py in get_bitfile_metadata(self, bitfile_name)
602
603 def get_bitfile_metadata(self, bitfile_name):
→ 604 parser = _get_bitstream_handler(bitfile_name).get_parser()
605 if parser is None:
606 raise RuntimeError(“Unable to find metadata for bitstream”)
/usr/local/lib/python3.6/dist-packages/pynq/pl_server/embedded_device.py in get_parser(self)
190 parser = HWH(hwh_data=hwh_data)
191 if xclbin_data is None:
→ 192 xclbin_data = _create_xclbin(parser.mem_dict)
193 xclbin_parser = XclBin(xclbin_data=xclbin_data)
194 _unify_dictionaries(parser, xclbin_parser)
/usr/local/lib/python3.6/dist-packages/pynq/pl_server/embedded_device.py in _create_xclbin(mem_dict)
333 ‘–add-section=MEM_TOPOLOGY:JSON:mem.json’, ‘–output’,
334 ‘t.xclbin’, ‘–skip-bank-grouping’],
→ 335 cwd=td, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
336 if completion.returncode != 0:
337 raise RuntimeError("xclbinutil failed: " +
/usr/lib/python3.6/subprocess.py in run(input, timeout, check, *popenargs, **kwargs)
401 kwargs[‘stdin’] = PIPE
402
→ 403 with Popen(*popenargs, **kwargs) as process:
404 try:
405 stdout, stderr = process.communicate(input, timeout=timeout)
/usr/lib/python3.6/subprocess.py in init(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)
707 c2pread, c2pwrite,
708 errread, errwrite,
→ 709 restore_signals, start_new_session)
710 except:
711 # Cleanup if the child failed starting.
/usr/lib/python3.6/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
1342 if errno_num == errno.ENOENT:
1343 err_msg += ': ’ + repr(err_filename)
→ 1344 raise child_exception_type(errno_num, err_msg, err_filename)
1345 raise child_exception_type(err_msg)
1346
FileNotFoundError: [Errno 2] No such file or directory: ‘xclbinutil’: ‘xclbinutil’