Hi,I am using ZCU111.When I want to use my bit file,I got an error message.
My code:
from pynq import Overlay
ZCU111_bit = Overlay("./ZCU111_PYNQ.bit")
error message:
---------------------------------------------------------------------------
CacheMetadataError Traceback (most recent call last)
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py:252, in BitstreamHandler.get_parser(self, partial)
251 try:
--> 252 parser = self._get_cache()
253 except CacheMetadataError:
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py:228, in BitstreamHandler._get_cache(self)
227 else:
--> 228 raise CacheMetadataError(f"No cached metadata present")
CacheMetadataError: No cached metadata present
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
Input In [24], in <cell line: 2>()
1 from pynq import Overlay
----> 2 ZCU111_bit = Overlay("./ZCU111_PYNQ.bit")
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py:319, in Overlay.__init__(self, bitfile_name, dtbo, download, ignore_version, device, gen_cache)
315 super().__init__(bitfile_name, dtbo, partial=False, device=device)
317 self._register_drivers()
--> 319 self.device.set_bitfile_name(self.bitfile_name)
320 self.parser = self.device.parser
322 self.ip_dict = (
323 self.gpio_dict
324 ) = (
325 self.interrupt_controllers
326 ) = self.interrupt_pins = self.hierarchy_dict = dict()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/device.py:118, in Device.set_bitfile_name(self, bitfile_name)
116 def set_bitfile_name(self, bitfile_name: str) -> None:
117 self.bitfile_name = bitfile_name
--> 118 self.parser = self.get_bitfile_metadata(self.bitfile_name)
119 self.mem_dict = self.parser.mem_dict
120 self.ip_dict = self.parser.ip_dict
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py:690, in EmbeddedDevice.get_bitfile_metadata(self, bitfile_name, partial)
689 def get_bitfile_metadata(self, bitfile_name:str, partial:bool=False):
--> 690 parser = _get_bitstream_handler(bitfile_name).get_parser(partial=partial)
691 if parser is None:
692 raise RuntimeError("Unable to find metadata for bitstream")
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py:254, in BitstreamHandler.get_parser(self, partial)
252 parser = self._get_cache()
253 except CacheMetadataError:
--> 254 parser = RuntimeMetadataParser(Metadata(input=self._filepath.with_suffix(".hwh")))
255 except:
256 raise RuntimeError(f"Unable to parse metadata")
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/metadata.py:40, in Metadata(input)
38 if os.path.isfile(input):
39 if str(input).endswith(".hwh"):
---> 40 return HwhFrontend(_hwhfile=input)
41 elif str(input).endswith(".xsa"):
42 return XsaFrontend(input=input)
File <string>:25, in __init__(self, name, type, generic_type, _parent, _children, ref, ext, _timestamp, hierarchy_name, ports, parameters, blocks, modules, busses, _hierarchies, _hwhfile, _element_tree, _root, _logical2physical_portmap, _physical2logical_portmap, _logical2physical_extern_pm, _physical2logical_extern_pm)
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:219, in HwhFrontend.__post_init__(self)
207 """
208 Performs the parsing of the hwh into the metadata model
209 * checks to see if the hwhfile is an XML string or a
(...)
216 * Performs a connectivity pass
217 """
218 if self._hwhfile != "":
--> 219 self.parse()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:240, in HwhFrontend.parse(self)
237 self._construct_logical2physical_extern_pm()
238 self._create_external_ports()
--> 240 self.resolve_addressing()
241 self.connect_signals()
243 self.refresh()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:596, in HwhFrontend.resolve_addressing(self)
589 def resolve_addressing(self) -> None:
590 """
591 For all the subordinate ports in the design and manager ports
592 grab all the addressing information
593 WARNING: This should only be called after all the cores and ports
594 have been populated.
595 """
--> 596 self._resolve_subordinate_addressing()
597 self._populate_subordinate_regmap()
598 self._resolve_manager_address_maps()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:453, in HwhFrontend._resolve_subordinate_addressing(self)
451 if i.get("MEMTYPE") == "REGISTER" or i.get("MEMTYPE") == "MEMORY":
452 core = self.blocks[i.get("INSTANCE")]
--> 453 port = core.ports[i.get("SLAVEBUSINTERFACE")]
454 if isinstance(port, SubordinatePort):
455 port.baseaddr = int(i.get("BASEVALUE"), 16)
KeyError: 'S_AXI'
and when I use xsa file
from pynq import Overlay
ZCU111_bit = Overlay("./ZCU111_pynqtest.xsa")
It raises the same error
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Input In [1], in <cell line: 2>()
1 from pynq import Overlay
----> 2 ZCU111_bit = Overlay("./ZCU111_pynqtest.xsa")
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py:319, in Overlay.__init__(self, bitfile_name, dtbo, download, ignore_version, device, gen_cache)
315 super().__init__(bitfile_name, dtbo, partial=False, device=device)
317 self._register_drivers()
--> 319 self.device.set_bitfile_name(self.bitfile_name)
320 self.parser = self.device.parser
322 self.ip_dict = (
323 self.gpio_dict
324 ) = (
325 self.interrupt_controllers
326 ) = self.interrupt_pins = self.hierarchy_dict = dict()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/device.py:118, in Device.set_bitfile_name(self, bitfile_name)
116 def set_bitfile_name(self, bitfile_name: str) -> None:
117 self.bitfile_name = bitfile_name
--> 118 self.parser = self.get_bitfile_metadata(self.bitfile_name)
119 self.mem_dict = self.parser.mem_dict
120 self.ip_dict = self.parser.ip_dict
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py:690, in EmbeddedDevice.get_bitfile_metadata(self, bitfile_name, partial)
689 def get_bitfile_metadata(self, bitfile_name:str, partial:bool=False):
--> 690 parser = _get_bitstream_handler(bitfile_name).get_parser(partial=partial)
691 if parser is None:
692 raise RuntimeError("Unable to find metadata for bitstream")
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py:268, in BitstreamHandler.get_parser(self, partial)
266 parser = XclBin(xclbin_data=xclbin_data)
267 elif is_xsa:
--> 268 parser = RuntimeMetadataParser(Metadata(input=self._filepath))
269 if xclbin_data is None:
270 xclbin_data = _create_xclbin(parser.mem_dict)
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/metadata.py:42, in Metadata(input)
40 return HwhFrontend(_hwhfile=input)
41 elif str(input).endswith(".xsa"):
---> 42 return XsaFrontend(input=input)
43 elif str(input).endswith(".json"):
44 return JsonFrontend(input=input)
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/xsa_frontend.py:24, in XsaFrontend(input)
22 xsa = XsaParser(input)
23 xsa.load_bdc_metadata()
---> 24 md = HwhFrontend(_hwhfile=xsa.defaultHwhPaths[0])
25 md.ext["xsa"] = XsaObjectExtension(xsa=xsa)
26 for b in md.blocks.values():
File <string>:25, in __init__(self, name, type, generic_type, _parent, _children, ref, ext, _timestamp, hierarchy_name, ports, parameters, blocks, modules, busses, _hierarchies, _hwhfile, _element_tree, _root, _logical2physical_portmap, _physical2logical_portmap, _logical2physical_extern_pm, _physical2logical_extern_pm)
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:219, in HwhFrontend.__post_init__(self)
207 """
208 Performs the parsing of the hwh into the metadata model
209 * checks to see if the hwhfile is an XML string or a
(...)
216 * Performs a connectivity pass
217 """
218 if self._hwhfile != "":
--> 219 self.parse()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:240, in HwhFrontend.parse(self)
237 self._construct_logical2physical_extern_pm()
238 self._create_external_ports()
--> 240 self.resolve_addressing()
241 self.connect_signals()
243 self.refresh()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:596, in HwhFrontend.resolve_addressing(self)
589 def resolve_addressing(self) -> None:
590 """
591 For all the subordinate ports in the design and manager ports
592 grab all the addressing information
593 WARNING: This should only be called after all the cores and ports
594 have been populated.
595 """
--> 596 self._resolve_subordinate_addressing()
597 self._populate_subordinate_regmap()
598 self._resolve_manager_address_maps()
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynqmetadata/frontends/hwh_frontend.py:453, in HwhFrontend._resolve_subordinate_addressing(self)
451 if i.get("MEMTYPE") == "REGISTER" or i.get("MEMTYPE") == "MEMORY":
452 core = self.blocks[i.get("INSTANCE")]
--> 453 port = core.ports[i.get("SLAVEBUSINTERFACE")]
454 if isinstance(port, SubordinatePort):
455 port.baseaddr = int(i.get("BASEVALUE"), 16)
KeyError: 'S_AXI'
hoping that you can solve my question