-
Notifications
You must be signed in to change notification settings - Fork 75
Accesing rp_cosim_reserved for user implementation specific featues #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hi Rene, I'm a bit surprised that execution stops there. Transactions to reserved memory addresses should show up on the dedicated reserved TLM sockets, for ZynqMP that should be on the following socket: For Zynq, I see that we've not added the corresponding reserved socket. That may have something to do with this. Are transactions to other areas in your design (e.g gp0 or gp1) working as expected? Best regards, |
Hi Edgar, I have replaced the TLM sockets with my own implementation. While monitoring the RemotePort communication I see, that gp0 (dev 7) and gp0 (dev 8) are working correctly. As shown in the transcript from QuestaSim where i print the monitored values from the RemotePort.
When debugging further I noticed that the remote-port-memory-master on the QEMU side never sends a RemotePort packet with addr: 0xfe000000 (*start_gp2) or 0xfe0ffffc (*end_gp2) what i try to access with my main.c. Therefor never sending a packet to dev 12 on the Zynq. Therefor I think the problem lies in QEMU (Xilinx version), I only tested for the Zynq, I will try to create a test for the ZynqMP trying to access their reserved remoteport master(dev 15) . I notice that you are also a contributing to https://github.com/Xilinx/qemu Do I need to open an issue there or do you know where the problem originates in QEMU. |
I am trying to create a way that my software test can notify the simulator for the Programmable Logic (in my case I use QuestaSim) that it has passed or failed the test.
I notice that the reserved RemotePort in the QEMU-devicetrees are allocated to reserved memory according to the ZYNQ or ZYNQ UltraScale+ TRM.
Zynq devicetree: (https://github.com/Xilinx/qemu-devicetrees/blob/master/zynq-pl-remoteport.dtsi#L146)
/* This area can be used for implentation specific emulation*/ rp_cosim_reserved: rp_cosim_reserved@0{ compatible = "remote-port-memory-master"; remote-ports = <&cosim_rp_0 12>; reg = <0xFE000000 0x100000>; };
Zynq UltraScale devicetree: (https://github.com/Xilinx/qemu-devicetrees/blob/master/zynqmp-pl-remoteport.dtsi#L130)
/* This area can be used for implentation specific emulation*/ rp_cosim_reserved: rp_cosim_reserved@0{ compatible = "remote-port-memory-master"; remote-ports = <&cosim_rp_0 15>; reg = <BASE_ADDR(0xFF4E0000) 0x100000>; };
When trying to write to the reserved memory master (on the Zynq) I notice that my bare metal application(main.c compiled in Vitis 2021.1) stops. And does not continue with the other write transactions. I am wondering if the reserved address are interfering with the RemotePort communication.
I would like to know if this is the correct way to access the reserved memory master for communication with the PL.
The main.c is shown below:
The text was updated successfully, but these errors were encountered: