I just upgraded my ZCU111 from PYNQv2.7 to PYNQv3.0.1 and @baileyji  and I are having issues getting an RTL driver to bind correctly. I am using a bitstream compiled with Vivado 2022.1.
In my overlay I have an RTL block axis2mm inside a hierarchy capture.
In PYNQ2.7 the axis2mm RTL block shows up as an IP inside the hierarchy along with some HLS IP:
>> ol.capture.description['ip'].keys()
>> dict_keys(['filter_iq_0', 'filter_iq_1', 'axis2mm', 'filter_phase_0', 'filter_phase_1'])
 
The axis2mm IP is automatically bound to pynq.DefaultIP and we use the read write methods for MMIO.
In PYNQ3.0.1 it’s not showing up in ol.capture.description['ip'] it’s now in ['hierarchies']
>> ol.capture.description['hierarchies']
>> dict_keys(['axis2mm', 'switchboard'])
 
Note switchboard is an intended sub-hierarchy and inside switchboard is an HLS IP which PYNQ correctly detects. The core issue appears to be ol.capture.description['hierarchies']['axis2mm'] has no IP.
>>ol.capture.description['hierarchies']['axis2mm']
>>{'ip': {},
 'memories': {},
 'hierarchies': {},
 'interrupts': {},
 'gpio': {},
 'fullpath': 'capture/axis2mm',
 'device': <pynq.pl_server.embedded_device.EmbeddedDevice at 0xffffb46a9d50>,
 'driver': <function pynq.overlay.DocumentHierarchy(description)>,
 'overlay': <pynq.overlay.Overlay at 0xffff987727a0>}
 
Is there a workaround or new way to bind a driver to an RTL IP in PYNQ3?
             
            
               
               
              1 Like 
            
            
           
          
            
              
                stf  
                
               
              
                  
                    November 10, 2022,  7:36am
                   
                   
              2 
               
             
            
              Hi Jenny,
Can you try running the following command on your ZCU111 and seeing if it helps your problem?
python3 -m pip install pynqmetadata --upgrade
 
After upgrading you might need to restart the board, or run the following in a jupyter notebook to clear any cached metadata:
from pynq import PL
PL.reset()
 
All the best, 
Shane
             
            
               
               
               
            
            
           
          
            
            
              Hi Shane,
Thanks for your response. I tried your command and it looks like pynqmetadata is already up to date.
root@pynq:/# python3 -m pip install pynqmetadata --upgrade
Requirement already satisfied: pynqmetadata in /usr/local/share/pynq-venv/lib/python3.10/site-packages (0.3.1)
Requirement already satisfied: pydantic in /usr/local/share/pynq-venv/lib/python3.10/site-packages (from pynqmetadata) (1.9.1)
Requirement already satisfied: jsonschema>=3.2.0 in /usr/local/share/pynq-venv/lib/python3.10/site-packages (from pynqmetadata) (4.9.0)
Requirement already satisfied: attrs>=17.4.0 in /usr/lib/python3/dist-packages (from jsonschema>=3.2.0->pynqmetadata) (21.2.0)
Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/share/pynq-venv/lib/python3.10/site-packages (from jsonschema>=3.2.0->pynqmetadata) (0.18.1)
Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/share/pynq-venv/lib/python3.10/site-packages (from pydantic->pynqmetadata) (4.3.0)
 
Power cycled the board just in case and no dice. I’m still seeing the RTL block as a hierarchy with no IP.
             
            
               
               
               
            
            
           
          
            
              
                stf  
                
               
              
                  
                    November 11, 2022,  9:32am
                   
                   
              4 
               
             
            
              Hiya Jenny,
Thanks for trying this. Would you mind sending me your HWH file so that I can take a look, either on here or DM’ing it to me?
No sure it will help but, would you mind also trying uninstalling and reinstalling pynqmetadata on your ZCU111 from within a Jupyter terminal (or a root ssh terminal where you have sourced /etc/profile.d/pynq_venv.sh)?
All the best, 
Shane
             
            
               
               
               
            
            
           
          
            
            
              Sure,
I’ve included my ZCU111 bitstream and hwh. No luck on uninstalling and reinstalling pynqmetadata. Thanks for taking a look!
-Jenny
test.zip  (6.1 MB)
             
            
               
               
              1 Like 
            
            
           
          
            
            
              Thank you @stf  for solving this! In case anyone has issues this worked for me: 
In a jupyter notebook terminal run:
python3 -m pip uninstall pynqmetadata
python3 -m pip cache purge
python3 -m pip install pynqmetadata
 
Then either reboot the board or run:
from pynq import PL
PL.reset()
 
Now I see the RTL IP showing up as an IP inside the hierarchy as expected. 
             
            
               
               
              3 Likes