Modifying 4x2 BaseOverlay seems to disable transmit?

Crosspost from AMD Customer Community
Working with an RFSoC4x2, I am trying to merge the features of RFSoC-MTS and RFSoC-PYNQ by modifying pynq.overlays.base.BaseOverlay and adding modules and variables from the RFSoC. The key changes are shown here (rfsoc_array/array.py · 73add84a07c26f92f6271ccee8cfb7120c23d40c · hpowell-umass-ece-phd / RFSoC-Array · GitLab), reflecting a set of IP blocks added in Vivado. This modification is intended to be non-invasive, allowing for backwards compatibility to the base.bit for the 4x2. However, when trying to transmit a 915 and 920 MHz tone from two antennas facing a receiving patch array, the tones are not received. Reverting the changes shown in this git diff (commenting init worked, uncommented adc_capture lines to test (73add84a) · Commits · hpowell-umass-ece-phd / RFSoC-Array · GitLab), the tones are transmitted and received successfully. I am wondering if something about these sets of lines run in the class init, or the method memdict_to_view() that they call, is resulting in either the transmit IP failing, or some issuye with the RFDC itself. The one meaningful error I get is

    ADC setup unavailable for tile <xrfdc.RFdcAdcTile object at 0xffff609d9540>.

when I try to initialise my custom Overlay class. Any help, suggestions, or questions will be appreciated. Thanks.

Yes, it’s generally true that directly modifying the 4x2 Base Overlay, particularly the rfsoc_radio.overlay, can disable or significantly impact transmit functionality on the RFSoC 4x2 board. The base overlay is designed primarily for receiving signals, and while it provides access to the RF DAC, it doesn’t include a robust, ready-to-use transmit functionality. A discussion on the PYNQ forum clarifies this, stating that the rfsoc_radio.overlay is not designed for transmitting.

Yes, modifying the pynq.overlays.base.BaseOverlay and specifically the 4x2 Base Overlay may indeed disable transmit functionality. This is likely due to the base overlay’s configuration, which often prioritizes receiving analog signals rather than transmitting.